11import type { APIRoute } from 'astro'
2- import { CRON_SECRET } from 'astro:env/server '
2+ import { getCronSecret } from '@pages/api/_environment '
33import { supabaseAdmin } from '@pages/api/_utils'
4- import { ClientScriptError } from '@components/scripts/errors'
4+ import { ApiFunctionError } from '@pages/api/_errors/ApiFunctionError'
5+ import { handleApiFunctionError } from '@pages/api/_errors/apiFunctionHandler'
56
67export const prerender = false
78
@@ -15,7 +16,7 @@ export const prerender = false
1516export const GET : APIRoute = async ( { request } ) => {
1617 // Verify cron secret for security
1718 const authHeader = request . headers . get ( 'authorization' )
18- if ( authHeader !== `Bearer ${ CRON_SECRET } ` ) {
19+ if ( authHeader !== `Bearer ${ getCronSecret ( ) } ` ) {
1920 console . warn ( 'Unauthorized cron attempt - invalid CRON_SECRET' )
2021 return new Response (
2122 JSON . stringify ( { success : false , error : 'Unauthorized' } ) ,
@@ -36,10 +37,15 @@ export const GET: APIRoute = async ({ request }) => {
3637 . lt ( 'fulfilled_at' , thirtyDaysAgo . toISOString ( ) )
3738 . select ( )
3839
39- if ( fulfilledError ) {
40- throw new ClientScriptError ( {
41- message : `Failed to delete fulfilled requests: ${ fulfilledError . message } `
42- } )
40+ if ( fulfilledError ) {
41+ throw new ApiFunctionError ( {
42+ message : `Failed to delete fulfilled requests: ${ fulfilledError . message } ` ,
43+ cause : fulfilledError ,
44+ code : 'CRON_DELETE_FULFILLED_DSAR_FAILED' ,
45+ status : 500 ,
46+ route : '/api/cron/cleanup-dsar-requests' ,
47+ operation : 'deleteFulfilledRequests'
48+ } )
4349 }
4450
4551 // Delete expired unfulfilled requests (7+ days old, never fulfilled)
@@ -50,10 +56,15 @@ export const GET: APIRoute = async ({ request }) => {
5056 . lt ( 'created_at' , sevenDaysAgo . toISOString ( ) )
5157 . select ( )
5258
53- if ( expiredError ) {
54- throw new ClientScriptError ( {
55- message : `Failed to delete expired requests: ${ expiredError . message } `
56- } )
59+ if ( expiredError ) {
60+ throw new ApiFunctionError ( {
61+ message : `Failed to delete expired requests: ${ expiredError . message } ` ,
62+ cause : expiredError ,
63+ code : 'CRON_DELETE_EXPIRED_DSAR_FAILED' ,
64+ status : 500 ,
65+ route : '/api/cron/cleanup-dsar-requests' ,
66+ operation : 'deleteExpiredRequests'
67+ } )
5768 }
5869
5970 const fulfilledCount = fulfilledData ?. length || 0
@@ -77,13 +88,16 @@ export const GET: APIRoute = async ({ request }) => {
7788 { status : 200 , headers : { 'Content-Type' : 'application/json' } }
7889 )
7990 } catch ( error ) {
80- console . error ( 'DSAR requests cleanup failed:' , error )
91+ const serverError = handleApiFunctionError ( error , {
92+ route : '/api/cron/cleanup-dsar-requests' ,
93+ operation : 'GET' ,
94+ } )
8195 return new Response (
8296 JSON . stringify ( {
8397 success : false ,
84- error : error instanceof Error ? error . message : 'Unknown error' ,
98+ error : serverError . message ,
8599 } ) ,
86- { status : 500 , headers : { 'Content-Type' : 'application/json' } }
100+ { status : serverError . status ?? 500 , headers : { 'Content-Type' : 'application/json' } }
87101 )
88102 }
89103}
0 commit comments