@opengis/fastify-table 1.1.29 → 1.1.31
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 +1 -1
- package/crud/controllers/update.js +1 -1
- package/index.js +3 -23
- package/notification/index.js +1 -33
- package/package.json +1 -1
- package/server/migrations/crm.sql +0 -23
- package/server/migrations/properties.sql +83 -71
- package/server/migrations/roles.sql +2 -0
- package/test/api/notification.test.js +0 -26
package/Changelog.md
CHANGED
|
@@ -40,7 +40,7 @@ export default async function insert(req) {
|
|
|
40
40
|
table: add || table, data: req.body, uid,
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
//
|
|
43
|
+
// admin.custom_column
|
|
44
44
|
await applyHook('afterInsert', { req, res });
|
|
45
45
|
// form DataTable
|
|
46
46
|
const extraKeys = Object.keys(formData)?.filter((key) => formData?.[key]?.type === 'DataTable' && formData?.[key]?.table && formData?.[key]?.parent_id && req.body[key].length);
|
package/index.js
CHANGED
|
@@ -49,29 +49,9 @@ async function plugin(fastify, opt) {
|
|
|
49
49
|
return filepath;
|
|
50
50
|
});
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const clsDir = path.join(process.cwd(), 'server/templates/cls');
|
|
56
|
-
const files = existsSync(clsDir) ? readdirSync(clsDir) : [];
|
|
57
|
-
if (files.length) {
|
|
58
|
-
const res = await Promise.all(files.map(async (filename) => {
|
|
59
|
-
const filepath = path.join(clsDir, filename);
|
|
60
|
-
const data = JSON.parse(readFileSync(filepath));
|
|
61
|
-
return { name: path.parse(filename).name, data };
|
|
62
|
-
}));
|
|
63
|
-
await client.query('truncate table crm.cls');
|
|
64
|
-
const { rows } = await client.query(`insert into crm.cls(name, type)
|
|
65
|
-
select value->>'name', 'json' from json_array_elements($1) returning cls_id as id, name`, [JSON.stringify(res).replace(/'/g, "''")]);
|
|
66
|
-
rows.forEach((row) => Object.assign(row, { data: res.find((cls) => row.name === cls.name)?.data }));
|
|
67
|
-
const sql = `insert into crm.cls(code, name, parent)
|
|
68
|
-
select json_array_elements(value->'data')->>'id', json_array_elements(value->'data')->>'text', value->>'name' from json_array_elements($1)`;
|
|
69
|
-
await client.query(sql, [JSON.stringify(rows).replace(/'/g, "''")]);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// execute core migrations
|
|
73
|
-
await execMigrations();
|
|
74
|
-
});
|
|
52
|
+
// core migrations
|
|
53
|
+
await execMigrations();
|
|
54
|
+
|
|
75
55
|
if (!fastify.funcs) {
|
|
76
56
|
fastify.addHook('onRequest', async (req) => {
|
|
77
57
|
req.funcs = fastify;
|
package/notification/index.js
CHANGED
|
@@ -1,43 +1,12 @@
|
|
|
1
1
|
// api
|
|
2
|
-
import readNotifications from './controllers/readNotifications.js'; // mark as read
|
|
3
|
-
import userNotifications from './controllers/userNotifications.js'; // check all, backend pagination
|
|
4
2
|
import testEmail from './controllers/testEmail.js';
|
|
5
3
|
// funcs
|
|
6
4
|
import addNotification from './funcs/addNotification.js'; // add to db
|
|
7
5
|
import notification from './funcs/sendNotification.js'; // send notification
|
|
8
6
|
|
|
9
|
-
import onWidgetSet from './hook/onWidgetSet.js'; // send notification on comment
|
|
10
|
-
import { addHook } from '../utils.js';
|
|
11
|
-
|
|
12
|
-
const tableSchema = {
|
|
13
|
-
params: {
|
|
14
|
-
id: { type: 'string' },
|
|
15
|
-
},
|
|
16
|
-
querystring: {
|
|
17
|
-
nocache: { type: 'string', pattern: '^(\\d+)$' },
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
|
|
21
7
|
async function plugin(fastify, config = {}) {
|
|
22
8
|
const prefix = config.prefix || '/api';
|
|
23
|
-
|
|
24
|
-
method: 'GET',
|
|
25
|
-
url: `${prefix}/notification`,
|
|
26
|
-
config: {
|
|
27
|
-
policy: ['user'],
|
|
28
|
-
},
|
|
29
|
-
schema: tableSchema,
|
|
30
|
-
handler: userNotifications,
|
|
31
|
-
});
|
|
32
|
-
fastify.route({
|
|
33
|
-
method: 'GET',
|
|
34
|
-
url: `${prefix}/notification-read/:id?`,
|
|
35
|
-
config: {
|
|
36
|
-
policy: ['user'],
|
|
37
|
-
},
|
|
38
|
-
schema: tableSchema,
|
|
39
|
-
handler: readNotifications,
|
|
40
|
-
});
|
|
9
|
+
|
|
41
10
|
fastify.route({
|
|
42
11
|
method: 'GET',
|
|
43
12
|
url: `${prefix}/test-email`,
|
|
@@ -49,7 +18,6 @@ async function plugin(fastify, config = {}) {
|
|
|
49
18
|
|
|
50
19
|
fastify.decorate('addNotification', addNotification);
|
|
51
20
|
fastify.decorate('notification', notification);
|
|
52
|
-
addHook('onWidgetSet', onWidgetSet);
|
|
53
21
|
}
|
|
54
22
|
|
|
55
23
|
export default plugin;
|
package/package.json
CHANGED
|
@@ -113,29 +113,6 @@ ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS editor_id text;
|
|
|
113
113
|
ALTER TABLE crm.checklists ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
114
114
|
ALTER TABLE crm.checklists ADD CONSTRAINT crm_checklists_pkey PRIMARY KEY (checklist_id);
|
|
115
115
|
|
|
116
|
-
-- crm.cls
|
|
117
|
-
-- DROP TABLE IF EXISTS crm.cls;
|
|
118
|
-
CREATE TABLE IF NOT EXISTS crm.cls();
|
|
119
|
-
ALTER TABLE crm.cls DROP CONSTRAINT IF EXISTS crm_cls_pkey;
|
|
120
|
-
ALTER TABLE crm.cls DROP CONSTRAINT IF EXISTS crm_cls_unique;
|
|
121
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS cls_id text NOT NULL DEFAULT next_id();
|
|
122
|
-
|
|
123
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS name text;
|
|
124
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS data text;
|
|
125
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS type text;
|
|
126
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS parent text;
|
|
127
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS code text;
|
|
128
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS color text;
|
|
129
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS icon text;
|
|
130
|
-
|
|
131
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS uid text;
|
|
132
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS files json;
|
|
133
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT (now())::timestamp without time zone;
|
|
134
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS editor_id text;
|
|
135
|
-
ALTER TABLE crm.cls ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
136
|
-
ALTER TABLE crm.cls ADD CONSTRAINT crm_cls_pkey PRIMARY KEY (cls_id);
|
|
137
|
-
ALTER TABLE crm.cls ADD CONSTRAINT crm_cls_unique UNIQUE (code, parent);
|
|
138
|
-
|
|
139
116
|
-- DROP TABLE crm.properties;
|
|
140
117
|
CREATE TABLE IF NOT EXISTS crm.properties();
|
|
141
118
|
ALTER TABLE crm.properties DROP CONSTRAINT IF EXISTS crm_properties_pkey;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
create schema if not exists admin;
|
|
2
2
|
create schema if not exists setting;
|
|
3
3
|
|
|
4
|
-
--
|
|
4
|
+
-- drop old
|
|
5
|
+
DROP TABLE IF EXISTS setting.extra_data;
|
|
6
|
+
DROP TABLE IF EXISTS admin.table_properties;
|
|
7
|
+
|
|
5
8
|
CREATE TABLE IF NOT EXISTS admin.properties();
|
|
6
9
|
ALTER TABLE admin.properties DROP CONSTRAINT IF EXISTS admin_properties_property_id_pkey;
|
|
7
10
|
ALTER TABLE admin.properties ADD COLUMN IF NOT EXISTS property_id text NOT NULL DEFAULT next_id();
|
|
@@ -31,7 +34,6 @@ ALTER TABLE admin.properties ADD CONSTRAINT admin_properties_property_id_pkey PR
|
|
|
31
34
|
|
|
32
35
|
COMMENT ON TABLE admin.properties IS 'Налаштування';
|
|
33
36
|
|
|
34
|
-
-- DROP TABLE admin.user_properties;
|
|
35
37
|
CREATE TABLE IF NOT EXISTS admin.user_properties();
|
|
36
38
|
ALTER TABLE admin.user_properties DROP CONSTRAINT IF EXISTS admin_user_properties_property_id_pkey;
|
|
37
39
|
alter table admin.user_properties drop constraint if exists user_properties_key_uid_unique;
|
|
@@ -40,13 +42,20 @@ ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS property_id text NOT
|
|
|
40
42
|
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS property_key text;
|
|
41
43
|
COMMENT ON COLUMN admin.user_properties.property_key IS 'Ключ';
|
|
42
44
|
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS property_json json;
|
|
43
|
-
COMMENT ON COLUMN admin.user_properties.property_json IS '
|
|
45
|
+
COMMENT ON COLUMN admin.user_properties.property_json IS 'Налаштування json';
|
|
46
|
+
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS property_text text;
|
|
47
|
+
COMMENT ON COLUMN admin.user_properties.property_text IS 'Налаштування text';
|
|
44
48
|
|
|
45
49
|
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS property_entity text;
|
|
46
50
|
COMMENT ON COLUMN admin.user_properties.property_entity IS 'Сутність';
|
|
47
51
|
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS property_title text;
|
|
48
52
|
COMMENT ON COLUMN admin.user_properties.property_title IS 'Назва';
|
|
49
53
|
|
|
54
|
+
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS private boolean;
|
|
55
|
+
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS private SET NOT NULL;
|
|
56
|
+
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS private boolean default SET default true;
|
|
57
|
+
COMMENT ON COLUMN admin.user_properties.private IS 'Доступ лише для користувача, який додав дане налаштування';
|
|
58
|
+
|
|
50
59
|
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS uid text NOT NULL DEFAULT '1'::text;
|
|
51
60
|
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS editor_id text;
|
|
52
61
|
ALTER TABLE admin.user_properties ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
@@ -58,71 +67,74 @@ ALTER TABLE admin.user_properties ADD CONSTRAINT user_properties_key_uid_unique
|
|
|
58
67
|
|
|
59
68
|
COMMENT ON TABLE admin.user_properties IS 'Налаштування користувача';
|
|
60
69
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
ALTER TABLE admin.
|
|
69
|
-
ALTER TABLE admin.
|
|
70
|
-
ALTER TABLE admin.
|
|
71
|
-
ALTER TABLE admin.
|
|
72
|
-
ALTER TABLE admin.
|
|
73
|
-
|
|
74
|
-
ALTER TABLE admin.
|
|
75
|
-
|
|
76
|
-
ALTER TABLE admin.
|
|
77
|
-
ALTER TABLE admin.
|
|
78
|
-
ALTER TABLE admin.
|
|
79
|
-
|
|
80
|
-
ALTER TABLE admin.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
COMMENT ON
|
|
86
|
-
COMMENT ON COLUMN admin.
|
|
87
|
-
COMMENT ON COLUMN admin.
|
|
88
|
-
COMMENT ON COLUMN admin.
|
|
89
|
-
COMMENT ON COLUMN admin.
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
ALTER TABLE
|
|
96
|
-
ALTER TABLE
|
|
97
|
-
ALTER TABLE
|
|
98
|
-
|
|
99
|
-
ALTER TABLE
|
|
100
|
-
ALTER TABLE
|
|
101
|
-
|
|
102
|
-
ALTER TABLE
|
|
103
|
-
ALTER TABLE
|
|
104
|
-
ALTER TABLE
|
|
105
|
-
ALTER TABLE
|
|
106
|
-
ALTER TABLE
|
|
107
|
-
ALTER TABLE
|
|
108
|
-
ALTER TABLE
|
|
109
|
-
ALTER TABLE
|
|
110
|
-
ALTER TABLE
|
|
111
|
-
ALTER TABLE
|
|
112
|
-
ALTER TABLE
|
|
113
|
-
ALTER TABLE
|
|
114
|
-
ALTER TABLE
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
COMMENT ON
|
|
120
|
-
COMMENT ON COLUMN
|
|
121
|
-
COMMENT ON COLUMN
|
|
122
|
-
COMMENT ON COLUMN
|
|
123
|
-
COMMENT ON COLUMN
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
CREATE INDEX IF NOT EXISTS
|
|
70
|
+
drop table if exists admin.custom_column cascade;
|
|
71
|
+
|
|
72
|
+
CREATE TABLE IF NOT EXISTS admin.custom_column();
|
|
73
|
+
ALTER TABLE admin.custom_column DROP CONSTRAINT IF EXISTS admin_custom_column_column_id_pkey cascade;
|
|
74
|
+
alter table admin.custom_column drop constraint if exists admin_custom_column_key_entity_uid_unique;
|
|
75
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS column_id text NOT NULL DEFAULT next_id();
|
|
76
|
+
|
|
77
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS name text;
|
|
78
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS entity text;
|
|
79
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS title text;
|
|
80
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS format text;
|
|
81
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS data text;
|
|
82
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS filter boolean;
|
|
83
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS _table boolean;
|
|
84
|
+
|
|
85
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS uid text NOT NULL DEFAULT '1'::text;
|
|
86
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS editor_id text;
|
|
87
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
88
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS cdate timestamp without time zone DEFAULT now();
|
|
89
|
+
ALTER TABLE admin.custom_column ADD COLUMN IF NOT EXISTS files json;
|
|
90
|
+
|
|
91
|
+
ALTER TABLE admin.custom_column ADD CONSTRAINT admin_custom_column_column_id_pkey PRIMARY KEY(column_id);
|
|
92
|
+
ALTER TABLE admin.custom_column ADD CONSTRAINT admin_custom_column_name_entity_uid_unique UNIQUE (name,entity,uid);
|
|
93
|
+
|
|
94
|
+
COMMENT ON TABLE admin.custom_column IS 'Налаштування таблиць користувача';
|
|
95
|
+
COMMENT ON COLUMN admin.custom_column.name IS 'Ключ';
|
|
96
|
+
COMMENT ON COLUMN admin.custom_column.entity IS 'Таблиця';
|
|
97
|
+
COMMENT ON COLUMN admin.custom_column.title IS 'Підпис';
|
|
98
|
+
COMMENT ON COLUMN admin.custom_column.format IS 'Формат';
|
|
99
|
+
COMMENT ON COLUMN admin.custom_column.data IS 'Класифікатор';
|
|
100
|
+
COMMENT ON COLUMN admin.custom_column.filter IS 'Виводити у фільтрах';
|
|
101
|
+
COMMENT ON COLUMN admin.custom_column._table IS 'Відображати у таблиці';
|
|
102
|
+
|
|
103
|
+
CREATE TABLE if not exists crm.extra_data();
|
|
104
|
+
ALTER TABLE crm.extra_data DROP CONSTRAINT IF EXISTS crm_extra_data_pkey;
|
|
105
|
+
ALTER TABLE crm.extra_data DROP CONSTRAINT IF EXISTS crm_extra_data_property_id_fkey;
|
|
106
|
+
ALTER TABLE crm.extra_data DROP CONSTRAINT IF EXISTS crm_extra_data_property_key_object_id_entity_unique;
|
|
107
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS extra_data_id text;
|
|
108
|
+
ALTER TABLE crm.extra_data ALTER COLUMN extra_data_id SET NOT NULL;
|
|
109
|
+
ALTER TABLE crm.extra_data ALTER COLUMN extra_data_id SET DEFAULT next_id();
|
|
110
|
+
|
|
111
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS property_id text;
|
|
112
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS property_key text;
|
|
113
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS property_entity text;
|
|
114
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS object_id text;
|
|
115
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS value_text text;
|
|
116
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS value_date timestamp without time zone;
|
|
117
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS uid text;
|
|
118
|
+
ALTER TABLE crm.extra_data ALTER COLUMN uid SET DEFAULT '1'::text;
|
|
119
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS cdate timestamp without time zone;
|
|
120
|
+
ALTER TABLE crm.extra_data ALTER COLUMN cdate SET DEFAULT date_trunc('seconds'::text, now());
|
|
121
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS editor_id text;
|
|
122
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
123
|
+
ALTER TABLE crm.extra_data ADD COLUMN IF NOT EXISTS files json;
|
|
124
|
+
ALTER TABLE crm.extra_data ADD CONSTRAINT crm_extra_data_pkey PRIMARY KEY (extra_data_id);
|
|
125
|
+
ALTER TABLE crm.extra_data ADD CONSTRAINT crm_extra_data_property_id_fkey FOREIGN KEY (property_id) REFERENCES admin.custom_column (column_id) MATCH SIMPLE;
|
|
126
|
+
ALTER TABLE crm.extra_data ADD CONSTRAINT crm_extra_data_property_key_object_id_entity_unique UNIQUE (property_key, object_id, property_entity);
|
|
127
|
+
|
|
128
|
+
COMMENT ON TABLE crm.extra_data IS 'Значення користувацьких полів';
|
|
129
|
+
COMMENT ON COLUMN crm.extra_data.property_id IS 'ID поля користувача';
|
|
130
|
+
COMMENT ON COLUMN crm.extra_data.property_key IS 'Назва колонки';
|
|
131
|
+
COMMENT ON COLUMN crm.extra_data.property_entity IS 'Таблиця';
|
|
132
|
+
COMMENT ON COLUMN crm.extra_data.object_id IS 'Ідентифікатор об''єкту';
|
|
133
|
+
COMMENT ON COLUMN crm.extra_data.value_text IS 'Значення';
|
|
134
|
+
COMMENT ON COLUMN crm.extra_data.value_date IS 'Дата';
|
|
135
|
+
COMMENT ON COLUMN crm.extra_data.uid IS 'ID користувача';
|
|
136
|
+
|
|
137
|
+
CREATE INDEX IF NOT EXISTS crm_extra_data_cdate_btree_idx ON crm.extra_data USING btree (cdate);
|
|
138
|
+
CREATE INDEX IF NOT EXISTS crm_extra_data_property_id_btree_idx ON crm.extra_data USING btree (property_id COLLATE pg_catalog."default");
|
|
139
|
+
CREATE INDEX IF NOT EXISTS crm_extra_data_property_entity_btree_idx ON crm.extra_data USING btree (property_entity COLLATE pg_catalog."default");
|
|
140
|
+
CREATE INDEX IF NOT EXISTS crm_extra_data_object_id_btree_idx ON crm.extra_data USING btree (object_id COLLATE pg_catalog."default");
|
|
@@ -25,32 +25,6 @@ test('api && funcs notification', async (t) => {
|
|
|
25
25
|
if (!notificationIds?.length) {
|
|
26
26
|
assert.ok(0, 'insert notification error');
|
|
27
27
|
}
|
|
28
|
-
await t.test('GET /notification', async () => {
|
|
29
|
-
const res = await app.inject({
|
|
30
|
-
method: 'GET',
|
|
31
|
-
url: '/api/notification',
|
|
32
|
-
});
|
|
33
|
-
const rep = res.json();
|
|
34
|
-
assert.ok(rep.total > 0);
|
|
35
|
-
});
|
|
36
|
-
await t.test('GET /notification-read/:id', async () => {
|
|
37
|
-
const res = await app.inject({
|
|
38
|
-
method: 'GET',
|
|
39
|
-
url: `/api/notification-read/${notificationIds[0]}`,
|
|
40
|
-
});
|
|
41
|
-
const rep = res.json();
|
|
42
|
-
assert.ok(!rep.message?.startsWith(0), res.body);
|
|
43
|
-
assert.ok(rep.message?.includes('unread notifications marked'), res.body);
|
|
44
|
-
});
|
|
45
|
-
await t.test('GET /notification-read', async () => {
|
|
46
|
-
const res = await app.inject({
|
|
47
|
-
method: 'GET',
|
|
48
|
-
url: '/api/notification-read',
|
|
49
|
-
});
|
|
50
|
-
const rep = res.json();
|
|
51
|
-
assert.ok(!rep.message?.startsWith(0), res.body);
|
|
52
|
-
assert.ok(rep.message?.includes('unread notifications marked'), res.body);
|
|
53
|
-
});
|
|
54
28
|
|
|
55
29
|
const { sql } = await getSelect('core.user_mentioned');
|
|
56
30
|
const { name } = await pg.query(`with data (id,name,email) as (${sql})
|