mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 07:11:12 -05:00
Implement edge function and UI to backfill missing company data from submissions, including admin trigger and result reporting, and wire into admin settings.
55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import { createEdgeFunction } from '../_shared/edgeFunctionWrapper.ts';
|
|
import { edgeLogger } from '../_shared/logger.ts';
|
|
|
|
export default createEdgeFunction(
|
|
{
|
|
name: 'backfill-company-data',
|
|
requireAuth: true,
|
|
},
|
|
async (req, context, supabase) => {
|
|
edgeLogger.info('Starting company data backfill', { requestId: context.requestId });
|
|
|
|
// Check if user is superuser
|
|
const { data: profile, error: profileError } = await supabase
|
|
.from('user_profiles')
|
|
.select('role')
|
|
.eq('id', context.user.id)
|
|
.single();
|
|
|
|
if (profileError || profile?.role !== 'superuser') {
|
|
edgeLogger.warn('Unauthorized backfill attempt', {
|
|
userId: context.user.id,
|
|
requestId: context.requestId
|
|
});
|
|
return new Response(
|
|
JSON.stringify({ error: 'Unauthorized: Superuser access required' }),
|
|
{ status: 403, headers: { 'Content-Type': 'application/json' } }
|
|
);
|
|
}
|
|
|
|
// Execute the backfill function
|
|
const { data, error } = await supabase.rpc('backfill_company_data');
|
|
|
|
if (error) {
|
|
edgeLogger.error('Error running company data backfill', {
|
|
error,
|
|
requestId: context.requestId
|
|
});
|
|
throw error;
|
|
}
|
|
|
|
edgeLogger.info('Company data backfill completed', {
|
|
results: data,
|
|
requestId: context.requestId
|
|
});
|
|
|
|
return new Response(
|
|
JSON.stringify({
|
|
success: true,
|
|
...data,
|
|
}),
|
|
{ headers: { 'Content-Type': 'application/json' } }
|
|
);
|
|
}
|
|
);
|