@opengis/fastify-table 1.3.10 → 1.3.12
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/package.json +1 -1
- package/server/plugins/crud/funcs/dataDelete.js +12 -2
- package/server/plugins/crud/funcs/dataInsert.js +5 -1
- package/server/plugins/crud/funcs/dataUpdate.js +7 -1
- package/server/plugins/logger/createFileStream.js +2 -9
- package/server/plugins/logger/getLogger.js +2 -1
- package/server/plugins/logger/timestampWithTimeZone.js +5 -0
- package/server/routes/crud/controllers/table.js +1 -1
package/package.json
CHANGED
|
@@ -5,6 +5,7 @@ import pgClients from '../../pg/pgClients.js';
|
|
|
5
5
|
|
|
6
6
|
import extraData from '../../extra/extraData.js';
|
|
7
7
|
import logChanges from './utils/logChanges.js';
|
|
8
|
+
import logger from '../../logger/getLogger.js';
|
|
8
9
|
|
|
9
10
|
const rclient = getRedis();
|
|
10
11
|
|
|
@@ -22,7 +23,11 @@ export default async function dataDelete({
|
|
|
22
23
|
pg.pk = pgClients.client?.pk;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
const { pk } = await getMeta({ pg, table })
|
|
26
|
+
const { pk } = await getMeta({ pg, table })
|
|
27
|
+
.catch(err => {
|
|
28
|
+
logger.file('crud/delete', { error: err.toString(), stack: err.stack, table, id, referer, uid });
|
|
29
|
+
throw new Error(err.toString());
|
|
30
|
+
});
|
|
26
31
|
const table1 = table.replace(/"/g, '');
|
|
27
32
|
if (!pg.tlist?.includes(table1)) return 'table not exist';
|
|
28
33
|
const delQuery = `delete from ${table} WHERE ${pk} = $1 returning *`;
|
|
@@ -31,7 +36,12 @@ export default async function dataDelete({
|
|
|
31
36
|
table, form: tokenData?.form, id, uid,
|
|
32
37
|
}, pg);
|
|
33
38
|
|
|
34
|
-
const res = await pg.query(delQuery, [id])
|
|
39
|
+
const res = await pg.query(delQuery, [id])
|
|
40
|
+
.catch(err => {
|
|
41
|
+
logger.file('crud/delete', { error: err.toString(), stack: err.stack, table, id, referer, uid, q: delQuery });
|
|
42
|
+
throw new Error(err.toString());
|
|
43
|
+
})
|
|
44
|
+
.then(el => el.rows?.[0] || {});
|
|
35
45
|
|
|
36
46
|
await logChanges({
|
|
37
47
|
pg, table, tokenData, referer, id, uid, type: 'DELETE',
|
|
@@ -5,6 +5,7 @@ import pgClients from '../../pg/pgClients.js';
|
|
|
5
5
|
|
|
6
6
|
import logChanges from './utils/logChanges.js';
|
|
7
7
|
import extraData from '../../extra/extraData.js';
|
|
8
|
+
import logger from '../../logger/getLogger.js';
|
|
8
9
|
|
|
9
10
|
const rclient = getRedis();
|
|
10
11
|
|
|
@@ -46,7 +47,10 @@ export default async function dataInsert({
|
|
|
46
47
|
|
|
47
48
|
returning *`;
|
|
48
49
|
|
|
49
|
-
const res = await pg.query(insertQuery, [...filterData.map((el) => (typeof el[1] === 'object' && (!Array.isArray(el[1]) || typeof el[1]?.[0] === 'object') ? JSON.stringify(el[1]) : el[1]))])
|
|
50
|
+
const res = await pg.query(insertQuery, [...filterData.map((el) => (typeof el[1] === 'object' && (!Array.isArray(el[1]) || typeof el[1]?.[0] === 'object') ? JSON.stringify(el[1]) : el[1]))]).catch(err => {
|
|
51
|
+
logger.file('crud/insert', { error: err.toString(), stack: err.stack, table, id, referer, uid, data, q: insertQuery });
|
|
52
|
+
throw new Error(err.toString());
|
|
53
|
+
}) || {};
|
|
50
54
|
|
|
51
55
|
const table1 = pg.pk[table] ? table : table.replace(/"/g, '');
|
|
52
56
|
|
|
@@ -5,6 +5,7 @@ import pgClients from '../../pg/pgClients.js';
|
|
|
5
5
|
|
|
6
6
|
import extraData from '../../extra/extraData.js';
|
|
7
7
|
import logChanges from './utils/logChanges.js';
|
|
8
|
+
import logger from '../../logger/getLogger.js';
|
|
8
9
|
|
|
9
10
|
const rclient = getRedis();
|
|
10
11
|
const srids = {};
|
|
@@ -66,7 +67,12 @@ export default async function dataUpdate({
|
|
|
66
67
|
${filterData?.map((key, i) => assignValue(key, i, srids[table]?.[key] || 4326, pg.pgType?.[columns.find(col => col.name === key)?.dataTypeID || '']))?.join(',')}
|
|
67
68
|
WHERE ${pk} = $1 returning *`;
|
|
68
69
|
// console.log(updateQuery, filterValue);
|
|
69
|
-
const res = await pg.query(updateQuery, [id, ...filterValue])
|
|
70
|
+
const res = await pg.query(updateQuery, [id, ...filterValue])
|
|
71
|
+
.catch(err => {
|
|
72
|
+
logger.file('crud/update', { error: err.toString(), stack: err.stack, table, id, referer, uid, data, q: updateQuery });
|
|
73
|
+
throw new Error(err.toString());
|
|
74
|
+
})
|
|
75
|
+
.then(el => el?.rows?.[0]) || {};
|
|
70
76
|
|
|
71
77
|
const extraRes = await extraData({ table, form: tokenData?.form, id, data, uid }, pg);
|
|
72
78
|
|
|
@@ -4,18 +4,11 @@ import build from 'pino-abstract-transport';
|
|
|
4
4
|
import fs from 'fs';
|
|
5
5
|
|
|
6
6
|
import labels from './labels.js';
|
|
7
|
+
import timestampWithTimeZone from './timestampWithTimeZone.js';
|
|
7
8
|
|
|
8
9
|
import config from '../../../config.js';
|
|
9
10
|
|
|
10
|
-
const generator = () => () => {
|
|
11
|
-
const date = new Date();
|
|
12
|
-
const tzOffset = date.getTimezoneOffset();
|
|
13
|
-
const currentTimeWithTimezome = date - tzOffset * 60 * 1000;
|
|
14
|
-
|
|
15
|
-
// if (!opt.interval || opt.interval === '1d') {
|
|
16
|
-
return `${new Date(currentTimeWithTimezome).toISOString().split('T')[0].replace(/:/g, '_')}.log`;
|
|
17
|
-
// }
|
|
18
|
-
};
|
|
11
|
+
const generator = () => () => `${timestampWithTimeZone().split('T')[0].replace(/:/g, '_')}.log`;
|
|
19
12
|
|
|
20
13
|
const {
|
|
21
14
|
dir = 'log', interval = '1d', compress = 'gzip', // maxFiles = 90, local: teeToStdout,
|
|
@@ -7,6 +7,7 @@ import redactionList from '../../../redactionList.js';
|
|
|
7
7
|
// utils
|
|
8
8
|
import getHooks from './getHooks.js';
|
|
9
9
|
import serializers from './serializers.js';
|
|
10
|
+
import timestampWithTimeZone from './timestampWithTimeZone.js';
|
|
10
11
|
|
|
11
12
|
const isServer = process.argv[2];
|
|
12
13
|
|
|
@@ -18,7 +19,7 @@ const level = config.log?.level || process.env.PINO_LOG_LEVEL || 'info';
|
|
|
18
19
|
console.log(`log level: ${level}`);
|
|
19
20
|
const options = {
|
|
20
21
|
level, // minimal log level to write
|
|
21
|
-
timestamp:
|
|
22
|
+
timestamp: () => `,"time":"${timestampWithTimeZone()}"`, // timestamp as isostring
|
|
22
23
|
hooks: getHooks(),
|
|
23
24
|
serializers, // custom log params
|
|
24
25
|
transport: {
|
|
@@ -56,7 +56,7 @@ export default async function tableAPI(req) {
|
|
|
56
56
|
const cols = loadTable?.table
|
|
57
57
|
? Object.keys(schema || {}).filter((col) => columnList.includes(col) && !extraKeys.includes(col))?.map((col) => (col?.includes('geom') && schema?.[col]?.type === 'Geom' ? `st_asgeojson(${col})::json as "${col}"` : `"${col}"`))?.join(',')
|
|
58
58
|
: fields.map((el) => (el?.name?.includes('geom') && pg.pgType[el?.dataTypeID] === 'geometry' ? `st_asgeojson(${el.name})::json as "${el.name}"` : `"${el?.name}"`)).join(',');
|
|
59
|
-
const where = [`"${pk}" = $1`, loadTable.query, accessQuery].filter((el) => el);
|
|
59
|
+
const where = [`"${pk}" = $1`, loadTable.query, accessQuery].filter((el) => el).filter((el) => (user?.user_type === 'superadmin' ? !el.includes('{{uid}}') : true));
|
|
60
60
|
const geom = dbColumns.find((el) => el.name === 'geom' && pg.pgType[el.dataTypeID] === 'geometry') ? ',st_asgeojson(geom)::json as geom' : '';
|
|
61
61
|
const q = `select "${pk}" as id, ${cols || '*'} ${geom} from ${tableName} t where ${where.join(' and ') || 'true'} limit 1`;
|
|
62
62
|
|