import { supabase } from './client'; import { logger } from '../utils/logger'; export interface JobEvent { id: string; job_id: string; identity_id: string | null; level: 'info' | 'warning' | 'error'; step: string; message: string; metadata: Record | null; created_at: string; } export interface JobEventInsert { job_id: string; identity_id: string | null; level: 'info' | 'warning' | 'error'; step: string; message: string; metadata?: Record; } /** * Insert a new event into the job event log. */ export async function insertJobEvent(event: JobEventInsert): Promise { const { error } = await supabase .from('turnitin_job_events') .insert({ job_id: event.job_id, identity_id: event.identity_id, level: event.level, step: event.step, message: event.message, metadata: event.metadata || {}, }); if (error) { logger.error('Failed to insert job event', { jobId: event.job_id, step: event.step, error: error.message, }); throw error; } } /** * Retrieve all events for a given job, ordered by creation time. */ export async function getJobEvents(jobId: string): Promise { const { data, error } = await supabase .from('turnitin_job_events') .select('*') .eq('job_id', jobId) .order('created_at', { ascending: true }); if (error) { logger.error('Failed to get job events', { jobId, error: error.message }); throw error; } return (data as JobEvent[]) || []; }