Files
2026-09-28 23:15:47 +05:30

31 lines
1.0 KiB
TypeScript

import { isAuthorized } from "../../../../lib/auth";
import { pullChanges, SyncInputError } from "../../../../lib/sync";
export const dynamic = "force-dynamic";
export async function POST(request: Request) {
if (!isAuthorized(request.headers.get("authorization"))) {
return Response.json({ error: "unauthorized" }, { status: 401 });
}
let body: unknown;
try {
body = await request.json();
} catch {
return Response.json({ error: "invalid json" }, { status: 400 });
}
if (!body || typeof body !== "object" || Array.isArray(body)) {
return Response.json({ error: "invalid body" }, { status: 400 });
}
const cursors = (body as { cursors?: unknown }).cursors;
try {
const result = await pullChanges(cursors);
return Response.json(result);
} catch (error) {
if (error instanceof SyncInputError) {
return Response.json({ error: error.message }, { status: 400 });
}
console.error("sync pull failed");
return Response.json({ error: "sync failed" }, { status: 500 });
}
}