@opengis/fastify-table 2.1.10 → 2.1.12
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/server/plugins/table/funcs/getFilterSQL/index.d.ts +1 -1
- package/dist/server/plugins/table/funcs/getFilterSQL/index.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getFilterSQL/index.js +38 -5
- package/dist/server/plugins/table/funcs/getFilterSQL/util/formatValue.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getFilterSQL/util/formatValue.js +12 -1
- package/dist/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.d.ts.map +1 -1
- package/dist/server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.js +1 -3
- package/dist/server/routes/table/controllers/suggest.d.ts +16 -0
- package/dist/server/routes/table/controllers/suggest.d.ts.map +1 -1
- package/dist/server/routes/table/controllers/suggest.js +1 -1
- package/package.json +1 -1
|
@@ -30,7 +30,7 @@ export default function getFilterSQL({ table, filter, pg, search, searchColumn:
|
|
|
30
30
|
q: string;
|
|
31
31
|
optimizedSQL: string;
|
|
32
32
|
sqlTable: any;
|
|
33
|
-
extraSqlColumns:
|
|
33
|
+
extraSqlColumns: string | undefined;
|
|
34
34
|
tableCount: string;
|
|
35
35
|
table: any;
|
|
36
36
|
searchQuery: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../server/plugins/table/funcs/getFilterSQL/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../server/plugins/table/funcs/getFilterSQL/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAuC5D,wBAA8B,YAAY,CAAC,EACzC,KAAK,EACL,MAAM,EACN,EAAqB,EACrB,MAAM,EACN,YAAY,EAAE,aAAa,EAC3B,UAAU,EACV,KAAK,EACL,MAAM,EACN,KAAK,EACL,GAAG,EACH,QAAQ,EACR,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;GAwRA"}
|
|
@@ -5,8 +5,10 @@ import config from "../../../../../config.js";
|
|
|
5
5
|
// filter util
|
|
6
6
|
import getTableSql from "./util/getTableSql.js";
|
|
7
7
|
import getFilterQuery from "./util/getFilterQuery.js";
|
|
8
|
+
import { getTableColumnMeta } from "../../../../routes/table/controllers/suggest.js";
|
|
8
9
|
import getOptimizedQuery from "./util/getOptimizedQuery.js";
|
|
9
10
|
import getFilter from "../getFilter.js";
|
|
11
|
+
import getMeta from "../../../pg/funcs/getMeta.js";
|
|
10
12
|
const checkInline = {};
|
|
11
13
|
const defaultTable = "crm.extra_data";
|
|
12
14
|
function getExtraQuery(mainColumns, schema, table, pk) {
|
|
@@ -105,11 +107,11 @@ export default async function getFilterSQL({ table, filter, pg = pgClients.clien
|
|
|
105
107
|
})
|
|
106
108
|
.join(" or ")} )`
|
|
107
109
|
: "";
|
|
108
|
-
const filterResponse =
|
|
110
|
+
const filterResponse = await getFilter({
|
|
109
111
|
pg,
|
|
110
112
|
table,
|
|
111
113
|
user: { uid },
|
|
112
|
-
}, null)
|
|
114
|
+
}, null);
|
|
113
115
|
const filterList1 = await Promise.all((filterList || [])
|
|
114
116
|
.concat(filterResponse?.inline || [])
|
|
115
117
|
.concat(filterResponse?.custom || [])
|
|
@@ -118,8 +120,7 @@ export default async function getFilterSQL({ table, filter, pg = pgClients.clien
|
|
|
118
120
|
?.filter((el) => el.id || el.name)
|
|
119
121
|
?.map(async (el) => {
|
|
120
122
|
Object.assign(el, { name: el.name || el.id });
|
|
121
|
-
if (el.name &&
|
|
122
|
-
extraColumns.find((item) => item?.name === el?.name)) {
|
|
123
|
+
if (el.name && extraColumns.find((item) => item?.name === el?.name)) {
|
|
123
124
|
Object.assign(el, {
|
|
124
125
|
extra: {
|
|
125
126
|
table: extraDataTable,
|
|
@@ -128,6 +129,38 @@ export default async function getFilterSQL({ table, filter, pg = pgClients.clien
|
|
|
128
129
|
},
|
|
129
130
|
});
|
|
130
131
|
}
|
|
132
|
+
if (el.api?.split?.("/")?.[2] === "suggest" &&
|
|
133
|
+
el.api?.split?.("/")?.[3]?.split?.(":")?.length === 2 &&
|
|
134
|
+
!el.api.includes("?") // skip /suggest/table:column?sel=selectName
|
|
135
|
+
) {
|
|
136
|
+
const [table, column] = el.api.split("/")[3].split(":");
|
|
137
|
+
const body = await getTemplate("table", table);
|
|
138
|
+
const columns = await getMeta({ pg, table }).then((el) => el?.columns || []);
|
|
139
|
+
const { arr, original } = columns?.find((el) => el.name === column)
|
|
140
|
+
? (await getTableColumnMeta({
|
|
141
|
+
table: body?.table || table,
|
|
142
|
+
template: body ? table : undefined,
|
|
143
|
+
column: column?.split?.("?")?.shift?.(),
|
|
144
|
+
selectName: body?.columns?.find?.((el) => el.name === column)
|
|
145
|
+
?.data ||
|
|
146
|
+
body?.meta?.cls?.[column] ||
|
|
147
|
+
column?.split?.("?")?.pop?.(),
|
|
148
|
+
pg,
|
|
149
|
+
})) || {}
|
|
150
|
+
: {};
|
|
151
|
+
const arr1 = arr ||
|
|
152
|
+
(original && pg?.queryCache
|
|
153
|
+
? await pg
|
|
154
|
+
.queryCache(original, { table: body?.table || table })
|
|
155
|
+
.catch((err) => console.error("getFilterSQL error", err.toString()))
|
|
156
|
+
.then((el) => el?.rows || [])
|
|
157
|
+
: undefined);
|
|
158
|
+
Object.assign(el, {
|
|
159
|
+
optionsFromColumns: true,
|
|
160
|
+
options: arr1,
|
|
161
|
+
select: original,
|
|
162
|
+
});
|
|
163
|
+
}
|
|
131
164
|
if (!el?.data)
|
|
132
165
|
return el;
|
|
133
166
|
// const cls = await getTemplate(['cls', 'select'], el.data); // only git cls
|
|
@@ -174,7 +207,7 @@ export default async function getFilterSQL({ table, filter, pg = pgClients.clien
|
|
|
174
207
|
stateQuery,
|
|
175
208
|
customQuery,
|
|
176
209
|
]
|
|
177
|
-
.filter(
|
|
210
|
+
.filter(Boolean)
|
|
178
211
|
.join(" and ");
|
|
179
212
|
// table
|
|
180
213
|
const obj = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatValue.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/table/funcs/getFilterSQL/util/formatValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAe/D,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,EAAE,EACF,KAAK,EACL,MAAW,EACX,IAAI,EACJ,KAAK,EACL,UAAU,EACV,GAAO,EACP,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,
|
|
1
|
+
{"version":3,"file":"formatValue.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/table/funcs/getFilterSQL/util/formatValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAe/D,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,EAAE,EACF,KAAK,EACL,MAAW,EACX,IAAI,EACJ,KAAK,EACL,UAAU,EACV,GAAO,EACP,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,OAqMA"}
|
|
@@ -10,7 +10,7 @@ const selectFilterTypes = [
|
|
|
10
10
|
"button",
|
|
11
11
|
];
|
|
12
12
|
export default function formatValue({ pg, table, filter = {}, name, value, dataTypeID, uid = 1, optimize, }) {
|
|
13
|
-
const { extra, sql, select, strict, options /* default: defaultValue,
|
|
13
|
+
const { extra, sql, select, strict, options, optionsFromColumns /* default: defaultValue, */, } = filter;
|
|
14
14
|
const pk = pg?.pk && table ? pg.pk[table] : undefined;
|
|
15
15
|
const filterType = filter.type?.toLowerCase?.() || "text";
|
|
16
16
|
if (filterType === "text" && value && filter?.columns) {
|
|
@@ -132,6 +132,17 @@ export default function formatValue({ pg, table, filter = {}, name, value, dataT
|
|
|
132
132
|
const query = `${pk} in (select object_id from ${extra.table} where property_key='${name}' and value_text ${matchNull || `='${value}'`} )`;
|
|
133
133
|
return { op: "=", query };
|
|
134
134
|
}
|
|
135
|
+
// if pseudo-suggest column contain commas
|
|
136
|
+
if (optionsFromColumns && options?.length) {
|
|
137
|
+
const optionValues = options.map((e) => e.id);
|
|
138
|
+
const vals = optionValues.filter((e) => value.includes(e));
|
|
139
|
+
return {
|
|
140
|
+
op: "=",
|
|
141
|
+
query: `${name}::text=any('{${vals
|
|
142
|
+
.map((v) => `"${v}"`)
|
|
143
|
+
.join(",")}}'::text[])`,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
135
146
|
// nullable + default
|
|
136
147
|
const query = `${name} ${match}`;
|
|
137
148
|
return { op: "=", query };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFilterQuery.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAK/D;;;;GAIG;AAEH,iBAAS,cAAc,CAAC,EACtB,EAAqB,EACrB,MAAM,EAAE,SAAc,EACtB,KAAU,EACV,QAAa,EACb,MAAM,EACN,UAAU,EACV,GAAG,EACH,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,
|
|
1
|
+
{"version":3,"file":"getFilterQuery.d.ts","sourceRoot":"","sources":["../../../../../../../server/plugins/table/funcs/getFilterSQL/util/getFilterQuery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAK/D;;;;GAIG;AAEH,iBAAS,cAAc,CAAC,EACtB,EAAqB,EACrB,MAAM,EAAE,SAAc,EACtB,KAAU,EACV,QAAa,EACb,MAAM,EACN,UAAU,EACV,GAAG,EACH,QAAQ,GACT,EAAE;IACD,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,OA8FA;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -25,9 +25,7 @@ function getFilterQuery({ pg = pgClients.client, filter: filterStr = "", table =
|
|
|
25
25
|
?.map?.((el) => `${el.name}=${el.default}`) || []
|
|
26
26
|
: [];
|
|
27
27
|
// concat default + request filters
|
|
28
|
-
const arr = filterQueryArray
|
|
29
|
-
.concat(filterDefaultQueryArray)
|
|
30
|
-
.filter((el) => el);
|
|
28
|
+
const arr = filterQueryArray.concat(filterDefaultQueryArray).filter(Boolean);
|
|
31
29
|
const resultList = [];
|
|
32
30
|
for (let i = 0; i < arr.length; i += 1) {
|
|
33
31
|
const item = arr[i];
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
+
import { ExtendedPG } from "../../../types/core.js";
|
|
2
|
+
export declare function getTableColumnMeta({ table, template, column, selectName, filtered, startsWith, key, pg, }: {
|
|
3
|
+
table: string;
|
|
4
|
+
template?: string;
|
|
5
|
+
column: any;
|
|
6
|
+
selectName?: string;
|
|
7
|
+
filtered?: any;
|
|
8
|
+
startsWith?: boolean;
|
|
9
|
+
key?: string;
|
|
10
|
+
pg?: ExtendedPG;
|
|
11
|
+
}): Promise<{
|
|
12
|
+
arr: any;
|
|
13
|
+
original: string;
|
|
14
|
+
searchQuery: string;
|
|
15
|
+
pk: string;
|
|
16
|
+
} | null>;
|
|
1
17
|
export default function suggest(req: any, reply: any): Promise<any>;
|
|
2
18
|
//# 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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAuBpD,wBAAsB,kBAAkB,CAAC,EACvC,KAAK,EACL,QAAQ,EACR,MAAM,EACN,UAAU,EACV,QAAQ,EACR,UAAU,EACV,GAAG,EACH,EAAqB,GACtB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,UAAU,CAAC;CACjB;;;;;UA+EA;AAED,wBAA8B,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,gBA6WzD"}
|
|
@@ -2,7 +2,7 @@ import path from "node:path";
|
|
|
2
2
|
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import { config, getPGAsync, getTemplate, getSelectMeta, getMeta, applyHook, getSelectVal, logger, getSelect, metaFormat, getColumnCLS, pgClients, getFilter, } from "../../../../utils.js";
|
|
4
4
|
const defaultLimit = 50;
|
|
5
|
-
async function getTableColumnMeta({ table, template, column, selectName, filtered, startsWith, key, pg = pgClients.client, }) {
|
|
5
|
+
export async function getTableColumnMeta({ table, template, column, selectName, filtered, startsWith, key, pg = pgClients.client, }) {
|
|
6
6
|
if (!table || !column) {
|
|
7
7
|
return null;
|
|
8
8
|
}
|