@opengis/bi
Version:
BI data visualization module
47 lines (36 loc) • 1.19 kB
JavaScript
import { pgClients } from "@opengis/fastify-table/utils.js";
import getTableData from "../utils/getTableData.js";
import getLayersData from "../utils/getLayersData.js";
export default async function gisFormat({ query = {}, pg = pgClients.client }) {
const time = [Date.now()];
const { layer, table, id, lat, lng } = query;
if (!table && !layer) {
return { message: 'not enough params', status: 400 };
}
if (layer && !(lat && lng)) {
return { message: 'not enough params: lat/lng', status: 400 };
}
if (table && !(id || layer)) {
return { message: 'not enough params: id', status: 400 };
}
const { message, template, rows, layers, html, body } = layer
? await getLayersData({ pg, layer, table, id, lat, lng, time })
: await getTableData({ pg, table, id, time });
if (message) return { message, status: 400 };
return {
time: {
layer: time[1] - time[0],
data: time[2] - time[1],
html: time[3] - time[2],
total: time[3] - time[0],
},
id: rows[0]?.id,
table,
layers,
data: { geom: rows[0]?.geom },
rows,
html,
template,
body,
};
}