@opengis/fastify-table 1.1.27 → 1.1.29
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/Changelog.md +4 -0
- package/crud/controllers/insert.js +6 -5
- package/crud/controllers/update.js +7 -7
- package/package.json +1 -1
- package/server/migrations/properties.sql +5 -2
- package/server/migrations/users.sql +1 -0
- package/table/funcs/getFilterSQL/util/formatValue.js +8 -5
- package/widget/controllers/utils/obj2db.js +2 -2
package/Changelog.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import getTemplate from '../../table/controllers/utils/getTemplate.js';
|
|
5
|
-
import getAccess from '../funcs/getAccess.js';
|
|
1
|
+
import {
|
|
2
|
+
applyHook, getAccess, getTemplate, checkXSS, getToken, dataInsert,
|
|
3
|
+
} from '../../utils.js';
|
|
6
4
|
|
|
7
5
|
export default async function insert(req) {
|
|
8
6
|
const { actions = [] } = await getAccess(req, req.params.table) || {};
|
|
@@ -42,6 +40,9 @@ export default async function insert(req) {
|
|
|
42
40
|
table: add || table, data: req.body, uid,
|
|
43
41
|
});
|
|
44
42
|
|
|
43
|
+
// table_properties
|
|
44
|
+
await applyHook('afterInsert', { req, res });
|
|
45
|
+
// form DataTable
|
|
45
46
|
const extraKeys = Object.keys(formData)?.filter((key) => formData?.[key]?.type === 'DataTable' && formData?.[key]?.table && formData?.[key]?.parent_id && req.body[key].length);
|
|
46
47
|
if (extraKeys?.length) {
|
|
47
48
|
res.extra = {};
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import getToken from '../funcs/getToken.js';
|
|
5
|
-
import checkXSS from './utils/checkXSS.js';
|
|
6
|
-
import getTemplate from '../../table/controllers/utils/getTemplate.js';
|
|
7
|
-
import getAccess from '../funcs/getAccess.js';
|
|
1
|
+
import {
|
|
2
|
+
pgClients, applyHook, getAccess, getTemplate, checkXSS, getToken, dataInsert, dataUpdate,
|
|
3
|
+
} from '../../utils.js';
|
|
8
4
|
|
|
9
5
|
export default async function update(req) {
|
|
10
6
|
const { actions = [], scope, my } = await getAccess(req, req.params.table, req.params.id) || {};
|
|
@@ -42,6 +38,10 @@ export default async function update(req) {
|
|
|
42
38
|
table: tokenData?.table || table, id: tokenData?.id || id, data: req.body, uid,
|
|
43
39
|
});
|
|
44
40
|
|
|
41
|
+
// table_properties
|
|
42
|
+
await applyHook('afterUpdate', { req, res });
|
|
43
|
+
|
|
44
|
+
// form DataTable
|
|
45
45
|
const extraKeys = Object.keys(formData)?.filter((key) => formData?.[key]?.type === 'DataTable' && formData?.[key]?.table && formData?.[key]?.parent_id && req.body[key].length);
|
|
46
46
|
if (extraKeys?.length) {
|
|
47
47
|
res.extra = {};
|
package/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
create schema if not exists admin;
|
|
2
|
+
create schema if not exists setting;
|
|
2
3
|
|
|
3
4
|
-- DROP TABLE admin.properties;
|
|
4
5
|
CREATE TABLE IF NOT EXISTS admin.properties();
|
|
@@ -99,7 +100,8 @@ ALTER TABLE setting.extra_data ADD COLUMN IF NOT EXISTS property_id text;
|
|
|
99
100
|
ALTER TABLE setting.extra_data ADD COLUMN IF NOT EXISTS property_key text;
|
|
100
101
|
ALTER TABLE setting.extra_data ADD COLUMN IF NOT EXISTS property_entity text;
|
|
101
102
|
ALTER TABLE setting.extra_data ADD COLUMN IF NOT EXISTS object_id text;
|
|
102
|
-
ALTER TABLE setting.extra_data ADD COLUMN IF NOT EXISTS
|
|
103
|
+
ALTER TABLE setting.extra_data ADD COLUMN IF NOT EXISTS value_text text;
|
|
104
|
+
ALTER TABLE setting.extra_data ADD COLUMN IF NOT EXISTS value_date timestamp without time zone;
|
|
103
105
|
ALTER TABLE setting.extra_data ADD COLUMN IF NOT EXISTS uid text;
|
|
104
106
|
ALTER TABLE setting.extra_data ALTER COLUMN uid SET DEFAULT '1'::text;
|
|
105
107
|
ALTER TABLE setting.extra_data ADD COLUMN IF NOT EXISTS cdate timestamp without time zone;
|
|
@@ -116,7 +118,8 @@ COMMENT ON COLUMN setting.extra_data.property_id IS 'ID поля користу
|
|
|
116
118
|
COMMENT ON COLUMN setting.extra_data.property_key IS 'Назва колонки';
|
|
117
119
|
COMMENT ON COLUMN setting.extra_data.property_entity IS 'Таблиця';
|
|
118
120
|
COMMENT ON COLUMN setting.extra_data.object_id IS 'Ідентифікатор об''єкту';
|
|
119
|
-
COMMENT ON COLUMN setting.extra_data.
|
|
121
|
+
COMMENT ON COLUMN setting.extra_data.value_text IS 'Значення';
|
|
122
|
+
COMMENT ON COLUMN setting.extra_data.value_date IS 'Дата';
|
|
120
123
|
COMMENT ON COLUMN setting.extra_data.uid IS 'ID користувача';
|
|
121
124
|
|
|
122
125
|
CREATE INDEX IF NOT EXISTS setting_extra_data_cdate_btree_idx ON setting.extra_data USING btree (cdate);
|
|
@@ -18,6 +18,7 @@ ALTER TABLE admin.users add column if not exists enabled boolean;
|
|
|
18
18
|
ALTER TABLE admin.users add column if not exists user_personal_code text;
|
|
19
19
|
ALTER TABLE admin.users add column if not exists last_activity_date timestamp without time zone;
|
|
20
20
|
ALTER TABLE admin.users add column if not exists user_type text DEFAULT 'regular'::text;
|
|
21
|
+
ALTER TABLE admin.users add column if not exists user_rnokpp text;
|
|
21
22
|
ALTER TABLE admin.users add column if not exists salt text;
|
|
22
23
|
ALTER TABLE admin.users add column if not exists cdate timestamp without time zone DEFAULT date_trunc('seconds'::text, now());
|
|
23
24
|
ALTER TABLE admin.users add column if not exists editor_id text;
|
|
@@ -19,7 +19,7 @@ function formatDateISOString(date) {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
function formatValue({
|
|
22
|
-
|
|
22
|
+
filterType, filter, name, value, operator = '=', fieldType = 'text', uid = 1, optimize,
|
|
23
23
|
}) {
|
|
24
24
|
if (!name || !value) return {};
|
|
25
25
|
|
|
@@ -105,7 +105,7 @@ function formatValue({
|
|
|
105
105
|
return { op: operator, query };
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
if (operator === '=' && filterType !== 'text') {
|
|
108
|
+
if (operator === '=' && filterType !== 'text' && !filter?.data) {
|
|
109
109
|
const query = {
|
|
110
110
|
null: `${name} is null`,
|
|
111
111
|
notnull: `${name} is not null`,
|
|
@@ -114,9 +114,12 @@ function formatValue({
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
if (['~', '='].includes(operator)) {
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
const operator1 = (filterType === 'text' && (filter?.id || filter?.name) && operator === '=' ? '~' : operator);
|
|
118
|
+
const match = operator1 === '=' ? `='${value}'` : `ilike '%${value}%'`;
|
|
119
|
+
const query = filter?.data && filter?.sql
|
|
120
|
+
? `${filter?.name || filter?.id} in ( ( with q(id,name) as (${filter?.sql}) select id from q where name::text ${match}) )` // filter with cls
|
|
121
|
+
: `${name}::text ${match}`; // simple filter
|
|
122
|
+
// console.log(query);
|
|
120
123
|
return { op: 'ilike', query };
|
|
121
124
|
}
|
|
122
125
|
|
|
@@ -5,8 +5,8 @@ export default function obj2db(data, nonexistCol) {
|
|
|
5
5
|
|| !Object.keys(data || {}).length
|
|
6
6
|
) return { error: 'invalid data type' };
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
const columns = existColumns?.filter((col) => data[col] || data?.[col] === 0);
|
|
8
|
+
const columns = Object.keys(data)?.filter((key) => !nonexistCol.includes(key));
|
|
9
|
+
// const columns = existColumns?.filter((col) => data[col] || data?.[col] === 0);
|
|
10
10
|
const args = columns?.map((col) => data[col]);
|
|
11
11
|
|
|
12
12
|
return { columns, args, error: !columns?.length ? 'nothing to process' : undefined };
|