import type { FastifyInstance } from 'fastify';
import { intakeService } from '../services/intake.service.js';
import { requireExtensionAuth } from '../middleware/auth.js';
import { mondayChromeSchema } from '../schemas.js';

export async function extensionRoutes(app: FastifyInstance): Promise<void> {
  app.addHook('preHandler', requireExtensionAuth);

  app.post('/api/extension/ingest', async (request, reply) => {
    const parsed = mondayChromeSchema.safeParse(request.body);
    if (!parsed.success) {
      return reply.code(400).send({
        error: 'validation_error',
        details: parsed.error.flatten(),
      });
    }

    const input = {
      ...parsed.data,
      source_type: 'monday_chrome' as const,
      source_account: parsed.data.source_account ?? 'chrome',
    };

    const result = intakeService.ingest(input);

    return reply.code(result.created ? 201 : 200).send({
      status: result.duplicate ? 'duplicate' : 'created',
      item: {
        id: result.item.id,
        title: result.item.title,
        decision: result.item.decision,
        ingested_at: result.item.ingested_at,
      },
    });
  });
}
