@opengis/fastify-table 2.0.151 → 2.0.153

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.
@@ -40,7 +40,7 @@ function getColumnCLSData(table, name) {
40
40
  }
41
41
  export default function getColumnCLS(table, name) {
42
42
  // init only
43
- if (!Object.keys("select").length) {
43
+ if (!Object.keys(select).length) {
44
44
  const cls = getTemplates("cls")
45
45
  .map((el) => el[0])
46
46
  .reduce((acc, curr) => ({
@@ -1 +1 @@
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,EACE,IAAI,EACJ,MAAM,EACN,GAAG,EACH,MAAM,EACN,IAAI,GACL,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,EACD,EAAE,MAAmB,gBA6CtB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAmB;;;;;UAsBnE;;AAED,wBAAoB"}
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,EACE,IAAI,EACJ,MAAM,EACN,GAAG,EACH,MAAM,EACN,IAAI,GACL,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,EACD,EAAE,MAAmB,gBAgDtB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAmB;;;;;UAsBnE;;AAED,wBAAoB"}
@@ -121,18 +121,21 @@ export async function editUserCls({ name, alias, description, data, }, pg = pgCl
121
121
  return "ok";
122
122
  }
123
123
  export async function getUserClsList({ name, search, sql, custom, type, }, pg = pgClients.client) {
124
- const args = name ? [name.split(",")] : [search].filter(Boolean);
125
- const subQuery = search
126
- ? `case when parent<>$1 then name ilike '%'||$1||'%' else true end`
127
- : "true";
124
+ const args = [name ? name.split(",") : null, search].filter(Boolean);
128
125
  const typeStr = type ? { cls: "json", select: "sql" }[type] : null;
129
- const where = (name ? "name=any($1::text[])" : null) ||
130
- (search
131
- ? `( name ilike '%'||$1||'%' or name in (select parent from admin.user_cls where name ilike '%'||$1||'%') )`
132
- : "1=1");
133
- const customQuery = `select true as custom, name, type, description, alias, (select count(*) filter(where ${subQuery}) from admin.user_cls where parent=t.name limit 1) as count
126
+ const idx = search && name ? 2 : 1;
127
+ const where = [
128
+ name ? "name=any($1::text[])" : null,
129
+ search
130
+ ? `( name ilike '%'||$${idx}||'%' or name in (select parent from admin.user_cls where name ilike '%'||$${idx}||'%') )`
131
+ : null,
132
+ ]
133
+ .filter(Boolean)
134
+ .join(" and ") || "1=1";
135
+ console.log(name, search, where);
136
+ const customQuery = `select true as custom, name, type, description, alias, case when type = 'sql' then 1 else (select count(*) from admin.user_cls where parent=t.name limit 1) end as count
134
137
  from admin.user_cls t where parent is null and ${where} and ${typeStr ? `type='${typeStr}'` : "true"}`;
135
- const gitQuery = `select false as custom, name, type, null as description, null as alias, (select count(*) filter(where ${subQuery}) from admin.cls where parent=t.name limit 1) as count
138
+ const gitQuery = `select false as custom, name, type, null as description, null as alias, case when type = 'sql' then 1 else (select count(*) from admin.cls where parent=t.name limit 1) end as count
136
139
  from admin.cls t where parent is null and ${where.replace(/admin.user_cls/g, "admin.cls")} and ${typeStr ? `type='${typeStr}'` : "true"}`;
137
140
  const q = [
138
141
  custom !== "0" ? customQuery : null,
@@ -1 +1 @@
1
- {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/suggest.ts"],"names":[],"mappings":"AAuHA,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBA6WzD"}
1
+ {"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../../../../server/routes/table/controllers/suggest.ts"],"names":[],"mappings":"AA0HA,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBA6WzD"}
@@ -20,7 +20,9 @@ async function getTableColumnMeta({ table, template, column, selectName, filtere
20
20
  : (columns || []).find((el) => el.name === column) ||
21
21
  (filters || []).find((el) => el.name === column) ||
22
22
  {};
23
- const { arr, sql: select } = (await getSelect(clsName || column, pg)) || {};
23
+ const { arr, sql: select } = (await getSelect(clsName || column, pg)) || // cls name === table:column
24
+ (await getSelect(column, pg)) || // cls name === column name
25
+ {};
24
26
  const sqlTable = (sql || [])
25
27
  .filter((el) => !el.disabled && el.sql && el.sql.includes(column) && false)
26
28
  .map((el, i) => ` left join lateral (${el.sql}) ${el.name || `t${i}`} on 1=1 `)
@@ -1 +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,gBAsBX"}
1
+ {"version":3,"file":"getUserCls.d.ts","sourceRoot":"","sources":["../../../../../server/routes/usercls/controllers/getUserCls.ts"],"names":[],"mappings":"AAQA,wBAA8B,iBAAiB,CAC7C,EAAE,KAAK,EAAE,IAAI,EAAE,EAAqB,EAAE,EAAE,GAAG,EAC3C,KAAK,EAAE,GAAG,gBA0BX"}
@@ -1,10 +1,16 @@
1
1
  import config from "../../../../config.js";
2
2
  import pgClients from "../../../plugins/pg/pgClients.js";
3
3
  import { getUserClsList } from "../../../plugins/usercls/index.js";
4
+ // query.name = cls1,cls2,cls3
5
+ // query.search = substring of cls name
6
+ // data[idx].count - should not depend on either query.name or query.search
4
7
  export default async function getUserClsListApi({ query, user, pg = pgClients.client }, reply) {
5
8
  if (!user?.uid && !config.local) {
6
9
  return reply.status(401).send({ error: "unauthorized", code: 401 });
7
10
  }
11
+ if (!pg) {
12
+ return reply.status(400).send({ error: "empty pg", code: 400 });
13
+ }
8
14
  const t1 = Date.now();
9
15
  const result = await getUserClsList({
10
16
  name: query.name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengis/fastify-table",
3
- "version": "2.0.151",
3
+ "version": "2.0.153",
4
4
  "type": "module",
5
5
  "description": "core-plugins",
6
6
  "keywords": [