import { runCatalogSync } from '../../../lib/card-import/sync-catalog.js';

function authorizeCron(req) {
  const secret = process.env.CRON_SECRET;

  if (!secret) {
    if (process.env.NODE_ENV === 'production' || process.env.VERCEL_ENV === 'production') {
      return { ok: false, status: 503, error: 'CRON_SECRET is not configured' };
    }
    console.warn('[GET /api/cron/sync-catalog] CRON_SECRET unset — allowing in dev');
    return { ok: true };
  }

  const authHeader = req.headers.authorization || '';
  const token = authHeader.startsWith('Bearer ') ? authHeader.slice('Bearer '.length) : '';

  if (!token || token !== secret) {
    return { ok: false, status: 401, error: 'Unauthorized' };
  }

  return { ok: true };
}

export default async function handler(req, res) {
  if (req.method !== 'GET') {
    return res.status(405).json({ error: 'Method not allowed' });
  }

  const auth = authorizeCron(req);
  if (!auth.ok) {
    return res.status(auth.status).json({ error: auth.error });
  }

  try {
    const summary = await runCatalogSync();
    return res.status(200).json({ success: true, ...summary });
  } catch (error) {
    console.error('[GET /api/cron/sync-catalog]', error);
    return res.status(500).json({ error: 'Catalog sync failed', details: error.message });
  }
}
