@opengis/bi
Version:
BI data visualization module
53 lines (43 loc) • 1.61 kB
JavaScript
import { dataDelete, pgClients } from '@opengis/fastify-table/utils.js';
/**
* Видалення набору даних
*
* @method DELETE
* @summary Видалення набору даних
* @priority 4
* @alias deleteDataset
* @type api
* @tag bi
* @param {Object} query.id Dataset ID
* @errors 400,500
* @returns {Number} status Номер помилки
* @returns {String} error Опис помилки
* @returns {Object} rows Масив з колонками таблиці
*/
export default async function deleteDataset({
pg = pgClients.client, query = {}, user = {},
}) {
if (!user?.uid) {
return { message: 'access restricted', status: 403 };
}
if (!query?.id) {
return { message: 'not enough params: id', status: 404 };
}
const dataset = await pg.query('select dataset_id as id, table_name as table from bi.dataset where dataset_id=$1', [query.id])
.then(el => el.rows[0] || {});
if (!dataset.id) {
return { message: 'dataset not found', status: 404 };
}
const table = dataset.table && pg.pk[dataset.table] ? dataset.table : dataset.table?.replace(/"/g, '');
const dropTable = table && pg.pk?.[table] && table.startsWith('data_user.');
if (dropTable) {
await pg.query(`drop table if exists ${table}`);
}
await dataDelete({
pg,
table: 'bi.dataset',
id: dataset.id,
uid: user.uid,
});
return { message: { id: dataset?.id, table: dropTable ? dataset.table : undefined }, status: 200 };
}