@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.
Files changed (69) hide show
  1. package/README.md +86 -86
  2. package/index.js +79 -78
  3. package/package.json +1 -1
  4. package/server/migrations/0.sql +84 -84
  5. package/server/migrations/cls.sql +39 -39
  6. package/server/migrations/properties.sql +184 -184
  7. package/server/migrations/template.sql +34 -34
  8. package/server/migrations/users.sql +175 -175
  9. package/server/plugins/cron/funcs/addCron.js +130 -130
  10. package/server/plugins/cron/index.js +6 -6
  11. package/server/plugins/crud/funcs/dataDelete.js +24 -24
  12. package/server/plugins/crud/funcs/dataInsert.js +53 -53
  13. package/server/plugins/crud/funcs/dataUpdate.js +65 -65
  14. package/server/plugins/crud/funcs/getOpt.js +13 -13
  15. package/server/plugins/crud/funcs/setOpt.js +21 -21
  16. package/server/plugins/crud/funcs/setToken.js +44 -44
  17. package/server/plugins/crud/funcs/utils/getFolder.js +10 -10
  18. package/server/plugins/crud/funcs/utils/logChanges.js +118 -118
  19. package/server/plugins/crud/index.js +23 -23
  20. package/server/plugins/hook/index.js +8 -8
  21. package/server/plugins/logger/errorStatus.js +19 -19
  22. package/server/plugins/logger/index.js +21 -21
  23. package/server/plugins/migration/exec.migrations.js +37 -0
  24. package/server/plugins/migration/exec.sql.js +46 -0
  25. package/server/plugins/migration/get.caller.dir.js +26 -0
  26. package/server/plugins/migration/index.js +7 -7
  27. package/server/plugins/pg/pgClients.js +21 -21
  28. package/server/plugins/policy/index.js +12 -12
  29. package/server/plugins/policy/sqlInjection.js +33 -33
  30. package/server/plugins/redis/client.js +8 -8
  31. package/server/plugins/redis/funcs/redisClients.js +3 -3
  32. package/server/plugins/redis/index.js +17 -17
  33. package/server/plugins/table/funcs/addTemplateDir.js +8 -8
  34. package/server/plugins/table/funcs/getFilterSQL/index.js +96 -96
  35. package/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +179 -179
  36. package/server/plugins/table/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
  37. package/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +66 -66
  38. package/server/plugins/table/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
  39. package/server/plugins/table/funcs/getFilterSQL/util/getTableSql.js +34 -34
  40. package/server/plugins/table/funcs/getTemplates.js +19 -19
  41. package/server/plugins/table/funcs/gisIRColumn.js +82 -82
  42. package/server/plugins/table/funcs/loadTemplate.js +1 -1
  43. package/server/plugins/table/funcs/loadTemplatePath.js +1 -1
  44. package/server/plugins/table/funcs/metaFormat/getSelectVal.js +50 -50
  45. package/server/plugins/table/funcs/metaFormat/index.js +45 -45
  46. package/server/plugins/table/funcs/userTemplateDir.js +1 -1
  47. package/server/plugins/table/index.js +13 -13
  48. package/server/plugins/util/index.js +7 -7
  49. package/server/routes/cron/index.js +14 -14
  50. package/server/routes/crud/controllers/deleteCrud.js +39 -39
  51. package/server/routes/crud/controllers/table.js +91 -91
  52. package/server/routes/logger/controllers/logger.file.js +92 -92
  53. package/server/routes/logger/controllers/utils/checkUserAccess.js +19 -19
  54. package/server/routes/logger/controllers/utils/getRootDir.js +26 -26
  55. package/server/routes/logger/index.js +17 -17
  56. package/server/routes/properties/controllers/properties.add.js +55 -55
  57. package/server/routes/properties/controllers/properties.get.js +17 -17
  58. package/server/routes/properties/index.js +16 -16
  59. package/server/routes/table/controllers/data.js +172 -169
  60. package/server/routes/table/controllers/filter.js +67 -67
  61. package/server/routes/table/controllers/form.js +42 -42
  62. package/server/routes/table/controllers/search.js +74 -74
  63. package/server/routes/table/controllers/suggest.js +166 -166
  64. package/server/routes/table/index.js +29 -29
  65. package/server/routes/table/schema.js +64 -64
  66. package/server/routes/util/controllers/status.monitor.js +8 -8
  67. package/server/routes/util/index.js +11 -11
  68. package/utils.js +129 -127
  69. 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/funcs/exec.migrations.js';
53
-
54
- // cron
55
- import addCron from './server/plugins/cron/funcs/addCron.js';
56
-
57
- // logger
58
- import logger from './server/plugins/logger/getLogger.js';
59
-
60
- // utils
61
- import config from './config.js';
62
- import eventStream from './server/plugins/util/funcs/eventStream.js';
63
- import isFileExists from './server/plugins/crud/funcs/isFileExists.js';
64
- import getFolder from './server/plugins/crud/funcs/utils/getFolder.js';
65
-
66
- import logChanges from './server/plugins/crud/funcs/utils/logChanges.js';
67
-
68
- export default null;
69
- export {
70
- config,
71
- getFolder,
72
- handlebars,
73
- handlebarsSync,
74
- getFilterSQL,
75
- addCron,
76
- execMigrations,
77
- getRedis,
78
- redisClients,
79
- logger,
80
- isFileExists,
81
- eventStream,
82
-
83
- // hook
84
- addHook,
85
- applyHook,
86
- applyHookSync,
87
-
88
- // template
89
- getTemplate,
90
- getTemplates,
91
- getTemplatePath,
92
- addTemplateDir,
93
- userTemplateDir,
94
-
95
- // security
96
- checkXSS,
97
- getAccess,
98
- getToken,
99
- getOpt,
100
- setOpt,
101
- setToken,
102
- validateData,
103
-
104
- // crud
105
- dataInsert,
106
- dataUpdate,
107
- dataDelete,
108
-
109
- // table
110
- autoIndex,
111
- metaFormat,
112
- getMeta,
113
- gisIRColumn,
114
-
115
- // pg
116
- initPG,
117
- getPG,
118
- getPGAsync,
119
- pgClients,
120
-
121
- // select
122
- getSelectVal,
123
- getSelectMeta,
124
- getSelect,
125
-
126
- logChanges,
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
- }