| 1 | import type { IncomingMessage, ServerResponse } from 'node:http';
|
| 2 | import { HostedRepository } from '../packages/persistence/src/hosted.js';
|
| 3 |
|
| 4 | export default async function handler(request: IncomingMessage, response: ServerResponse) {
|
| 5 | const secret = process.env.CRON_SECRET;
|
| 6 | if (!secret) {
|
| 7 | response.statusCode = 503;
|
| 8 | response.end(JSON.stringify({ error: 'cron_not_configured' }));
|
| 9 | return;
|
| 10 | }
|
| 11 | if (request.headers.authorization !== `Bearer ${secret}`) {
|
| 12 | response.statusCode = 401;
|
| 13 | response.end(JSON.stringify({ error: 'unauthorized' }));
|
| 14 | return;
|
| 15 | }
|
| 16 | const databaseUrl = process.env.DATABASE_URL;
|
| 17 | if (!databaseUrl) {
|
| 18 | response.statusCode = 503;
|
| 19 | response.end(JSON.stringify({ error: 'database_not_configured' }));
|
| 20 | return;
|
| 21 | }
|
| 22 | const result = await new HostedRepository(databaseUrl).processDueFeedback();
|
| 23 | response.statusCode = 200;
|
| 24 | response.setHeader('content-type', 'application/json');
|
| 25 | response.end(JSON.stringify({ ok: true, ...result }));
|
| 26 | }
|