@opengis/fastify-table 1.1.51 → 1.1.53

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 (218) hide show
  1. package/.eslintrc.cjs +42 -42
  2. package/.gitlab-ci.yml +18 -18
  3. package/Changelog.md +352 -352
  4. package/README.md +26 -26
  5. package/config.js +10 -10
  6. package/cron/controllers/cronApi.js +22 -22
  7. package/cron/controllers/utils/cronList.js +1 -1
  8. package/cron/funcs/addCron.js +132 -132
  9. package/cron/index.js +12 -10
  10. package/cron/schema.js +8 -0
  11. package/crud/controllers/deleteCrud.js +36 -36
  12. package/crud/controllers/insert.js +71 -71
  13. package/crud/controllers/update.js +76 -76
  14. package/crud/controllers/utils/xssInjection.js +72 -72
  15. package/crud/funcs/dataDelete.js +19 -19
  16. package/crud/funcs/dataInsert.js +30 -30
  17. package/crud/funcs/dataUpdate.js +48 -48
  18. package/crud/funcs/getAccess.js +46 -46
  19. package/crud/funcs/getOpt.js +10 -10
  20. package/crud/funcs/getToken.js +27 -27
  21. package/crud/funcs/isFileExists.js +13 -13
  22. package/crud/funcs/setOpt.js +16 -16
  23. package/crud/funcs/setToken.js +53 -53
  24. package/crud/funcs/utils/getFolder.js +9 -9
  25. package/crud/funcs/utils/logChanges.js +62 -62
  26. package/crud/index.js +31 -36
  27. package/crud/schema.js +11 -0
  28. package/docs/.vitepress/abbr.mjs +26 -26
  29. package/docs/.vitepress/config.mjs +127 -127
  30. package/docs/.vitepress/navigation.mjs +82 -82
  31. package/docs/.vitepress/theme/Layout.vue +17 -17
  32. package/docs/.vitepress/theme/components/NavigationLinks.vue +102 -102
  33. package/docs/.vitepress/theme/components/Panzoom.vue +169 -169
  34. package/docs/.vitepress/theme/index.mjs +15 -15
  35. package/docs/.vitepress/theme/style.scss +163 -163
  36. package/docs/abbr.json +4 -4
  37. package/docs/api/cron/cronApi.md +56 -56
  38. package/docs/api/crud/deleteCrud.md +58 -58
  39. package/docs/api/crud/insert.md +82 -82
  40. package/docs/api/crud/update.md +85 -85
  41. package/docs/api/index.md +47 -47
  42. package/docs/api/notification/testEmail.md +91 -91
  43. package/docs/api/table/card.md +73 -73
  44. package/docs/api/table/data.md +134 -134
  45. package/docs/api/table/export.md +60 -60
  46. package/docs/api/table/filter.md +104 -104
  47. package/docs/api/table/form.md +126 -126
  48. package/docs/api/table/search.md +123 -123
  49. package/docs/api/table/suggest.md +156 -156
  50. package/docs/api/table/table.md +107 -107
  51. package/docs/api/user/user.cls.id.md +77 -77
  52. package/docs/api/user/user.cls.md +49 -49
  53. package/docs/api/user/user.cls.post.md +62 -62
  54. package/docs/api/user/user.info.md +37 -37
  55. package/docs/api/utils/logger.file.md +60 -60
  56. package/docs/api/utils/next.id.md +34 -34
  57. package/docs/api/utils/properties.add.md +127 -127
  58. package/docs/api/utils/properties.get.md +73 -73
  59. package/docs/api/utils/status.monitor.md +36 -36
  60. package/docs/api/widget/widget.del.md +76 -76
  61. package/docs/api/widget/widget.get.md +233 -233
  62. package/docs/api/widget/widget.set.md +88 -88
  63. package/docs/db/admin.md +947 -947
  64. package/docs/db/crm.md +564 -564
  65. package/docs/db/index.md +9 -9
  66. package/docs/db/log.md +204 -204
  67. package/docs/hook/card/afterCard.md +20 -20
  68. package/docs/hook/card/preCard.md +25 -25
  69. package/docs/hook/data/afterData.md +26 -26
  70. package/docs/hook/data/preData.md +26 -26
  71. package/docs/hook/deleteCrud/afterDelete.md +21 -21
  72. package/docs/hook/deleteCrud/preDelete.md +26 -26
  73. package/docs/hook/form/afterForm.md +19 -19
  74. package/docs/hook/form/preForm.md +26 -26
  75. package/docs/hook/getTemplate/afterTemplate.md +24 -24
  76. package/docs/hook/getTemplate/preTemplate.md +29 -29
  77. package/docs/hook/index.md +45 -45
  78. package/docs/hook/insert/afterInsert.md +41 -41
  79. package/docs/hook/insert/preInsert.md +25 -25
  80. package/docs/hook/table/afterTable.md +20 -20
  81. package/docs/hook/table/preTable.md +25 -25
  82. package/docs/hook/update/afterUpdate.md +41 -41
  83. package/docs/hook/update/preUpdate.md +25 -25
  84. package/docs/index.md +42 -42
  85. package/docs/public/fastify-dark.svg +3 -3
  86. package/docs/public/logo-short-dark.svg +11 -11
  87. package/docs/public/logo-short.svg +10 -10
  88. package/docs/public/logo.svg +19 -19
  89. package/docs/readme/index.md +121 -121
  90. package/docs/templates/card.md +83 -83
  91. package/docs/templates/cls.md +29 -29
  92. package/docs/templates/filters.md +91 -91
  93. package/docs/templates/forms.md +139 -139
  94. package/docs/templates/index.md +28 -28
  95. package/docs/templates/select.md +90 -90
  96. package/docs/templates/table.md +162 -162
  97. package/docs/utils/cron/addCron.md +29 -29
  98. package/docs/utils/crud/dataInsert.md +51 -51
  99. package/docs/utils/crud/dataUpdate.md +52 -52
  100. package/docs/utils/crud/getOpt.md +33 -33
  101. package/docs/utils/crud/isFileExists.md +37 -37
  102. package/docs/utils/crud/setOpt.md +37 -37
  103. package/docs/utils/hook/addHook.md +74 -74
  104. package/docs/utils/hook/applyHook.md +64 -64
  105. package/docs/utils/index.md +47 -47
  106. package/docs/utils/notification/addNotification.md +28 -28
  107. package/docs/utils/notification/notification.md +41 -41
  108. package/docs/utils/pg/autoIndex.md +22 -22
  109. package/docs/utils/pg/getMeta.md +58 -58
  110. package/docs/utils/pg/getPG.md +34 -34
  111. package/docs/utils/pg/init.md +29 -29
  112. package/docs/utils/pg/pg.md +70 -70
  113. package/docs/utils/redis/getRedis.md +36 -36
  114. package/docs/utils/redis/rclient.md +74 -74
  115. package/docs/utils/table/getForm.md +68 -68
  116. package/docs/utils/table/getMeta.md +55 -55
  117. package/docs/utils/table/getSelect.md +38 -38
  118. package/docs/utils/table/getSelectMeta.md +46 -46
  119. package/docs/utils/table/getTable.md +77 -77
  120. package/helper.js +30 -30
  121. package/index.js +105 -105
  122. package/migration/exec.migrations.js +79 -79
  123. package/module/core/select/core.user_mentioned.sql +1 -1
  124. package/module/test/cls/itree.composition.json +25 -25
  125. package/module/test/table/test.rest_zone.table.json +265 -265
  126. package/notification/controllers/readNotifications.js +27 -30
  127. package/notification/controllers/testEmail.js +46 -50
  128. package/notification/controllers/userNotifications.js +61 -64
  129. package/notification/funcs/addNotification.js +21 -21
  130. package/notification/funcs/sendNotification.js +112 -112
  131. package/notification/index.js +3 -8
  132. package/notification/schema.js +10 -0
  133. package/package.json +41 -41
  134. package/pg/funcs/getMeta.js +29 -29
  135. package/pg/funcs/getPG.js +30 -30
  136. package/pg/pgClients.js +20 -20
  137. package/policy/funcs/checkPolicy.js +92 -92
  138. package/policy/funcs/sqlInjection.js +33 -33
  139. package/policy/index.js +14 -14
  140. package/redis/client.js +8 -8
  141. package/redis/funcs/getRedis.js +23 -23
  142. package/redis/funcs/redisClients.js +2 -2
  143. package/redis/index.js +19 -19
  144. package/server/migrations/0.sql +78 -78
  145. package/server/migrations/cls.sql +39 -39
  146. package/server/migrations/log.sql +80 -80
  147. package/server/migrations/properties.sql +144 -144
  148. package/server/migrations/roles.sql +172 -172
  149. package/server/migrations/users.sql +168 -168
  150. package/server.js +26 -26
  151. package/table/controllers/data.js +157 -150
  152. package/table/controllers/filter.js +61 -50
  153. package/table/controllers/form.js +42 -42
  154. package/table/controllers/search.js +76 -80
  155. package/table/controllers/suggest.js +79 -79
  156. package/table/controllers/table.js +83 -83
  157. package/table/controllers/utils/addTemplateDir.js +8 -8
  158. package/table/controllers/utils/getSelect.js +19 -19
  159. package/table/controllers/utils/getSelectMeta.js +66 -66
  160. package/table/controllers/utils/getTemplate_old.js +28 -28
  161. package/table/controllers/utils/getTemplates.js +18 -18
  162. package/table/controllers/utils/gisIRColumn.js +72 -67
  163. package/table/controllers/utils/loadTemplate.js +1 -1
  164. package/table/controllers/utils/loadTemplatePath.js +1 -1
  165. package/table/controllers/utils/userTemplateDir.js +1 -1
  166. package/table/funcs/getFilterSQL/index.js +94 -94
  167. package/table/funcs/getFilterSQL/util/formatValue.js +170 -170
  168. package/table/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
  169. package/table/funcs/getFilterSQL/util/getFilterQuery.js +66 -66
  170. package/table/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
  171. package/table/funcs/getFilterSQL/util/getTableSql.js +34 -34
  172. package/table/funcs/metaFormat/getSelectVal.js +21 -21
  173. package/table/funcs/metaFormat/index.js +28 -28
  174. package/table/index.js +37 -37
  175. package/table/schema.js +64 -54
  176. package/test/api/applyHook.test.js +95 -95
  177. package/test/api/crud.test.js +89 -89
  178. package/test/api/crud.xss.test.js +80 -80
  179. package/test/api/suggest.test.js +66 -66
  180. package/test/api/table.test.js +134 -134
  181. package/test/api/user.test.js +85 -85
  182. package/test/api/widget.test.js +117 -117
  183. package/test/config.example +18 -18
  184. package/test/funcs/pg.test.js +34 -34
  185. package/test/funcs/redis.test.js +19 -19
  186. package/test/helper/formatDate.test.js +62 -62
  187. package/test/templates/cls/test.json +9 -9
  188. package/test/templates/form/cp_building.form.json +32 -32
  189. package/test/templates/select/account_id.json +3 -3
  190. package/test/templates/select/storage.data.json +2 -2
  191. package/test/templates/select/test.storage.data.json +3 -3
  192. package/test/templates/select/test.suggest.ato_new.json +3 -3
  193. package/test/templates/select/test.suggest.ato_new.sql +25 -25
  194. package/test/templates/select/test.suggest.data.json +4 -4
  195. package/test/templates/select/test.suggest.parent.sql +1 -1
  196. package/test/templates/table/gis.dataset.table.json +20 -20
  197. package/user/controllers/user.cls.id.js +14 -14
  198. package/user/controllers/user.cls.js +71 -75
  199. package/user/controllers/user.cls.post.js +52 -55
  200. package/user/controllers/user.info.js +17 -21
  201. package/user/index.js +7 -36
  202. package/user/schema.js +17 -0
  203. package/util/controllers/logger.file.js +91 -91
  204. package/util/controllers/next.id.js +4 -4
  205. package/util/controllers/properties.add.js +56 -60
  206. package/util/controllers/properties.get.js +16 -19
  207. package/util/controllers/status.monitor.js +8 -8
  208. package/util/controllers/utils/checkUserAccess.js +20 -17
  209. package/util/controllers/utils/getRootDir.js +25 -25
  210. package/util/index.js +19 -23
  211. package/util/schema.js +19 -0
  212. package/utils.js +106 -104
  213. package/widget/controllers/utils/historyFormat.js +76 -76
  214. package/widget/controllers/utils/obj2db.js +13 -13
  215. package/widget/controllers/widget.del.js +41 -44
  216. package/widget/controllers/widget.get.js +96 -102
  217. package/widget/controllers/widget.set.js +74 -79
  218. package/widget/index.js +40 -40
@@ -1,38 +1,38 @@
1
- # isFileExists
2
-
3
- ## Опис
4
-
5
- Перевірка чи існує файл
6
-
7
- ```js
8
- isFileExists(filepath);
9
- ```
10
-
11
- ## Параметри
12
-
13
- ::: tabs
14
- ==params
15
-
16
- | Параметр | Тип | Опис |
17
- | -------- | ------ | ------- |
18
- | filepath | String | Шлях до файлу |
19
- :::
20
-
21
- ## Приклад
22
-
23
- ```js
24
- isFileExists('test.txt')
25
- ```
26
-
27
- ## Відповідь
28
-
29
- :::details Приклад відповіді
30
-
31
- ```js
32
- true
33
- ```
34
- ---
35
- ```js
36
- false
37
- ```
1
+ # isFileExists
2
+
3
+ ## Опис
4
+
5
+ Перевірка чи існує файл
6
+
7
+ ```js
8
+ isFileExists(filepath);
9
+ ```
10
+
11
+ ## Параметри
12
+
13
+ ::: tabs
14
+ ==params
15
+
16
+ | Параметр | Тип | Опис |
17
+ | -------- | ------ | ------- |
18
+ | filepath | String | Шлях до файлу |
19
+ :::
20
+
21
+ ## Приклад
22
+
23
+ ```js
24
+ isFileExists('test.txt')
25
+ ```
26
+
27
+ ## Відповідь
28
+
29
+ :::details Приклад відповіді
30
+
31
+ ```js
32
+ true
33
+ ```
34
+ ---
35
+ ```js
36
+ false
37
+ ```
38
38
  :::
@@ -1,38 +1,38 @@
1
- # setOpt
2
-
3
- ## Опис
4
-
5
- Функція призначена для збереження опцій (налаштувань) в базі даних Redis.
6
- Повертає токен за вхідними параметрами
7
-
8
- ```js
9
- setOpt(opt)
10
- ```
11
-
12
- ## Параметри
13
-
14
- Якщо параметри представлені у вигляді об'єкта, вони конвертуються в JSON-рядок перед обчисленням хешу. Якщо параметри представлені у вигляді рядка, вони використовуються напряму для обчислення хешу
15
-
16
- ::: tabs
17
- ==params
18
-
19
- | Параметр | Тип | Опис |
20
- | -------- | --------------- | ------------------------- |
21
- | opt | Object / String | Параметри для збереження. |
22
- :::
23
-
24
- ## Приклад
25
-
26
- ```js
27
- setOpt('data_user.work')
28
- ```
29
-
30
- ## Відповідь
31
-
32
- ::: details Приклад відповіді
33
-
34
- ```
35
- opt:UfTTVsVKxBXchKlzRKIg
36
- ```
37
-
1
+ # setOpt
2
+
3
+ ## Опис
4
+
5
+ Функція призначена для збереження опцій (налаштувань) в базі даних Redis.
6
+ Повертає токен за вхідними параметрами
7
+
8
+ ```js
9
+ setOpt(opt)
10
+ ```
11
+
12
+ ## Параметри
13
+
14
+ Якщо параметри представлені у вигляді об'єкта, вони конвертуються в JSON-рядок перед обчисленням хешу. Якщо параметри представлені у вигляді рядка, вони використовуються напряму для обчислення хешу
15
+
16
+ ::: tabs
17
+ ==params
18
+
19
+ | Параметр | Тип | Опис |
20
+ | -------- | --------------- | ------------------------- |
21
+ | opt | Object / String | Параметри для збереження. |
22
+ :::
23
+
24
+ ## Приклад
25
+
26
+ ```js
27
+ setOpt('data_user.work')
28
+ ```
29
+
30
+ ## Відповідь
31
+
32
+ ::: details Приклад відповіді
33
+
34
+ ```
35
+ opt:UfTTVsVKxBXchKlzRKIg
36
+ ```
37
+
38
38
  :::
@@ -1,74 +1,74 @@
1
- # addHook
2
-
3
- ## Опис
4
-
5
- Функція використовується для додавання хуків (функцій-обробників) до списку хуків.
6
-
7
- Можна додавати кастомні хуки у файлі `hooks.js`
8
-
9
- Всі необхідні параметри передаються явно
10
-
11
- На даний момент підтримуються наступні кастомні хуки:
12
-
13
- * preData - попередня обробка, можливість блокування доступу
14
- * afterData - `модифікація` результату, додавання пов'язаних даних тощо
15
- * preForm - попередня обробка, можливість блокування доступу
16
- * afterForm - `модифікація` форми, додавання користувацьких полів тощо
17
- * preTable - попередня обробка, можливість блокування доступу
18
- * afterTable - `модифікація` результату, додавання пов'язаних даних тощо
19
- * preTemplate - попередня обробка, можливість блокування доступу [template](https://apidocs.softpro.ua/admin/api/templates/template.html)
20
- * afterTemplate - `модифікації` payload [template](https://apidocs.softpro.ua/admin/api/templates/template.html)
21
- * preInsert - попередня обробка, можливість блокування доступу
22
- * afterInsert - виконання додаткових дій після внесення даних до БД [insert](../../api/crud/insert.md)
23
- * preUpdate - попередня обробка, можливість блокування доступу
24
- * afterUpdate - виконання додаткових дій після внесення змін до БД [update](../../api/crud/update.md)
25
- * preDelete - попередня обробка, можливість блокування доступу
26
- * afterDelete - виконання додаткових дій після внесення змін до БД [delete](../../api/crud/deleteCrud.md)
27
-
28
- Приклади виклику кастомних хуків можна переглянути [тут](./applyHook.md)
29
-
30
- ## Параметри
31
-
32
- ```js
33
- addHook(name, fn);
34
- ```
35
-
36
- | Параметр | Тип | Опис |
37
- | -------- | -------- | --------------------------------------------- |
38
- | name | string | Назва хука, до якого буде доданий обробник |
39
- | fn | function | Функція-обробник, яку потрібно додати до хука |
40
-
41
- ## Приклади
42
-
43
- :::details
44
-
45
- ```js
46
- import { addHook, config, getTemplate, pgClients } from '@opengis/fastify-table/utils.js';
47
-
48
- addHook('afterInsert', async ({ table, body = {}, payload: res = {}, user = {} }) => {
49
- const { client: pg } = pgClients || {};
50
- const { uid } = config?.auth?.disable ? { uid: '1' } : user;
51
- if (!uid || !table || !Object.keys(body)?.length) return null;
52
-
53
- const loadTable = await getTemplate('table', table);
54
- if (!pg.pk[loadTable?.table || table]) return null;
55
- const pk = pg.pk[loadTable?.table || table];
56
- const id = res.rows?.[0]?.[pk];
57
-
58
- const { rows: properties = [] } = await pg.query(`select column_id, name, title, format, data from admin.custom_column
59
- where entity=$1 and uid=$2`, [table, uid]);
60
-
61
- if (!id || !properties?.length) return null;
62
-
63
- const q = properties
64
- .filter((el) => Object.keys(body).includes(el.name))
65
- .map((el) => `insert into crm.extra_data(property_id,property_key,property_entity,object_id,${el.format?.toLowerCase() === 'date' ? 'value_date' : 'value_text'})
66
- select '${el.column_id}', '${el.name}', '${table}', '${id}', ${el.format?.toLowerCase() === 'date' ? `'${body[el.name]}'::timestamp without time zone` : `'${body[el.name]}'::text`}`)
67
- .join(';\n');
68
- return pg.query(q);
69
- });
70
- ```
71
-
72
- :::
73
-
74
- Більше прикладів можна переглянути [тут](../../hook/index.md)
1
+ # addHook
2
+
3
+ ## Опис
4
+
5
+ Функція використовується для додавання хуків (функцій-обробників) до списку хуків.
6
+
7
+ Можна додавати кастомні хуки у файлі `hooks.js`
8
+
9
+ Всі необхідні параметри передаються явно
10
+
11
+ На даний момент підтримуються наступні кастомні хуки:
12
+
13
+ * preData - попередня обробка, можливість блокування доступу
14
+ * afterData - `модифікація` результату, додавання пов'язаних даних тощо
15
+ * preForm - попередня обробка, можливість блокування доступу
16
+ * afterForm - `модифікація` форми, додавання користувацьких полів тощо
17
+ * preTable - попередня обробка, можливість блокування доступу
18
+ * afterTable - `модифікація` результату, додавання пов'язаних даних тощо
19
+ * preTemplate - попередня обробка, можливість блокування доступу [template](https://apidocs.softpro.ua/admin/api/templates/template.html)
20
+ * afterTemplate - `модифікації` payload [template](https://apidocs.softpro.ua/admin/api/templates/template.html)
21
+ * preInsert - попередня обробка, можливість блокування доступу
22
+ * afterInsert - виконання додаткових дій після внесення даних до БД [insert](../../api/crud/insert.md)
23
+ * preUpdate - попередня обробка, можливість блокування доступу
24
+ * afterUpdate - виконання додаткових дій після внесення змін до БД [update](../../api/crud/update.md)
25
+ * preDelete - попередня обробка, можливість блокування доступу
26
+ * afterDelete - виконання додаткових дій після внесення змін до БД [delete](../../api/crud/deleteCrud.md)
27
+
28
+ Приклади виклику кастомних хуків можна переглянути [тут](./applyHook.md)
29
+
30
+ ## Параметри
31
+
32
+ ```js
33
+ addHook(name, fn);
34
+ ```
35
+
36
+ | Параметр | Тип | Опис |
37
+ | -------- | -------- | --------------------------------------------- |
38
+ | name | string | Назва хука, до якого буде доданий обробник |
39
+ | fn | function | Функція-обробник, яку потрібно додати до хука |
40
+
41
+ ## Приклади
42
+
43
+ :::details
44
+
45
+ ```js
46
+ import { addHook, config, getTemplate, pgClients } from '@opengis/fastify-table/utils.js';
47
+
48
+ addHook('afterInsert', async ({ table, body = {}, payload: res = {}, user = {} }) => {
49
+ const { client: pg } = pgClients || {};
50
+ const { uid } = config?.auth?.disable ? { uid: '1' } : user;
51
+ if (!uid || !table || !Object.keys(body)?.length) return null;
52
+
53
+ const loadTable = await getTemplate('table', table);
54
+ if (!pg.pk[loadTable?.table || table]) return null;
55
+ const pk = pg.pk[loadTable?.table || table];
56
+ const id = res.rows?.[0]?.[pk];
57
+
58
+ const { rows: properties = [] } = await pg.query(`select column_id, name, title, format, data from admin.custom_column
59
+ where entity=$1 and uid=$2`, [table, uid]);
60
+
61
+ if (!id || !properties?.length) return null;
62
+
63
+ const q = properties
64
+ .filter((el) => Object.keys(body).includes(el.name))
65
+ .map((el) => `insert into crm.extra_data(property_id,property_key,property_entity,object_id,${el.format?.toLowerCase() === 'date' ? 'value_date' : 'value_text'})
66
+ select '${el.column_id}', '${el.name}', '${table}', '${id}', ${el.format?.toLowerCase() === 'date' ? `'${body[el.name]}'::timestamp without time zone` : `'${body[el.name]}'::text`}`)
67
+ .join(';\n');
68
+ return pg.query(q);
69
+ });
70
+ ```
71
+
72
+ :::
73
+
74
+ Більше прикладів можна переглянути [тут](../../hook/index.md)
@@ -1,64 +1,64 @@
1
- # applyHook
2
-
3
- ## Опис
4
-
5
- Функція призначена для виклику хуків (функцій-обробників) з певним ім'ям та передачі їм даних та додаткових аргументів.
6
-
7
- Хуки можуть бути використані для повернення відповіді. Для цього достатньо повернути `messagge` та `status`
8
-
9
- Приклади додавання кастомних хуків можна переглянути [тут](./addHook.md)
10
-
11
- ## Параметри
12
-
13
- ```js
14
- import { applyHook } from '@opengis/fastify-table/utils.js';
15
- applyHook(name, data);
16
- ```
17
-
18
- | Параметр | Тип | Опис |
19
- | -------- | ------ | ---------------------------------------------------------------------------------- |
20
- | name | string | Назва хука, який потрібно викликати |
21
- | data | object | Дані, які будуть передані кожному обробнику хука |
22
-
23
- ## Приклади
24
-
25
- :::tabs
26
-
27
- ==data
28
-
29
- ```js
30
- import { applyHook } from '@opengis/fastify-table/utils.js';
31
-
32
- export default async function data(req) {
33
- const check = await applyHook('preData', { req });
34
- if (check?.message && check?.status) {
35
- return { message: check?.message, status: check?.status};
36
- }
37
- const { pg, funcs, query, params, user } = req;
38
- const { rows = [] } = await pg.query(`select * from admin.users where 1=1`);
39
- const res = { rows };
40
- const hookData = await applyHook('afterData', { table, payload: res, user });
41
- return hookData || res;
42
- }
43
- ```
44
-
45
- ==table
46
-
47
- ```js
48
- import { applyHook, getTemplate } from '@opengis/fastify-table/utils.js';
49
-
50
- export default async function table(req) {
51
- const timeStart = Date.now();
52
- const { pg, funcs, query, params, user } = req;
53
- const { table } = await getTemplate('table', params?.table);
54
- const hookData = await applyHook('preTable', { table: params.table, id: params.id, user });
55
- if (hookData?.message && hookData?.status) {
56
- return { message: hookData?.message, status: hookData?.status};
57
- }
58
- const { rows = [] } = await pg.query(`select * from admin.users where 1=1 limit 1`);
59
- const afterHookData = await applyHook('afterTable', { table, payload: rows[0], user });
60
- return afterHookData || rows[0];
61
- }
62
- ```
63
-
64
- :::
1
+ # applyHook
2
+
3
+ ## Опис
4
+
5
+ Функція призначена для виклику хуків (функцій-обробників) з певним ім'ям та передачі їм даних та додаткових аргументів.
6
+
7
+ Хуки можуть бути використані для повернення відповіді. Для цього достатньо повернути `messagge` та `status`
8
+
9
+ Приклади додавання кастомних хуків можна переглянути [тут](./addHook.md)
10
+
11
+ ## Параметри
12
+
13
+ ```js
14
+ import { applyHook } from '@opengis/fastify-table/utils.js';
15
+ applyHook(name, data);
16
+ ```
17
+
18
+ | Параметр | Тип | Опис |
19
+ | -------- | ------ | ---------------------------------------------------------------------------------- |
20
+ | name | string | Назва хука, який потрібно викликати |
21
+ | data | object | Дані, які будуть передані кожному обробнику хука |
22
+
23
+ ## Приклади
24
+
25
+ :::tabs
26
+
27
+ ==data
28
+
29
+ ```js
30
+ import { applyHook } from '@opengis/fastify-table/utils.js';
31
+
32
+ export default async function data(req) {
33
+ const check = await applyHook('preData', { req });
34
+ if (check?.message && check?.status) {
35
+ return { message: check?.message, status: check?.status};
36
+ }
37
+ const { pg, funcs, query, params, user } = req;
38
+ const { rows = [] } = await pg.query(`select * from admin.users where 1=1`);
39
+ const res = { rows };
40
+ const hookData = await applyHook('afterData', { table, payload: res, user });
41
+ return hookData || res;
42
+ }
43
+ ```
44
+
45
+ ==table
46
+
47
+ ```js
48
+ import { applyHook, getTemplate } from '@opengis/fastify-table/utils.js';
49
+
50
+ export default async function table(req) {
51
+ const timeStart = Date.now();
52
+ const { pg, funcs, query, params, user } = req;
53
+ const { table } = await getTemplate('table', params?.table);
54
+ const hookData = await applyHook('preTable', { table: params.table, id: params.id, user });
55
+ if (hookData?.message && hookData?.status) {
56
+ return { message: hookData?.message, status: hookData?.status};
57
+ }
58
+ const { rows = [] } = await pg.query(`select * from admin.users where 1=1 limit 1`);
59
+ const afterHookData = await applyHook('afterTable', { table, payload: rows[0], user });
60
+ return afterHookData || rows[0];
61
+ }
62
+ ```
63
+
64
+ :::
@@ -1,48 +1,48 @@
1
- ---
2
- order: -1
3
- ---
4
-
5
- # Список функцій
6
-
7
- ## CRUD
8
-
9
- - **[dataInsert](./crud/dataInsert.md)** - Імпорт даних у таблицю
10
- - **[dataUpdate](./crud/dataUpdate.md)** - Оновлення даних у таблиці
11
- - **[getOpt](./crud/getOpt.md)** - Отримання опцій (налаштувань) за токеном
12
- - **[setOpt](./crud/setOpt.md)** - Для збереження опцій (налаштувань) в базі даних Redis
13
- - **[isFileExists](./crud/isFileExists.md)** - Перевірка чи існує файл
14
-
15
- ## PG
16
-
17
- - **[pg](./pg/pg.md)** - Дозволяє виконувати запити до бази даних
18
- - **[autoIndex](./pg/autoIndex.md)** - Для автоматичного створення індексів у базі даних
19
- - **[getMeta](./pg/getMeta.md)** - Метадані таблиці
20
- - **[getPG](./pg/getPG.md)** - Повертає об'єкт для взаємодії з базою даних
21
- - **[init](./pg/init.md)** - Init
22
-
23
- ## Notification
24
-
25
- - **[addNotification](./notification/addNotification.md)** - додавання повідомлень до таблиці
26
- - **[notification](./notification/notification.md)** - відправка повідомлень
27
-
28
- ## Cron
29
-
30
- - **[addCron](./cron/addCron.md)** - додавання планувальника
31
-
32
- ## Redis
33
-
34
- - **[rclient](./redis/rclient.md)** - Дозволяє виконувати [redis command](https://redis.io/commands/)
35
- - **[getRedis](./redis//getRedis.md)** - Отримує конфіг Redis
36
-
37
- ## Table
38
-
39
- - **[getForm](./table/getForm.md)** - Для отримання форм
40
- - **[getMeta](./table/getMeta.md)** - Метадані таблиці
41
- - **[getSelect](./table/getSelect.md)** - Отримує дані селекту
42
- - **[getSelectMeta](./table/getSelectMeta.md)** - Отримує дані з таблиці
43
- - **[getTable](./table/getTable.md)** - Завантажує таблицю
44
-
45
- ## Hook
46
-
47
- - **[addHook](./hook/addHook.md)** - Додає кастомний хук
1
+ ---
2
+ order: -1
3
+ ---
4
+
5
+ # Список функцій
6
+
7
+ ## CRUD
8
+
9
+ - **[dataInsert](./crud/dataInsert.md)** - Імпорт даних у таблицю
10
+ - **[dataUpdate](./crud/dataUpdate.md)** - Оновлення даних у таблиці
11
+ - **[getOpt](./crud/getOpt.md)** - Отримання опцій (налаштувань) за токеном
12
+ - **[setOpt](./crud/setOpt.md)** - Для збереження опцій (налаштувань) в базі даних Redis
13
+ - **[isFileExists](./crud/isFileExists.md)** - Перевірка чи існує файл
14
+
15
+ ## PG
16
+
17
+ - **[pg](./pg/pg.md)** - Дозволяє виконувати запити до бази даних
18
+ - **[autoIndex](./pg/autoIndex.md)** - Для автоматичного створення індексів у базі даних
19
+ - **[getMeta](./pg/getMeta.md)** - Метадані таблиці
20
+ - **[getPG](./pg/getPG.md)** - Повертає об'єкт для взаємодії з базою даних
21
+ - **[init](./pg/init.md)** - Init
22
+
23
+ ## Notification
24
+
25
+ - **[addNotification](./notification/addNotification.md)** - додавання повідомлень до таблиці
26
+ - **[notification](./notification/notification.md)** - відправка повідомлень
27
+
28
+ ## Cron
29
+
30
+ - **[addCron](./cron/addCron.md)** - додавання планувальника
31
+
32
+ ## Redis
33
+
34
+ - **[rclient](./redis/rclient.md)** - Дозволяє виконувати [redis command](https://redis.io/commands/)
35
+ - **[getRedis](./redis//getRedis.md)** - Отримує конфіг Redis
36
+
37
+ ## Table
38
+
39
+ - **[getForm](./table/getForm.md)** - Для отримання форм
40
+ - **[getMeta](./table/getMeta.md)** - Метадані таблиці
41
+ - **[getSelect](./table/getSelect.md)** - Отримує дані селекту
42
+ - **[getSelectMeta](./table/getSelectMeta.md)** - Отримує дані з таблиці
43
+ - **[getTable](./table/getTable.md)** - Завантажує таблицю
44
+
45
+ ## Hook
46
+
47
+ - **[addHook](./hook/addHook.md)** - Додає кастомний хук
48
48
  - **[applyHook](./hook/applyHook.md)** - Виконує кастомний хук
@@ -1,28 +1,28 @@
1
- # addNotification
2
-
3
- ## Опис
4
-
5
- Функція `addNotification` призначена для додавання даних до таблиці `crm.notifications` з метою відправки повідомлень
6
-
7
- ``` js
8
- addNotification({
9
- pg, funcs, session, subject, body, link, uid,
10
- });
11
- ```
12
-
13
- ## Параметри
14
-
15
- :::tabs
16
- == params
17
-
18
- | Параметр | Тип | Опис |
19
- | -------- | ------ | --------------------------------------------------- |
20
- | `pg` | String | Клієнт postgres |
21
- | `funcs` | Object | Функції |
22
- | `session` | Object | Сесія користувача |
23
- | `subject` | String | Заголовок повідомлення |
24
- | `body` | String | Текст повідомлення |
25
- | `link` | String | Посилання |
26
- | `uid` | String | Отримувач повідомлення |
27
-
28
- :::
1
+ # addNotification
2
+
3
+ ## Опис
4
+
5
+ Функція `addNotification` призначена для додавання даних до таблиці `crm.notifications` з метою відправки повідомлень
6
+
7
+ ``` js
8
+ addNotification({
9
+ pg, funcs, session, subject, body, link, uid,
10
+ });
11
+ ```
12
+
13
+ ## Параметри
14
+
15
+ :::tabs
16
+ == params
17
+
18
+ | Параметр | Тип | Опис |
19
+ | -------- | ------ | --------------------------------------------------- |
20
+ | `pg` | String | Клієнт postgres |
21
+ | `funcs` | Object | Функції |
22
+ | `session` | Object | Сесія користувача |
23
+ | `subject` | String | Заголовок повідомлення |
24
+ | `body` | String | Текст повідомлення |
25
+ | `link` | String | Посилання |
26
+ | `uid` | String | Отримувач повідомлення |
27
+
28
+ :::