// server/supabase/functions/audio-purge/index.ts // Service-only worker invoked by pg_cron (public.dispatch_audio_purge_v1) to // remove audio objects whose history entry or meeting was deleted. import { isServiceRoleApiKey, isServiceRoleAuthorization } from '../_shared/push-contract.ts' import { createServiceRoleClient } from '../_shared/quota.ts' import { supabaseStorageBucket } from '../_shared/storage-objects.ts' import { handleAudioPurgeRequest } from './handler.ts' import { AUDIO_BUCKET } from './policy.ts' import { supabaseAudioPurgeQueue } from './queue-adapter.ts' async function authorizeServiceCaller(req: Request): Promise { const legacyServiceBearer = await isServiceRoleAuthorization( req.headers.get('Authorization'), Deno.env.get('SUPABASE_SERVICE_ROLE_KEY'), ) return legacyServiceBearer || await isServiceRoleApiKey(req.headers.get('apikey')) } Deno.serve(async (req: Request) => { return await handleAudioPurgeRequest(req, { authorize: authorizeServiceCaller, createDeps: () => { const client = createServiceRoleClient() return { queue: supabaseAudioPurgeQueue(client), storage: supabaseStorageBucket(client, AUDIO_BUCKET), } }, }) })