import { NextRequest, NextResponse } from "next/server"; import { sql } from "@/lib/db"; import { getPipelineQueue, JOB_OPTIONS } from "@/lib/queue"; export const runtime = "nodejs"; export async function POST( _req: NextRequest, { params }: { params: Promise<{ slug: string }> }, ) { const { slug } = await params; const rows = await Promise.resolve(sql<{ geofabrik_url: string }[]>` SELECT geofabrik_url FROM cities WHERE slug = ${slug} `); if (rows.length === 0) { return NextResponse.json({ error: "City not found" }, { status: 404 }); } const { geofabrik_url: geofabrikUrl } = rows[0]; const [{ iter }] = await Promise.resolve(sql<{ iter: number }[]>` UPDATE cities SET status = 'pending', error_message = NULL, refresh_iter = refresh_iter + 1 WHERE slug = ${slug} RETURNING refresh_iter AS iter `); const queue = getPipelineQueue(); const job = await queue.add( "refresh-city", { type: "refresh-city", citySlug: slug, geofabrikUrl, iter }, { ...JOB_OPTIONS["refresh-city"], jobId: `refresh-city.${slug}.${iter}` }, ); return NextResponse.json({ citySlug: slug, jobId: job.id }, { status: 202 }); }