import { createServerSupabaseClient } from '@/lib/supabase' import { NextResponse } from 'next/server' // POST /api/cron/word-count-processor - Cron job to process word count queue export async function POST(request: Request) { try { // Verify cron secret if provided const cronSecret = request.headers.get('authorization') const expectedSecret = process.env.CRON_SECRET if (expectedSecret && cronSecret !== `Bearer ${expectedSecret}`) { console.log('Unauthorized cron request') return NextResponse.json( { error: 'Unauthorized' }, { status: 401 } ) } console.log('🕒 Starting scheduled word count processing...') const supabase = createServerSupabaseClient() // Call the database function directly to process the queue const { data: results, error } = await supabase .rpc('process_word_count_queue', { batch_size: 10 }) if (error) { console.error('Error processing word count queue:', error) return NextResponse.json( { error: 'Failed to process word count queue', details: error }, { status: 500 } ) } // Count successful and failed operations const successful = results?.filter((r: any) => r.success).length || 0 const failed = results?.filter((r: any) => !r.success).length || 0 console.log('✅ Scheduled word count processing completed:', { processed: results?.length || 0, successful, failed }) // Log any failures if (failed > 0) { const failures = results?.filter((r: any) => !r.success) || [] console.error('Word count processing failures:', failures) } return NextResponse.json({ success: true, message: 'Word count processing completed', processed: results?.length || 0, successful, failed, results: results || [] }) } catch (error) { console.error('❌ Error in word count cron job:', error) return NextResponse.json( { success: false, error: error instanceof Error ? error.message : 'Unknown error' }, { status: 500 } ) } } // GET /api/cron/word-count-processor - Health check for the cron job export async function GET() { return NextResponse.json({ success: true, message: 'Word count processor cron job is available', timestamp: new Date().toISOString() }) }