feat: add geo points endpoint
This commit is contained in:
29
apps/web/app/api/geo/route.ts
Normal file
29
apps/web/app/api/geo/route.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { getDb } from "@tline/db";
|
||||
|
||||
import { shapeGeoRows } from "./shape";
|
||||
|
||||
export const runtime = "nodejs";
|
||||
|
||||
export async function GET(): Promise<Response> {
|
||||
const db = getDb();
|
||||
|
||||
const rows = await db<
|
||||
{
|
||||
id: string;
|
||||
gps_lat: number | null;
|
||||
gps_lon: number | null;
|
||||
}[]
|
||||
>`
|
||||
select
|
||||
a.id,
|
||||
a.gps_lat,
|
||||
a.gps_lon
|
||||
from assets a
|
||||
where a.gps_lat is not null
|
||||
and a.gps_lon is not null
|
||||
order by a.capture_ts_utc asc nulls last, a.id asc
|
||||
limit 1000
|
||||
`;
|
||||
|
||||
return Response.json(shapeGeoRows(rows));
|
||||
}
|
||||
19
apps/web/app/api/geo/shape.ts
Normal file
19
apps/web/app/api/geo/shape.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
type GeoRow = {
|
||||
id: string;
|
||||
gps_lat: number | null;
|
||||
gps_lon: number | null;
|
||||
};
|
||||
|
||||
type GeoPoint = {
|
||||
id: string;
|
||||
gps_lat: number | null;
|
||||
gps_lon: number | null;
|
||||
};
|
||||
|
||||
export function shapeGeoRows(rows: GeoRow[]): GeoPoint[] {
|
||||
return rows.map((row) => ({
|
||||
id: row.id,
|
||||
gps_lat: row.gps_lat,
|
||||
gps_lon: row.gps_lon,
|
||||
}));
|
||||
}
|
||||
Reference in New Issue
Block a user