@opengis/bi 1.2.32 → 1.2.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -92
- package/dist/bi.js +1 -1
- package/dist/bi.umd.cjs +68 -68
- package/dist/{import-file-D-ISqB7l.js → import-file-BwxPX622.js} +1132 -1079
- package/dist/style.css +1 -1
- package/dist/{vs-funnel-bar-aoZzvriV.js → vs-funnel-bar-BV18EA4K.js} +3 -3
- package/dist/{vs-list-CBkyJSBj.js → vs-list-WrrWQ5KF.js} +32 -53
- package/dist/{vs-map-C3C11qmT.js → vs-map-CYd9vdrd.js} +3 -3
- package/dist/{vs-map-cluster-BsPmHIMx.js → vs-map-cluster-5TnGPuBH.js} +3 -3
- package/dist/{vs-number-d58ftpH5.js → vs-number-DUeRr7uz.js} +3 -3
- package/dist/{vs-table-BHa5Velm.js → vs-table-CZJnXfUv.js} +6 -6
- package/dist/{vs-text-Bq87gMTx.js → vs-text-D3nCPkgk.js} +4 -4
- package/package.json +77 -77
- package/plugin.js +21 -21
- package/server/helpers/mdToHTML.js +17 -17
- package/server/migrations/bi.dataset.sql +46 -46
- package/server/migrations/bi.sql +114 -114
- package/server/plugins/docs.js +48 -48
- package/server/plugins/hook.js +89 -89
- package/server/routes/dashboard/controllers/dashboard.import.js +103 -103
- package/server/routes/dashboard/controllers/dashboard.js +158 -158
- package/server/routes/dashboard/controllers/dashboard.list.js +60 -60
- package/server/routes/dashboard/controllers/utils/yaml.js +11 -11
- package/server/routes/dashboard/index.mjs +26 -26
- package/server/routes/data/controllers/data.js +230 -230
- package/server/routes/data/controllers/util/chartSQL.js +49 -49
- package/server/routes/data/controllers/util/normalizeData.js +65 -65
- package/server/routes/data/index.mjs +38 -38
- package/server/routes/dataset/controllers/bi.dataset.list.js +29 -29
- package/server/routes/dataset/controllers/bi.db.list.js +19 -19
- package/server/routes/dataset/controllers/comment.js +55 -55
- package/server/routes/dataset/controllers/createDatasetPost.js +134 -134
- package/server/routes/dataset/controllers/data.js +149 -149
- package/server/routes/dataset/controllers/dbTablePreview.js +58 -58
- package/server/routes/dataset/controllers/dbTables.js +34 -34
- package/server/routes/dataset/controllers/delete.js +40 -40
- package/server/routes/dataset/controllers/deleteDataset.js +52 -52
- package/server/routes/dataset/controllers/editDataset.js +90 -90
- package/server/routes/dataset/controllers/export.js +214 -214
- package/server/routes/dataset/controllers/form.js +99 -99
- package/server/routes/dataset/controllers/format.js +46 -46
- package/server/routes/dataset/controllers/insert.js +47 -47
- package/server/routes/dataset/controllers/table.js +68 -68
- package/server/routes/dataset/controllers/update.js +43 -43
- package/server/routes/dataset/index.mjs +132 -132
- package/server/routes/dataset/utils/convertJSONToCSV.js +17 -17
- package/server/routes/dataset/utils/convertJSONToXls.js +47 -47
- package/server/routes/dataset/utils/createTableQuery.js +59 -59
- package/server/routes/dataset/utils/datasetForms.js +1 -1
- package/server/routes/dataset/utils/descriptionList.js +45 -45
- package/server/routes/dataset/utils/downloadRemoteFile.js +58 -58
- package/server/routes/dataset/utils/executeQuery.js +46 -46
- package/server/routes/dataset/utils/getLayersData.js +106 -106
- package/server/routes/dataset/utils/getTableData.js +46 -46
- package/server/routes/dataset/utils/insertDataQuery.js +12 -12
- package/server/routes/dataset/utils/metaFormat.js +24 -24
- package/server/routes/edit/controllers/dashboard.add.js +36 -36
- package/server/routes/edit/controllers/dashboard.delete.js +39 -39
- package/server/routes/edit/controllers/dashboard.edit.js +61 -61
- package/server/routes/edit/controllers/widget.add.js +78 -78
- package/server/routes/edit/controllers/widget.del.js +58 -58
- package/server/routes/edit/controllers/widget.edit.js +115 -115
- package/server/routes/edit/index.mjs +33 -33
- package/server/routes/map/controllers/cluster.js +125 -125
- package/server/routes/map/controllers/clusterVtile.js +166 -166
- package/server/routes/map/controllers/geojson.js +127 -127
- package/server/routes/map/controllers/heatmap.js +118 -118
- package/server/routes/map/controllers/map.js +69 -69
- package/server/routes/map/controllers/utils/downloadClusterData.js +44 -44
- package/server/routes/map/controllers/vtile.js +183 -183
- package/server/routes/map/index.mjs +32 -32
- package/server/templates/page/login.html +58 -58
- package/server/utils/getWidget.js +118 -118
- package/utils.js +12 -12
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import { pgClients } from "@opengis/fastify-table/utils.js";
|
|
2
|
-
|
|
3
|
-
import getTableData from "../utils/getTableData.js";
|
|
4
|
-
import getLayersData from "../utils/getLayersData.js";
|
|
5
|
-
|
|
6
|
-
export default async function gisFormat({ query = {}, pg = pgClients.client }) {
|
|
7
|
-
const time = [Date.now()];
|
|
8
|
-
const { layer, table, id, lat, lng } = query;
|
|
9
|
-
|
|
10
|
-
if (!table && !layer) {
|
|
11
|
-
return { message: 'not enough params', status: 400 };
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (layer && !(lat && lng)) {
|
|
15
|
-
return { message: 'not enough params: lat/lng', status: 400 };
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
if (table && !(id || layer)) {
|
|
19
|
-
return { message: 'not enough params: id', status: 400 };
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const { message, template, rows, layers, html, body } = layer
|
|
23
|
-
? await getLayersData({ pg, layer, table, id, lat, lng, time })
|
|
24
|
-
: await getTableData({ pg, table, id, time });
|
|
25
|
-
|
|
26
|
-
if (message) return { message, status: 400 };
|
|
27
|
-
|
|
28
|
-
return {
|
|
29
|
-
time: {
|
|
30
|
-
layer: time[1] - time[0],
|
|
31
|
-
data: time[2] - time[1],
|
|
32
|
-
html: time[3] - time[2],
|
|
33
|
-
total: time[3] - time[0],
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
id: rows[0]?.id,
|
|
37
|
-
table,
|
|
38
|
-
layers,
|
|
39
|
-
|
|
40
|
-
data: { geom: rows[0]?.geom },
|
|
41
|
-
rows,
|
|
42
|
-
html,
|
|
43
|
-
template,
|
|
44
|
-
body,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
1
|
+
import { pgClients } from "@opengis/fastify-table/utils.js";
|
|
2
|
+
|
|
3
|
+
import getTableData from "../utils/getTableData.js";
|
|
4
|
+
import getLayersData from "../utils/getLayersData.js";
|
|
5
|
+
|
|
6
|
+
export default async function gisFormat({ query = {}, pg = pgClients.client }) {
|
|
7
|
+
const time = [Date.now()];
|
|
8
|
+
const { layer, table, id, lat, lng } = query;
|
|
9
|
+
|
|
10
|
+
if (!table && !layer) {
|
|
11
|
+
return { message: 'not enough params', status: 400 };
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (layer && !(lat && lng)) {
|
|
15
|
+
return { message: 'not enough params: lat/lng', status: 400 };
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (table && !(id || layer)) {
|
|
19
|
+
return { message: 'not enough params: id', status: 400 };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const { message, template, rows, layers, html, body } = layer
|
|
23
|
+
? await getLayersData({ pg, layer, table, id, lat, lng, time })
|
|
24
|
+
: await getTableData({ pg, table, id, time });
|
|
25
|
+
|
|
26
|
+
if (message) return { message, status: 400 };
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
time: {
|
|
30
|
+
layer: time[1] - time[0],
|
|
31
|
+
data: time[2] - time[1],
|
|
32
|
+
html: time[3] - time[2],
|
|
33
|
+
total: time[3] - time[0],
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
id: rows[0]?.id,
|
|
37
|
+
table,
|
|
38
|
+
layers,
|
|
39
|
+
|
|
40
|
+
data: { geom: rows[0]?.geom },
|
|
41
|
+
rows,
|
|
42
|
+
html,
|
|
43
|
+
template,
|
|
44
|
+
body,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
config, getToken, dataInsert, pgClients,
|
|
3
|
-
} from '@opengis/fastify-table/utils.js';
|
|
4
|
-
|
|
5
|
-
import datasetForms from '../utils/datasetForms.js';
|
|
6
|
-
|
|
7
|
-
export default async function datasetDataInsert({
|
|
8
|
-
pg = pgClients.client, params = {}, body = {}, user = {},
|
|
9
|
-
}) {
|
|
10
|
-
if (!user?.uid) {
|
|
11
|
-
return { message: 'access restricted', status: 403 };
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const tokenData = await getToken({
|
|
15
|
-
uid: user?.uid,
|
|
16
|
-
token: params.id,
|
|
17
|
-
mode: 'a',
|
|
18
|
-
json: 1,
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
if (!tokenData && !config.local && !config.debug) {
|
|
22
|
-
return { message: 'token not allow', status: 403 };
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const dataset = await pg.query('select dataset_id as id, table_name as table from bi.dataset where dataset_id=$1', [tokenData?.dataset || params.id])
|
|
26
|
-
.then(el => el.rows[0] || {});
|
|
27
|
-
|
|
28
|
-
const { form, table: add } = tokenData
|
|
29
|
-
|| { form: `${dataset.id}.form`, table: dataset.table };
|
|
30
|
-
|
|
31
|
-
if (!form || !dataset.id || !datasetForms[dataset.id]) {
|
|
32
|
-
return { message: 'dataset not found', status: 404 };
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const res = await dataInsert({
|
|
36
|
-
pg,
|
|
37
|
-
table: add,
|
|
38
|
-
data: body,
|
|
39
|
-
uid: user?.uid,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
if (!res) {
|
|
43
|
-
return { message: 'nothing added' };
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return { rows: res.rows };
|
|
47
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
config, getToken, dataInsert, pgClients,
|
|
3
|
+
} from '@opengis/fastify-table/utils.js';
|
|
4
|
+
|
|
5
|
+
import datasetForms from '../utils/datasetForms.js';
|
|
6
|
+
|
|
7
|
+
export default async function datasetDataInsert({
|
|
8
|
+
pg = pgClients.client, params = {}, body = {}, user = {},
|
|
9
|
+
}) {
|
|
10
|
+
if (!user?.uid) {
|
|
11
|
+
return { message: 'access restricted', status: 403 };
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const tokenData = await getToken({
|
|
15
|
+
uid: user?.uid,
|
|
16
|
+
token: params.id,
|
|
17
|
+
mode: 'a',
|
|
18
|
+
json: 1,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
if (!tokenData && !config.local && !config.debug) {
|
|
22
|
+
return { message: 'token not allow', status: 403 };
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const dataset = await pg.query('select dataset_id as id, table_name as table from bi.dataset where dataset_id=$1', [tokenData?.dataset || params.id])
|
|
26
|
+
.then(el => el.rows[0] || {});
|
|
27
|
+
|
|
28
|
+
const { form, table: add } = tokenData
|
|
29
|
+
|| { form: `${dataset.id}.form`, table: dataset.table };
|
|
30
|
+
|
|
31
|
+
if (!form || !dataset.id || !datasetForms[dataset.id]) {
|
|
32
|
+
return { message: 'dataset not found', status: 404 };
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const res = await dataInsert({
|
|
36
|
+
pg,
|
|
37
|
+
table: add,
|
|
38
|
+
data: body,
|
|
39
|
+
uid: user?.uid,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
if (!res) {
|
|
43
|
+
return { message: 'nothing added' };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return { rows: res.rows };
|
|
47
|
+
}
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import {
|
|
2
|
-
config, pgClients, getMeta, setToken, getToken,
|
|
3
|
-
} from '@opengis/fastify-table/utils.js';
|
|
4
|
-
|
|
5
|
-
export default async function datasetFormData({
|
|
6
|
-
pg = pgClients.client, params = {}, query = {}, user = {},
|
|
7
|
-
}) {
|
|
8
|
-
if (!params?.id) {
|
|
9
|
-
return { message: 'not enough params: id', status: 400 };
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (!user?.uid) {
|
|
13
|
-
return { message: 'access restricted', status: 403 };
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const { user_type: userType = 'regular' } = user;
|
|
17
|
-
|
|
18
|
-
const tokenData = await getToken({
|
|
19
|
-
uid: user?.uid,
|
|
20
|
-
token: params.id,
|
|
21
|
-
mode: 'w',
|
|
22
|
-
json: 1,
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
if (!tokenData && !params?.object_id) {
|
|
26
|
-
return { message: 'not enough params: object_id', status: 400 };
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const dataset = await pg.query(`select dataset_id as id, table_name as table, column_list as columns, filter_list as filters,
|
|
30
|
-
sql_list as sql, style, form_setting, pk, access_level from bi.dataset where dataset_id=$1`, [tokenData?.dataset || params.id]).then(el => el.rows[0] || {});
|
|
31
|
-
|
|
32
|
-
if (!dataset?.id) {
|
|
33
|
-
return { message: 'dataset not found', status: 404 };
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const tlist = await pg.query(`select array_agg((select nspname from pg_namespace where oid=relnamespace)||'.'||relname) tlist
|
|
37
|
-
from pg_class where relkind in ('r','v')`).then(el => el.rows[0]?.tlist || []);
|
|
38
|
-
|
|
39
|
-
if (!dataset.table || !tlist.includes(dataset.table.replace(/"/g, '')) || (!pg.pk?.[dataset.table.replace(/"/g, '')] && !dataset.pk)) {
|
|
40
|
-
return { message: `table not found: ${dataset.table}`, status: 404 };
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const { pk = dataset.pk, columns: dbColumns = [] } = await getMeta(dataset.table) || {};
|
|
44
|
-
const cols = dataset.columns?.filter((el) => el.name !== 'geom')?.map((el) => el.name || el)?.join(',');
|
|
45
|
-
|
|
46
|
-
const where = [`"${pk}" = $1`, dataset.query].filter((el) => el);
|
|
47
|
-
|
|
48
|
-
const geom = dbColumns.find((el) => el.name === 'geom' && pg.pgType[el.dataTypeID] === 'geometry') ? ',st_asgeojson(geom)::json as geom' : '';
|
|
49
|
-
const files = dbColumns.find((el) => el.name === 'files' && pg.pgType[el.dataTypeID] === 'text') ? ',files' : '';
|
|
50
|
-
const q = `select "${pk}" as id, ${cols || '*'} ${files} ${geom} from ${dataset.table} t where ${where.join(' and ') || 'true'} limit 1`;
|
|
51
|
-
|
|
52
|
-
if (query.sql === '1' && (config.debug || userType.includes('admin'))) { return q; }
|
|
53
|
-
|
|
54
|
-
const data = await pg.query(q, [tokenData?.id || params.object_id]).then(el => el.rows?.[0] || {});
|
|
55
|
-
|
|
56
|
-
data.token = setToken({
|
|
57
|
-
ids: [JSON.stringify({
|
|
58
|
-
id: data.id,
|
|
59
|
-
table: dataset.table,
|
|
60
|
-
form: `${dataset.id}.form`,
|
|
61
|
-
dataset: dataset.id,
|
|
62
|
-
})],
|
|
63
|
-
uid: user?.uid,
|
|
64
|
-
array: 1,
|
|
65
|
-
})[0];
|
|
66
|
-
|
|
67
|
-
return data;
|
|
68
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
config, pgClients, getMeta, setToken, getToken,
|
|
3
|
+
} from '@opengis/fastify-table/utils.js';
|
|
4
|
+
|
|
5
|
+
export default async function datasetFormData({
|
|
6
|
+
pg = pgClients.client, params = {}, query = {}, user = {},
|
|
7
|
+
}) {
|
|
8
|
+
if (!params?.id) {
|
|
9
|
+
return { message: 'not enough params: id', status: 400 };
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if (!user?.uid) {
|
|
13
|
+
return { message: 'access restricted', status: 403 };
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const { user_type: userType = 'regular' } = user;
|
|
17
|
+
|
|
18
|
+
const tokenData = await getToken({
|
|
19
|
+
uid: user?.uid,
|
|
20
|
+
token: params.id,
|
|
21
|
+
mode: 'w',
|
|
22
|
+
json: 1,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
if (!tokenData && !params?.object_id) {
|
|
26
|
+
return { message: 'not enough params: object_id', status: 400 };
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const dataset = await pg.query(`select dataset_id as id, table_name as table, column_list as columns, filter_list as filters,
|
|
30
|
+
sql_list as sql, style, form_setting, pk, access_level from bi.dataset where dataset_id=$1`, [tokenData?.dataset || params.id]).then(el => el.rows[0] || {});
|
|
31
|
+
|
|
32
|
+
if (!dataset?.id) {
|
|
33
|
+
return { message: 'dataset not found', status: 404 };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const tlist = await pg.query(`select array_agg((select nspname from pg_namespace where oid=relnamespace)||'.'||relname) tlist
|
|
37
|
+
from pg_class where relkind in ('r','v')`).then(el => el.rows[0]?.tlist || []);
|
|
38
|
+
|
|
39
|
+
if (!dataset.table || !tlist.includes(dataset.table.replace(/"/g, '')) || (!pg.pk?.[dataset.table.replace(/"/g, '')] && !dataset.pk)) {
|
|
40
|
+
return { message: `table not found: ${dataset.table}`, status: 404 };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const { pk = dataset.pk, columns: dbColumns = [] } = await getMeta(dataset.table) || {};
|
|
44
|
+
const cols = dataset.columns?.filter((el) => el.name !== 'geom')?.map((el) => el.name || el)?.join(',');
|
|
45
|
+
|
|
46
|
+
const where = [`"${pk}" = $1`, dataset.query].filter((el) => el);
|
|
47
|
+
|
|
48
|
+
const geom = dbColumns.find((el) => el.name === 'geom' && pg.pgType[el.dataTypeID] === 'geometry') ? ',st_asgeojson(geom)::json as geom' : '';
|
|
49
|
+
const files = dbColumns.find((el) => el.name === 'files' && pg.pgType[el.dataTypeID] === 'text') ? ',files' : '';
|
|
50
|
+
const q = `select "${pk}" as id, ${cols || '*'} ${files} ${geom} from ${dataset.table} t where ${where.join(' and ') || 'true'} limit 1`;
|
|
51
|
+
|
|
52
|
+
if (query.sql === '1' && (config.debug || userType.includes('admin'))) { return q; }
|
|
53
|
+
|
|
54
|
+
const data = await pg.query(q, [tokenData?.id || params.object_id]).then(el => el.rows?.[0] || {});
|
|
55
|
+
|
|
56
|
+
data.token = setToken({
|
|
57
|
+
ids: [JSON.stringify({
|
|
58
|
+
id: data.id,
|
|
59
|
+
table: dataset.table,
|
|
60
|
+
form: `${dataset.id}.form`,
|
|
61
|
+
dataset: dataset.id,
|
|
62
|
+
})],
|
|
63
|
+
uid: user?.uid,
|
|
64
|
+
array: 1,
|
|
65
|
+
})[0];
|
|
66
|
+
|
|
67
|
+
return data;
|
|
68
|
+
}
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
config, getToken, dataUpdate, pgClients,
|
|
3
|
-
} from '@opengis/fastify-table/utils.js';
|
|
4
|
-
|
|
5
|
-
import datasetForms from '../utils/datasetForms.js';
|
|
6
|
-
|
|
7
|
-
export default async function datasetDataUpdate({
|
|
8
|
-
pg = pgClients.client, params = {}, body = {}, user = {},
|
|
9
|
-
}) {
|
|
10
|
-
if (!user?.uid) {
|
|
11
|
-
return { message: 'access restricted', status: 403 };
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const tokenData = await getToken({
|
|
15
|
-
uid: user?.uid,
|
|
16
|
-
token: params.id,
|
|
17
|
-
mode: 'a',
|
|
18
|
-
json: 1,
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
if (!tokenData && !config.local && !config.debug) {
|
|
22
|
-
return { message: 'token not allow', status: 403 };
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const dataset = await pg.query('select dataset_id as id, table_name as table from bi.dataset where dataset_id=$1', [tokenData?.dataset || params.id])
|
|
26
|
-
.then(el => el.rows[0] || {});
|
|
27
|
-
|
|
28
|
-
const table = tokenData?.table || dataset.table;
|
|
29
|
-
|
|
30
|
-
if (!dataset.id || !datasetForms[dataset.id]) {
|
|
31
|
-
return { message: 'dataset not found', status: 404 };
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const res = await dataUpdate({
|
|
35
|
-
pg,
|
|
36
|
-
id: tokenData?.id || params?.object_id,
|
|
37
|
-
table,
|
|
38
|
-
data: body,
|
|
39
|
-
uid: user?.uid,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
return res;
|
|
43
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
config, getToken, dataUpdate, pgClients,
|
|
3
|
+
} from '@opengis/fastify-table/utils.js';
|
|
4
|
+
|
|
5
|
+
import datasetForms from '../utils/datasetForms.js';
|
|
6
|
+
|
|
7
|
+
export default async function datasetDataUpdate({
|
|
8
|
+
pg = pgClients.client, params = {}, body = {}, user = {},
|
|
9
|
+
}) {
|
|
10
|
+
if (!user?.uid) {
|
|
11
|
+
return { message: 'access restricted', status: 403 };
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const tokenData = await getToken({
|
|
15
|
+
uid: user?.uid,
|
|
16
|
+
token: params.id,
|
|
17
|
+
mode: 'a',
|
|
18
|
+
json: 1,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
if (!tokenData && !config.local && !config.debug) {
|
|
22
|
+
return { message: 'token not allow', status: 403 };
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const dataset = await pg.query('select dataset_id as id, table_name as table from bi.dataset where dataset_id=$1', [tokenData?.dataset || params.id])
|
|
26
|
+
.then(el => el.rows[0] || {});
|
|
27
|
+
|
|
28
|
+
const table = tokenData?.table || dataset.table;
|
|
29
|
+
|
|
30
|
+
if (!dataset.id || !datasetForms[dataset.id]) {
|
|
31
|
+
return { message: 'dataset not found', status: 404 };
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const res = await dataUpdate({
|
|
35
|
+
pg,
|
|
36
|
+
id: tokenData?.id || params?.object_id,
|
|
37
|
+
table,
|
|
38
|
+
data: body,
|
|
39
|
+
uid: user?.uid,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
return res;
|
|
43
|
+
}
|
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
import dbTables from './controllers/dbTables.js';
|
|
2
|
-
import dbTablePreview from './controllers/dbTablePreview.js';
|
|
3
|
-
|
|
4
|
-
import createDatasetPost from './controllers/createDatasetPost.js';
|
|
5
|
-
import editDataset from './controllers/editDataset.js';
|
|
6
|
-
import deleteDataset from './controllers/deleteDataset.js';
|
|
7
|
-
import datasetData from './controllers/data.js';
|
|
8
|
-
import datasetFormData from './controllers/table.js';
|
|
9
|
-
import datasetDataInsert from './controllers/insert.js';
|
|
10
|
-
import datasetDataUpdate from './controllers/update.js';
|
|
11
|
-
import datasetDataDelete from './controllers/delete.js';
|
|
12
|
-
import datasetDataExport from './controllers/export.js';
|
|
13
|
-
import datasetForm from './controllers/form.js';
|
|
14
|
-
import format from './controllers/format.js';
|
|
15
|
-
import datasetEditComment from './controllers/comment.js';
|
|
16
|
-
import biDbList from './controllers/bi.db.list.js'; // list db
|
|
17
|
-
import biDatasetList from './controllers/bi.dataset.list.js'; // list datasets
|
|
18
|
-
|
|
19
|
-
const policy = ['public'];
|
|
20
|
-
|
|
21
|
-
export default async function route(fastify, opts) {
|
|
22
|
-
fastify.route({
|
|
23
|
-
method: 'GET',
|
|
24
|
-
url: '/bi-db-list',
|
|
25
|
-
schema: {},
|
|
26
|
-
config: { policy },
|
|
27
|
-
handler: biDbList,
|
|
28
|
-
});
|
|
29
|
-
fastify.route({
|
|
30
|
-
method: 'GET',
|
|
31
|
-
url: '/bi-datasets',
|
|
32
|
-
schema: {},
|
|
33
|
-
config: { policy },
|
|
34
|
-
handler: biDatasetList,
|
|
35
|
-
});
|
|
36
|
-
fastify.route({
|
|
37
|
-
method: 'GET',
|
|
38
|
-
url: '/gis-format',
|
|
39
|
-
config: { policy },
|
|
40
|
-
handler: format,
|
|
41
|
-
});
|
|
42
|
-
fastify.route({
|
|
43
|
-
method: 'GET',
|
|
44
|
-
url: '/db-tables',
|
|
45
|
-
schema: {},
|
|
46
|
-
config: { policy },
|
|
47
|
-
handler: dbTables,
|
|
48
|
-
});
|
|
49
|
-
fastify.route({
|
|
50
|
-
method: 'GET',
|
|
51
|
-
url: '/db-tables/:name',
|
|
52
|
-
schema: {},
|
|
53
|
-
config: { policy },
|
|
54
|
-
handler: dbTablePreview,
|
|
55
|
-
});
|
|
56
|
-
fastify.route({
|
|
57
|
-
method: 'POST',
|
|
58
|
-
url: '/dataset',
|
|
59
|
-
schema: {},
|
|
60
|
-
config: { policy },
|
|
61
|
-
handler: createDatasetPost,
|
|
62
|
-
});
|
|
63
|
-
fastify.route({
|
|
64
|
-
method: 'PUT',
|
|
65
|
-
url: '/dataset',
|
|
66
|
-
schema: {},
|
|
67
|
-
config: { policy },
|
|
68
|
-
handler: editDataset,
|
|
69
|
-
});
|
|
70
|
-
fastify.route({
|
|
71
|
-
method: 'DELETE',
|
|
72
|
-
url: '/dataset',
|
|
73
|
-
schema: {},
|
|
74
|
-
config: { policy },
|
|
75
|
-
handler: deleteDataset,
|
|
76
|
-
});
|
|
77
|
-
fastify.route({
|
|
78
|
-
method: 'GET',
|
|
79
|
-
url: '/dataset-data/:id',
|
|
80
|
-
schema: {},
|
|
81
|
-
config: { policy },
|
|
82
|
-
handler: datasetData,
|
|
83
|
-
});
|
|
84
|
-
fastify.route({
|
|
85
|
-
method: 'GET',
|
|
86
|
-
url: '/dataset-data/:id/:object_id',
|
|
87
|
-
schema: {},
|
|
88
|
-
config: { policy },
|
|
89
|
-
handler: datasetFormData,
|
|
90
|
-
});
|
|
91
|
-
fastify.route({
|
|
92
|
-
method: 'POST',
|
|
93
|
-
url: '/dataset-data/:id',
|
|
94
|
-
schema: {},
|
|
95
|
-
config: { policy },
|
|
96
|
-
handler: datasetDataInsert,
|
|
97
|
-
});
|
|
98
|
-
fastify.route({
|
|
99
|
-
method: 'PUT',
|
|
100
|
-
url: '/dataset-data/:id/:object_id?',
|
|
101
|
-
schema: {},
|
|
102
|
-
config: { policy },
|
|
103
|
-
handler: datasetDataUpdate,
|
|
104
|
-
});
|
|
105
|
-
fastify.route({
|
|
106
|
-
method: 'DELETE',
|
|
107
|
-
url: '/dataset-data/:id/:object_id?',
|
|
108
|
-
schema: {},
|
|
109
|
-
config: { policy },
|
|
110
|
-
handler: datasetDataDelete,
|
|
111
|
-
});
|
|
112
|
-
fastify.route({
|
|
113
|
-
method: 'GET',
|
|
114
|
-
url: '/dataset-form/:id',
|
|
115
|
-
schema: {},
|
|
116
|
-
config: { policy },
|
|
117
|
-
handler: datasetForm,
|
|
118
|
-
});
|
|
119
|
-
fastify.route({
|
|
120
|
-
method: 'GET',
|
|
121
|
-
url: '/dataset-export/:id',
|
|
122
|
-
schema: {},
|
|
123
|
-
config: { policy },
|
|
124
|
-
handler: datasetDataExport,
|
|
125
|
-
});
|
|
126
|
-
fastify.route({
|
|
127
|
-
method: 'POST',
|
|
128
|
-
url: '/dataset-comment/:id',
|
|
129
|
-
config: { policy },
|
|
130
|
-
handler: datasetEditComment,
|
|
131
|
-
});
|
|
132
|
-
}
|
|
1
|
+
import dbTables from './controllers/dbTables.js';
|
|
2
|
+
import dbTablePreview from './controllers/dbTablePreview.js';
|
|
3
|
+
|
|
4
|
+
import createDatasetPost from './controllers/createDatasetPost.js';
|
|
5
|
+
import editDataset from './controllers/editDataset.js';
|
|
6
|
+
import deleteDataset from './controllers/deleteDataset.js';
|
|
7
|
+
import datasetData from './controllers/data.js';
|
|
8
|
+
import datasetFormData from './controllers/table.js';
|
|
9
|
+
import datasetDataInsert from './controllers/insert.js';
|
|
10
|
+
import datasetDataUpdate from './controllers/update.js';
|
|
11
|
+
import datasetDataDelete from './controllers/delete.js';
|
|
12
|
+
import datasetDataExport from './controllers/export.js';
|
|
13
|
+
import datasetForm from './controllers/form.js';
|
|
14
|
+
import format from './controllers/format.js';
|
|
15
|
+
import datasetEditComment from './controllers/comment.js';
|
|
16
|
+
import biDbList from './controllers/bi.db.list.js'; // list db
|
|
17
|
+
import biDatasetList from './controllers/bi.dataset.list.js'; // list datasets
|
|
18
|
+
|
|
19
|
+
const policy = ['public'];
|
|
20
|
+
|
|
21
|
+
export default async function route(fastify, opts) {
|
|
22
|
+
fastify.route({
|
|
23
|
+
method: 'GET',
|
|
24
|
+
url: '/bi-db-list',
|
|
25
|
+
schema: {},
|
|
26
|
+
config: { policy },
|
|
27
|
+
handler: biDbList,
|
|
28
|
+
});
|
|
29
|
+
fastify.route({
|
|
30
|
+
method: 'GET',
|
|
31
|
+
url: '/bi-datasets',
|
|
32
|
+
schema: {},
|
|
33
|
+
config: { policy },
|
|
34
|
+
handler: biDatasetList,
|
|
35
|
+
});
|
|
36
|
+
fastify.route({
|
|
37
|
+
method: 'GET',
|
|
38
|
+
url: '/gis-format',
|
|
39
|
+
config: { policy },
|
|
40
|
+
handler: format,
|
|
41
|
+
});
|
|
42
|
+
fastify.route({
|
|
43
|
+
method: 'GET',
|
|
44
|
+
url: '/db-tables',
|
|
45
|
+
schema: {},
|
|
46
|
+
config: { policy },
|
|
47
|
+
handler: dbTables,
|
|
48
|
+
});
|
|
49
|
+
fastify.route({
|
|
50
|
+
method: 'GET',
|
|
51
|
+
url: '/db-tables/:name',
|
|
52
|
+
schema: {},
|
|
53
|
+
config: { policy },
|
|
54
|
+
handler: dbTablePreview,
|
|
55
|
+
});
|
|
56
|
+
fastify.route({
|
|
57
|
+
method: 'POST',
|
|
58
|
+
url: '/dataset',
|
|
59
|
+
schema: {},
|
|
60
|
+
config: { policy },
|
|
61
|
+
handler: createDatasetPost,
|
|
62
|
+
});
|
|
63
|
+
fastify.route({
|
|
64
|
+
method: 'PUT',
|
|
65
|
+
url: '/dataset',
|
|
66
|
+
schema: {},
|
|
67
|
+
config: { policy },
|
|
68
|
+
handler: editDataset,
|
|
69
|
+
});
|
|
70
|
+
fastify.route({
|
|
71
|
+
method: 'DELETE',
|
|
72
|
+
url: '/dataset',
|
|
73
|
+
schema: {},
|
|
74
|
+
config: { policy },
|
|
75
|
+
handler: deleteDataset,
|
|
76
|
+
});
|
|
77
|
+
fastify.route({
|
|
78
|
+
method: 'GET',
|
|
79
|
+
url: '/dataset-data/:id',
|
|
80
|
+
schema: {},
|
|
81
|
+
config: { policy },
|
|
82
|
+
handler: datasetData,
|
|
83
|
+
});
|
|
84
|
+
fastify.route({
|
|
85
|
+
method: 'GET',
|
|
86
|
+
url: '/dataset-data/:id/:object_id',
|
|
87
|
+
schema: {},
|
|
88
|
+
config: { policy },
|
|
89
|
+
handler: datasetFormData,
|
|
90
|
+
});
|
|
91
|
+
fastify.route({
|
|
92
|
+
method: 'POST',
|
|
93
|
+
url: '/dataset-data/:id',
|
|
94
|
+
schema: {},
|
|
95
|
+
config: { policy },
|
|
96
|
+
handler: datasetDataInsert,
|
|
97
|
+
});
|
|
98
|
+
fastify.route({
|
|
99
|
+
method: 'PUT',
|
|
100
|
+
url: '/dataset-data/:id/:object_id?',
|
|
101
|
+
schema: {},
|
|
102
|
+
config: { policy },
|
|
103
|
+
handler: datasetDataUpdate,
|
|
104
|
+
});
|
|
105
|
+
fastify.route({
|
|
106
|
+
method: 'DELETE',
|
|
107
|
+
url: '/dataset-data/:id/:object_id?',
|
|
108
|
+
schema: {},
|
|
109
|
+
config: { policy },
|
|
110
|
+
handler: datasetDataDelete,
|
|
111
|
+
});
|
|
112
|
+
fastify.route({
|
|
113
|
+
method: 'GET',
|
|
114
|
+
url: '/dataset-form/:id',
|
|
115
|
+
schema: {},
|
|
116
|
+
config: { policy },
|
|
117
|
+
handler: datasetForm,
|
|
118
|
+
});
|
|
119
|
+
fastify.route({
|
|
120
|
+
method: 'GET',
|
|
121
|
+
url: '/dataset-export/:id',
|
|
122
|
+
schema: {},
|
|
123
|
+
config: { policy },
|
|
124
|
+
handler: datasetDataExport,
|
|
125
|
+
});
|
|
126
|
+
fastify.route({
|
|
127
|
+
method: 'POST',
|
|
128
|
+
url: '/dataset-comment/:id',
|
|
129
|
+
config: { policy },
|
|
130
|
+
handler: datasetEditComment,
|
|
131
|
+
});
|
|
132
|
+
}
|