@opengis/fastify-table 2.0.119 → 2.0.121
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/dist/config.js +1 -1
- package/dist/helper.d.ts +1 -1
- package/dist/helper.d.ts.map +1 -1
- package/dist/helper.js +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/script/dump.js +1 -1
- package/dist/script/dump.ts +1 -1
- package/dist/server/migrations/cls.sql +36 -0
- package/dist/server/migrations/users.sql +1 -35
- package/dist/server/plugins/crud/funcs/getAccess.d.ts.map +1 -1
- package/dist/server/plugins/crud/funcs/getAccess.js +14 -2
- package/dist/server/plugins/logger/createFileStream.d.ts.map +1 -1
- package/dist/server/plugins/migration/exec.sql.d.ts.map +1 -1
- package/dist/server/plugins/migration/exec.sql.js +4 -1
- package/dist/server/plugins/table/funcs/getSelectMeta.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getSelectMeta.js +3 -1
- package/dist/server/plugins/usercls/index.d.ts +34 -2
- package/dist/server/plugins/usercls/index.d.ts.map +1 -1
- package/dist/server/plugins/usercls/index.js +111 -17
- package/dist/server/routes/usercls/controllers/addUserCls.d.ts +2 -0
- package/dist/server/routes/usercls/controllers/addUserCls.d.ts.map +1 -0
- package/dist/server/routes/usercls/controllers/addUserCls.js +31 -0
- package/dist/server/routes/usercls/controllers/deleteUserCls.d.ts +2 -0
- package/dist/server/routes/usercls/controllers/deleteUserCls.d.ts.map +1 -0
- package/dist/server/routes/usercls/controllers/deleteUserCls.js +17 -0
- package/dist/server/routes/usercls/controllers/editUserCls.d.ts +2 -0
- package/dist/server/routes/usercls/controllers/editUserCls.d.ts.map +1 -0
- package/dist/server/routes/usercls/controllers/editUserCls.js +32 -0
- package/dist/server/routes/usercls/controllers/getUserCls.d.ts +2 -0
- package/dist/server/routes/usercls/controllers/getUserCls.d.ts.map +1 -0
- package/dist/server/routes/usercls/controllers/getUserCls.js +13 -0
- package/dist/server/routes/usercls/index.d.ts +2 -0
- package/dist/server/routes/usercls/index.d.ts.map +1 -0
- package/dist/server/routes/usercls/index.js +51 -0
- package/dist/test.setup.js +8 -4
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -1
- package/package.json +1 -1
package/dist/config.js
CHANGED
|
@@ -10,7 +10,7 @@ Object.assign(config, {
|
|
|
10
10
|
storageList: {},
|
|
11
11
|
allTemplates: config?.allTemplates || {},
|
|
12
12
|
env: process.env.NODE_ENV,
|
|
13
|
-
port: process.env.PORT,
|
|
13
|
+
port: config.port || process.env.PORT,
|
|
14
14
|
});
|
|
15
15
|
if (existsSync(`.env.local`)) {
|
|
16
16
|
dotenv.config({ path: `.env.local` }); // ! load .env.local
|
package/dist/helper.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ import { pgClients } from "./utils.js";
|
|
|
3
3
|
declare const prefix: any;
|
|
4
4
|
export declare function setup(): Promise<void>;
|
|
5
5
|
export declare function teardown(): Promise<void>;
|
|
6
|
-
export declare function build(): any
|
|
6
|
+
export declare function build(): Promise<any>;
|
|
7
7
|
export { prefix, config, pgClients, };
|
|
8
8
|
//# sourceMappingURL=helper.d.ts.map
|
package/dist/helper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../helper.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAEvD,QAAA,MAAQ,MAAM,KAAoB,CAAC;AAInC,wBAAsB,KAAK,kBAI1B;AAGD,wBAAsB,QAAQ,kBAW7B;AAED,
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../helper.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAEvD,QAAA,MAAQ,MAAM,KAAoB,CAAC;AAInC,wBAAsB,KAAK,kBAI1B;AAGD,wBAAsB,QAAQ,kBAW7B;AAED,wBAAsB,KAAK,iBAU1B;AAED,OAAO,EAEL,MAAM,EACN,MAAM,EACN,SAAS,GACV,CAAC"}
|
package/dist/helper.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
1
|
import Fastify from "fastify";
|
|
3
2
|
import config from "./config.js";
|
|
4
3
|
import appService from "./index.js";
|
|
5
|
-
import { pgClients
|
|
4
|
+
import { pgClients } from "./utils.js";
|
|
6
5
|
const { prefix = "/api" } = config;
|
|
7
6
|
let app;
|
|
8
7
|
export async function setup() {
|
|
@@ -20,15 +19,14 @@ export async function teardown() {
|
|
|
20
19
|
console.log("Global teardown: all clients closed");
|
|
21
20
|
process.exit(0);
|
|
22
21
|
}
|
|
23
|
-
export function build() {
|
|
22
|
+
export async function build() {
|
|
24
23
|
if (!app) {
|
|
25
24
|
app = Fastify({ logger: false });
|
|
26
25
|
app.register(appService, config);
|
|
27
26
|
app.addHook("onRequest", async (req) => {
|
|
28
27
|
req.user = req.user || { uid: "1", user_type: "admin" };
|
|
29
28
|
});
|
|
30
|
-
|
|
31
|
-
// await app.ready(); // ? ensure plugins registered, can not add fastify hooks after app is ready
|
|
29
|
+
await app.ready(); // ? ensure plugins registered, can not add fastify hooks after app is ready
|
|
32
30
|
}
|
|
33
31
|
return app;
|
|
34
32
|
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AA4FA,iBAAS,MAAM,CAAC,OAAO,EAAE,GAAG,QA6K3B;;AACD,wBAA0B"}
|
package/dist/index.js
CHANGED
|
@@ -54,6 +54,7 @@ import fileRoutes from "./server/routes/file/index.js";
|
|
|
54
54
|
import uploadChunkRoutes from "./server/routes/upload/index.js";
|
|
55
55
|
import grpcRoutes from "./server/routes/grpc/index.js";
|
|
56
56
|
import notificationsRoutes from "./server/routes/notifications/index.js";
|
|
57
|
+
import userClsRoutes from "./server/routes/usercls/index.js";
|
|
57
58
|
addHook("preForm", preForm);
|
|
58
59
|
addHook("afterTable", afterTable);
|
|
59
60
|
addHook("preTemplate", preTemplate);
|
|
@@ -157,6 +158,7 @@ function plugin(fastify) {
|
|
|
157
158
|
fastify.register(grpcRoutes, opt);
|
|
158
159
|
// from admin
|
|
159
160
|
fastify.register(notificationsRoutes, opt);
|
|
161
|
+
fastify.register(userClsRoutes, opt);
|
|
160
162
|
config.proxy?.forEach?.((el) => {
|
|
161
163
|
if (execName === "bun") {
|
|
162
164
|
fastify.all(`${el.source}/*`, async (req, reply) => {
|
package/dist/script/dump.js
CHANGED
|
@@ -12,7 +12,7 @@ if (import.meta.main) {
|
|
|
12
12
|
}
|
|
13
13
|
const debug = false;
|
|
14
14
|
export default async function dumpMigrateSQL() {
|
|
15
|
-
const app = build();
|
|
15
|
+
const app = await build();
|
|
16
16
|
app.addHook("onClose", async () => teardown());
|
|
17
17
|
try {
|
|
18
18
|
// const { database, host, port, user, password } = config.pg;
|
package/dist/script/dump.ts
CHANGED
|
@@ -67,3 +67,39 @@ COMMENT ON COLUMN admin.user_cls.data IS 'SQL запит';
|
|
|
67
67
|
COMMENT ON COLUMN admin.user_cls.icon IS 'Іконка';
|
|
68
68
|
COMMENT ON COLUMN admin.user_cls.color IS 'Колір';
|
|
69
69
|
COMMENT ON COLUMN admin.user_cls.type IS 'Тип (json/sql)';
|
|
70
|
+
|
|
71
|
+
ALTER TABLE admin.user_cls DROP CONSTRAINT IF EXISTS admin_user_cls_pkey;
|
|
72
|
+
ALTER TABLE admin.user_cls DROP CONSTRAINT IF EXISTS admin_user_unique;
|
|
73
|
+
|
|
74
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS user_clsid text;
|
|
75
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS code text;
|
|
76
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS parent text;
|
|
77
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS name text;
|
|
78
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS icon text;
|
|
79
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS data text;
|
|
80
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS type text;
|
|
81
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS files json;
|
|
82
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS cdate timestamp without time zone;
|
|
83
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS editor_id text;
|
|
84
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
85
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS uid text;
|
|
86
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS color text;
|
|
87
|
+
|
|
88
|
+
ALTER TABLE admin.user_cls ALTER COLUMN user_clsid SET NOT NULL;
|
|
89
|
+
ALTER TABLE admin.user_cls ALTER COLUMN user_clsid SET DEFAULT next_id();
|
|
90
|
+
ALTER TABLE admin.user_cls ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
91
|
+
ALTER TABLE admin.user_cls ALTER COLUMN uid SET NOT NULL;
|
|
92
|
+
ALTER TABLE admin.user_cls ALTER COLUMN uid SET DEFAULT '1'::text;
|
|
93
|
+
|
|
94
|
+
ALTER TABLE admin.user_cls ADD CONSTRAINT admin_user_cls_pkey PRIMARY KEY(user_clsid);
|
|
95
|
+
ALTER TABLE admin.user_cls ADD CONSTRAINT admin_user_unique UNIQUE(code, parent);
|
|
96
|
+
|
|
97
|
+
COMMENT ON TABLE admin.user_cls IS 'Користувацькі класифікатори';
|
|
98
|
+
COMMENT ON COLUMN admin.user_cls.user_clsid IS 'ID';
|
|
99
|
+
COMMENT ON COLUMN admin.user_cls.code IS 'Код';
|
|
100
|
+
COMMENT ON COLUMN admin.user_cls.name IS 'Назва';
|
|
101
|
+
COMMENT ON COLUMN admin.user_cls.icon IS 'Іконка';
|
|
102
|
+
COMMENT ON COLUMN admin.user_cls.color IS 'Колір';
|
|
103
|
+
|
|
104
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS alias text[];
|
|
105
|
+
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS description text;
|
|
@@ -35,7 +35,7 @@ ALTER TABLE admin.users add CONSTRAINT admin_user_user_rnokpp UNIQUE (user_rnokp
|
|
|
35
35
|
|
|
36
36
|
-- update admin.users set user_type='regular' where user_type not in ('viewer', 'regular','admin','superadmin');
|
|
37
37
|
-- ALTER TABLE admin.users add constraint admin_user_type_check CHECK (user_type=any(array['viewer', 'regular','admin','superadmin']));
|
|
38
|
-
insert into admin.users (uid,login,sur_name,password,user_type,enabled)values('viewer','viewer','viewer','viewer','viewer', false) on conflict (uid) do update set enabled=excluded.enabled, sur_name=excluded.sur_name;
|
|
38
|
+
insert into admin.users (uid,login,user_name,email,sur_name,password,user_type,enabled)values('viewer','viewer','viewer','viewer','viewer','viewer','viewer', false) on conflict (uid) do update set enabled=excluded.enabled, sur_name=excluded.sur_name;
|
|
39
39
|
-- update admin.users set enabled=true where uid='viewer';
|
|
40
40
|
|
|
41
41
|
COMMENT ON TABLE admin.users IS 'Користувачі';
|
|
@@ -149,38 +149,4 @@ COMMENT ON COLUMN admin.users_social_auth.social_auth_softpro_code IS 'код о
|
|
|
149
149
|
COMMENT ON COLUMN admin.users_social_auth.enabled IS 'Выключатель';
|
|
150
150
|
COMMENT ON COLUMN admin.users_social_auth.social_auth_url IS 'URL для QR code';
|
|
151
151
|
|
|
152
|
-
CREATE TABLE IF NOT EXISTS admin.user_cls();
|
|
153
|
-
ALTER TABLE admin.user_cls DROP CONSTRAINT IF EXISTS admin_user_cls_pkey;
|
|
154
|
-
ALTER TABLE admin.user_cls DROP CONSTRAINT IF EXISTS admin_user_unique;
|
|
155
|
-
|
|
156
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS user_clsid text;
|
|
157
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS code text;
|
|
158
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS parent text;
|
|
159
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS name text;
|
|
160
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS icon text;
|
|
161
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS data text;
|
|
162
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS type text;
|
|
163
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS files json;
|
|
164
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS cdate timestamp without time zone;
|
|
165
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS editor_id text;
|
|
166
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS editor_date timestamp without time zone;
|
|
167
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS uid text;
|
|
168
|
-
ALTER TABLE admin.user_cls ADD COLUMN IF NOT EXISTS color text;
|
|
169
|
-
|
|
170
|
-
ALTER TABLE admin.user_cls ALTER COLUMN user_clsid SET NOT NULL;
|
|
171
|
-
ALTER TABLE admin.user_cls ALTER COLUMN user_clsid SET DEFAULT next_id();
|
|
172
|
-
ALTER TABLE admin.user_cls ALTER COLUMN cdate SET DEFAULT (now())::timestamp without time zone;
|
|
173
|
-
ALTER TABLE admin.user_cls ALTER COLUMN uid SET NOT NULL;
|
|
174
|
-
ALTER TABLE admin.user_cls ALTER COLUMN uid SET DEFAULT '1'::text;
|
|
175
|
-
|
|
176
|
-
ALTER TABLE admin.user_cls ADD CONSTRAINT admin_user_cls_pkey PRIMARY KEY(user_clsid);
|
|
177
|
-
ALTER TABLE admin.user_cls ADD CONSTRAINT admin_user_unique UNIQUE(code, parent);
|
|
178
|
-
|
|
179
|
-
COMMENT ON TABLE admin.user_cls IS 'Користувацькі класифікатори';
|
|
180
|
-
COMMENT ON COLUMN admin.user_cls.user_clsid IS 'ID';
|
|
181
|
-
COMMENT ON COLUMN admin.user_cls.code IS 'Код';
|
|
182
|
-
COMMENT ON COLUMN admin.user_cls.name IS 'Назва';
|
|
183
|
-
COMMENT ON COLUMN admin.user_cls.icon IS 'Іконка';
|
|
184
|
-
COMMENT ON COLUMN admin.user_cls.color IS 'Колір';
|
|
185
|
-
|
|
186
152
|
update admin.users set twofa=false where uid='1';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAccess.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/getAccess.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getAccess.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/crud/funcs/getAccess.ts"],"names":[],"mappings":"AAuBA;;;;;;;;;GASG;AAEH,wBAA8B,SAAS,CACrC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAS,EAAE,EAAE,GAAG,EAC/B,EAAE,MAAmB,sBAwFtB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import pgClients from "../../pg/pgClients.js";
|
|
2
|
+
import getMeta from "../../pg/funcs/getMeta.js";
|
|
2
3
|
import getTemplate from "../../table/funcs/getTemplate.js";
|
|
3
4
|
import applyHook from "../../hook/applyHook.js";
|
|
4
5
|
const allActions = ["view", "edit", "add", "del"];
|
|
@@ -54,10 +55,21 @@ export default async function getAccess({ table, form, user = {} }, pg = pgClien
|
|
|
54
55
|
return { actions: tableActions, query: "1=1" };
|
|
55
56
|
}
|
|
56
57
|
if (body?.access === "user" && uid) {
|
|
57
|
-
|
|
58
|
+
// subquery handled by template
|
|
59
|
+
if (body?.query?.includes?.("{{uid}}")) {
|
|
60
|
+
return { actions: tableActions, query: "1=1" };
|
|
61
|
+
}
|
|
62
|
+
const authorColumn = await getMeta({
|
|
63
|
+
pg,
|
|
64
|
+
table: body?.table || table,
|
|
65
|
+
}).then((el) => el?.columns?.find((col) => ["uid", "created_by"].includes(col.name))?.name);
|
|
66
|
+
if (!authorColumn) {
|
|
67
|
+
return { actions: [], query: "false" };
|
|
68
|
+
}
|
|
69
|
+
return { actions: tableActions, query: `${authorColumn}='${uid}'` };
|
|
58
70
|
}
|
|
59
71
|
if (!uid) {
|
|
60
|
-
return { actions: [], query: "
|
|
72
|
+
return { actions: [], query: "false" };
|
|
61
73
|
}
|
|
62
74
|
const userAccess = pg?.pk?.["admin.routes"] &&
|
|
63
75
|
pg.pk?.["admin.role_access"] &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFileStream.d.ts","sourceRoot":"","sources":["../../../../server/plugins/logger/createFileStream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"createFileStream.d.ts","sourceRoot":"","sources":["../../../../server/plugins/logger/createFileStream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAmC5C,MAAM,CAAC,OAAO,UAAU,eAAe,iDAoDtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.sql.d.ts","sourceRoot":"","sources":["../../../../server/plugins/migration/exec.sql.ts"],"names":[],"mappings":"AAcA,wBAA8B,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAmB,
|
|
1
|
+
{"version":3,"file":"exec.sql.d.ts","sourceRoot":"","sources":["../../../../server/plugins/migration/exec.sql.ts"],"names":[],"mappings":"AAcA,wBAA8B,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAmB,gBA0DzE"}
|
|
@@ -28,7 +28,10 @@ export default async function execSql(filepath, pg = pgClients.client) {
|
|
|
28
28
|
.hgetall(`${pg?.options?.database}:migration-hashes`)
|
|
29
29
|
.then((obj) => Object.keys(obj))
|
|
30
30
|
: [];
|
|
31
|
-
if (hashes.includes(hash) &&
|
|
31
|
+
if (hashes.includes(hash) &&
|
|
32
|
+
!config.disableCache &&
|
|
33
|
+
!process.env.MIGRATE &&
|
|
34
|
+
debug) {
|
|
32
35
|
console.log(filename, "skip equal hash", Date.now() - start);
|
|
33
36
|
return null;
|
|
34
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSelectMeta.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/table/funcs/getSelectMeta.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWzD,wBAA8B,aAAa,CAAC,EAC1C,IAAI,EACJ,UAAU,EACV,GAAG,EACH,OAAO,EACP,MAAM,EACN,EAAqB,GACtB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,UAAU,CAAC;CACjB,
|
|
1
|
+
{"version":3,"file":"getSelectMeta.d.ts","sourceRoot":"","sources":["../../../../../server/plugins/table/funcs/getSelectMeta.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWzD,wBAA8B,aAAa,CAAC,EAC1C,IAAI,EACJ,UAAU,EACV,GAAG,EACH,OAAO,EACP,MAAM,EACN,EAAqB,GACtB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,UAAU,CAAC;CACjB,gBA8GA"}
|
|
@@ -17,7 +17,9 @@ export default async function getSelectMeta({ name, startsWith, key, nocache, pa
|
|
|
17
17
|
}
|
|
18
18
|
const cls = await getSelect(name, pg, nocache);
|
|
19
19
|
const db = typeof cls?.db === "string" ? { database: cls.db } : cls?.db;
|
|
20
|
-
const pg1 = cls?.db
|
|
20
|
+
const pg1 = cls?.db
|
|
21
|
+
? await getPGAsync({ database: db, port: cls?.port })
|
|
22
|
+
: pg;
|
|
21
23
|
if (!cls)
|
|
22
24
|
return null;
|
|
23
25
|
if (cls.arr)
|
|
@@ -1,9 +1,41 @@
|
|
|
1
|
+
export declare function addCustomCls({ name, description, alias, table, uid, data, }: {
|
|
2
|
+
name: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
alias?: string[];
|
|
5
|
+
table: string;
|
|
6
|
+
uid: string;
|
|
7
|
+
data: {
|
|
8
|
+
id?: string | number;
|
|
9
|
+
text: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
color?: string;
|
|
12
|
+
icon?: string;
|
|
13
|
+
active?: boolean;
|
|
14
|
+
}[];
|
|
15
|
+
}, pg?: any): Promise<string>;
|
|
1
16
|
export declare function deleteUserCls(name: string, pg?: any): Promise<string>;
|
|
2
|
-
export declare function addUserCls(name
|
|
3
|
-
|
|
17
|
+
export declare function addUserCls({ name, alias, data, description, }: {
|
|
18
|
+
name: string;
|
|
19
|
+
alias?: string[];
|
|
20
|
+
description?: string;
|
|
21
|
+
data: string | Record<string, any>[];
|
|
22
|
+
}, pg?: any): Promise<string>;
|
|
23
|
+
export declare function editUserCls({ name, alias, description, data, }: {
|
|
24
|
+
name: string;
|
|
25
|
+
description?: string;
|
|
26
|
+
alias?: string[];
|
|
27
|
+
data: string | Record<string, any>[];
|
|
28
|
+
}, pg?: any): Promise<string>;
|
|
29
|
+
export declare function getUserClsList({ name, search, sql }: {
|
|
30
|
+
name?: string;
|
|
31
|
+
search?: string;
|
|
32
|
+
sql?: any;
|
|
33
|
+
}, pg?: any): Promise<any>;
|
|
4
34
|
export declare function getUserCls(name: string, pg?: any): Promise<{
|
|
5
35
|
type: any;
|
|
6
36
|
data: any;
|
|
37
|
+
description: any;
|
|
38
|
+
alias: any;
|
|
7
39
|
} | null>;
|
|
8
40
|
declare const _default: null;
|
|
9
41
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/usercls/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/plugins/usercls/index.ts"],"names":[],"mappings":"AAMA,wBAAsB,YAAY,CAChC,EACE,IAAI,EACJ,WAAW,EACX,KAAK,EACL,KAAK,EACL,GAAG,EACH,IAAS,GACV,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE;QACJ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,EAAE,CAAC;CACL,EACD,EAAE,MAAmB,mBA8EtB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAmB,mBAUtE;AAED,wBAAsB,UAAU,CAC9B,EACE,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,WAAW,GACZ,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CACtC,EACD,EAAE,MAAmB,mBAkDtB;AAED,wBAAsB,WAAW,CAC/B,EACE,IAAI,EACJ,KAAK,EACL,WAAW,EACX,IAAI,GACL,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;CACtC,EACD,EAAE,MAAmB,mBAKtB;AAED,wBAAsB,cAAc,CAClC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,GAAG,CAAA;CAAE,EACpE,EAAE,MAAmB,gBA8CtB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAmB;;;;;UAsBnE;;AAED,wBAAoB"}
|
|
@@ -1,6 +1,67 @@
|
|
|
1
1
|
import { NotFoundError } from "../../types/errors.js";
|
|
2
2
|
import pgClients from "../pg/pgClients.js";
|
|
3
3
|
import dataInsert from "../crud/funcs/dataInsert.js";
|
|
4
|
+
import dataUpdate from "../crud/funcs/dataUpdate.js";
|
|
5
|
+
export async function addCustomCls({ name, description, alias, table, uid, data = [], }, pg = pgClients.client) {
|
|
6
|
+
if (!table || !pg.pk?.[table]) {
|
|
7
|
+
throw new Error("custom cls table not exists");
|
|
8
|
+
}
|
|
9
|
+
const codes = await pg
|
|
10
|
+
.query(`select array_agg(code) from ${table}`)
|
|
11
|
+
.then((el) => el.rows?.[0]?.array_agg || []);
|
|
12
|
+
const ids = await pg
|
|
13
|
+
.query(`select json_object_agg(code, id) from ${table}`)
|
|
14
|
+
.then((el) => el.rows?.[0]?.json_object_agg || {});
|
|
15
|
+
const client = await pg.connect();
|
|
16
|
+
try {
|
|
17
|
+
await client.query("BEGIN");
|
|
18
|
+
// overwrite old if exists
|
|
19
|
+
await client.query("delete from admin.user_cls where name=$1", [name]);
|
|
20
|
+
// disable old
|
|
21
|
+
await client.query(`update ${table} set active=case when code=any($1) then true else false end`, [data.map((el) => el.id)]);
|
|
22
|
+
// insert new
|
|
23
|
+
await Promise.all(data
|
|
24
|
+
.filter((el) => el.id && !codes.includes(el.id))
|
|
25
|
+
.map(async (el) => dataInsert({
|
|
26
|
+
pg: client,
|
|
27
|
+
table,
|
|
28
|
+
data: { ...el, code: el.id, name: el.text, id: undefined },
|
|
29
|
+
uid,
|
|
30
|
+
})));
|
|
31
|
+
// update existing
|
|
32
|
+
await Promise.all(data
|
|
33
|
+
.filter((el) => el.id && codes.includes(el.id) && ids[el.id])
|
|
34
|
+
.map(async (el) => dataUpdate({
|
|
35
|
+
pg: client,
|
|
36
|
+
id: ids[el.id],
|
|
37
|
+
table,
|
|
38
|
+
data: { ...el, code: el.id, name: el.text, id: ids[el.id] },
|
|
39
|
+
uid,
|
|
40
|
+
})));
|
|
41
|
+
await dataInsert({
|
|
42
|
+
pg: client,
|
|
43
|
+
table: "admin.user_cls",
|
|
44
|
+
id: table,
|
|
45
|
+
data: {
|
|
46
|
+
name,
|
|
47
|
+
alias,
|
|
48
|
+
description,
|
|
49
|
+
code: "custom",
|
|
50
|
+
type: "sql",
|
|
51
|
+
data: `select code, name, description, color, icon from ${table} where active`,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
await client.query("COMMIT");
|
|
55
|
+
return "ok";
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
await client.query("ROLLBACK");
|
|
59
|
+
throw err;
|
|
60
|
+
}
|
|
61
|
+
finally {
|
|
62
|
+
client.release();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
4
65
|
export async function deleteUserCls(name, pg = pgClients.client) {
|
|
5
66
|
const exists = await getUserCls(name, pg);
|
|
6
67
|
if (!exists) {
|
|
@@ -9,15 +70,15 @@ export async function deleteUserCls(name, pg = pgClients.client) {
|
|
|
9
70
|
await pg.query("delete from admin.user_cls where (name=$1 and parent is null) or parent=$1 ", [name]);
|
|
10
71
|
return "ok";
|
|
11
72
|
}
|
|
12
|
-
export async function addUserCls(name,
|
|
13
|
-
const type = typeof
|
|
14
|
-
if (type === "json" && !Array.isArray(
|
|
15
|
-
throw new Error("
|
|
73
|
+
export async function addUserCls({ name, alias, data, description, }, pg = pgClients.client) {
|
|
74
|
+
const type = typeof data === "string" ? "sql" : "json";
|
|
75
|
+
if (type === "json" && !Array.isArray(data)) {
|
|
76
|
+
throw new Error("param data must be an array");
|
|
16
77
|
}
|
|
17
78
|
if (type === "json" &&
|
|
18
|
-
typeof
|
|
19
|
-
!
|
|
20
|
-
throw new Error("
|
|
79
|
+
typeof data === "object" &&
|
|
80
|
+
!data.find((item) => item.id && item.text)) {
|
|
81
|
+
throw new Error("param data must have items");
|
|
21
82
|
}
|
|
22
83
|
const client = await pg.connect();
|
|
23
84
|
try {
|
|
@@ -26,16 +87,16 @@ export async function addUserCls(name, options, pg = pgClients.client) {
|
|
|
26
87
|
await dataInsert({
|
|
27
88
|
pg: client,
|
|
28
89
|
table: "admin.user_cls",
|
|
29
|
-
data: { name, type, data
|
|
90
|
+
data: { name, alias, description, type, data },
|
|
30
91
|
});
|
|
31
92
|
}
|
|
32
|
-
else if (type === "json" && Array.isArray(
|
|
93
|
+
else if (type === "json" && Array.isArray(data)) {
|
|
33
94
|
await dataInsert({
|
|
34
95
|
pg: client,
|
|
35
96
|
table: "admin.user_cls",
|
|
36
|
-
data: { name, type },
|
|
97
|
+
data: { name, alias, description, type },
|
|
37
98
|
});
|
|
38
|
-
await Promise.all(
|
|
99
|
+
await Promise.all(data.map(async (item) => {
|
|
39
100
|
await dataInsert({
|
|
40
101
|
pg: client,
|
|
41
102
|
table: "admin.user_cls",
|
|
@@ -54,23 +115,56 @@ export async function addUserCls(name, options, pg = pgClients.client) {
|
|
|
54
115
|
client.release();
|
|
55
116
|
}
|
|
56
117
|
}
|
|
57
|
-
export async function editUserCls(name,
|
|
118
|
+
export async function editUserCls({ name, alias, description, data, }, pg = pgClients.client) {
|
|
58
119
|
await deleteUserCls(name, pg);
|
|
59
|
-
await addUserCls(name,
|
|
120
|
+
await addUserCls({ name, alias, description, data }, pg);
|
|
60
121
|
return "ok";
|
|
61
122
|
}
|
|
123
|
+
export async function getUserClsList({ name, search, sql }, pg = pgClients.client) {
|
|
124
|
+
const args = [];
|
|
125
|
+
const where = Object.entries({ name, search })
|
|
126
|
+
.filter((el) => el[1])
|
|
127
|
+
.reduce((acc, curr, idx) => {
|
|
128
|
+
args.push(curr[0] === "name" ? curr[1]?.split(",") : curr[1]);
|
|
129
|
+
return [
|
|
130
|
+
acc,
|
|
131
|
+
{
|
|
132
|
+
name: `name=any($${idx + 1}::text[])`,
|
|
133
|
+
search: `name in (select parent from admin.user_cls where name ilike '%'||$${idx + 1}||'%')`,
|
|
134
|
+
}[curr[0]],
|
|
135
|
+
]
|
|
136
|
+
.filter(Boolean)
|
|
137
|
+
.join(" and ");
|
|
138
|
+
}, "1=1");
|
|
139
|
+
const q = `select true as custom, name, type, description, alias, (select count(*) filter(where ${search
|
|
140
|
+
? `name ilike '%'||$${where.match(/\$\d/g)?.length || 0}||'%'`
|
|
141
|
+
: "true"}) from admin.user_cls where parent=t.name) as count from admin.user_cls t where parent is null and ${where}
|
|
142
|
+
|
|
143
|
+
union all
|
|
144
|
+
|
|
145
|
+
select false as custom, name, type, null as description, null as alias, (select count(*) filter(where ${search
|
|
146
|
+
? `name ilike '%'||$${where.match(/\$\d/g)?.length || 0}||'%'`
|
|
147
|
+
: "true"}) from admin.cls where parent=t.name) as count from admin.cls t where parent is null and ${where}`;
|
|
148
|
+
if (sql)
|
|
149
|
+
return q;
|
|
150
|
+
const rows1 = await pg.query(q, args).then((el) => el.rows || []);
|
|
151
|
+
const customRows = rows1.filter((row) => row.custom);
|
|
152
|
+
const customClsNames = customRows.map((row) => row.name);
|
|
153
|
+
const rows = customRows.concat(rows1.filter((row) => !customClsNames.includes(row.name)));
|
|
154
|
+
return rows;
|
|
155
|
+
}
|
|
62
156
|
export async function getUserCls(name, pg = pgClients.client) {
|
|
63
|
-
const { type, data } = await pg
|
|
64
|
-
.query("select type, data from admin.user_cls where parent is null and name=$1", [name])
|
|
157
|
+
const { type, data, description, alias } = await pg
|
|
158
|
+
.query("select type, data, description, alias from admin.user_cls where parent is null and name=$1", [name])
|
|
65
159
|
.then((el) => el.rows?.[0] || {});
|
|
66
160
|
if (type === "sql") {
|
|
67
|
-
return { type, data };
|
|
161
|
+
return { type, data, description, alias };
|
|
68
162
|
}
|
|
69
163
|
if (type === "json") {
|
|
70
164
|
const options = await pg
|
|
71
165
|
.query(`select json_agg(json_build_object('id', code, 'text', name, 'icon', icon, 'color', color)) from admin.user_cls where parent=$1`, [name])
|
|
72
166
|
.then((el) => el.rows?.[0]?.json_agg || []);
|
|
73
|
-
return { type, data: options };
|
|
167
|
+
return { type, data: options, description, alias };
|
|
74
168
|
}
|
|
75
169
|
return null;
|
|
76
170
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addUserCls.d.ts","sourceRoot":"","sources":["../../../../../server/routes/usercls/controllers/addUserCls.ts"],"names":[],"mappings":"AAUA,wBAA8B,aAAa,CACzC,EAAE,EAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAC1C,KAAK,EAAE,GAAG,gBAqCX"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import pgClients from "../../../plugins/pg/pgClients.js";
|
|
2
|
+
import getSelectMeta from "../../../plugins/table/funcs/getSelectMeta.js";
|
|
3
|
+
import { addUserCls, addCustomCls, editUserCls, getUserCls, } from "../../../plugins/usercls/index.js";
|
|
4
|
+
export default async function addUserClsApi({ pg = pgClients.client, body, user }, reply) {
|
|
5
|
+
const { name, description, alias, data, table } = body;
|
|
6
|
+
const t1 = Date.now();
|
|
7
|
+
if (!user?.uid) {
|
|
8
|
+
return reply.status(401).send({ error: "unauthorized", code: 401 });
|
|
9
|
+
}
|
|
10
|
+
if (table) {
|
|
11
|
+
await addCustomCls({ name, description, alias, table, uid: user.uid, data }, pg);
|
|
12
|
+
return reply
|
|
13
|
+
.status(200)
|
|
14
|
+
.send({ time: Date.now() - t1, name, type: "custom" });
|
|
15
|
+
}
|
|
16
|
+
const exists = await getUserCls(name, pg);
|
|
17
|
+
if (exists) {
|
|
18
|
+
await editUserCls({ name, description, alias, data }, pg);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
await addUserCls({ name, description, alias, data }, pg);
|
|
22
|
+
}
|
|
23
|
+
// refresh metadata to avoid suggest API cache
|
|
24
|
+
await getSelectMeta({
|
|
25
|
+
pg,
|
|
26
|
+
name,
|
|
27
|
+
nocache: 1,
|
|
28
|
+
});
|
|
29
|
+
const result = await getUserCls(name, pg);
|
|
30
|
+
return reply.status(200).send({ time: Date.now() - t1, name, ...result });
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteUserCls.d.ts","sourceRoot":"","sources":["../../../../../server/routes/usercls/controllers/deleteUserCls.ts"],"names":[],"mappings":"AAIA,wBAA8B,gBAAgB,CAC5C,EAAE,EAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAC5C,KAAK,EAAE,GAAG,gBAkBX"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import pgClients from "../../../plugins/pg/pgClients.js";
|
|
2
|
+
import getSelectMeta from "../../../plugins/table/funcs/getSelectMeta.js";
|
|
3
|
+
import { deleteUserCls } from "../../../plugins/usercls/index.js";
|
|
4
|
+
export default async function deleteUserClsApi({ pg = pgClients.client, params, user }, reply) {
|
|
5
|
+
const { name } = params;
|
|
6
|
+
const t1 = Date.now();
|
|
7
|
+
if (!user?.uid) {
|
|
8
|
+
return reply.status(401).send({ error: "unauthorized", code: 401 });
|
|
9
|
+
}
|
|
10
|
+
await getSelectMeta({
|
|
11
|
+
pg,
|
|
12
|
+
name,
|
|
13
|
+
nocache: 1,
|
|
14
|
+
});
|
|
15
|
+
await deleteUserCls(name, pg);
|
|
16
|
+
return reply.status(200).send({ time: Date.now() - t1, name });
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editUserCls.d.ts","sourceRoot":"","sources":["../../../../../server/routes/usercls/controllers/editUserCls.ts"],"names":[],"mappings":"AAWA,wBAA8B,cAAc,CAC1C,EAAE,EAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAClD,KAAK,EAAE,GAAG,gBAmCX"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import pgClients from "../../../plugins/pg/pgClients.js";
|
|
2
|
+
import getSelectMeta from "../../../plugins/table/funcs/getSelectMeta.js";
|
|
3
|
+
import { addUserCls, addCustomCls, editUserCls, getUserCls, } from "../../../plugins/usercls/index.js";
|
|
4
|
+
export default async function editUserClsApi({ pg = pgClients.client, body, params, user }, reply) {
|
|
5
|
+
const { name } = params;
|
|
6
|
+
const { data, table } = body;
|
|
7
|
+
const t1 = Date.now();
|
|
8
|
+
if (!user?.uid) {
|
|
9
|
+
return reply.status(401).send({ error: "unauthorized", code: 401 });
|
|
10
|
+
}
|
|
11
|
+
if (table) {
|
|
12
|
+
await addCustomCls({ name, data, table, uid: user.uid }, pg);
|
|
13
|
+
return reply
|
|
14
|
+
.status(200)
|
|
15
|
+
.send({ time: Date.now() - t1, name, type: "custom" });
|
|
16
|
+
}
|
|
17
|
+
const exists = await getUserCls(name, pg);
|
|
18
|
+
if (exists) {
|
|
19
|
+
await editUserCls({ name, data }, pg);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
await addUserCls({ name, data }, pg);
|
|
23
|
+
}
|
|
24
|
+
// refresh metadata to avoid suggest API cache
|
|
25
|
+
const test = await getSelectMeta({
|
|
26
|
+
pg,
|
|
27
|
+
name,
|
|
28
|
+
nocache: 1,
|
|
29
|
+
});
|
|
30
|
+
const result = await getUserCls(name, pg);
|
|
31
|
+
return reply.status(200).send({ time: Date.now() - t1, name, ...result });
|
|
32
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getUserCls.d.ts","sourceRoot":"","sources":["../../../../../server/routes/usercls/controllers/getUserCls.ts"],"names":[],"mappings":"AAKA,wBAA8B,iBAAiB,CAC7C,EAAE,KAAK,EAAE,IAAI,EAAE,EAAqB,EAAE,EAAE,GAAG,EAC3C,KAAK,EAAE,GAAG,gBAgBX"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import config from "../../../../config.js";
|
|
2
|
+
import pgClients from "../../../plugins/pg/pgClients.js";
|
|
3
|
+
import { getUserClsList } from "../../../plugins/usercls/index.js";
|
|
4
|
+
export default async function getUserClsListApi({ query, user, pg = pgClients.client }, reply) {
|
|
5
|
+
if (!user?.uid && !config.local) {
|
|
6
|
+
return reply.status(401).send({ error: "unauthorized", code: 401 });
|
|
7
|
+
}
|
|
8
|
+
const t1 = Date.now();
|
|
9
|
+
const result = await getUserClsList({ name: query.name, search: query.search, sql: query.sql }, pg);
|
|
10
|
+
if (query.sql)
|
|
11
|
+
return result;
|
|
12
|
+
return { time: Date.now() - t1, data: result };
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/routes/usercls/index.ts"],"names":[],"mappings":"AAgCA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,EAAE,GAAG,QAqCtC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const userClsParamsSchema = {
|
|
2
|
+
type: "object",
|
|
3
|
+
properties: {
|
|
4
|
+
name: { type: "string" },
|
|
5
|
+
},
|
|
6
|
+
required: ["name"],
|
|
7
|
+
};
|
|
8
|
+
const addUserClsBodySchema = {
|
|
9
|
+
type: "object",
|
|
10
|
+
properties: {
|
|
11
|
+
name: { type: "string" },
|
|
12
|
+
data: {},
|
|
13
|
+
table: { type: "string" },
|
|
14
|
+
},
|
|
15
|
+
required: ["name", "data"],
|
|
16
|
+
};
|
|
17
|
+
const editUserClsBodySchema = {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: {
|
|
20
|
+
data: {},
|
|
21
|
+
table: { type: "string" },
|
|
22
|
+
},
|
|
23
|
+
required: ["data"],
|
|
24
|
+
};
|
|
25
|
+
import getUserCls from "./controllers/getUserCls.js";
|
|
26
|
+
import addUserCls from "./controllers/addUserCls.js";
|
|
27
|
+
import editUserCls from "./controllers/editUserCls.js";
|
|
28
|
+
import deleteUserCls from "./controllers/deleteUserCls.js";
|
|
29
|
+
export default function plugin(app) {
|
|
30
|
+
if (!app.hasRoute({ method: "GET", url: "/api/user-cls" })) {
|
|
31
|
+
app.get("/user-cls", { config: { policy: "L1" } }, getUserCls);
|
|
32
|
+
}
|
|
33
|
+
if (!app.hasRoute({ method: "POST", url: "/api/user-cls" })) {
|
|
34
|
+
app.post("/user-cls", {
|
|
35
|
+
config: { policy: "L1" },
|
|
36
|
+
schema: { body: addUserClsBodySchema },
|
|
37
|
+
}, addUserCls);
|
|
38
|
+
}
|
|
39
|
+
if (!app.hasRoute({ method: "PUT", url: "/api/user-cls/:name" })) {
|
|
40
|
+
app.put("/user-cls/:name", {
|
|
41
|
+
config: { policy: "L1" },
|
|
42
|
+
schema: {
|
|
43
|
+
params: userClsParamsSchema,
|
|
44
|
+
body: editUserClsBodySchema,
|
|
45
|
+
},
|
|
46
|
+
}, editUserCls);
|
|
47
|
+
}
|
|
48
|
+
if (!app.hasRoute({ method: "DELETE", url: "/api/user-cls/:name" })) {
|
|
49
|
+
app.delete("/user-cls/:name", { config: { policy: "L1" }, schema: { params: userClsParamsSchema } }, deleteUserCls);
|
|
50
|
+
}
|
|
51
|
+
}
|
package/dist/test.setup.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { beforeEach, afterEach, afterAll } from "vitest";
|
|
2
2
|
import { build, teardown } from "./helper.js";
|
|
3
3
|
beforeEach(async () => {
|
|
4
|
-
|
|
4
|
+
if (process.env.trace === "true")
|
|
5
|
+
console.log("build after each bun test start...");
|
|
5
6
|
await build();
|
|
6
|
-
|
|
7
|
+
if (process.env.trace === "true")
|
|
8
|
+
console.log("build after each bun test finished");
|
|
7
9
|
});
|
|
8
10
|
afterEach(async () => {
|
|
9
|
-
|
|
11
|
+
if (process.env.trace === "true")
|
|
12
|
+
console.log("teardown after each bun test start...");
|
|
10
13
|
// await teardown();
|
|
11
|
-
|
|
14
|
+
if (process.env.trace === "true")
|
|
15
|
+
console.log("teardown after each bun test finished");
|
|
12
16
|
});
|
|
13
17
|
afterAll(async () => {
|
|
14
18
|
console.log("teardown after all bun test start...");
|
package/dist/utils.d.ts
CHANGED
|
@@ -79,7 +79,7 @@ export { default as jsonToXls } from "./server/routes/file/controllers/utils/jso
|
|
|
79
79
|
export { default as getAdminAccess } from "./server/plugins/access/funcs/getAdminAccess.js";
|
|
80
80
|
export { default as sendNotification } from "./server/plugins/auth/funcs/sendNotification.js";
|
|
81
81
|
export { default as addUserNotification } from "./server/plugins/notifications/addNotification.js";
|
|
82
|
-
export { addUserCls, editUserCls, deleteUserCls, getUserCls, } from "./server/plugins/usercls/index.js";
|
|
82
|
+
export { addUserCls, editUserCls, deleteUserCls, getUserCls, getUserClsList, } from "./server/plugins/usercls/index.js";
|
|
83
83
|
export { prefix as uploadChunkApiPrefix, fileDir as uploadChunkFileDir, uploadChunkDirectory, } from "./server/plugins/upload/index.js";
|
|
84
84
|
export { default as getUploadStatus } from "./server/plugins/upload/getUploadStatus.js";
|
|
85
85
|
export { default as startUpload } from "./server/plugins/upload/startUpload.js";
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -96,7 +96,7 @@ export { default as jsonToXls } from "./server/routes/file/controllers/utils/jso
|
|
|
96
96
|
export { default as getAdminAccess } from "./server/plugins/access/funcs/getAdminAccess.js";
|
|
97
97
|
export { default as sendNotification } from "./server/plugins/auth/funcs/sendNotification.js"; // email
|
|
98
98
|
export { default as addUserNotification } from "./server/plugins/notifications/addNotification.js"; // popup, widget, interface etc.
|
|
99
|
-
export { addUserCls, editUserCls, deleteUserCls, getUserCls, } from "./server/plugins/usercls/index.js";
|
|
99
|
+
export { addUserCls, editUserCls, deleteUserCls, getUserCls, getUserClsList, } from "./server/plugins/usercls/index.js";
|
|
100
100
|
export { prefix as uploadChunkApiPrefix, fileDir as uploadChunkFileDir, uploadChunkDirectory, } from "./server/plugins/upload/index.js";
|
|
101
101
|
export { default as getUploadStatus } from "./server/plugins/upload/getUploadStatus.js";
|
|
102
102
|
export { default as startUpload } from "./server/plugins/upload/startUpload.js";
|