@opengis/fastify-table 1.2.11 → 1.2.13
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 +86 -86
- package/index.js +79 -78
- package/package.json +1 -1
- package/server/migrations/0.sql +84 -84
- package/server/migrations/cls.sql +39 -39
- package/server/migrations/properties.sql +184 -184
- package/server/migrations/template.sql +34 -34
- package/server/migrations/users.sql +175 -175
- package/server/plugins/cron/funcs/addCron.js +130 -130
- package/server/plugins/cron/index.js +6 -6
- package/server/plugins/crud/funcs/dataDelete.js +24 -24
- package/server/plugins/crud/funcs/dataInsert.js +53 -53
- package/server/plugins/crud/funcs/dataUpdate.js +65 -65
- package/server/plugins/crud/funcs/getOpt.js +13 -13
- package/server/plugins/crud/funcs/setOpt.js +21 -21
- package/server/plugins/crud/funcs/setToken.js +44 -44
- package/server/plugins/crud/funcs/utils/getFolder.js +10 -10
- package/server/plugins/crud/funcs/utils/logChanges.js +118 -118
- package/server/plugins/crud/index.js +23 -23
- package/server/plugins/hook/index.js +8 -8
- package/server/plugins/logger/errorStatus.js +19 -19
- package/server/plugins/logger/index.js +21 -21
- package/server/plugins/migration/exec.migrations.js +37 -0
- package/server/plugins/migration/exec.sql.js +46 -0
- package/server/plugins/migration/get.caller.dir.js +26 -0
- package/server/plugins/migration/index.js +7 -7
- package/server/plugins/pg/pgClients.js +21 -21
- package/server/plugins/policy/index.js +12 -12
- package/server/plugins/policy/sqlInjection.js +33 -33
- package/server/plugins/redis/client.js +8 -8
- package/server/plugins/redis/funcs/redisClients.js +3 -3
- package/server/plugins/redis/index.js +17 -17
- package/server/plugins/table/funcs/addTemplateDir.js +8 -8
- package/server/plugins/table/funcs/getFilterSQL/index.js +96 -96
- package/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +179 -179
- package/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
- package/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +66 -66
- package/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
- package/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +34 -34
- package/server/plugins/table/funcs/getTemplates.js +19 -19
- package/server/plugins/table/funcs/gisIRColumn.js +82 -82
- package/server/plugins/table/funcs/loadTemplate.js +1 -1
- package/server/plugins/table/funcs/loadTemplatePath.js +1 -1
- package/server/plugins/table/funcs/metaFormat/getSelectVal.js +50 -50
- package/server/plugins/table/funcs/metaFormat/index.js +45 -45
- package/server/plugins/table/funcs/userTemplateDir.js +1 -1
- package/server/plugins/table/index.js +13 -13
- package/server/plugins/util/index.js +7 -7
- package/server/routes/cron/index.js +14 -14
- package/server/routes/crud/controllers/deleteCrud.js +39 -39
- package/server/routes/crud/controllers/table.js +91 -91
- package/server/routes/logger/controllers/logger.file.js +92 -92
- package/server/routes/logger/controllers/utils/checkUserAccess.js +19 -19
- package/server/routes/logger/controllers/utils/getRootDir.js +26 -26
- package/server/routes/logger/index.js +17 -17
- package/server/routes/properties/controllers/properties.add.js +55 -55
- package/server/routes/properties/controllers/properties.get.js +17 -17
- package/server/routes/properties/index.js +16 -16
- package/server/routes/table/controllers/data.js +172 -169
- package/server/routes/table/controllers/filter.js +67 -67
- package/server/routes/table/controllers/form.js +42 -42
- package/server/routes/table/controllers/search.js +74 -74
- package/server/routes/table/controllers/suggest.js +166 -166
- package/server/routes/table/index.js +29 -29
- package/server/routes/table/schema.js +64 -64
- package/server/routes/util/controllers/status.monitor.js +8 -8
- package/server/routes/util/index.js +11 -11
- package/utils.js +129 -127
- package/server/plugins/migration/funcs/exec.migrations.js +0 -86
package/utils.js
CHANGED
|
@@ -1,127 +1,129 @@
|
|
|
1
|
-
// This file contains code that we reuse
|
|
2
|
-
// between our tests.
|
|
3
|
-
|
|
4
|
-
// hb for html format (notifications etc.)
|
|
5
|
-
import { handlebars, handlebarsSync } from '@opengis/fastify-hb/utils.js';
|
|
6
|
-
|
|
7
|
-
// pg
|
|
8
|
-
import getPG from './server/plugins/pg/funcs/getPG.js';
|
|
9
|
-
import getPGAsync from './server/plugins/pg/funcs/getPGAsync.js';
|
|
10
|
-
import initPG from './server/plugins/pg/funcs/init.js';
|
|
11
|
-
import pgClients from './server/plugins/pg/pgClients.js';
|
|
12
|
-
import getMeta from './server/plugins/pg/funcs/getMeta.js';
|
|
13
|
-
import getAccess from './server/plugins/crud/funcs/getAccess.js';
|
|
14
|
-
|
|
15
|
-
// redis
|
|
16
|
-
import getRedis from './server/plugins/redis/funcs/getRedis.js';
|
|
17
|
-
import redisClients from './server/plugins/redis/funcs/redisClients.js';
|
|
18
|
-
|
|
19
|
-
// template
|
|
20
|
-
import getTemplate from './server/plugins/table/funcs/getTemplate.js';
|
|
21
|
-
import getTemplates from './server/plugins/table/funcs/getTemplates.js';
|
|
22
|
-
import getTemplatePath from './server/plugins/table/funcs/getTemplatePath.js';
|
|
23
|
-
import addTemplateDir from './server/plugins/table/funcs/addTemplateDir.js';
|
|
24
|
-
import userTemplateDir from './server/plugins/table/funcs/userTemplateDir.js';
|
|
25
|
-
|
|
26
|
-
// table
|
|
27
|
-
import metaFormat from './server/plugins/table/funcs/metaFormat/index.js';
|
|
28
|
-
import autoIndex from './server/plugins/pg/funcs/autoIndex.js';
|
|
29
|
-
import getSelectVal from './server/plugins/table/funcs/metaFormat/getSelectVal.js';
|
|
30
|
-
import getFilterSQL from './server/plugins/table/funcs/getFilterSQL/index.js';
|
|
31
|
-
import getSelect from './server/plugins/table/funcs/getSelect.js';
|
|
32
|
-
import getSelectMeta from './server/plugins/table/funcs/getSelectMeta.js';
|
|
33
|
-
import gisIRColumn from './server/plugins/table/funcs/gisIRColumn.js';
|
|
34
|
-
|
|
35
|
-
// crud
|
|
36
|
-
import dataInsert from './server/plugins/crud/funcs/dataInsert.js';
|
|
37
|
-
import dataUpdate from './server/plugins/crud/funcs/dataUpdate.js';
|
|
38
|
-
import dataDelete from './server/plugins/crud/funcs/dataDelete.js';
|
|
39
|
-
import getToken from './server/plugins/crud/funcs/getToken.js';
|
|
40
|
-
import setToken from './server/plugins/crud/funcs/setToken.js';
|
|
41
|
-
import getOpt from './server/plugins/crud/funcs/getOpt.js';
|
|
42
|
-
import setOpt from './server/plugins/crud/funcs/setOpt.js';
|
|
43
|
-
import validateData from './server/plugins/crud/funcs/validateData.js';
|
|
44
|
-
|
|
45
|
-
// policy
|
|
46
|
-
import checkXSS from './server/plugins/policy/funcs/checkXSS.js';
|
|
47
|
-
|
|
48
|
-
// hook
|
|
49
|
-
import applyHook from './server/plugins/hook/funcs/applyHook.js';
|
|
50
|
-
import applyHookSync from './server/plugins/hook/funcs/applyHookSync.js';
|
|
51
|
-
import addHook from './server/plugins/hook/funcs/addHook.js';
|
|
52
|
-
import execMigrations from './server/plugins/migration/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
import
|
|
63
|
-
import
|
|
64
|
-
import
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
export
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
1
|
+
// This file contains code that we reuse
|
|
2
|
+
// between our tests.
|
|
3
|
+
|
|
4
|
+
// hb for html format (notifications etc.)
|
|
5
|
+
import { handlebars, handlebarsSync } from '@opengis/fastify-hb/utils.js';
|
|
6
|
+
|
|
7
|
+
// pg
|
|
8
|
+
import getPG from './server/plugins/pg/funcs/getPG.js';
|
|
9
|
+
import getPGAsync from './server/plugins/pg/funcs/getPGAsync.js';
|
|
10
|
+
import initPG from './server/plugins/pg/funcs/init.js';
|
|
11
|
+
import pgClients from './server/plugins/pg/pgClients.js';
|
|
12
|
+
import getMeta from './server/plugins/pg/funcs/getMeta.js';
|
|
13
|
+
import getAccess from './server/plugins/crud/funcs/getAccess.js';
|
|
14
|
+
|
|
15
|
+
// redis
|
|
16
|
+
import getRedis from './server/plugins/redis/funcs/getRedis.js';
|
|
17
|
+
import redisClients from './server/plugins/redis/funcs/redisClients.js';
|
|
18
|
+
|
|
19
|
+
// template
|
|
20
|
+
import getTemplate from './server/plugins/table/funcs/getTemplate.js';
|
|
21
|
+
import getTemplates from './server/plugins/table/funcs/getTemplates.js';
|
|
22
|
+
import getTemplatePath from './server/plugins/table/funcs/getTemplatePath.js';
|
|
23
|
+
import addTemplateDir from './server/plugins/table/funcs/addTemplateDir.js';
|
|
24
|
+
import userTemplateDir from './server/plugins/table/funcs/userTemplateDir.js';
|
|
25
|
+
|
|
26
|
+
// table
|
|
27
|
+
import metaFormat from './server/plugins/table/funcs/metaFormat/index.js';
|
|
28
|
+
import autoIndex from './server/plugins/pg/funcs/autoIndex.js';
|
|
29
|
+
import getSelectVal from './server/plugins/table/funcs/metaFormat/getSelectVal.js';
|
|
30
|
+
import getFilterSQL from './server/plugins/table/funcs/getFilterSQL/index.js';
|
|
31
|
+
import getSelect from './server/plugins/table/funcs/getSelect.js';
|
|
32
|
+
import getSelectMeta from './server/plugins/table/funcs/getSelectMeta.js';
|
|
33
|
+
import gisIRColumn from './server/plugins/table/funcs/gisIRColumn.js';
|
|
34
|
+
|
|
35
|
+
// crud
|
|
36
|
+
import dataInsert from './server/plugins/crud/funcs/dataInsert.js';
|
|
37
|
+
import dataUpdate from './server/plugins/crud/funcs/dataUpdate.js';
|
|
38
|
+
import dataDelete from './server/plugins/crud/funcs/dataDelete.js';
|
|
39
|
+
import getToken from './server/plugins/crud/funcs/getToken.js';
|
|
40
|
+
import setToken from './server/plugins/crud/funcs/setToken.js';
|
|
41
|
+
import getOpt from './server/plugins/crud/funcs/getOpt.js';
|
|
42
|
+
import setOpt from './server/plugins/crud/funcs/setOpt.js';
|
|
43
|
+
import validateData from './server/plugins/crud/funcs/validateData.js';
|
|
44
|
+
|
|
45
|
+
// policy
|
|
46
|
+
import checkXSS from './server/plugins/policy/funcs/checkXSS.js';
|
|
47
|
+
|
|
48
|
+
// hook
|
|
49
|
+
import applyHook from './server/plugins/hook/funcs/applyHook.js';
|
|
50
|
+
import applyHookSync from './server/plugins/hook/funcs/applyHookSync.js';
|
|
51
|
+
import addHook from './server/plugins/hook/funcs/addHook.js';
|
|
52
|
+
import execMigrations from './server/plugins/migration/exec.migrations.js';
|
|
53
|
+
import execSql from './server/plugins/migration/exec.sql.js';
|
|
54
|
+
|
|
55
|
+
// cron
|
|
56
|
+
import addCron from './server/plugins/cron/funcs/addCron.js';
|
|
57
|
+
|
|
58
|
+
// logger
|
|
59
|
+
import logger from './server/plugins/logger/getLogger.js';
|
|
60
|
+
|
|
61
|
+
// utils
|
|
62
|
+
import config from './config.js';
|
|
63
|
+
import eventStream from './server/plugins/util/funcs/eventStream.js';
|
|
64
|
+
import isFileExists from './server/plugins/crud/funcs/isFileExists.js';
|
|
65
|
+
import getFolder from './server/plugins/crud/funcs/utils/getFolder.js';
|
|
66
|
+
|
|
67
|
+
import logChanges from './server/plugins/crud/funcs/utils/logChanges.js';
|
|
68
|
+
|
|
69
|
+
export default null;
|
|
70
|
+
export {
|
|
71
|
+
config,
|
|
72
|
+
getFolder,
|
|
73
|
+
handlebars,
|
|
74
|
+
handlebarsSync,
|
|
75
|
+
getFilterSQL,
|
|
76
|
+
addCron,
|
|
77
|
+
execMigrations,
|
|
78
|
+
execSql,
|
|
79
|
+
getRedis,
|
|
80
|
+
redisClients,
|
|
81
|
+
logger,
|
|
82
|
+
isFileExists,
|
|
83
|
+
eventStream,
|
|
84
|
+
|
|
85
|
+
// hook
|
|
86
|
+
addHook,
|
|
87
|
+
applyHook,
|
|
88
|
+
applyHookSync,
|
|
89
|
+
|
|
90
|
+
// template
|
|
91
|
+
getTemplate,
|
|
92
|
+
getTemplates,
|
|
93
|
+
getTemplatePath,
|
|
94
|
+
addTemplateDir,
|
|
95
|
+
userTemplateDir,
|
|
96
|
+
|
|
97
|
+
// security
|
|
98
|
+
checkXSS,
|
|
99
|
+
getAccess,
|
|
100
|
+
getToken,
|
|
101
|
+
getOpt,
|
|
102
|
+
setOpt,
|
|
103
|
+
setToken,
|
|
104
|
+
validateData,
|
|
105
|
+
|
|
106
|
+
// crud
|
|
107
|
+
dataInsert,
|
|
108
|
+
dataUpdate,
|
|
109
|
+
dataDelete,
|
|
110
|
+
|
|
111
|
+
// table
|
|
112
|
+
autoIndex,
|
|
113
|
+
metaFormat,
|
|
114
|
+
getMeta,
|
|
115
|
+
gisIRColumn,
|
|
116
|
+
|
|
117
|
+
// pg
|
|
118
|
+
initPG,
|
|
119
|
+
getPG,
|
|
120
|
+
getPGAsync,
|
|
121
|
+
pgClients,
|
|
122
|
+
|
|
123
|
+
// select
|
|
124
|
+
getSelectVal,
|
|
125
|
+
getSelectMeta,
|
|
126
|
+
getSelect,
|
|
127
|
+
|
|
128
|
+
logChanges,
|
|
129
|
+
};
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
|
|
4
|
-
const time = Date.now();
|
|
5
|
-
|
|
6
|
-
import getPG from '../../pg/funcs/getPG.js';
|
|
7
|
-
|
|
8
|
-
function getCallerDir() {
|
|
9
|
-
const originalFunc = Error.prepareStackTrace;
|
|
10
|
-
|
|
11
|
-
let callerfile;
|
|
12
|
-
try {
|
|
13
|
-
const err = new Error();
|
|
14
|
-
// let currentfile;
|
|
15
|
-
|
|
16
|
-
Error.prepareStackTrace = function (err, stack) { return stack; };
|
|
17
|
-
|
|
18
|
-
const currentfile = err.stack.shift().getFileName();
|
|
19
|
-
|
|
20
|
-
while (err.stack.length) {
|
|
21
|
-
callerfile = err.stack.shift().getFileName();
|
|
22
|
-
|
|
23
|
-
if (currentfile !== callerfile) break;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
catch (err) { }
|
|
27
|
-
|
|
28
|
-
Error.prepareStackTrace = originalFunc;
|
|
29
|
-
|
|
30
|
-
return path.dirname(callerfile);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function sequence(files, data, fn) {
|
|
34
|
-
return files.reduce((promise, filename) => promise.then(() => fn({
|
|
35
|
-
...data, filename,
|
|
36
|
-
})), Promise.resolve());
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async function execSql({
|
|
40
|
-
pg, dir, filename,
|
|
41
|
-
}) {
|
|
42
|
-
const start = Date.now();
|
|
43
|
-
const filepath = path.join(dir, filename);
|
|
44
|
-
const sql = fs.readFileSync(filepath, 'utf-8');
|
|
45
|
-
try {
|
|
46
|
-
console.log(filename, 'start', Date.now() - start);
|
|
47
|
-
await pg.query(sql);
|
|
48
|
-
console.log(filename, 'finish', Date.now() - start);
|
|
49
|
-
}
|
|
50
|
-
catch (err) {
|
|
51
|
-
console.log(filepath, 'error', err.toString(), Date.now() - start);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export default async function execMigrations(opt) {
|
|
56
|
-
try {
|
|
57
|
-
const pg = opt?.pg || getPG({ name: 'client' });
|
|
58
|
-
const rootDir = getCallerDir();
|
|
59
|
-
const subdir = () => {
|
|
60
|
-
if (rootDir.endsWith('plugins')) {
|
|
61
|
-
return '../..';
|
|
62
|
-
} if (path.basename(rootDir) === 'server') {
|
|
63
|
-
return '..';
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
const dir = path.join(rootDir.replace(/\\/g, '/').replace(/^file:\/\/\//, ''), subdir() || '', 'server/migrations');
|
|
67
|
-
|
|
68
|
-
console.log('migrations start', dir, Date.now() - time);
|
|
69
|
-
const exists = fs.existsSync(dir);
|
|
70
|
-
if (exists) {
|
|
71
|
-
// get directory sql file list
|
|
72
|
-
const content = fs.readdirSync(dir, { withFileTypes: true })
|
|
73
|
-
?.filter((el) => el.isFile() && path.extname(el.name) === '.sql')
|
|
74
|
-
?.map((el) => el.name) || [];
|
|
75
|
-
|
|
76
|
-
// execute sql files
|
|
77
|
-
if (content?.length) {
|
|
78
|
-
await sequence(content, { pg, dir }, execSql);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
console.log('migrations finish', dir, exists, Date.now() - time);
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
console.error('migrations error', err.toString(), Date.now() - time);
|
|
85
|
-
}
|
|
86
|
-
}
|