fix(storage): purge raw audio when its history entry or meeting is deleted
This commit is contained in:
parent
4807a5283d
commit
ed790e672b
10 changed files with 1073 additions and 39 deletions
31
server/supabase/functions/audio-purge/index.ts
Normal file
31
server/supabase/functions/audio-purge/index.ts
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
// 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<boolean> {
|
||||
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),
|
||||
}
|
||||
},
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue