import { Router, Request, Response } from 'express';
import { CheckLicenceSchema } from '../schemas/generate.schema.js';
import { validateLicence } from '../lib/licence.js';

const router = Router();

router.post('/', async (req: Request, res: Response): Promise<void> => {
  const parsed = CheckLicenceSchema.safeParse(req.body);
  if (!parsed.success) {
    res.status(400).json({ valid: false, error: 'invalid_request' });
    return;
  }

  const { licence_key } = parsed.data;
  const clientIp =
    (req.headers['x-forwarded-for'] as string | undefined)?.split(',')[0]?.trim() ??
    req.ip ??
    '0.0.0.0';

  const result = await validateLicence(licence_key, clientIp);

  if (!result.valid) {
    res.json({ valid: false, error: result.reason });
    return;
  }

  const { licence } = result;
  res.json({
    valid: true,
    plan:  licence.plan,
    usage: licence.usage_month,
    quota: licence.quota_month,
  });
});

export default router;
