trails/apps/journal/app/routes/api.e2e.route.$id.ts
2026-05-10 15:24:31 +02:00

27 lines
926 B
TypeScript

import { data } from "react-router";
import { sql } from "drizzle-orm";
import { getDb } from "~/lib/db";
// Only available when the server is started with E2E=true.
function assertE2EEnabled() {
if (process.env.E2E !== "true") {
throw new Response("Not found", { status: 404 });
}
}
/**
* GET /api/e2e/route/:id
*
* Returns minimal route metadata for e2e assertions — specifically whether
* the PostGIS geom column is populated. Gated behind E2E=true.
*/
export async function loader({ params }: { params: { id: string } }) {
assertE2EEnabled();
const db = getDb();
const result = await db.execute(
sql`SELECT id, geom IS NOT NULL AS has_geom FROM journal.routes WHERE id = ${params.id}`,
);
const row = (result as unknown as Array<{ id: string; has_geom: boolean }>)[0];
if (!row) return data({ error: "Not found" }, { status: 404 });
return data({ id: row.id, hasGeom: row.has_geom });
}