@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.
Files changed (102) hide show
  1. package/dist/config.d.ts.map +1 -1
  2. package/dist/script/adduser +15 -0
  3. package/dist/script/dump.js +176 -0
  4. package/dist/script/migrate.js +25 -0
  5. package/dist/server/plugins/auth/funcs/verifyPassword.d.ts.map +1 -1
  6. package/dist/server/plugins/auth/funcs/verifyPassword.js +3 -1
  7. package/dist/server/plugins/crud/funcs/dataInsert.js +1 -1
  8. package/dist/server/plugins/crud/funcs/dataUpdate.d.ts.map +1 -1
  9. package/dist/server/plugins/crud/funcs/dataUpdate.js +7 -4
  10. package/dist/server/plugins/logger/getLogger.d.ts.map +1 -1
  11. package/dist/server/plugins/logger/getLogger.js +13 -10
  12. package/dist/server/plugins/logger/index.d.ts.map +1 -1
  13. package/dist/server/plugins/logger/index.js +2 -1
  14. package/dist/server/plugins/pg/funcs/getPG.d.ts.map +1 -1
  15. package/dist/server/plugins/pg/funcs/getPG.js +1 -0
  16. package/dist/server/plugins/pg/funcs/getPGAsync.js +1 -1
  17. package/dist/server/plugins/pg/funcs/init.d.ts +1 -1
  18. package/dist/server/plugins/pg/funcs/init.d.ts.map +1 -1
  19. package/dist/server/plugins/pg/funcs/init.js +20 -5
  20. package/dist/server/plugins/pg/funcs/pool.d.ts.map +1 -1
  21. package/dist/server/plugins/pg/funcs/pool.js +10 -16
  22. package/dist/server/plugins/pg/index.d.ts.map +1 -1
  23. package/dist/server/plugins/pg/index.js +3 -2
  24. package/dist/server/plugins/redis/funcs/getRedis.d.ts.map +1 -1
  25. package/dist/server/plugins/redis/funcs/getRedis.js +6 -4
  26. package/dist/server/plugins/redis/index.d.ts.map +1 -1
  27. package/dist/server/plugins/redis/index.js +4 -1
  28. package/dist/server/plugins/sqlite/index.d.ts.map +1 -1
  29. package/dist/server/plugins/sqlite/index.js +7 -3
  30. package/dist/server/plugins/table/funcs/getFilter.d.ts +1 -1
  31. package/dist/server/plugins/table/funcs/getFilter.d.ts.map +1 -1
  32. package/dist/server/plugins/table/funcs/getFilter.js +14 -1
  33. package/dist/server/plugins/table/funcs/getSelectMeta.d.ts.map +1 -1
  34. package/dist/server/plugins/table/funcs/getSelectMeta.js +2 -4
  35. package/dist/server/plugins/table/funcs/gisIRColumn.d.ts +2 -2
  36. package/dist/server/plugins/table/funcs/gisIRColumn.js +1 -1
  37. package/dist/server/plugins/util/funcs/unflattenObject.d.ts.map +1 -1
  38. package/dist/server/plugins/util/funcs/unflattenObject.js +3 -1
  39. package/dist/server/routes/access/controllers/access.group.d.ts +2 -2
  40. package/dist/server/routes/access/controllers/access.group.d.ts.map +1 -1
  41. package/dist/server/routes/access/controllers/access.group.js +0 -1
  42. package/dist/server/routes/access/controllers/access.group.post.d.ts +2 -2
  43. package/dist/server/routes/access/controllers/access.group.post.d.ts.map +1 -1
  44. package/dist/server/routes/access/controllers/access.group.post.js +0 -1
  45. package/dist/server/routes/auth/controllers/core/registration.d.ts +1 -4
  46. package/dist/server/routes/auth/controllers/core/registration.d.ts.map +1 -1
  47. package/dist/server/routes/auth/controllers/core/registration.js +28 -9
  48. package/dist/server/routes/auth/controllers/core/updateUserInfo.js +1 -1
  49. package/dist/server/routes/auth/controllers/jwt/authorize.js +5 -5
  50. package/dist/server/routes/auth/controllers/jwt/token.d.ts.map +1 -1
  51. package/dist/server/routes/auth/controllers/jwt/token.js +10 -12
  52. package/dist/server/routes/cron/controllers/cronApi.d.ts +1 -1
  53. package/dist/server/routes/cron/controllers/cronApi.d.ts.map +1 -1
  54. package/dist/server/routes/cron/controllers/cronApi.js +5 -3
  55. package/dist/server/routes/crud/controllers/insert.d.ts +1 -4
  56. package/dist/server/routes/crud/controllers/insert.d.ts.map +1 -1
  57. package/dist/server/routes/crud/controllers/insert.js +24 -16
  58. package/dist/server/routes/crud/controllers/table.d.ts.map +1 -1
  59. package/dist/server/routes/crud/controllers/table.js +13 -6
  60. package/dist/server/routes/crud/controllers/update.d.ts.map +1 -1
  61. package/dist/server/routes/crud/controllers/update.js +23 -15
  62. package/dist/server/routes/file/controllers/delete.d.ts +1 -15
  63. package/dist/server/routes/file/controllers/delete.d.ts.map +1 -1
  64. package/dist/server/routes/file/controllers/delete.js +13 -20
  65. package/dist/server/routes/file/controllers/download.d.ts +2 -2
  66. package/dist/server/routes/file/controllers/download.d.ts.map +1 -1
  67. package/dist/server/routes/file/controllers/download.js +39 -30
  68. package/dist/server/routes/file/controllers/files.d.ts +2 -1
  69. package/dist/server/routes/file/controllers/files.d.ts.map +1 -1
  70. package/dist/server/routes/file/controllers/files.js +15 -11
  71. package/dist/server/routes/file/controllers/resize.d.ts +1 -2
  72. package/dist/server/routes/file/controllers/resize.d.ts.map +1 -1
  73. package/dist/server/routes/file/controllers/resize.js +17 -6
  74. package/dist/server/routes/file/controllers/upload.d.ts.map +1 -1
  75. package/dist/server/routes/file/controllers/upload.js +17 -16
  76. package/dist/server/routes/file/controllers/uploadImage.d.ts +11 -13
  77. package/dist/server/routes/file/controllers/uploadImage.d.ts.map +1 -1
  78. package/dist/server/routes/file/controllers/uploadImage.js +13 -15
  79. package/dist/server/routes/logger/controllers/logger.file.js +1 -1
  80. package/dist/server/routes/menu/controllers/interfaces.d.ts +1 -7
  81. package/dist/server/routes/menu/controllers/interfaces.d.ts.map +1 -1
  82. package/dist/server/routes/table/controllers/card.d.ts +1 -1
  83. package/dist/server/routes/table/controllers/card.d.ts.map +1 -1
  84. package/dist/server/routes/table/controllers/card.js +15 -9
  85. package/dist/server/routes/table/controllers/filter.d.ts +1 -1
  86. package/dist/server/routes/table/controllers/filter.d.ts.map +1 -1
  87. package/dist/server/routes/table/controllers/filter.js +2 -2
  88. package/dist/server/routes/table/controllers/form.d.ts +1 -1
  89. package/dist/server/routes/table/controllers/form.d.ts.map +1 -1
  90. package/dist/server/routes/table/controllers/form.js +8 -5
  91. package/dist/server/routes/table/controllers/search.d.ts +1 -1
  92. package/dist/server/routes/table/controllers/search.d.ts.map +1 -1
  93. package/dist/server/routes/table/controllers/search.js +5 -6
  94. package/dist/server/routes/table/controllers/suggest.d.ts +1 -1
  95. package/dist/server/routes/table/controllers/suggest.d.ts.map +1 -1
  96. package/dist/server/routes/table/controllers/suggest.js +30 -15
  97. package/dist/server/routes/table/functions/getData.d.ts +1 -1
  98. package/dist/server/routes/table/functions/getData.d.ts.map +1 -1
  99. package/dist/server/routes/table/functions/getData.js +60 -34
  100. package/dist/server/types/core.d.ts +7 -0
  101. package/dist/server/types/core.d.ts.map +1 -1
  102. 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
- return { message: hookData?.message, status: hookData?.status };
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 { message: "access restricted", status: 403 };
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 { message: "template not found", status: 404 };
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 { message: `table not found: ${table}`, status: 404 };
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 { rows } = await pg.query(q, [hookData?.id || params.id]);
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: any): Promise<IFilter | {
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,GACZ,OAAO,CAAC,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,GAAG,CAAC,CA6RvE"}
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 { status: 404, message: "not found" };
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 { status: 404, message: "table not found" };
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,eA6ClD"}
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
- return { message: hookData?.message, status: hookData?.status };
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 { status: 404, message: "not found" };
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,4 +1,4 @@
1
- export default function search({ pg, funcs, query }: any): Promise<string | {
1
+ export default function search({ pg, query, }: any): Promise<string | {
2
2
  time: number;
3
3
  total: number;
4
4
  filtered: number;
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/search.ts"],"names":[],"mappings":"AA6HA,wBAA8B,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,GAAG;;;;;;GAoClE"}
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 { message: "not found", status: 404 };
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 { message: "table not found", status: 404 };
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, funcs, query = {} }) {
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":"AAoEA,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG,gBA6V7C"}
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 limit = 50;
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 ${limit}) select * from c`;
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 { status: 400, message: "name is required" };
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 { status: 400, message: "param name is invalid: 1" };
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 { status: 400, message: "param name is invalid: 2" };
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 { status: 400, message: "param limit is invalid" };
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 { message: `min length: ${meta.minLength}` };
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 { headers, status: 404, message: "Not found query select " };
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
- }, reply: FastifyReply, called?: any): Promise<any>;
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;AA4DzD,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,KAAK,EAAE,YAAY,EACnB,MAAM,CAAC,EAAE,GAAG,gBAi0Bb"}
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, }, reply, called) {
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 { message: "not enough params: table", status: 400 };
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
- return { message: hookData?.message, status: hookData?.status };
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.sql === "0")
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 { message: `key not found: ${table1}`, status: 404 };
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.status(404).send(`table not found: ${table1}`);
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.sql,
204
- filter: query.filter,
205
- search: query.search,
206
- state: query.state,
207
- custom: query.custom,
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.filter,
213
- query.search,
214
- query.state,
215
- query.custom,
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.filter,
223
- search: query.search,
224
- state: query.state,
225
- custom: query.custom,
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.key && (loadTable?.key || tokenData?.key) && !objectId
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.limit || defaultLimit
237
- : Math.min(maxLimit, +(query.limit || defaultLimit))) || defaultLimit;
238
- const offset = query.page && query.page > 0 && !objectId
239
- ? ` offset ${(query.page - 1) * limit}`
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.order, query.desc, loadTable?.order, columnList, !!called);
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.search
268
+ const search = loadTable?.meta?.search && query?.search
245
269
  ? `(${loadTable?.meta?.search
246
270
  ?.split(",")
247
- ?.map((el) => `${el} ilike '%${query.search
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.bbox
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.key
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.sql === "1") {
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.key && loadTable.key ? [query.key] : []))
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.status(403).send("access restricted: empty rows");
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.sql === "2") {
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.106",
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": "bun 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",