@opengis/fastify-table 1.0.72 → 1.0.73
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/package.json
CHANGED
package/pg/funcs/getPG.js
CHANGED
|
@@ -3,11 +3,12 @@ import config from '../../config.js';
|
|
|
3
3
|
import pgClients from '../pgClients.js';
|
|
4
4
|
import init from './init.js';
|
|
5
5
|
|
|
6
|
-
function getPG({
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
function getPG(param) {
|
|
7
|
+
const {
|
|
8
|
+
user, password, host, port, db, database, name: origin, funcs,
|
|
9
|
+
} = param;
|
|
9
10
|
if (funcs?.config) Object.assign(config, { ...funcs.config }); // unit test
|
|
10
|
-
const name = origin || db || database;
|
|
11
|
+
const name = origin || db || database || param || 'client';
|
|
11
12
|
if (pgClients[name]) return pgClients[name];
|
|
12
13
|
|
|
13
14
|
const dbConfig = {
|
|
@@ -17,6 +17,7 @@ export default async function suggest(req) {
|
|
|
17
17
|
const meta = await getSelectMeta({ name: selectName });
|
|
18
18
|
const pg = meta?.db ? getPG(meta.db) : pg1;
|
|
19
19
|
if (!meta) return { headers, status: 404, message: 'Not found query select ' };
|
|
20
|
+
if (query.meta) return meta;
|
|
20
21
|
|
|
21
22
|
const { arr, searchQuery } = meta;
|
|
22
23
|
|
|
@@ -37,7 +38,7 @@ export default async function suggest(req) {
|
|
|
37
38
|
const pk = meta.originalCols.split(',')[0];
|
|
38
39
|
const val = query.val ? ` ${pk}=any('{${query.val.replace(/'/g, "''")}}')` : '';
|
|
39
40
|
|
|
40
|
-
const sqlSuggest = `with rows(id,text) as (${meta.original.replace(/{{parent}}/gi, parent)} where ${[search, val].filter((el) => el).join(' and ') || 'true'}) select * from rows limit ${limit}`;
|
|
41
|
+
const sqlSuggest = `with rows(id,text) as (${meta.original.replace(/{{parent}}/gi, parent)} where ${[search, val, 'id is not null'].filter((el) => el).join(' and ') || 'true'}) select * from rows limit ${limit}`;
|
|
41
42
|
if (query.sql) return sqlSuggest;
|
|
42
43
|
|
|
43
44
|
// query
|
|
@@ -24,7 +24,7 @@ export default async function getSelectMeta({ name, pg: pg1 }) {
|
|
|
24
24
|
|
|
25
25
|
const pg = pg1 || getPG({ db: cls.db || 'client' });
|
|
26
26
|
const { sql: original } = cls;
|
|
27
|
-
const sql = `with c(id,text) as (${original} ) select * from c
|
|
27
|
+
const sql = `with c(id,text) as (${original} ) select * from c `;
|
|
28
28
|
|
|
29
29
|
/*= == meta table === */
|
|
30
30
|
const tableNew = original.toLowerCase().replace(/\n/g, ' ').split(' from ').filter((el) => /^[a-z0-9_]+\.[a-z0-9_]+/.test(el))
|
|
@@ -42,7 +42,7 @@ export default async function getSelectMeta({ name, pg: pg1 }) {
|
|
|
42
42
|
const type = dataOrigin.fields.map((el) => pg.pgType?.[el.dataTypeID] || 'text');
|
|
43
43
|
|
|
44
44
|
const searchColumn = cls?.searchColumn || (
|
|
45
|
-
dataOrigin.fields.find((el) => el.name === 'search') ? 'search' :
|
|
45
|
+
dataOrigin.fields.find((el) => el.name === 'search') ? 'search' : dataOrigin.fields[1].name);
|
|
46
46
|
|
|
47
47
|
const searchQuery = `(${searchColumn.split(',').map((el) => `"${el}" ilike $1 `).join(' or ')})`;
|
|
48
48
|
|
|
@@ -52,7 +52,7 @@ export default async function getSelectMeta({ name, pg: pg1 }) {
|
|
|
52
52
|
cols: cols.join(','),
|
|
53
53
|
originalCols: dataOrigin1.fields.map((el) => el.name).join(','),
|
|
54
54
|
db: cls.db,
|
|
55
|
-
original: original?.includes('where') ? `select * from (${
|
|
55
|
+
original: original?.includes('where') ? `select * from (${sql})q` : sql,
|
|
56
56
|
sql,
|
|
57
57
|
count,
|
|
58
58
|
searchQuery,
|