// API Endpoint: POST /api/god/campaigns/launch/[id]
import type { APIRoute } from 'astro';
import { pool } from '../../../../../lib/db';
import { batchQueue } from '../../../../../lib/queue/config';

export const POST: APIRoute = async ({ params, request }) => {
    try {
        const godToken = request.headers.get('X-God-Token');
        if (!godToken || godToken !== import.meta.env.GOD_TOKEN) {
            return new Response(JSON.stringify({ error: 'Unauthorized' }), {
                status: 401,
                headers: { 'Content-Type': 'application/json' }
            });
        }

        const { id } = params;
        if (!id) {
            return new Response(JSON.stringify({ error: 'Campaign ID required' }), {
                status: 400,
                headers: { 'Content-Type': 'application/json' }
            });
        }

        // Fetch campaign
        const result = await pool.query(
            `SELECT id, name, blueprint_json FROM campaign_masters WHERE id = $1`,
            [id]
        );

        if (result.rows.length === 0) {
            return new Response(JSON.stringify({ error: 'Campaign not found' }), {
                status: 404,
                headers: { 'Content-Type': 'application/json' }
            });
        }

        const campaign = result.rows[0];

        // Queue the job
        await batchQueue.add('generate_campaign_content', {
            campaignId: id,
            campaignName: campaign.name
        });

        // Update status
        await pool.query(
            `UPDATE campaign_masters SET status = 'processing', updated_at = NOW() WHERE id = $1`,
            [id]
        );

        return new Response(JSON.stringify({
            success: true,
            campaignId: id,
            message: 'Campaign queued for generation',
            status: 'processing'
        }), {
            status: 200,
            headers: { 'Content-Type': 'application/json' }
        });

    } catch (error: any) {
        console.error('Campaign launch error:', error);
        return new Response(JSON.stringify({
            error: 'Campaign launch failed',
            details: error.message
        }), {
            status: 500,
            headers: { 'Content-Type': 'application/json' }
        });
    }
};
