mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 06:11:12 -05:00
Add Company Backfill Tool
Implement edge function and UI to backfill missing company data from submissions, including admin trigger and result reporting, and wire into admin settings.
This commit is contained in:
54
supabase/functions/backfill-company-data/index.ts
Normal file
54
supabase/functions/backfill-company-data/index.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
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' } }
|
||||
);
|
||||
}
|
||||
);
|
||||
Reference in New Issue
Block a user