@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,21 +1,21 @@
|
|
|
1
|
-
# afterDelete
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику DELETE API [`/table/:token`](../../api/crud/deleteCrud.md)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { addHook } from '@opengis/fastify-table/utils.js';
|
|
11
|
-
|
|
12
|
-
addHook('afterDelete', async ({ table, id, user = {} }) => {
|
|
13
|
-
// do something;
|
|
14
|
-
});
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
| Назва | Тип | Опис |
|
|
18
|
-
| ------- | ------ | ---------------------- |
|
|
19
|
-
| table | String | Таблиця |
|
|
20
|
-
| id | String | ID об'єкту |
|
|
21
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# afterDelete
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику DELETE API [`/table/:token`](../../api/crud/deleteCrud.md)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { addHook } from '@opengis/fastify-table/utils.js';
|
|
11
|
+
|
|
12
|
+
addHook('afterDelete', async ({ table, id, user = {} }) => {
|
|
13
|
+
// do something;
|
|
14
|
+
});
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
| Назва | Тип | Опис |
|
|
18
|
+
| ------- | ------ | ---------------------- |
|
|
19
|
+
| table | String | Таблиця |
|
|
20
|
+
| id | String | ID об'єкту |
|
|
21
|
+
| user | Object | Дані сесії користувача |
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
# preDelete
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити попередню валідацію запиту до DELETE API [`/table/:token`](../../api/crud/deleteCrud.md)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { addHook, config } from '@opengis/fastify-table/utils.js';
|
|
11
|
-
|
|
12
|
-
addHook('preDelete', async ({ table, id, user }) => {
|
|
13
|
-
const { uid } = config?.auth?.disable ? { uid: '1' } : user || {};
|
|
14
|
-
if (!uid && !config?.local) {
|
|
15
|
-
return { message: 'access restricted: delete', status: 403 };
|
|
16
|
-
}
|
|
17
|
-
const opt = await getToken({ mode: 'w', token: table, uid, json: 1 });
|
|
18
|
-
return opt;
|
|
19
|
-
});
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
| Назва | Тип | Опис |
|
|
23
|
-
| ------- | ------ | ---------------------- |
|
|
24
|
-
| table | String | Таблиця / Токен |
|
|
25
|
-
| id | String | ID об'єкту |
|
|
26
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# preDelete
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити попередню валідацію запиту до DELETE API [`/table/:token`](../../api/crud/deleteCrud.md)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { addHook, config } from '@opengis/fastify-table/utils.js';
|
|
11
|
+
|
|
12
|
+
addHook('preDelete', async ({ table, id, user }) => {
|
|
13
|
+
const { uid } = config?.auth?.disable ? { uid: '1' } : user || {};
|
|
14
|
+
if (!uid && !config?.local) {
|
|
15
|
+
return { message: 'access restricted: delete', status: 403 };
|
|
16
|
+
}
|
|
17
|
+
const opt = await getToken({ mode: 'w', token: table, uid, json: 1 });
|
|
18
|
+
return opt;
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
| Назва | Тип | Опис |
|
|
23
|
+
| ------- | ------ | ---------------------- |
|
|
24
|
+
| table | String | Таблиця / Токен |
|
|
25
|
+
| id | String | ID об'єкту |
|
|
26
|
+
| user | Object | Дані сесії користувача |
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
# afterForm
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику API [`/form/:token`](../../api/table/form.md)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
addHook('afterForm', async ({ form, payload, user = {} }) => {
|
|
11
|
-
// do something;
|
|
12
|
-
});
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
| Назва | Тип | Опис |
|
|
16
|
-
| ------- | ------ | ---------------------- |
|
|
17
|
-
| form | String | Форма / Токен |
|
|
18
|
-
| payload | Object | Відповідь від API |
|
|
19
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# afterForm
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику API [`/form/:token`](../../api/table/form.md)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
addHook('afterForm', async ({ form, payload, user = {} }) => {
|
|
11
|
+
// do something;
|
|
12
|
+
});
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
| Назва | Тип | Опис |
|
|
16
|
+
| ------- | ------ | ---------------------- |
|
|
17
|
+
| form | String | Форма / Токен |
|
|
18
|
+
| payload | Object | Відповідь від API |
|
|
19
|
+
| user | Object | Дані сесії користувача |
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
# preForm
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити попередню валідацію запиту до API [`/form/:token`](../../api/table/form.md)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { addHook, config } from '@opengis/fastify-table/utils.js';
|
|
11
|
-
|
|
12
|
-
addHook('preForm', async ({ form, id, user }) => {
|
|
13
|
-
const { uid } = config?.auth?.disable ? { uid: '1' } : user || {};
|
|
14
|
-
if (!uid && !config?.local) {
|
|
15
|
-
return { message: 'access restricted: edit', status: 403 };
|
|
16
|
-
}
|
|
17
|
-
const opt = await getToken({ mode: 'w', token: form, uid, json: 1 });
|
|
18
|
-
return opt;
|
|
19
|
-
});
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
| Назва | Тип | Опис |
|
|
23
|
-
| ------- | ------ | ---------------------- |
|
|
24
|
-
| form | String | Форма / Токен |
|
|
25
|
-
| id | String | ID об'єкту |
|
|
26
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# preForm
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити попередню валідацію запиту до API [`/form/:token`](../../api/table/form.md)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { addHook, config } from '@opengis/fastify-table/utils.js';
|
|
11
|
+
|
|
12
|
+
addHook('preForm', async ({ form, id, user }) => {
|
|
13
|
+
const { uid } = config?.auth?.disable ? { uid: '1' } : user || {};
|
|
14
|
+
if (!uid && !config?.local) {
|
|
15
|
+
return { message: 'access restricted: edit', status: 403 };
|
|
16
|
+
}
|
|
17
|
+
const opt = await getToken({ mode: 'w', token: form, uid, json: 1 });
|
|
18
|
+
return opt;
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
| Назва | Тип | Опис |
|
|
23
|
+
| ------- | ------ | ---------------------- |
|
|
24
|
+
| form | String | Форма / Токен |
|
|
25
|
+
| id | String | ID об'єкту |
|
|
26
|
+
| user | Object | Дані сесії користувача |
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# afterTemplate
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику API [`/template/:type/:token`](https://apidocs.softpro.ua/admin/api/templates/template.html)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { addHook, pgClients } from '@opengis/fastify-table/utils.js';
|
|
11
|
-
|
|
12
|
-
addHook('afterTemplate', async ({ name, type, payload, user = {} }) => {
|
|
13
|
-
const { client: pg } = pgClients || {};
|
|
14
|
-
const { uid } = user;
|
|
15
|
-
if (!uid || !name) return null;
|
|
16
|
-
});
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
| Назва | Тип | Опис |
|
|
20
|
-
| ------- | ------ | ---------------------- |
|
|
21
|
-
| name | String | Назва шаблону / Токен |
|
|
22
|
-
| type | String | Тип шаблону |
|
|
23
|
-
| payload | Object | Відповідь від API |
|
|
24
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# afterTemplate
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику API [`/template/:type/:token`](https://apidocs.softpro.ua/admin/api/templates/template.html)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { addHook, pgClients } from '@opengis/fastify-table/utils.js';
|
|
11
|
+
|
|
12
|
+
addHook('afterTemplate', async ({ name, type, payload, user = {} }) => {
|
|
13
|
+
const { client: pg } = pgClients || {};
|
|
14
|
+
const { uid } = user;
|
|
15
|
+
if (!uid || !name) return null;
|
|
16
|
+
});
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
| Назва | Тип | Опис |
|
|
20
|
+
| ------- | ------ | ---------------------- |
|
|
21
|
+
| name | String | Назва шаблону / Токен |
|
|
22
|
+
| type | String | Тип шаблону |
|
|
23
|
+
| payload | Object | Відповідь від API |
|
|
24
|
+
| user | Object | Дані сесії користувача |
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
# preTemplate
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити попередню валідацію запиту до API [`/template/:type/:token`](https://apidocs.softpro.ua/admin/api/templates/template.html)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { addHook, getToken, config } from '@opengis/fastify-table/utils.js';
|
|
11
|
-
|
|
12
|
-
addHook('preTemplate', async ({ name, type, user = {} }) => {
|
|
13
|
-
if (!name || !type) return;
|
|
14
|
-
const { uid } = config?.auth?.disable ? { uid: '1' } : user;
|
|
15
|
-
const tokenData = await getToken({
|
|
16
|
-
uid, token: name, mode: 'w', json: 1,
|
|
17
|
-
}) // edit?
|
|
18
|
-
|| await getToken({
|
|
19
|
-
uid, token: name, mode: 'a', json: 1,
|
|
20
|
-
}) || {}; // add?
|
|
21
|
-
return { name: tokenData?.[type] };
|
|
22
|
-
});
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
| Назва | Тип | Опис |
|
|
26
|
-
| ------- | ------ | ---------------------- |
|
|
27
|
-
| name | String | Назва шаблону / Токен |
|
|
28
|
-
| type | String | Тип шаблону |
|
|
29
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# preTemplate
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити попередню валідацію запиту до API [`/template/:type/:token`](https://apidocs.softpro.ua/admin/api/templates/template.html)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { addHook, getToken, config } from '@opengis/fastify-table/utils.js';
|
|
11
|
+
|
|
12
|
+
addHook('preTemplate', async ({ name, type, user = {} }) => {
|
|
13
|
+
if (!name || !type) return;
|
|
14
|
+
const { uid } = config?.auth?.disable ? { uid: '1' } : user;
|
|
15
|
+
const tokenData = await getToken({
|
|
16
|
+
uid, token: name, mode: 'w', json: 1,
|
|
17
|
+
}) // edit?
|
|
18
|
+
|| await getToken({
|
|
19
|
+
uid, token: name, mode: 'a', json: 1,
|
|
20
|
+
}) || {}; // add?
|
|
21
|
+
return { name: tokenData?.[type] };
|
|
22
|
+
});
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
| Назва | Тип | Опис |
|
|
26
|
+
| ------- | ------ | ---------------------- |
|
|
27
|
+
| name | String | Назва шаблону / Токен |
|
|
28
|
+
| type | String | Тип шаблону |
|
|
29
|
+
| user | Object | Дані сесії користувача |
|
package/docs/hook/index.md
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
---
|
|
2
|
-
order: -1
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Список хуків
|
|
6
|
-
|
|
7
|
-
## GET /data/:table/:id? (data.js)
|
|
8
|
-
|
|
9
|
-
- **[preData](./data/preData.md)** - попередня обробка, можливість блокування доступу
|
|
10
|
-
- **[afterData](./data/afterData.md)** - `модифікація` результату, додавання пов'язаних даних тощо
|
|
11
|
-
|
|
12
|
-
## GET /card/:table/:id? (card.js)
|
|
13
|
-
|
|
14
|
-
- **[preCard](./card/preCard.md)** - попередня обробка, можливість блокування доступу
|
|
15
|
-
- **[afterCard](./card/afterCard.md)** - `модифікація` результату, додавання пов'язаних даних тощо
|
|
16
|
-
|
|
17
|
-
## GET /template/:type/:name (getTemplate.js)
|
|
18
|
-
|
|
19
|
-
- **[preTemplate](./getTemplate/preTemplate.md)** - попередня обробка, можливість блокування доступу [template](../api/admin/templates/template.md)
|
|
20
|
-
- **[afterTemplate](./getTemplate/afterTemplate.md)** - `модифікації` payload [template](../api/admin/templates/template.md)
|
|
21
|
-
|
|
22
|
-
## GET /form/:name (form.js)
|
|
23
|
-
|
|
24
|
-
- **[preForm](./form/preForm.md)** - попередня обробка, можливість блокування доступу
|
|
25
|
-
- **[afterForm](./form/afterForm.md)** - `модифікація` форми, додавання користувацьких полів тощо
|
|
26
|
-
|
|
27
|
-
## GET /table/:token (table.js) - CRUD
|
|
28
|
-
|
|
29
|
-
- **[preTable](./table/preTable.md)** - попередня обробка, можливість блокування доступу
|
|
30
|
-
- **[afterTable](./table/afterTable.md)** - `модифікація` результату, додавання пов'язаних даних тощо
|
|
31
|
-
|
|
32
|
-
## POST /table/:token (insert.js) - CRUD
|
|
33
|
-
|
|
34
|
-
- **[preInsert](./insert/preInsert.md)** - попередня обробка, можливість блокування доступу
|
|
35
|
-
- **[afterInsert](./insert/afterInsert.md)** - виконання додаткових дій після внесення даних до БД [insert](../api/fastify-table/crud/insert.md)
|
|
36
|
-
|
|
37
|
-
## PUT /table/:token (update.js) - CRUD
|
|
38
|
-
|
|
39
|
-
- **[preUpdate](./update/preUpdate.md)** - попередня обробка, можливість блокування доступу
|
|
40
|
-
- **[afterUpdate](./update/afterUpdate.md)** - виконання додаткових дій після внесення змін до БД [update](../api/fastify-table/crud/update.md)
|
|
41
|
-
|
|
42
|
-
## DELETE /table/:token (deleteCrud.js) - CRUD
|
|
43
|
-
|
|
44
|
-
- **[preDelete](./deleteCrud/preDelete.md)** - попередня обробка, можливість блокування доступу
|
|
45
|
-
- **[afterDelete](./deleteCrud/afterDelete.md)** - виконання додаткових дій після внесення змін до БД [delete](../api/fastify-table/crud/deleteCrud.md)
|
|
1
|
+
---
|
|
2
|
+
order: -1
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Список хуків
|
|
6
|
+
|
|
7
|
+
## GET /data/:table/:id? (data.js)
|
|
8
|
+
|
|
9
|
+
- **[preData](./data/preData.md)** - попередня обробка, можливість блокування доступу
|
|
10
|
+
- **[afterData](./data/afterData.md)** - `модифікація` результату, додавання пов'язаних даних тощо
|
|
11
|
+
|
|
12
|
+
## GET /card/:table/:id? (card.js)
|
|
13
|
+
|
|
14
|
+
- **[preCard](./card/preCard.md)** - попередня обробка, можливість блокування доступу
|
|
15
|
+
- **[afterCard](./card/afterCard.md)** - `модифікація` результату, додавання пов'язаних даних тощо
|
|
16
|
+
|
|
17
|
+
## GET /template/:type/:name (getTemplate.js)
|
|
18
|
+
|
|
19
|
+
- **[preTemplate](./getTemplate/preTemplate.md)** - попередня обробка, можливість блокування доступу [template](../api/admin/templates/template.md)
|
|
20
|
+
- **[afterTemplate](./getTemplate/afterTemplate.md)** - `модифікації` payload [template](../api/admin/templates/template.md)
|
|
21
|
+
|
|
22
|
+
## GET /form/:name (form.js)
|
|
23
|
+
|
|
24
|
+
- **[preForm](./form/preForm.md)** - попередня обробка, можливість блокування доступу
|
|
25
|
+
- **[afterForm](./form/afterForm.md)** - `модифікація` форми, додавання користувацьких полів тощо
|
|
26
|
+
|
|
27
|
+
## GET /table/:token (table.js) - CRUD
|
|
28
|
+
|
|
29
|
+
- **[preTable](./table/preTable.md)** - попередня обробка, можливість блокування доступу
|
|
30
|
+
- **[afterTable](./table/afterTable.md)** - `модифікація` результату, додавання пов'язаних даних тощо
|
|
31
|
+
|
|
32
|
+
## POST /table/:token (insert.js) - CRUD
|
|
33
|
+
|
|
34
|
+
- **[preInsert](./insert/preInsert.md)** - попередня обробка, можливість блокування доступу
|
|
35
|
+
- **[afterInsert](./insert/afterInsert.md)** - виконання додаткових дій після внесення даних до БД [insert](../api/fastify-table/crud/insert.md)
|
|
36
|
+
|
|
37
|
+
## PUT /table/:token (update.js) - CRUD
|
|
38
|
+
|
|
39
|
+
- **[preUpdate](./update/preUpdate.md)** - попередня обробка, можливість блокування доступу
|
|
40
|
+
- **[afterUpdate](./update/afterUpdate.md)** - виконання додаткових дій після внесення змін до БД [update](../api/fastify-table/crud/update.md)
|
|
41
|
+
|
|
42
|
+
## DELETE /table/:token (deleteCrud.js) - CRUD
|
|
43
|
+
|
|
44
|
+
- **[preDelete](./deleteCrud/preDelete.md)** - попередня обробка, можливість блокування доступу
|
|
45
|
+
- **[afterDelete](./deleteCrud/afterDelete.md)** - виконання додаткових дій після внесення змін до БД [delete](../api/fastify-table/crud/deleteCrud.md)
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
# afterInsert
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику POST API [`/table/:token`](../../api/crud/insert.md)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { addHook, config, getTemplate, pgClients } from '@opengis/fastify-table/utils.js';
|
|
11
|
-
|
|
12
|
-
addHook('afterInsert', async ({ table, body = {}, payload: res = {}, user = {} }) => {
|
|
13
|
-
const { client: pg } = pgClients || {};
|
|
14
|
-
const { uid } = config?.auth?.disable ? { uid: '1' } : user;
|
|
15
|
-
if (!uid || !table || !Object.keys(body)?.length) return null;
|
|
16
|
-
|
|
17
|
-
const loadTable = await getTemplate('table', table);
|
|
18
|
-
if (!pg.pk[loadTable?.table || table]) return null;
|
|
19
|
-
const pk = pg.pk[loadTable?.table || table];
|
|
20
|
-
const id = res.rows?.[0]?.[pk];
|
|
21
|
-
|
|
22
|
-
const { rows: properties = [] } = await pg.query(`select column_id, name, title, format, data from admin.custom_column
|
|
23
|
-
where entity=$1 and uid=$2`, [table, uid]);
|
|
24
|
-
|
|
25
|
-
if (!id || !properties?.length) return null;
|
|
26
|
-
|
|
27
|
-
const q = properties
|
|
28
|
-
.filter((el) => Object.keys(body).includes(el.name))
|
|
29
|
-
.map((el) => `insert into crm.extra_data(property_id,property_key,property_entity,object_id,${el.format?.toLowerCase() === 'date' ? 'value_date' : 'value_text'})
|
|
30
|
-
select '${el.column_id}', '${el.name}', '${table}', '${id}', ${el.format?.toLowerCase() === 'date' ? `'${body[el.name]}'::timestamp without time zone` : `'${body[el.name]}'::text`}`)
|
|
31
|
-
.join(';\n');
|
|
32
|
-
return pg.query(q);
|
|
33
|
-
});
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
| Назва | Тип | Опис |
|
|
37
|
-
| ------- | ------ | ---------------------- |
|
|
38
|
-
| table | String | Таблиця / Токен |
|
|
39
|
-
| body | Object | Тіло запиту, що надійшов до API |
|
|
40
|
-
| payload | Object | Відповідь від API |
|
|
41
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# afterInsert
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику POST API [`/table/:token`](../../api/crud/insert.md)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { addHook, config, getTemplate, pgClients } from '@opengis/fastify-table/utils.js';
|
|
11
|
+
|
|
12
|
+
addHook('afterInsert', async ({ table, body = {}, payload: res = {}, user = {} }) => {
|
|
13
|
+
const { client: pg } = pgClients || {};
|
|
14
|
+
const { uid } = config?.auth?.disable ? { uid: '1' } : user;
|
|
15
|
+
if (!uid || !table || !Object.keys(body)?.length) return null;
|
|
16
|
+
|
|
17
|
+
const loadTable = await getTemplate('table', table);
|
|
18
|
+
if (!pg.pk[loadTable?.table || table]) return null;
|
|
19
|
+
const pk = pg.pk[loadTable?.table || table];
|
|
20
|
+
const id = res.rows?.[0]?.[pk];
|
|
21
|
+
|
|
22
|
+
const { rows: properties = [] } = await pg.query(`select column_id, name, title, format, data from admin.custom_column
|
|
23
|
+
where entity=$1 and uid=$2`, [table, uid]);
|
|
24
|
+
|
|
25
|
+
if (!id || !properties?.length) return null;
|
|
26
|
+
|
|
27
|
+
const q = properties
|
|
28
|
+
.filter((el) => Object.keys(body).includes(el.name))
|
|
29
|
+
.map((el) => `insert into crm.extra_data(property_id,property_key,property_entity,object_id,${el.format?.toLowerCase() === 'date' ? 'value_date' : 'value_text'})
|
|
30
|
+
select '${el.column_id}', '${el.name}', '${table}', '${id}', ${el.format?.toLowerCase() === 'date' ? `'${body[el.name]}'::timestamp without time zone` : `'${body[el.name]}'::text`}`)
|
|
31
|
+
.join(';\n');
|
|
32
|
+
return pg.query(q);
|
|
33
|
+
});
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
| Назва | Тип | Опис |
|
|
37
|
+
| ------- | ------ | ---------------------- |
|
|
38
|
+
| table | String | Таблиця / Токен |
|
|
39
|
+
| body | Object | Тіло запиту, що надійшов до API |
|
|
40
|
+
| payload | Object | Відповідь від API |
|
|
41
|
+
| user | Object | Дані сесії користувача |
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# preInsert
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити попередню валідацію запиту до POST API [`/table/:token`](../../api/crud/insert.md)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { addHook, config } from '@opengis/fastify-table/utils.js';
|
|
11
|
-
|
|
12
|
-
addHook('preInsert', async ({ table, user }) => {
|
|
13
|
-
const { uid } = config?.auth?.disable ? { uid: '1' } : user || {};
|
|
14
|
-
if (!uid && !config?.local) {
|
|
15
|
-
return { message: 'access restricted: edit', status: 403 };
|
|
16
|
-
}
|
|
17
|
-
const opt = await getToken({ mode: 'w', token: table, uid, json: 1 });
|
|
18
|
-
return opt;
|
|
19
|
-
});
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
| Назва | Тип | Опис |
|
|
23
|
-
| ------- | ------ | ---------------------- |
|
|
24
|
-
| table | String | Таблиця / Токен |
|
|
25
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# preInsert
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити попередню валідацію запиту до POST API [`/table/:token`](../../api/crud/insert.md)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { addHook, config } from '@opengis/fastify-table/utils.js';
|
|
11
|
+
|
|
12
|
+
addHook('preInsert', async ({ table, user }) => {
|
|
13
|
+
const { uid } = config?.auth?.disable ? { uid: '1' } : user || {};
|
|
14
|
+
if (!uid && !config?.local) {
|
|
15
|
+
return { message: 'access restricted: edit', status: 403 };
|
|
16
|
+
}
|
|
17
|
+
const opt = await getToken({ mode: 'w', token: table, uid, json: 1 });
|
|
18
|
+
return opt;
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
| Назва | Тип | Опис |
|
|
23
|
+
| ------- | ------ | ---------------------- |
|
|
24
|
+
| table | String | Таблиця / Токен |
|
|
25
|
+
| user | Object | Дані сесії користувача |
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# afterTable
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику GET API [`/table/:token`](../../api/table/table.md)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { addHook } from '@opengis/fastify-table/utils.js';
|
|
11
|
-
|
|
12
|
-
addHook('afterTable', async ({ table, user = {} }) => {
|
|
13
|
-
// do something;
|
|
14
|
-
});
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
| Назва | Тип | Опис |
|
|
18
|
-
| ------- | ------ | ---------------------- |
|
|
19
|
-
| table | String | Таблиця / Токен |
|
|
20
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# afterTable
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити додаткові операції та внести зміни до payload, що отримується при виклику GET API [`/table/:token`](../../api/table/table.md)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { addHook } from '@opengis/fastify-table/utils.js';
|
|
11
|
+
|
|
12
|
+
addHook('afterTable', async ({ table, user = {} }) => {
|
|
13
|
+
// do something;
|
|
14
|
+
});
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
| Назва | Тип | Опис |
|
|
18
|
+
| ------- | ------ | ---------------------- |
|
|
19
|
+
| table | String | Таблиця / Токен |
|
|
20
|
+
| user | Object | Дані сесії користувача |
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# preTable
|
|
2
|
-
|
|
3
|
-
## Опис
|
|
4
|
-
|
|
5
|
-
Дозволяє здійснити попередню валідацію запиту до GET API [`/table/:token`](../../api/table/table.md)
|
|
6
|
-
|
|
7
|
-
## Параметри
|
|
8
|
-
|
|
9
|
-
```js
|
|
10
|
-
import { config, getToken, addHook, pgClients } from '@opengis/fastify-table/utils.js';
|
|
11
|
-
|
|
12
|
-
addHook('preTable', async ({ table, user = {} }) => {
|
|
13
|
-
const { client: pg } = pgClients || {};
|
|
14
|
-
const { uid } = config?.auth?.disable ? { uid: '1' } : user;
|
|
15
|
-
const opt = await getToken({
|
|
16
|
-
uid, token: table, mode: 'w', json: 1,
|
|
17
|
-
});
|
|
18
|
-
return opt;
|
|
19
|
-
});
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
| Назва | Тип | Опис |
|
|
23
|
-
| ------- | ------ | ---------------------- |
|
|
24
|
-
| table | String | Таблиця / Токен |
|
|
25
|
-
| user | Object | Дані сесії користувача |
|
|
1
|
+
# preTable
|
|
2
|
+
|
|
3
|
+
## Опис
|
|
4
|
+
|
|
5
|
+
Дозволяє здійснити попередню валідацію запиту до GET API [`/table/:token`](../../api/table/table.md)
|
|
6
|
+
|
|
7
|
+
## Параметри
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { config, getToken, addHook, pgClients } from '@opengis/fastify-table/utils.js';
|
|
11
|
+
|
|
12
|
+
addHook('preTable', async ({ table, user = {} }) => {
|
|
13
|
+
const { client: pg } = pgClients || {};
|
|
14
|
+
const { uid } = config?.auth?.disable ? { uid: '1' } : user;
|
|
15
|
+
const opt = await getToken({
|
|
16
|
+
uid, token: table, mode: 'w', json: 1,
|
|
17
|
+
});
|
|
18
|
+
return opt;
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
| Назва | Тип | Опис |
|
|
23
|
+
| ------- | ------ | ---------------------- |
|
|
24
|
+
| table | String | Таблиця / Токен |
|
|
25
|
+
| user | Object | Дані сесії користувача |
|