@opengis/bi
Version:
BI data visualization module
40 lines (30 loc) • 1.13 kB
JavaScript
import path from 'node:path';
import { existsSync, readdirSync } from 'node:fs';
import { pgClients, dataDelete } from '@opengis/fastify-table/utils.js';
const cwd = process.cwd();
const dashboardDir = path.join(cwd, 'server/templates/dashboard');
export default async function dashboardDelete({ pg = pgClients.client, params = {}, user }, reply) {
if (!params?.id) {
return reply.status(400).send('not enough params: id');
}
const dirContent = existsSync(dashboardDir)
? readdirSync(dashboardDir)
: [];
if (dirContent.includes(params.id)) {
return reply.status(403).send(`access restricted: ${params.id}`);
}
const { rowCount = 0 } = pg.pk?.['bi.dashboard']
? await pg.query('select * from bi.dashboard where $1 in (dashboard_id,name)', [params.id])
: {};
if (rowCount === 0) {
return reply.status(404).send(`not found ${params.id}`);
}
await pg.query(`delete from bi.widget where $1 in (dashboard_id)`, [params.id]);
await dataDelete({
pg,
table: 'bi.dashboard',
id: params.id,
uid: user?.uid,
});
return reply.status(200).send('successfully deleted');
}