import { getSupabaseServerClient } from '@kit/supabase/server-client';

export enum DoctorPageViewAction {
  VIEW_ANALYSIS_RESULTS = 'VIEW_ANALYSIS_RESULTS',
  VIEW_DASHBOARD = 'VIEW_DASHBOARD',
  VIEW_OPEN_JOBS = 'VIEW_OPEN_JOBS',
  VIEW_OWN_JOBS = 'VIEW_OWN_JOBS',
  VIEW_DONE_JOBS = 'VIEW_DONE_JOBS',
}

export const createDoctorPageViewLog = async ({
  action,
  recordKey,
  dataOwnerUserId,
}: {
  action: DoctorPageViewAction;
  recordKey?: string;
  dataOwnerUserId?: string;
}) => {
  try {
    const supabase = getSupabaseServerClient();

    const {
      data: { user },
      error: userError,
    } = await supabase.auth.getUser();

    if (userError || !user) {
      console.error('No authenticated user found; skipping audit insert');
      return;
    }

    await supabase
      .schema('audit')
      .from('doctor_page_views')
      .insert({
        viewer_user_id: user.id,
        data_owner_user_id: dataOwnerUserId,
        viewed_record_key: recordKey,
        action,
      })
      .throwOnError();
  } catch (error) {
    console.error('Failed to insert doctor page view log', error);
  }
};
