Files
Neon-Desk/app/api/filings/sync/route.ts

36 lines
956 B
TypeScript

import { asErrorMessage, jsonError } from '@/lib/server/http';
import { requireAuthenticatedSession } from '@/lib/server/auth-session';
import { enqueueTask } from '@/lib/server/tasks';
export async function POST(request: Request) {
const { session, response } = await requireAuthenticatedSession();
if (response) {
return response;
}
try {
const payload = await request.json() as {
ticker?: string;
limit?: number;
};
if (!payload.ticker || payload.ticker.trim().length < 1) {
return jsonError('ticker is required');
}
const task = await enqueueTask({
userId: session.user.id,
taskType: 'sync_filings',
payload: {
ticker: payload.ticker.trim().toUpperCase(),
limit: payload.limit ?? 20
},
priority: 90
});
return Response.json({ task });
} catch (error) {
return jsonError(asErrorMessage(error, 'Failed to queue filings sync task'));
}
}