@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.
- package/.eslintrc.cjs +42 -42
- package/.gitlab-ci.yml +18 -18
- package/Changelog.md +352 -352
- package/README.md +26 -26
- package/config.js +10 -10
- package/cron/controllers/cronApi.js +22 -22
- package/cron/controllers/utils/cronList.js +1 -1
- package/cron/funcs/addCron.js +132 -132
- package/cron/index.js +12 -10
- package/cron/schema.js +8 -0
- package/crud/controllers/deleteCrud.js +36 -36
- package/crud/controllers/insert.js +71 -71
- package/crud/controllers/update.js +76 -76
- package/crud/controllers/utils/xssInjection.js +72 -72
- package/crud/funcs/dataDelete.js +19 -19
- package/crud/funcs/dataInsert.js +30 -30
- package/crud/funcs/dataUpdate.js +48 -48
- package/crud/funcs/getAccess.js +46 -46
- package/crud/funcs/getOpt.js +10 -10
- package/crud/funcs/getToken.js +27 -27
- package/crud/funcs/isFileExists.js +13 -13
- package/crud/funcs/setOpt.js +16 -16
- package/crud/funcs/setToken.js +53 -53
- package/crud/funcs/utils/getFolder.js +9 -9
- package/crud/funcs/utils/logChanges.js +62 -62
- package/crud/index.js +31 -36
- package/crud/schema.js +11 -0
- package/docs/.vitepress/abbr.mjs +26 -26
- package/docs/.vitepress/config.mjs +127 -127
- package/docs/.vitepress/navigation.mjs +82 -82
- package/docs/.vitepress/theme/Layout.vue +17 -17
- package/docs/.vitepress/theme/components/NavigationLinks.vue +102 -102
- package/docs/.vitepress/theme/components/Panzoom.vue +169 -169
- package/docs/.vitepress/theme/index.mjs +15 -15
- package/docs/.vitepress/theme/style.scss +163 -163
- package/docs/abbr.json +4 -4
- package/docs/api/cron/cronApi.md +56 -56
- package/docs/api/crud/deleteCrud.md +58 -58
- package/docs/api/crud/insert.md +82 -82
- package/docs/api/crud/update.md +85 -85
- package/docs/api/index.md +47 -47
- package/docs/api/notification/testEmail.md +91 -91
- package/docs/api/table/card.md +73 -73
- package/docs/api/table/data.md +134 -134
- package/docs/api/table/export.md +60 -60
- package/docs/api/table/filter.md +104 -104
- package/docs/api/table/form.md +126 -126
- package/docs/api/table/search.md +123 -123
- package/docs/api/table/suggest.md +156 -156
- package/docs/api/table/table.md +107 -107
- package/docs/api/user/user.cls.id.md +77 -77
- package/docs/api/user/user.cls.md +49 -49
- package/docs/api/user/user.cls.post.md +62 -62
- package/docs/api/user/user.info.md +37 -37
- package/docs/api/utils/logger.file.md +60 -60
- package/docs/api/utils/next.id.md +34 -34
- package/docs/api/utils/properties.add.md +127 -127
- package/docs/api/utils/properties.get.md +73 -73
- package/docs/api/utils/status.monitor.md +36 -36
- package/docs/api/widget/widget.del.md +76 -76
- package/docs/api/widget/widget.get.md +233 -233
- package/docs/api/widget/widget.set.md +88 -88
- package/docs/db/admin.md +947 -947
- package/docs/db/crm.md +564 -564
- package/docs/db/index.md +9 -9
- package/docs/db/log.md +204 -204
- package/docs/hook/card/afterCard.md +20 -20
- package/docs/hook/card/preCard.md +25 -25
- package/docs/hook/data/afterData.md +26 -26
- package/docs/hook/data/preData.md +26 -26
- package/docs/hook/deleteCrud/afterDelete.md +21 -21
- package/docs/hook/deleteCrud/preDelete.md +26 -26
- package/docs/hook/form/afterForm.md +19 -19
- package/docs/hook/form/preForm.md +26 -26
- package/docs/hook/getTemplate/afterTemplate.md +24 -24
- package/docs/hook/getTemplate/preTemplate.md +29 -29
- package/docs/hook/index.md +45 -45
- package/docs/hook/insert/afterInsert.md +41 -41
- package/docs/hook/insert/preInsert.md +25 -25
- package/docs/hook/table/afterTable.md +20 -20
- package/docs/hook/table/preTable.md +25 -25
- package/docs/hook/update/afterUpdate.md +41 -41
- package/docs/hook/update/preUpdate.md +25 -25
- package/docs/index.md +42 -42
- package/docs/public/fastify-dark.svg +3 -3
- package/docs/public/logo-short-dark.svg +11 -11
- package/docs/public/logo-short.svg +10 -10
- package/docs/public/logo.svg +19 -19
- package/docs/readme/index.md +121 -121
- package/docs/templates/card.md +83 -83
- package/docs/templates/cls.md +29 -29
- package/docs/templates/filters.md +91 -91
- package/docs/templates/forms.md +139 -139
- package/docs/templates/index.md +28 -28
- package/docs/templates/select.md +90 -90
- package/docs/templates/table.md +162 -162
- package/docs/utils/cron/addCron.md +29 -29
- package/docs/utils/crud/dataInsert.md +51 -51
- package/docs/utils/crud/dataUpdate.md +52 -52
- package/docs/utils/crud/getOpt.md +33 -33
- package/docs/utils/crud/isFileExists.md +37 -37
- package/docs/utils/crud/setOpt.md +37 -37
- package/docs/utils/hook/addHook.md +74 -74
- package/docs/utils/hook/applyHook.md +64 -64
- package/docs/utils/index.md +47 -47
- package/docs/utils/notification/addNotification.md +28 -28
- package/docs/utils/notification/notification.md +41 -41
- package/docs/utils/pg/autoIndex.md +22 -22
- package/docs/utils/pg/getMeta.md +58 -58
- package/docs/utils/pg/getPG.md +34 -34
- package/docs/utils/pg/init.md +29 -29
- package/docs/utils/pg/pg.md +70 -70
- package/docs/utils/redis/getRedis.md +36 -36
- package/docs/utils/redis/rclient.md +74 -74
- package/docs/utils/table/getForm.md +68 -68
- package/docs/utils/table/getMeta.md +55 -55
- package/docs/utils/table/getSelect.md +38 -38
- package/docs/utils/table/getSelectMeta.md +46 -46
- package/docs/utils/table/getTable.md +77 -77
- package/helper.js +30 -30
- package/index.js +105 -105
- package/migration/exec.migrations.js +79 -79
- package/module/core/select/core.user_mentioned.sql +1 -1
- package/module/test/cls/itree.composition.json +25 -25
- package/module/test/table/test.rest_zone.table.json +265 -265
- package/notification/controllers/readNotifications.js +27 -30
- package/notification/controllers/testEmail.js +46 -50
- package/notification/controllers/userNotifications.js +61 -64
- package/notification/funcs/addNotification.js +21 -21
- package/notification/funcs/sendNotification.js +112 -112
- package/notification/index.js +3 -8
- package/notification/schema.js +10 -0
- package/package.json +41 -41
- package/pg/funcs/getMeta.js +29 -29
- package/pg/funcs/getPG.js +30 -30
- package/pg/pgClients.js +20 -20
- package/policy/funcs/checkPolicy.js +92 -92
- package/policy/funcs/sqlInjection.js +33 -33
- package/policy/index.js +14 -14
- package/redis/client.js +8 -8
- package/redis/funcs/getRedis.js +23 -23
- package/redis/funcs/redisClients.js +2 -2
- package/redis/index.js +19 -19
- package/server/migrations/0.sql +78 -78
- package/server/migrations/cls.sql +39 -39
- package/server/migrations/log.sql +80 -80
- package/server/migrations/properties.sql +144 -144
- package/server/migrations/roles.sql +172 -172
- package/server/migrations/users.sql +168 -168
- package/server.js +26 -26
- package/table/controllers/data.js +157 -150
- package/table/controllers/filter.js +61 -50
- package/table/controllers/form.js +42 -42
- package/table/controllers/search.js +76 -80
- package/table/controllers/suggest.js +79 -79
- package/table/controllers/table.js +83 -83
- package/table/controllers/utils/addTemplateDir.js +8 -8
- package/table/controllers/utils/getSelect.js +19 -19
- package/table/controllers/utils/getSelectMeta.js +66 -66
- package/table/controllers/utils/getTemplate_old.js +28 -28
- package/table/controllers/utils/getTemplates.js +18 -18
- package/table/controllers/utils/gisIRColumn.js +72 -67
- package/table/controllers/utils/loadTemplate.js +1 -1
- package/table/controllers/utils/loadTemplatePath.js +1 -1
- package/table/controllers/utils/userTemplateDir.js +1 -1
- package/table/funcs/getFilterSQL/index.js +94 -94
- package/table/funcs/getFilterSQL/util/formatValue.js +170 -170
- package/table/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
- package/table/funcs/getFilterSQL/util/getFilterQuery.js +66 -66
- package/table/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
- package/table/funcs/getFilterSQL/util/getTableSql.js +34 -34
- package/table/funcs/metaFormat/getSelectVal.js +21 -21
- package/table/funcs/metaFormat/index.js +28 -28
- package/table/index.js +37 -37
- package/table/schema.js +64 -54
- package/test/api/applyHook.test.js +95 -95
- package/test/api/crud.test.js +89 -89
- package/test/api/crud.xss.test.js +80 -80
- package/test/api/suggest.test.js +66 -66
- package/test/api/table.test.js +134 -134
- package/test/api/user.test.js +85 -85
- package/test/api/widget.test.js +117 -117
- package/test/config.example +18 -18
- package/test/funcs/pg.test.js +34 -34
- package/test/funcs/redis.test.js +19 -19
- package/test/helper/formatDate.test.js +62 -62
- package/test/templates/cls/test.json +9 -9
- package/test/templates/form/cp_building.form.json +32 -32
- package/test/templates/select/account_id.json +3 -3
- package/test/templates/select/storage.data.json +2 -2
- package/test/templates/select/test.storage.data.json +3 -3
- package/test/templates/select/test.suggest.ato_new.json +3 -3
- package/test/templates/select/test.suggest.ato_new.sql +25 -25
- package/test/templates/select/test.suggest.data.json +4 -4
- package/test/templates/select/test.suggest.parent.sql +1 -1
- package/test/templates/table/gis.dataset.table.json +20 -20
- package/user/controllers/user.cls.id.js +14 -14
- package/user/controllers/user.cls.js +71 -75
- package/user/controllers/user.cls.post.js +52 -55
- package/user/controllers/user.info.js +17 -21
- package/user/index.js +7 -36
- package/user/schema.js +17 -0
- package/util/controllers/logger.file.js +91 -91
- package/util/controllers/next.id.js +4 -4
- package/util/controllers/properties.add.js +56 -60
- package/util/controllers/properties.get.js +16 -19
- package/util/controllers/status.monitor.js +8 -8
- package/util/controllers/utils/checkUserAccess.js +20 -17
- package/util/controllers/utils/getRootDir.js +25 -25
- package/util/index.js +19 -23
- package/util/schema.js +19 -0
- package/utils.js +106 -104
- package/widget/controllers/utils/historyFormat.js +76 -76
- package/widget/controllers/utils/obj2db.js +13 -13
- package/widget/controllers/widget.del.js +41 -44
- package/widget/controllers/widget.get.js +96 -102
- package/widget/controllers/widget.set.js +74 -79
- 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
|
+
:::
|
package/docs/utils/index.md
CHANGED
|
@@ -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
|
+
:::
|