@opengis/admin 0.3.23 → 0.3.25

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 (203) hide show
  1. package/README.md +97 -97
  2. package/config.js +4 -4
  3. package/dist/{add-page-2cPkdIAC.js → add-page-BI4K8Lzk.js} +1 -1
  4. package/dist/{admin-interface-D9Dx7QqK.js → admin-interface-DDP6KpGO.js} +226 -226
  5. package/dist/{admin-view-C_Ecdip-.js → admin-view-C--DkpIG.js} +3 -3
  6. package/dist/admin.js +1 -1
  7. package/dist/admin.umd.cjs +48 -48
  8. package/dist/assets/logo.svg +41 -41
  9. package/dist/{card-view-MuS2Gqq6.js → card-view-CPwz8aJg.js} +1 -1
  10. package/dist/{edit-page-Dr397YuE.js → edit-page-BsDJ8lKP.js} +1 -1
  11. package/dist/{import-file-CcRnsq1s.js → import-file-B8gDejaq.js} +5459 -5452
  12. package/dist/{profile-page-BrKTAsqO.js → profile-page-C5UftUwo.js} +1 -1
  13. package/dist/style.css +1 -1
  14. package/module/settings/card/admin.accounts.table/index.yml +7 -7
  15. package/module/settings/card/admin.accounts.table/rules.hbs +18 -18
  16. package/module/settings/card/admin.accounts.table/users.hbs +13 -13
  17. package/module/settings/card/admin.roles.table/access.hbs +11 -11
  18. package/module/settings/card/admin.roles.table/general_info.hbs +9 -9
  19. package/module/settings/card/admin.roles.table/index.yml +22 -22
  20. package/module/settings/card/admin.roles.table/users.hbs +12 -12
  21. package/module/settings/card/admin.routes.table/general_info.hbs +13 -13
  22. package/module/settings/card/admin.routes.table/groups.hbs +11 -11
  23. package/module/settings/card/admin.routes.table/index.yml +15 -15
  24. package/module/settings/card/admin.routes.table/users.hbs +16 -16
  25. package/module/settings/card/admin.table_properties.table/custom_columns.hbs +22 -22
  26. package/module/settings/card/admin.table_properties.table/index.yml +12 -12
  27. package/module/settings/card/admin.table_properties.table/info.hbs +17 -17
  28. package/module/settings/card/admin.users.table/general_info.hbs +18 -18
  29. package/module/settings/card/admin.users.table/index.yml +20 -20
  30. package/module/settings/card/admin.users.table/last_login.hbs +17 -17
  31. package/module/settings/card/admin.users.table/logs.hbs +16 -16
  32. package/module/settings/card/admin.users.table/routes.hbs +13 -13
  33. package/module/settings/card/admin.users.table/user_roles.hbs +35 -35
  34. package/module/settings/cls/change_type.json +13 -13
  35. package/module/settings/cls/core.actions.json +17 -17
  36. package/module/settings/cls/core.column_type.json +14 -14
  37. package/module/settings/cls/core.scope.json +13 -13
  38. package/module/settings/cls/properties.site_status.json +13 -13
  39. package/module/settings/cls/properties.widget_status.json +13 -13
  40. package/module/settings/cls/users.user_type.json +13 -13
  41. package/module/settings/cls/yes_no.json +11 -11
  42. package/module/settings/form/admin.accounts.form.json +13 -13
  43. package/module/settings/form/admin.custom_column.form.json +55 -55
  44. package/module/settings/form/admin.properties.form.json +15 -15
  45. package/module/settings/form/admin.roles.form.json +21 -21
  46. package/module/settings/form/admin.routes.form.json +25 -25
  47. package/module/settings/form/admin.rules.form.json +30 -30
  48. package/module/settings/form/admin.table_properties.form.json +19 -19
  49. package/module/settings/form/admin.user_properties.form.json +15 -15
  50. package/module/settings/form/admin.user_roles.form.json +24 -24
  51. package/module/settings/form/admin.user_roles_card.form.json +13 -13
  52. package/module/settings/form/admin.users.form.json +177 -177
  53. package/module/settings/form/admin.users_edit.form.json +145 -145
  54. package/module/settings/form/context.account_grants.form.json +24 -24
  55. package/module/settings/form/context.account_users.form.json +12 -12
  56. package/module/settings/form/user.user_roles.form.json +13 -13
  57. package/module/settings/interface/admin.properties.json +4 -4
  58. package/module/settings/interface/admin.roles.json +4 -4
  59. package/module/settings/interface/admin.routes.json +4 -4
  60. package/module/settings/interface/admin.users.json +4 -4
  61. package/module/settings/menu.json +72 -72
  62. package/module/settings/select/core.routes.sql +1 -1
  63. package/module/settings/select/core.user_mentioned.sql +1 -1
  64. package/module/settings/select/core.user_uid.sql +1 -1
  65. package/module/settings/table/admin.accounts.table.json +49 -49
  66. package/module/settings/table/admin.custom_column.table.json +100 -100
  67. package/module/settings/table/admin.properties.table.json +39 -39
  68. package/module/settings/table/admin.roles.table.json +77 -77
  69. package/module/settings/table/admin.routes.table.json +73 -73
  70. package/module/settings/table/admin.rules.table.json +77 -77
  71. package/module/settings/table/admin.table_properties.table.json +37 -37
  72. package/module/settings/table/admin.user_properties.table.json +34 -34
  73. package/module/settings/table/admin.user_roles.table.json +74 -74
  74. package/module/settings/table/admin.users.table.json +135 -135
  75. package/module/settings/table/context.account_grants.table.json +88 -88
  76. package/module/settings/table/context.account_users.table.json +53 -53
  77. package/module/settings/table/log.table_changes.table.json +100 -100
  78. package/package.json +102 -102
  79. package/plugin.js +30 -30
  80. package/server/helpers/core/badge.js +16 -16
  81. package/server/helpers/core/buttonHelper.js +21 -21
  82. package/server/helpers/core/coalesce.js +7 -7
  83. package/server/helpers/core/select.js +48 -48
  84. package/server/helpers/core/token.js +18 -18
  85. package/server/helpers/index.js +40 -40
  86. package/server/helpers/list/buttonHelper.js +21 -21
  87. package/server/helpers/list/descriptionList.js +45 -45
  88. package/server/helpers/list/tableList.js +82 -82
  89. package/server/helpers/list/utils/button.js +5 -5
  90. package/server/helpers/list/utils/buttonDel.js +12 -12
  91. package/server/helpers/list/utils/buttonEdit.js +14 -14
  92. package/server/helpers/temp/contentList.js +58 -58
  93. package/server/helpers/temp/ifCond.js +101 -101
  94. package/server/helpers/utils/button.js +5 -5
  95. package/server/helpers/utils/buttonAdd.js +6 -6
  96. package/server/helpers/utils/buttonDel.js +6 -6
  97. package/server/helpers/utils/buttonEdit.js +5 -5
  98. package/server/helpers/utils/mdToHTML.js +17 -17
  99. package/server/helpers/utils/paddingNumber.js +3 -3
  100. package/server/plugins/access/funcs/getAdminAccess.js +12 -12
  101. package/server/plugins/access/index.mjs +6 -6
  102. package/server/plugins/adminHook.js +81 -81
  103. package/server/plugins/cron.js +10 -10
  104. package/server/plugins/docs.js +28 -28
  105. package/server/plugins/hook.js +276 -276
  106. package/server/plugins/vite.js +77 -77
  107. package/server/routes/access/controllers/access.group.js +29 -29
  108. package/server/routes/access/controllers/access.group.post.js +54 -54
  109. package/server/routes/access/controllers/access.interface.js +33 -33
  110. package/server/routes/access/index.mjs +11 -11
  111. package/server/routes/access/schema.mjs +67 -67
  112. package/server/routes/calendar/controllers/calendar.data.js +125 -125
  113. package/server/routes/calendar/index.mjs +7 -7
  114. package/server/routes/calendar/schema.js +21 -21
  115. package/server/routes/data/controllers/cardData.js +127 -127
  116. package/server/routes/data/controllers/cardTabData.js +49 -49
  117. package/server/routes/data/controllers/funcs/getFilterSQL/index.js +92 -92
  118. package/server/routes/data/controllers/funcs/getFilterSQL/util/formatValue.js +170 -170
  119. package/server/routes/data/controllers/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
  120. package/server/routes/data/controllers/funcs/getFilterSQL/util/getFilterQuery.js +64 -64
  121. package/server/routes/data/controllers/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
  122. package/server/routes/data/controllers/funcs/getFilterSQL/util/getTableSql.js +34 -34
  123. package/server/routes/data/controllers/tableData.js +31 -31
  124. package/server/routes/data/controllers/tableDataId.js +27 -27
  125. package/server/routes/data/controllers/tableFilter.js +9 -9
  126. package/server/routes/data/controllers/tableInfo.js +112 -112
  127. package/server/routes/data/controllers/tokenInfo.js +9 -9
  128. package/server/routes/data/controllers/utils/assignTokens.js +30 -30
  129. package/server/routes/data/controllers/utils/conditions.js +20 -20
  130. package/server/routes/data/controllers/utils/getColumns.js +8 -8
  131. package/server/routes/data/index.mjs +20 -20
  132. package/server/routes/data/schema.js +54 -54
  133. package/server/routes/dblist/controllers/readItems.js +20 -20
  134. package/server/routes/dblist/controllers/setItem.js +22 -22
  135. package/server/routes/dblist/index.mjs +18 -18
  136. package/server/routes/dblist/utils/formatData.js +7 -7
  137. package/server/routes/menu/controllers/getMenu.js +77 -77
  138. package/server/routes/menu/controllers/interfaces.js +20 -20
  139. package/server/routes/menu/index.mjs +7 -7
  140. package/server/routes/notifications/controllers/readNotifications.js +27 -27
  141. package/server/routes/notifications/controllers/testEmail.js +35 -35
  142. package/server/routes/notifications/controllers/userNotifications.js +53 -53
  143. package/server/routes/notifications/funcs/addNotification.js +21 -21
  144. package/server/routes/notifications/funcs/sendNotification.js +92 -92
  145. package/server/routes/notifications/hook/onWidgetSet.js +56 -56
  146. package/server/routes/notifications/index.mjs +26 -26
  147. package/server/routes/notifications/schema.js +16 -16
  148. package/server/routes/print/controllers/cardPrint.js +135 -135
  149. package/server/routes/print/controllers/printTemplate.add.js +37 -37
  150. package/server/routes/print/controllers/printTemplate.delete.js +29 -29
  151. package/server/routes/print/controllers/printTemplate.edit.js +42 -42
  152. package/server/routes/print/controllers/printTemplate.js +67 -67
  153. package/server/routes/print/controllers/printTemplateList.js +19 -19
  154. package/server/routes/print/controllers/printTemplatePreview.js +87 -87
  155. package/server/routes/print/index.mjs +19 -19
  156. package/server/routes/properties/controllers/admin.properties.get.js +31 -31
  157. package/server/routes/properties/controllers/table.properties.get.js +120 -120
  158. package/server/routes/properties/controllers/table.properties.post.js +115 -115
  159. package/server/routes/properties/controllers/user.properties.get.js +19 -19
  160. package/server/routes/properties/controllers/user.properties.post.js +10 -10
  161. package/server/routes/properties/index.mjs +21 -21
  162. package/server/routes/properties/schema.js +10 -10
  163. package/server/routes/properties/utils/dataInsert.js +26 -26
  164. package/server/routes/properties/utils/getColumnMetaData.js +17 -17
  165. package/server/routes/properties/utils/refreshData.js +128 -128
  166. package/server/routes/report/controllers/data.js +76 -76
  167. package/server/routes/report/controllers/list.js +18 -18
  168. package/server/routes/report/index.mjs +7 -7
  169. package/server/routes/report/utils/formatValue.js +179 -179
  170. package/server/routes/report/utils/getFilterQuery.js +67 -67
  171. package/server/routes/root.mjs +3 -3
  172. package/server/routes/templates/controllers/getTemplate.js +44 -44
  173. package/server/routes/templates/index.mjs +16 -16
  174. package/server/routes/templates/schema.js +8 -8
  175. package/server/routes/user/controllers/user.cls.id.js +14 -14
  176. package/server/routes/user/controllers/user.cls.js +72 -72
  177. package/server/routes/user/controllers/user.cls.post.js +54 -54
  178. package/server/routes/user/controllers/user.info.js +17 -17
  179. package/server/routes/user/schema.js +14 -14
  180. package/server/routes/util/controllers/code.generator.js +89 -89
  181. package/server/routes/util/index.mjs +5 -5
  182. package/server/routes/widget/controllers/widget.del.js +63 -63
  183. package/server/routes/widget/controllers/widget.get.js +125 -125
  184. package/server/routes/widget/controllers/widget.set.js +84 -84
  185. package/server/routes/widget/hook/onWidgetSet.js +12 -12
  186. package/server/routes/widget/index.mjs +16 -16
  187. package/server/routes/widget/schema.js +12 -12
  188. package/server/templates/cls/itree.recrzone_category.json +73 -73
  189. package/server/templates/cls/test.json +9 -9
  190. package/server/templates/form/admin.profile.form.json +31 -31
  191. package/server/templates/form/admin.user_cls.data.form.json +49 -49
  192. package/server/templates/form/admin.user_group_rel.form.json +21 -21
  193. package/server/templates/form/cp_building.form.json +32 -32
  194. package/server/templates/form/form-user-pass.json +10 -10
  195. package/server/templates/form/form-user_group.json +39 -39
  196. package/server/templates/form/form-users.json +156 -156
  197. package/server/templates/form/user_group_access.form.json +22 -22
  198. package/server/templates/pt/card-print.pt.hbs +245 -245
  199. package/server/templates/select/account_id.json +2 -2
  200. package/server/templates/table/gis.dataset.table.json +43 -43
  201. package/server/templates/table/management.user_group.table.json +112 -112
  202. package/server/templates/table/management.users.table.json +126 -126
  203. package/utils.js +26 -26
@@ -1,115 +1,115 @@
1
- import { getRedis, pgClients } from '@opengis/fastify-table/utils.js';
2
-
3
- import refreshData from '../utils/refreshData.js';
4
-
5
- const rclient = getRedis();
6
-
7
- /**
8
- *
9
- * @method POST
10
- * @priority 4
11
- * @alias postSettingsTable
12
- * @type api
13
- * @tag custom
14
- * @returns {String} message and status
15
- */
16
-
17
- export default async function postTablpostSettingsTableeProperties({
18
- pg = pgClients.client, params = {}, body = {}, user = {},
19
- }) {
20
- const { table } = params;
21
- const { uid } = user;
22
-
23
- if (!uid) {
24
- return { message: 'access restricted', status: 401 };
25
- }
26
-
27
- if (!table) {
28
- return { message: 'not enough params: table', status: 400 };
29
- }
30
-
31
- const {
32
- deleted = [],
33
- columns = [],
34
- filters = [],
35
- customColumns = [],
36
- customQuery = [],
37
- } = body;
38
-
39
- const cacheKey = `${pg.options?.database}:filter-list:${table}`;
40
-
41
- if (Array.isArray(deleted) && deleted?.length) {
42
- const sqlList = {
43
- columns: `delete from setting.property where property_entity='column' and object_id=$1`,
44
- filters: `delete from setting.property where property_entity='filter' and object_id=$1`,
45
- customColumns: `delete from setting.custom_data where attr in (select cf_id from setting.custom_field where object_id=$1);
46
- delete from setting.custom_field where object_id=$1;
47
- delete from setting.property where property_entity='customColumn' and object_id=$1;`,
48
- customQuery: `delete from setting.property where property_entity='customQuery' and object_id=$1;`,
49
- };
50
- const q = deleted.map((item) => sqlList[item])?.filter((el) => el)?.join(' ');
51
- const { rowCount = 0 } = await pg.query(q, [table]);
52
-
53
- if (['customColumn', 'column'].find((el) => deleted.includes(el))) {
54
- // await funcs.applyHook('preTemplate', { pg, name: table, type: 'table' });
55
- }
56
- if (['customQuery', 'filter'].find((el) => deleted.includes(el))) {
57
- await rclient.del(cacheKey);
58
- }
59
-
60
- if (rowCount === 0) {
61
- return { message: 'nothing to restore', status: 200 };
62
- }
63
-
64
- return {
65
- message: {
66
- command: 'DELETE',
67
- deleted,
68
- table,
69
- result: 'success',
70
- },
71
- status: 200,
72
- };
73
- }
74
-
75
- const result = {};
76
- // custom filter query (sql)
77
- if (customQuery?.length) {
78
- const res = await refreshData({ pg, entity: 'customQuery', table, uid, data: customQuery });
79
- if (res?.error) return res;
80
- Object.assign(result, { customQuery: res });
81
- }
82
-
83
- // columns
84
- if (columns?.length) {
85
- const res = await refreshData({ pg, entity: 'column', table, uid, data: columns });
86
- if (res?.error) return res;
87
- Object.assign(result, { columns: res });
88
- }
89
-
90
- // custom columns
91
- if (customColumns?.length) {
92
- const colModel = await pg.query(`select property_json::json from setting.property
93
- where property_entity='customColumn' and object_id=$1`, [table]).then((el) => el.rows?.[0]?.property_json);
94
-
95
- const res = await refreshData({ pg, entity: 'customColumn', table, uid, data: customColumns, colModel });
96
- if (res?.error) return res;
97
- Object.assign(result, { customColumns: res });
98
- }
99
-
100
- // filters
101
- if (filters?.length) {
102
- const res = await refreshData({ pg, entity: 'filter', table, uid, data: filters });
103
- if (res?.error) return res;
104
- Object.assign(result, { filters: res });
105
- }
106
-
107
- if (columns?.length || customColumns?.length) {
108
- // await funcs.applyHook('preTemplate', { pg, type: 'table', name: table });
109
- }
110
- if (filters?.length || customQuery?.length) {
111
- await rclient.del(cacheKey);
112
- }
113
-
114
- return { message: result, status: 200 };
115
- };
1
+ import { getRedis, pgClients } from '@opengis/fastify-table/utils.js';
2
+
3
+ import refreshData from '../utils/refreshData.js';
4
+
5
+ const rclient = getRedis();
6
+
7
+ /**
8
+ *
9
+ * @method POST
10
+ * @priority 4
11
+ * @alias postSettingsTable
12
+ * @type api
13
+ * @tag custom
14
+ * @returns {String} message and status
15
+ */
16
+
17
+ export default async function postTablpostSettingsTableeProperties({
18
+ pg = pgClients.client, params = {}, body = {}, user = {},
19
+ }) {
20
+ const { table } = params;
21
+ const { uid } = user;
22
+
23
+ if (!uid) {
24
+ return { message: 'access restricted', status: 401 };
25
+ }
26
+
27
+ if (!table) {
28
+ return { message: 'not enough params: table', status: 400 };
29
+ }
30
+
31
+ const {
32
+ deleted = [],
33
+ columns = [],
34
+ filters = [],
35
+ customColumns = [],
36
+ customQuery = [],
37
+ } = body;
38
+
39
+ const cacheKey = `${pg.options?.database}:filter-list:${table}`;
40
+
41
+ if (Array.isArray(deleted) && deleted?.length) {
42
+ const sqlList = {
43
+ columns: `delete from setting.property where property_entity='column' and object_id=$1`,
44
+ filters: `delete from setting.property where property_entity='filter' and object_id=$1`,
45
+ customColumns: `delete from setting.custom_data where attr in (select cf_id from setting.custom_field where object_id=$1);
46
+ delete from setting.custom_field where object_id=$1;
47
+ delete from setting.property where property_entity='customColumn' and object_id=$1;`,
48
+ customQuery: `delete from setting.property where property_entity='customQuery' and object_id=$1;`,
49
+ };
50
+ const q = deleted.map((item) => sqlList[item])?.filter((el) => el)?.join(' ');
51
+ const { rowCount = 0 } = await pg.query(q, [table]);
52
+
53
+ if (['customColumn', 'column'].find((el) => deleted.includes(el))) {
54
+ // await funcs.applyHook('preTemplate', { pg, name: table, type: 'table' });
55
+ }
56
+ if (['customQuery', 'filter'].find((el) => deleted.includes(el))) {
57
+ await rclient.del(cacheKey);
58
+ }
59
+
60
+ if (rowCount === 0) {
61
+ return { message: 'nothing to restore', status: 200 };
62
+ }
63
+
64
+ return {
65
+ message: {
66
+ command: 'DELETE',
67
+ deleted,
68
+ table,
69
+ result: 'success',
70
+ },
71
+ status: 200,
72
+ };
73
+ }
74
+
75
+ const result = {};
76
+ // custom filter query (sql)
77
+ if (customQuery?.length) {
78
+ const res = await refreshData({ pg, entity: 'customQuery', table, uid, data: customQuery });
79
+ if (res?.error) return res;
80
+ Object.assign(result, { customQuery: res });
81
+ }
82
+
83
+ // columns
84
+ if (columns?.length) {
85
+ const res = await refreshData({ pg, entity: 'column', table, uid, data: columns });
86
+ if (res?.error) return res;
87
+ Object.assign(result, { columns: res });
88
+ }
89
+
90
+ // custom columns
91
+ if (customColumns?.length) {
92
+ const colModel = await pg.query(`select property_json::json from setting.property
93
+ where property_entity='customColumn' and object_id=$1`, [table]).then((el) => el.rows?.[0]?.property_json);
94
+
95
+ const res = await refreshData({ pg, entity: 'customColumn', table, uid, data: customColumns, colModel });
96
+ if (res?.error) return res;
97
+ Object.assign(result, { customColumns: res });
98
+ }
99
+
100
+ // filters
101
+ if (filters?.length) {
102
+ const res = await refreshData({ pg, entity: 'filter', table, uid, data: filters });
103
+ if (res?.error) return res;
104
+ Object.assign(result, { filters: res });
105
+ }
106
+
107
+ if (columns?.length || customColumns?.length) {
108
+ // await funcs.applyHook('preTemplate', { pg, type: 'table', name: table });
109
+ }
110
+ if (filters?.length || customQuery?.length) {
111
+ await rclient.del(cacheKey);
112
+ }
113
+
114
+ return { message: result, status: 200 };
115
+ };
@@ -1,19 +1,19 @@
1
- const table = 'admin.user_properties';
2
-
3
-
4
- export default async function getSettingsUser({
5
- pg = {}, session = {},
6
- }) {
7
- const { uid } = session.passport?.user || {};
8
- if (!uid) {
9
- return { message: 'access restreicted', status: 403 };
10
- }
11
-
12
- if (!pg.pk?.[table]) {
13
- return { message: 'table not found', status: 404 };
14
- }
15
-
16
-
17
-
18
- return { message: 'user', status: 200 };
19
- }
1
+ const table = 'admin.user_properties';
2
+
3
+
4
+ export default async function getSettingsUser({
5
+ pg = {}, session = {},
6
+ }) {
7
+ const { uid } = session.passport?.user || {};
8
+ if (!uid) {
9
+ return { message: 'access restreicted', status: 403 };
10
+ }
11
+
12
+ if (!pg.pk?.[table]) {
13
+ return { message: 'table not found', status: 404 };
14
+ }
15
+
16
+
17
+
18
+ return { message: 'user', status: 200 };
19
+ }
@@ -1,10 +1,10 @@
1
- const table = 'admin.user_properties';
2
-
3
-
4
-
5
- export default async function postSettingsUser({
6
- pg, session = {}, body = {},
7
- }) {
8
-
9
- return { message: 'ok', status: 200 };
10
- }
1
+ const table = 'admin.user_properties';
2
+
3
+
4
+
5
+ export default async function postSettingsUser({
6
+ pg, session = {}, body = {},
7
+ }) {
8
+
9
+ return { message: 'ok', status: 200 };
10
+ }
@@ -1,21 +1,21 @@
1
- import getSettingsApp from './controllers/admin.properties.get.js';
2
- import postSettingsApp from './controllers/admin.properties.post.js';
3
-
4
- //import getSettingsUser from './controllers/user.properties.get.js';
5
- //import postSettingsUser from './controllers/user.properties.post.js';
6
-
7
- import getSettingsTable from './controllers/table.properties.get.js';
8
- import postSettingsTable from './controllers/table.properties.post.js';
9
-
10
- import { propertiesSchema } from './schema.js';
11
-
12
- export default async function route(fastify) {
13
- fastify.get('/settings-app/:key?', { scheme: propertiesSchema }, getSettingsApp);
14
- fastify.post('/settings-app', { config: { policy: ['admin'] } }, postSettingsApp);
15
-
16
- //fastify.get('/settings-user/:key?', { scheme: propertiesSchema }, getSettingsUser);
17
- // fastify.post('/settings-user', {}, postSettingsUser);
18
-
19
- fastify.get('/settings-table/:table/:entity?', {}, getSettingsTable);
20
- fastify.post('/settings-table/:table', {}, postSettingsTable);
21
- }
1
+ import getSettingsApp from './controllers/admin.properties.get.js';
2
+ import postSettingsApp from './controllers/admin.properties.post.js';
3
+
4
+ //import getSettingsUser from './controllers/user.properties.get.js';
5
+ //import postSettingsUser from './controllers/user.properties.post.js';
6
+
7
+ import getSettingsTable from './controllers/table.properties.get.js';
8
+ import postSettingsTable from './controllers/table.properties.post.js';
9
+
10
+ import { propertiesSchema } from './schema.js';
11
+
12
+ export default async function route(fastify) {
13
+ fastify.get('/settings-app/:key?', { scheme: propertiesSchema }, getSettingsApp);
14
+ fastify.post('/settings-app', { config: { policy: ['admin'] } }, postSettingsApp);
15
+
16
+ //fastify.get('/settings-user/:key?', { scheme: propertiesSchema }, getSettingsUser);
17
+ // fastify.post('/settings-user', {}, postSettingsUser);
18
+
19
+ fastify.get('/settings-table/:table/:entity?', {}, getSettingsTable);
20
+ fastify.post('/settings-table/:table', {}, postSettingsTable);
21
+ }
@@ -1,11 +1,11 @@
1
- const propertiesSchema = {
2
- params: {
3
- key: { type: 'string', pattern: '^([\\d\\w._]+)$' },
4
- },
5
- querystring: {
6
- json: { type: 'string', pattern: '^([\\d\\w]+)$' },
7
- },
8
- };
9
-
10
- export default null;
1
+ const propertiesSchema = {
2
+ params: {
3
+ key: { type: 'string', pattern: '^([\\d\\w._]+)$' },
4
+ },
5
+ querystring: {
6
+ json: { type: 'string', pattern: '^([\\d\\w]+)$' },
7
+ },
8
+ };
9
+
10
+ export default null;
11
11
  export { propertiesSchema }
@@ -1,26 +1,26 @@
1
- import { getMeta, getPG } from '@opengis/fastify-table/utils.js';
2
-
3
- export default async function dataInsert({
4
- table, data, pg: pg1,
5
- }) {
6
- const pg = pg1 || getPG({ name: 'client' });
7
- if (!data) return null;
8
- const { columns } = await getMeta(table);
9
- if (!columns) return null;
10
-
11
- const names = columns.map((el) => el.name);
12
- const filterData = Object.keys(data)
13
- .filter((el) => data[el] && names.includes(el)).map((el) => [el, data[el]]);
14
-
15
- const insertQuery = `insert into ${table}
16
-
17
- ( ${filterData?.map((key) => `"${key[0]}"`).join(',')})
18
-
19
- values (${filterData?.map((key, i) => (key[0] === 'property_json' ? `to_json($${i + 1}::${key[1] && typeof key[1] === 'object' ? 'json' : 'text'})` : `$${i + 1}`)).join(',')})
20
-
21
- returning *`;
22
-
23
- 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]))]) || {};
24
-
25
- return res;
26
- }
1
+ import { getMeta, getPG } from '@opengis/fastify-table/utils.js';
2
+
3
+ export default async function dataInsert({
4
+ table, data, pg: pg1,
5
+ }) {
6
+ const pg = pg1 || getPG({ name: 'client' });
7
+ if (!data) return null;
8
+ const { columns } = await getMeta(table);
9
+ if (!columns) return null;
10
+
11
+ const names = columns.map((el) => el.name);
12
+ const filterData = Object.keys(data)
13
+ .filter((el) => data[el] && names.includes(el)).map((el) => [el, data[el]]);
14
+
15
+ const insertQuery = `insert into ${table}
16
+
17
+ ( ${filterData?.map((key) => `"${key[0]}"`).join(',')})
18
+
19
+ values (${filterData?.map((key, i) => (key[0] === 'property_json' ? `to_json($${i + 1}::${key[1] && typeof key[1] === 'object' ? 'json' : 'text'})` : `$${i + 1}`)).join(',')})
20
+
21
+ returning *`;
22
+
23
+ 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]))]) || {};
24
+
25
+ return res;
26
+ }
@@ -1,17 +1,17 @@
1
- import { pgClients, getMeta } from '@opengis/fastify-table/utils.js';
2
-
3
- export default async function getColumnMetaData({
4
- pg = pgClients.client, table,
5
- }) {
6
- if (!table) return null;
7
-
8
- const { columns = [] } = await getMeta({ pg, table });
9
- const columnList = columns.filter(el => !['files', 'uid', 'editor_date', 'editor_id', 'cdate'].includes(el.name)).map(el => el.name);
10
-
11
- const sql = `select count(*) as total, ${columnList.map((item) => `(count(*) filter(where ${item} is not null)) as "${item}"`).join(',')} from ${table}`;
12
- const res = await pg.queryCache(sql, { table }).then(el => el.rows?.[0] || {});
13
-
14
- return columns
15
- .filter(el => !['files', 'uid', 'editor_date', 'editor_id', 'cdate'].includes(el.name))
16
- .map((row) => Object.assign(row, { percent: ((+res[row.name] / +res.total) * 100).toFixed(0) }));
17
- };
1
+ import { pgClients, getMeta } from '@opengis/fastify-table/utils.js';
2
+
3
+ export default async function getColumnMetaData({
4
+ pg = pgClients.client, table,
5
+ }) {
6
+ if (!table) return null;
7
+
8
+ const { columns = [] } = await getMeta({ pg, table });
9
+ const columnList = columns.filter(el => !['files', 'uid', 'editor_date', 'editor_id', 'cdate'].includes(el.name)).map(el => el.name);
10
+
11
+ const sql = `select count(*) as total, ${columnList.map((item) => `(count(*) filter(where ${item} is not null)) as "${item}"`).join(',')} from ${table}`;
12
+ const res = await pg.queryCache(sql, { table }).then(el => el.rows?.[0] || {});
13
+
14
+ return columns
15
+ .filter(el => !['files', 'uid', 'editor_date', 'editor_id', 'cdate'].includes(el.name))
16
+ .map((row) => Object.assign(row, { percent: ((+res[row.name] / +res.total) * 100).toFixed(0) }));
17
+ };