@opengis/fastify-table 2.0.106 → 2.0.107
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.d.ts.map +1 -1
- package/dist/script/adduser +15 -0
- package/dist/script/dump.js +176 -0
- package/dist/script/migrate.js +25 -0
- package/dist/server/plugins/auth/funcs/verifyPassword.d.ts.map +1 -1
- package/dist/server/plugins/auth/funcs/verifyPassword.js +3 -1
- package/dist/server/plugins/crud/funcs/dataInsert.js +1 -1
- package/dist/server/plugins/crud/funcs/dataUpdate.d.ts.map +1 -1
- package/dist/server/plugins/crud/funcs/dataUpdate.js +7 -4
- package/dist/server/plugins/logger/getLogger.d.ts.map +1 -1
- package/dist/server/plugins/logger/getLogger.js +13 -10
- package/dist/server/plugins/logger/index.d.ts.map +1 -1
- package/dist/server/plugins/logger/index.js +2 -1
- package/dist/server/plugins/pg/funcs/getPG.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/getPG.js +1 -0
- package/dist/server/plugins/pg/funcs/getPGAsync.js +1 -1
- package/dist/server/plugins/pg/funcs/init.d.ts +1 -1
- package/dist/server/plugins/pg/funcs/init.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/init.js +20 -5
- package/dist/server/plugins/pg/funcs/pool.d.ts.map +1 -1
- package/dist/server/plugins/pg/funcs/pool.js +10 -16
- package/dist/server/plugins/pg/index.d.ts.map +1 -1
- package/dist/server/plugins/pg/index.js +3 -2
- package/dist/server/plugins/redis/funcs/getRedis.d.ts.map +1 -1
- package/dist/server/plugins/redis/funcs/getRedis.js +6 -4
- package/dist/server/plugins/redis/index.d.ts.map +1 -1
- package/dist/server/plugins/redis/index.js +4 -1
- package/dist/server/plugins/sqlite/index.d.ts.map +1 -1
- package/dist/server/plugins/sqlite/index.js +7 -3
- package/dist/server/plugins/table/funcs/getFilter.d.ts +1 -1
- package/dist/server/plugins/table/funcs/getFilter.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getFilter.js +14 -1
- package/dist/server/plugins/table/funcs/getSelectMeta.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getSelectMeta.js +2 -4
- package/dist/server/plugins/table/funcs/gisIRColumn.d.ts +2 -2
- package/dist/server/plugins/table/funcs/gisIRColumn.js +1 -1
- package/dist/server/plugins/util/funcs/unflattenObject.d.ts.map +1 -1
- package/dist/server/plugins/util/funcs/unflattenObject.js +3 -1
- package/dist/server/routes/access/controllers/access.group.d.ts +2 -2
- package/dist/server/routes/access/controllers/access.group.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.group.js +0 -1
- package/dist/server/routes/access/controllers/access.group.post.d.ts +2 -2
- package/dist/server/routes/access/controllers/access.group.post.d.ts.map +1 -1
- package/dist/server/routes/access/controllers/access.group.post.js +0 -1
- package/dist/server/routes/auth/controllers/core/registration.d.ts +1 -4
- package/dist/server/routes/auth/controllers/core/registration.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/core/registration.js +28 -9
- package/dist/server/routes/auth/controllers/core/updateUserInfo.js +1 -1
- package/dist/server/routes/auth/controllers/jwt/authorize.js +5 -5
- package/dist/server/routes/auth/controllers/jwt/token.d.ts.map +1 -1
- package/dist/server/routes/auth/controllers/jwt/token.js +10 -12
- package/dist/server/routes/cron/controllers/cronApi.d.ts +1 -1
- package/dist/server/routes/cron/controllers/cronApi.d.ts.map +1 -1
- package/dist/server/routes/cron/controllers/cronApi.js +5 -3
- package/dist/server/routes/crud/controllers/insert.d.ts +1 -4
- package/dist/server/routes/crud/controllers/insert.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/insert.js +24 -16
- package/dist/server/routes/crud/controllers/table.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/table.js +13 -6
- package/dist/server/routes/crud/controllers/update.d.ts.map +1 -1
- package/dist/server/routes/crud/controllers/update.js +23 -15
- package/dist/server/routes/file/controllers/delete.d.ts +1 -15
- package/dist/server/routes/file/controllers/delete.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/delete.js +13 -20
- package/dist/server/routes/file/controllers/download.d.ts +2 -2
- package/dist/server/routes/file/controllers/download.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/download.js +39 -30
- package/dist/server/routes/file/controllers/files.d.ts +2 -1
- package/dist/server/routes/file/controllers/files.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/files.js +15 -11
- package/dist/server/routes/file/controllers/resize.d.ts +1 -2
- package/dist/server/routes/file/controllers/resize.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/resize.js +17 -6
- package/dist/server/routes/file/controllers/upload.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/upload.js +17 -16
- package/dist/server/routes/file/controllers/uploadImage.d.ts +11 -13
- package/dist/server/routes/file/controllers/uploadImage.d.ts.map +1 -1
- package/dist/server/routes/file/controllers/uploadImage.js +13 -15
- package/dist/server/routes/logger/controllers/logger.file.js +1 -1
- package/dist/server/routes/menu/controllers/interfaces.d.ts +1 -7
- package/dist/server/routes/menu/controllers/interfaces.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/card.d.ts +1 -1
- package/dist/server/routes/table/controllers/card.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/card.js +15 -9
- package/dist/server/routes/table/controllers/filter.d.ts +1 -1
- package/dist/server/routes/table/controllers/filter.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/filter.js +2 -2
- package/dist/server/routes/table/controllers/form.d.ts +1 -1
- package/dist/server/routes/table/controllers/form.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/form.js +8 -5
- package/dist/server/routes/table/controllers/search.d.ts +1 -1
- package/dist/server/routes/table/controllers/search.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/search.js +5 -6
- package/dist/server/routes/table/controllers/suggest.d.ts +1 -1
- package/dist/server/routes/table/controllers/suggest.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/suggest.js +30 -15
- package/dist/server/routes/table/functions/getData.d.ts +1 -1
- package/dist/server/routes/table/functions/getData.d.ts.map +1 -1
- package/dist/server/routes/table/functions/getData.js +60 -34
- package/dist/server/types/core.d.ts +7 -0
- package/dist/server/types/core.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { getTemplate, getMeta, metaFormat, getAccess, applyHook, } from "../../../../utils.js";
|
|
2
|
-
export default async function card(req) {
|
|
1
|
+
import { getTemplate, getMeta, metaFormat, getAccess, applyHook, pgClients, } from "../../../../utils.js";
|
|
2
|
+
export default async function card(req, reply) {
|
|
3
3
|
const time = Date.now();
|
|
4
|
-
const { pg, user, params = {}, query = {} } = req;
|
|
4
|
+
const { pg = pgClients.client, user, params = {}, query = {} } = req;
|
|
5
5
|
const hookData = (await applyHook("preCard", {
|
|
6
6
|
table: params?.table,
|
|
7
7
|
id: params?.id,
|
|
8
8
|
user,
|
|
9
9
|
}));
|
|
10
10
|
if (hookData?.message && hookData?.status) {
|
|
11
|
-
|
|
11
|
+
const response = hookData.status >= 400
|
|
12
|
+
? { error: hookData.message, code: hookData.status }
|
|
13
|
+
: hookData.message;
|
|
14
|
+
return reply.status(hookData.status).send(response);
|
|
12
15
|
}
|
|
13
16
|
const { actions = [], scope, my, } = (await getAccess({
|
|
14
17
|
table: hookData?.table || params.table,
|
|
@@ -16,16 +19,17 @@ export default async function card(req) {
|
|
|
16
19
|
user,
|
|
17
20
|
})) || {};
|
|
18
21
|
if (!actions.includes("view") || (scope === "my" && !my)) {
|
|
19
|
-
return {
|
|
22
|
+
return reply.status(403).send({ error: "access restricted", code: 403 });
|
|
20
23
|
}
|
|
21
24
|
const loadTable = await getTemplate("table", hookData?.table || params.table);
|
|
22
25
|
if (!loadTable) {
|
|
23
|
-
return {
|
|
26
|
+
return reply.status(404).send({ error: "table not found", code: 404 });
|
|
24
27
|
}
|
|
25
28
|
const { table, columns, meta, sql, cardSql } = loadTable;
|
|
26
29
|
const { pk, columns: dbColumns = [] } = await getMeta(table);
|
|
27
|
-
if (!pk)
|
|
28
|
-
return {
|
|
30
|
+
if (!pk) {
|
|
31
|
+
return reply.status(404).send({ error: "table pk not found", code: 404 });
|
|
32
|
+
}
|
|
29
33
|
const cols = columns.map((el) => el.name || el).join(",");
|
|
30
34
|
const sqlTable = sql
|
|
31
35
|
?.filter?.((el) => !el?.disabled && el?.sql?.replace)
|
|
@@ -50,7 +54,9 @@ export default async function card(req) {
|
|
|
50
54
|
if (query.sql === "1") {
|
|
51
55
|
return q;
|
|
52
56
|
}
|
|
53
|
-
const
|
|
57
|
+
const rows = await pg
|
|
58
|
+
.query(q, [hookData?.id || params.id])
|
|
59
|
+
.then((el) => el.rows || []);
|
|
54
60
|
await metaFormat({ rows, table: hookData?.table || params.table });
|
|
55
61
|
const data = meta?.card?.length
|
|
56
62
|
? meta.card
|
|
@@ -5,7 +5,7 @@ interface IFilter {
|
|
|
5
5
|
inline?: any[] | undefined;
|
|
6
6
|
state?: any[] | undefined;
|
|
7
7
|
}
|
|
8
|
-
export default function filterAPI(req: any, reply: any, iscalled:
|
|
8
|
+
export default function filterAPI(req: any, reply: any, iscalled: number | boolean | undefined | null): Promise<IFilter | {
|
|
9
9
|
message: string;
|
|
10
10
|
status: number;
|
|
11
11
|
} | string | any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/filter.ts"],"names":[],"mappings":"AAWA,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CAC3B;AAED,wBAA8B,SAAS,CACrC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/filter.ts"],"names":[],"mappings":"AAWA,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;CAC3B;AAED,wBAA8B,SAAS,CACrC,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,GAC5C,OAAO,CAAC,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,GAAG,CAAC,CA6RvE"}
|
|
@@ -17,13 +17,13 @@ export default async function filterAPI(req, reply, iscalled) {
|
|
|
17
17
|
const loadTable = await getTemplate("table", params.table);
|
|
18
18
|
const { key, table, sql, query: tableQuery, form, extra, filterState, filterCustom, } = hookData || loadTable || {};
|
|
19
19
|
if (!table) {
|
|
20
|
-
return
|
|
20
|
+
return reply.status(404).send({ error: "table not found", code: 404 });
|
|
21
21
|
}
|
|
22
22
|
const { pk: pk1, view } = await getMeta({ pg, table });
|
|
23
23
|
// const pk = pg.pk?.[table] || pg.pk?.[table.replace(/"/g, "")];
|
|
24
24
|
const pk = !pk1 && view ? key : pk1;
|
|
25
25
|
if (!pk) {
|
|
26
|
-
return
|
|
26
|
+
return reply.status(404).send({ error: "table pk not found", code: 404 });
|
|
27
27
|
}
|
|
28
28
|
const sqlTable = sql
|
|
29
29
|
?.filter?.((el) => !el?.disabled && el?.sql?.replace)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export default function formFunction(req: any): Promise<
|
|
1
|
+
export default function formFunction(req: any, reply: any): Promise<any>;
|
|
2
2
|
//# sourceMappingURL=form.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/form.ts"],"names":[],"mappings":"AAiBA,wBAA8B,YAAY,CAAC,GAAG,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/form.ts"],"names":[],"mappings":"AAiBA,wBAA8B,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAkD9D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { applyHook, getTemplate } from "../../../../utils.js";
|
|
1
|
+
import { applyHook, getTemplate, pgClients } from "../../../../utils.js";
|
|
2
2
|
const q = `select property_key as key, property_json as json, property_int as int,
|
|
3
3
|
property_text as text from admin.properties where 1=1`;
|
|
4
4
|
async function getSettings({ pg }) {
|
|
@@ -8,19 +8,22 @@ async function getSettings({ pg }) {
|
|
|
8
8
|
const data = rows.reduce((acc, curr) => Object.assign(acc, { [curr.key]: curr.json || curr.int || curr.text }), {});
|
|
9
9
|
return data;
|
|
10
10
|
}
|
|
11
|
-
export default async function formFunction(req) {
|
|
11
|
+
export default async function formFunction(req, reply) {
|
|
12
12
|
const time = Date.now();
|
|
13
|
-
const { pg, params, user } = req;
|
|
13
|
+
const { pg = pgClients.client, params, user } = req;
|
|
14
14
|
const hookData = (await applyHook("preForm", {
|
|
15
15
|
form: params?.name,
|
|
16
16
|
user,
|
|
17
17
|
}));
|
|
18
18
|
if (hookData?.message && hookData?.status) {
|
|
19
|
-
|
|
19
|
+
const response = hookData.status >= 400
|
|
20
|
+
? { error: hookData.message, code: hookData.status }
|
|
21
|
+
: hookData.message;
|
|
22
|
+
return reply.status(hookData.status).send(response);
|
|
20
23
|
}
|
|
21
24
|
const form = await getTemplate("form", hookData?.form || params?.name);
|
|
22
25
|
if (!form) {
|
|
23
|
-
return
|
|
26
|
+
return reply.status(404).send({ error: "form not found", code: 404 });
|
|
24
27
|
}
|
|
25
28
|
// replace settings
|
|
26
29
|
const arr = JSON.stringify(form).match(/{{settings.([^}]*)}}/g);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/search.ts"],"names":[],"mappings":"AAoIA,wBAA8B,MAAM,CAAC,EACnC,EAAqB,EACrB,KAAU,GACX,EAAE,GAAG;;;;;;GAmCL"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { getMeta, metaFormat, getTemplates, getTemplate, handlebarsSync, } from "../../../../utils.js";
|
|
1
|
+
import { getMeta, metaFormat, getTemplates, getTemplate, handlebarsSync, pgClients, } from "../../../../utils.js";
|
|
2
2
|
function sequence(tables, data, fn) {
|
|
3
3
|
return tables.reduce((promise, table) => promise.then(() => fn({
|
|
4
4
|
...data,
|
|
5
5
|
tableName: table.replace(".json", ""),
|
|
6
6
|
})), Promise.resolve());
|
|
7
7
|
}
|
|
8
|
-
async function getData({ pg, tableName, query = {}, maxLimit, res }) {
|
|
8
|
+
async function getData({ pg = pgClients.client, tableName, query = {}, maxLimit, res, }) {
|
|
9
9
|
const loadTable = await getTemplate("table", tableName);
|
|
10
10
|
if (!loadTable) {
|
|
11
|
-
return
|
|
11
|
+
return null;
|
|
12
12
|
}
|
|
13
13
|
const { table, columns, meta } = loadTable;
|
|
14
14
|
const { pk, view } = await getMeta({ pg, table });
|
|
15
15
|
if (!pk && !view) {
|
|
16
|
-
return
|
|
16
|
+
return null;
|
|
17
17
|
}
|
|
18
18
|
const cols = columns.map((el) => el.name || el).join(",");
|
|
19
19
|
const [orderColumn, orderDir] = (query.order || loadTable.order || "").split("-");
|
|
@@ -72,7 +72,7 @@ async function getData({ pg, tableName, query = {}, maxLimit, res }) {
|
|
|
72
72
|
});
|
|
73
73
|
return null;
|
|
74
74
|
}
|
|
75
|
-
export default async function search({ pg
|
|
75
|
+
export default async function search({ pg = pgClients.client, query = {}, }) {
|
|
76
76
|
const t1 = Date.now();
|
|
77
77
|
const tables = query.table
|
|
78
78
|
? [query.table]
|
|
@@ -86,7 +86,6 @@ export default async function search({ pg, funcs, query = {} }) {
|
|
|
86
86
|
const maxLimit = Math.min(100, query.limit || "16");
|
|
87
87
|
await sequence(tables, {
|
|
88
88
|
pg,
|
|
89
|
-
funcs,
|
|
90
89
|
query,
|
|
91
90
|
maxLimit,
|
|
92
91
|
res,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export default function suggest(req: any): Promise<any>;
|
|
1
|
+
export default function suggest(req: any, reply: any): Promise<any>;
|
|
2
2
|
//# sourceMappingURL=suggest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/suggest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/suggest.ts"],"names":[],"mappings":"AA+DA,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBAmXzD"}
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import { config, getPG, getTemplate, getSelectMeta, getMeta, applyHook, getSelectVal, logger, getSelect, metaFormat, getColumnCLS, } from "../../../../utils.js";
|
|
4
|
-
const
|
|
5
|
-
const headers = {
|
|
6
|
-
"Access-Control-Allow-Origin": "*",
|
|
7
|
-
"Access-Control-Allow-Methods": "GET",
|
|
8
|
-
"Cache-Control": "no-cache",
|
|
9
|
-
};
|
|
4
|
+
const defaultLimit = 50;
|
|
10
5
|
async function getTableColumnMeta({ table, column, filtered, startsWith, key, pg, }) {
|
|
11
6
|
if (!table || !column) {
|
|
12
7
|
return null;
|
|
@@ -16,7 +11,7 @@ async function getTableColumnMeta({ table, column, filtered, startsWith, key, pg
|
|
|
16
11
|
const { arr } = (await getSelect(clsName, pg)) || {};
|
|
17
12
|
const original = filtered
|
|
18
13
|
? `with c(id,text) as (select ${column} as id, ${column} as text from ${loadTable?.table || table} group by ${column}) select id, text from c`
|
|
19
|
-
: `with c(id,text) as (select ${column} as id, ${column} as text, count(*) from ${loadTable?.table || table} group by ${column} limit ${
|
|
14
|
+
: `with c(id,text) as (select ${column} as id, ${column} as text, count(*) from ${loadTable?.table || table} group by ${column} limit ${defaultLimit}) select * from c`;
|
|
20
15
|
return {
|
|
21
16
|
arr,
|
|
22
17
|
original,
|
|
@@ -26,7 +21,7 @@ async function getTableColumnMeta({ table, column, filtered, startsWith, key, pg
|
|
|
26
21
|
pk: "id",
|
|
27
22
|
};
|
|
28
23
|
}
|
|
29
|
-
export default async function suggest(req) {
|
|
24
|
+
export default async function suggest(req, reply) {
|
|
30
25
|
const { params, query, pg: pg1, user } = req;
|
|
31
26
|
const lang = query.lang || "ua";
|
|
32
27
|
const time = Date.now();
|
|
@@ -42,8 +37,12 @@ export default async function suggest(req) {
|
|
|
42
37
|
? params.data.split(":")
|
|
43
38
|
: [query.token, query.column];
|
|
44
39
|
const selectName = query.sel || params.data;
|
|
45
|
-
if (!selectName)
|
|
46
|
-
return
|
|
40
|
+
if (!selectName) {
|
|
41
|
+
return reply.status(400).send({
|
|
42
|
+
error: "name is required",
|
|
43
|
+
code: 400,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
47
46
|
const { body: hookBody } = table || query.token
|
|
48
47
|
? (await applyHook("preSuggest", {
|
|
49
48
|
pg: pg1,
|
|
@@ -53,17 +52,26 @@ export default async function suggest(req) {
|
|
|
53
52
|
const body = await getTemplate("table", table || query.token);
|
|
54
53
|
const tableName = hookBody?.table || body?.table || table || query.token;
|
|
55
54
|
if (table && !pg1.pk?.[tableName]) {
|
|
56
|
-
return
|
|
55
|
+
return reply.status(400).send({
|
|
56
|
+
error: "param name is invalid: 1",
|
|
57
|
+
code: 400,
|
|
58
|
+
});
|
|
57
59
|
}
|
|
58
60
|
const tableMeta = await getMeta({ pg: pg1, table: tableName });
|
|
59
61
|
const columnExists = (hookBody?.columns ||
|
|
60
62
|
body?.columns ||
|
|
61
63
|
tableMeta?.columns)?.find((col) => col?.name === (column || query.column));
|
|
62
64
|
if (table && (!column || !columnExists)) {
|
|
63
|
-
return
|
|
65
|
+
return reply.status(400).send({
|
|
66
|
+
error: "param name is invalid: 2",
|
|
67
|
+
code: 400,
|
|
68
|
+
});
|
|
64
69
|
}
|
|
65
70
|
if (query.limit && query.limit < 0) {
|
|
66
|
-
return
|
|
71
|
+
return reply.status(400).send({
|
|
72
|
+
error: "param limit is invalid",
|
|
73
|
+
code: 400,
|
|
74
|
+
});
|
|
67
75
|
}
|
|
68
76
|
const meta = tableName && column
|
|
69
77
|
? await getTableColumnMeta({
|
|
@@ -83,11 +91,18 @@ export default async function suggest(req) {
|
|
|
83
91
|
pg: pg1,
|
|
84
92
|
});
|
|
85
93
|
if (meta?.minLength && query.key && query.key.length < meta?.minLength) {
|
|
86
|
-
return {
|
|
94
|
+
return reply.status(400).send({
|
|
95
|
+
error: `min length: ${meta.minLength}`,
|
|
96
|
+
code: 400,
|
|
97
|
+
});
|
|
87
98
|
}
|
|
99
|
+
const limit = meta?.limit || defaultLimit;
|
|
88
100
|
const pg = meta?.db ? getPG(meta.db) : pg1;
|
|
89
101
|
if (!meta) {
|
|
90
|
-
return
|
|
102
|
+
return reply.status(404).send({
|
|
103
|
+
error: "Not found query select",
|
|
104
|
+
code: 404,
|
|
105
|
+
});
|
|
91
106
|
}
|
|
92
107
|
if (query.meta) {
|
|
93
108
|
return meta;
|
|
@@ -17,5 +17,5 @@ export default function dataAPI({ pg, params, table, id, headers, query, user, c
|
|
|
17
17
|
filterList?: any[];
|
|
18
18
|
actions?: string[];
|
|
19
19
|
columns?: string[];
|
|
20
|
-
},
|
|
20
|
+
}, reply1?: FastifyReply, called?: any): Promise<any>;
|
|
21
21
|
//# sourceMappingURL=getData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/getData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"getData.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/functions/getData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA4EzD,wBAA8B,OAAO,CACnC,EACE,EAAqB,EACrB,MAAM,EACN,KAAK,EACL,EAAE,EACF,OAAY,EACZ,KAAU,EACV,IAAS,EACT,YAAY,EACZ,KAAY,EACZ,UAAU,EACV,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,YAAY,GACtB,EAAE;IACD,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,EACD,MAAM,CAAC,EAAE,YAAY,EACrB,MAAM,CAAC,EAAE,GAAG,gBA+0Bb"}
|
|
@@ -22,6 +22,19 @@ const components = {
|
|
|
22
22
|
"vs-widget-file": "select 'vs-widget-file' as component, count(*) from crm.files where entity_id=$1 and file_status<>3",
|
|
23
23
|
"vs-widget-comments": "select 'vs-widget-comments' as component, count(*) from crm.communications where entity_id=$1",
|
|
24
24
|
};
|
|
25
|
+
const mockReply = {
|
|
26
|
+
response: {},
|
|
27
|
+
// redirect: (txt) => txt,
|
|
28
|
+
redirect: (txt) => Object.assign(mockReply.response, {
|
|
29
|
+
body: txt,
|
|
30
|
+
statusCode: mockReply.response.statusCode || 200,
|
|
31
|
+
}),
|
|
32
|
+
status: (statusCode) => {
|
|
33
|
+
Object.assign(mockReply.response, { status: statusCode });
|
|
34
|
+
return mockReply;
|
|
35
|
+
},
|
|
36
|
+
send: (txt) => Object.assign(mockReply.response, txt),
|
|
37
|
+
};
|
|
25
38
|
function getOrder(queryOrder, queryDesc, defaultOrder, columnList, iscalled = false) {
|
|
26
39
|
if (iscalled && queryOrder) {
|
|
27
40
|
return `order by ${queryOrder}`;
|
|
@@ -39,14 +52,17 @@ function getOrder(queryOrder, queryDesc, defaultOrder, columnList, iscalled = fa
|
|
|
39
52
|
const checkInline = {};
|
|
40
53
|
const maxLimit = 100;
|
|
41
54
|
const defaultLimit = 20;
|
|
42
|
-
export default async function dataAPI({ pg = pgClients.client, params, table, id, headers = {}, query = {}, user = {}, contextQuery, sufix = true, filterList, actions: actionsParam, columns: columnsParam, },
|
|
55
|
+
export default async function dataAPI({ pg = pgClients.client, params, table, id, headers = {}, query = {}, user = {}, contextQuery, sufix = true, filterList, actions: actionsParam, columns: columnsParam, }, reply1, called) {
|
|
43
56
|
const time = Date.now();
|
|
44
57
|
const timeArr = [Date.now()];
|
|
45
58
|
const { uid } = user;
|
|
59
|
+
const reply = reply1 || mockReply;
|
|
46
60
|
const checkQuery = (item) => user?.user_type === "superadmin" ? !item.includes("{{uid}}") : true;
|
|
47
61
|
const paramsTable = params?.table || table;
|
|
48
62
|
if (!paramsTable) {
|
|
49
|
-
return
|
|
63
|
+
return reply
|
|
64
|
+
.status(400)
|
|
65
|
+
.send({ error: "not enough params: table", code: 400 });
|
|
50
66
|
}
|
|
51
67
|
const hookData = (await applyHook("preData", {
|
|
52
68
|
pg,
|
|
@@ -55,7 +71,10 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
55
71
|
user,
|
|
56
72
|
}));
|
|
57
73
|
if (hookData?.message && hookData?.status) {
|
|
58
|
-
|
|
74
|
+
const response = hookData.status >= 400
|
|
75
|
+
? { error: hookData.message, code: hookData.status }
|
|
76
|
+
: hookData.message;
|
|
77
|
+
return reply.status(hookData.status).send(response);
|
|
59
78
|
}
|
|
60
79
|
/* from tableData START */
|
|
61
80
|
const tokenData1 = await getOpt(paramsTable, uid);
|
|
@@ -96,7 +115,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
96
115
|
else if (checkInline[paramsTable]) {
|
|
97
116
|
loadTable.sql = checkInline[paramsTable];
|
|
98
117
|
}
|
|
99
|
-
if (query
|
|
118
|
+
if (query?.sql === "0")
|
|
100
119
|
return loadTable;
|
|
101
120
|
if (!pg) {
|
|
102
121
|
return reply.status(500).send("empty pg");
|
|
@@ -143,8 +162,11 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
143
162
|
const viewSql = await getTemplate("view", table1);
|
|
144
163
|
timeArr.push(Date.now());
|
|
145
164
|
if (tableMeta?.view) {
|
|
146
|
-
if (!loadTable?.key && !tokenData?.key)
|
|
147
|
-
return
|
|
165
|
+
if (!loadTable?.key && !tokenData?.key) {
|
|
166
|
+
return reply
|
|
167
|
+
.status(404)
|
|
168
|
+
.send({ error: `key not found: ${table1}`, code: 404 });
|
|
169
|
+
}
|
|
148
170
|
Object.assign(tableMeta, { pk: loadTable?.key || tokenData?.key });
|
|
149
171
|
}
|
|
150
172
|
const { pk, columns: dbColumns = [] } = (viewSql
|
|
@@ -160,7 +182,9 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
160
182
|
Object.assign(col, locales[`${table1 || paramsTable}.${col.name}`] || {});
|
|
161
183
|
});
|
|
162
184
|
if (!pk) {
|
|
163
|
-
return reply
|
|
185
|
+
return reply
|
|
186
|
+
.status(404)
|
|
187
|
+
.send({ error: `table not found: ${table1}`, code: 404 });
|
|
164
188
|
}
|
|
165
189
|
const columnList = dbColumns.map((el) => el.name || el).join(",");
|
|
166
190
|
const sqlTable = sql
|
|
@@ -200,57 +224,57 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
200
224
|
pg,
|
|
201
225
|
layer: paramsTable,
|
|
202
226
|
column: objectId,
|
|
203
|
-
sql: query
|
|
204
|
-
filter: query
|
|
205
|
-
search: query
|
|
206
|
-
state: query
|
|
207
|
-
custom: query
|
|
227
|
+
sql: query?.sql,
|
|
228
|
+
filter: query?.filter,
|
|
229
|
+
search: query?.search,
|
|
230
|
+
state: query?.state,
|
|
231
|
+
custom: query?.custom,
|
|
208
232
|
});
|
|
209
233
|
}
|
|
210
234
|
const isdefault = !objectId ? filters.find((el) => el.default) : null;
|
|
211
235
|
const checkFilter = [
|
|
212
|
-
query
|
|
213
|
-
query
|
|
214
|
-
query
|
|
215
|
-
query
|
|
236
|
+
query?.filter,
|
|
237
|
+
query?.search,
|
|
238
|
+
query?.state,
|
|
239
|
+
query?.custom,
|
|
216
240
|
isdefault,
|
|
217
241
|
].filter(Boolean).length;
|
|
218
242
|
const fData = checkFilter
|
|
219
243
|
? await getFilterSQL({
|
|
220
244
|
pg,
|
|
221
245
|
table: loadTable ? paramsTable : table1,
|
|
222
|
-
filter: query
|
|
223
|
-
search: query
|
|
224
|
-
state: query
|
|
225
|
-
custom: query
|
|
246
|
+
filter: query?.filter,
|
|
247
|
+
search: query?.search,
|
|
248
|
+
state: query?.state,
|
|
249
|
+
custom: query?.custom,
|
|
226
250
|
uid,
|
|
227
251
|
objectId,
|
|
228
252
|
filterList,
|
|
229
253
|
})
|
|
230
254
|
: {};
|
|
231
255
|
timeArr.push(Date.now());
|
|
232
|
-
const keyQuery = query
|
|
256
|
+
const keyQuery = query?.key && (loadTable?.key || tokenData?.key) && !objectId
|
|
233
257
|
? `${loadTable?.key || tokenData?.key}=$1`
|
|
234
258
|
: null;
|
|
235
259
|
const limit = (called
|
|
236
|
-
? query
|
|
237
|
-
: Math.min(maxLimit, +(query
|
|
238
|
-
const offset = query
|
|
239
|
-
? ` offset ${(query
|
|
260
|
+
? query?.limit || defaultLimit
|
|
261
|
+
: Math.min(maxLimit, +(query?.limit || defaultLimit))) || defaultLimit;
|
|
262
|
+
const offset = query?.page && query?.page > 0 && !objectId
|
|
263
|
+
? ` offset ${(query?.page - 1) * limit}`
|
|
240
264
|
: "";
|
|
241
|
-
const order = getOrder(query
|
|
265
|
+
const order = getOrder(query?.order, query?.desc, loadTable?.order, columnList, !!called);
|
|
242
266
|
if (config.trace)
|
|
243
267
|
console.log(order);
|
|
244
|
-
const search = loadTable?.meta?.search && query
|
|
268
|
+
const search = loadTable?.meta?.search && query?.search
|
|
245
269
|
? `(${loadTable?.meta?.search
|
|
246
270
|
?.split(",")
|
|
247
|
-
?.map((el) => `${el} ilike '%${query
|
|
271
|
+
?.map((el) => `${el} ilike '%${query?.search
|
|
248
272
|
.replace(/%/g, "\\%")
|
|
249
273
|
.replace(/'/g, "''")}%'`)
|
|
250
274
|
.join(" or ")})`
|
|
251
275
|
: null;
|
|
252
276
|
const queryBbox = query?.bbox
|
|
253
|
-
? query
|
|
277
|
+
? query?.bbox
|
|
254
278
|
.replace(/ /g, ",")
|
|
255
279
|
.split(",")
|
|
256
280
|
?.map((el) => el - 0)
|
|
@@ -289,7 +313,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
289
313
|
.filter(Boolean)
|
|
290
314
|
.filter((el) => checkQuery(el));
|
|
291
315
|
const q = `select ${pk ? `"${pk}" as id,` : ""}
|
|
292
|
-
${objectId || query
|
|
316
|
+
${objectId || query?.key
|
|
293
317
|
? "*"
|
|
294
318
|
: columnsParam || sqlColumns || cols || "*"}
|
|
295
319
|
${metaCols}
|
|
@@ -309,12 +333,12 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
309
333
|
${order} ${offset} limit ${limit}`.replace(/{{uid}}/g, uid);
|
|
310
334
|
if (config.trace)
|
|
311
335
|
console.log(q);
|
|
312
|
-
if (query
|
|
336
|
+
if (query?.sql === "1") {
|
|
313
337
|
return q;
|
|
314
338
|
}
|
|
315
339
|
const { rows = [] } = await pg
|
|
316
340
|
.query(q, (objectId ? [objectId] : null) ||
|
|
317
|
-
(query
|
|
341
|
+
(query?.key && loadTable.key ? [query?.key] : []))
|
|
318
342
|
.catch((err) => {
|
|
319
343
|
console.error(err.toString());
|
|
320
344
|
throw err;
|
|
@@ -322,7 +346,9 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
322
346
|
if (!rows.length &&
|
|
323
347
|
headers?.referer?.includes?.("/card/") &&
|
|
324
348
|
headers?.referer?.includes?.(templateName)) {
|
|
325
|
-
return reply
|
|
349
|
+
return reply
|
|
350
|
+
.status(403)
|
|
351
|
+
.send({ error: "access restricted: empty rows", code: 403 });
|
|
326
352
|
}
|
|
327
353
|
timeArr.push(Date.now());
|
|
328
354
|
if (uid &&
|
|
@@ -385,7 +411,7 @@ export default async function dataAPI({ pg = pgClients.client, params, table, id
|
|
|
385
411
|
.filter(Boolean)
|
|
386
412
|
.filter((el) => checkQuery(el))
|
|
387
413
|
.join(" and ") || "true"} `.replace(/{{uid}}/g, uid);
|
|
388
|
-
if (query
|
|
414
|
+
if (query?.sql === "2") {
|
|
389
415
|
return qCount;
|
|
390
416
|
}
|
|
391
417
|
const counts = keyQuery || objectId
|
|
@@ -4,6 +4,13 @@ import { Pool } from "pg";
|
|
|
4
4
|
declare let Database: any;
|
|
5
5
|
export interface ExtendedPG extends Pool {
|
|
6
6
|
readonly?: any;
|
|
7
|
+
connect: any;
|
|
8
|
+
query: any;
|
|
9
|
+
database: string;
|
|
10
|
+
host: string;
|
|
11
|
+
user: string;
|
|
12
|
+
password: string;
|
|
13
|
+
port: number;
|
|
7
14
|
init?: () => void;
|
|
8
15
|
connectionAttempt: number;
|
|
9
16
|
pk?: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../server/types/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM1B,QAAA,IAAI,QAAQ,EAAE,GAAG,CAAC;AAUlB,MAAM,WAAW,UAAW,SAAQ,IAAI;IACtC,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC;CACjE;AAYD,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;QAC7C,MAAM,EAAE,0BAA0B,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY,CAAC,OAAO,QAAQ,CAAC;IACnE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../server/types/core.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengis/fastify-table",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.107",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "core-plugins",
|
|
6
6
|
"keywords": [
|
|
@@ -23,12 +23,12 @@
|
|
|
23
23
|
"scripts": {
|
|
24
24
|
"prepublishOnly": "npm run build",
|
|
25
25
|
"clean": "tsc -b --clean",
|
|
26
|
-
"build": "tsc -b --clean && tsc && copyfiles server/plugins/grpc/utils/*.proto dist && copyfiles server/migrations/*.sql dist && copyfiles server/templates/**/*.html dist && copyfiles server/templates/**/*.hbs dist",
|
|
26
|
+
"build": "tsc -b --clean && tsc && copyfiles server/plugins/grpc/utils/*.proto dist && copyfiles server/migrations/*.sql dist && copyfiles server/templates/**/*.html dist && copyfiles server/templates/**/*.hbs dist && copyfiles script/* dist",
|
|
27
27
|
"prod": "NODE_ENV=production bun dist/server",
|
|
28
28
|
"migrate": "MIGRATE=true bun script/migrate",
|
|
29
29
|
"patch": "npm version patch && git push && npm publish",
|
|
30
30
|
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
|
|
31
|
-
"test": "
|
|
31
|
+
"test": "npx vitest run",
|
|
32
32
|
"compress": "node compress.js",
|
|
33
33
|
"dev1": "bun --hot dist/server",
|
|
34
34
|
"dev": "NODE_ENV=production bun start",
|