@starbemtech/star-db-query-builder 1.0.27 → 1.0.28
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/src/db/initDb.d.ts +1 -1
- package/dist/src/db/initDb.js +2 -2
- package/dist/src/db/initDb.js.map +1 -1
- package/dist/src/db/pgClient.d.ts +1 -1
- package/dist/src/db/pgClient.js +25 -7
- package/dist/src/db/pgClient.js.map +1 -1
- package/dist/src/default/genericRepository.d.ts +2 -2
- package/dist/src/default/genericRepository.js +4 -4
- package/dist/src/default/genericRepository.js.map +1 -1
- package/dist/src/default/types.d.ts +1 -0
- package/dist/src/default/utils.d.ts +1 -1
- package/dist/src/default/utils.js +22 -26
- package/dist/src/default/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/db/initDb.ts +5 -2
- package/src/db/pgClient.ts +31 -7
- package/src/default/genericRepository.ts +17 -4
- package/src/default/types.ts +1 -0
- package/src/default/utils.ts +27 -38
package/dist/src/db/initDb.d.ts
CHANGED
package/dist/src/db/initDb.js
CHANGED
|
@@ -6,14 +6,14 @@ const promise_1 = require("mysql2/promise");
|
|
|
6
6
|
const pgClient_1 = require("./pgClient");
|
|
7
7
|
const mysqlClient_1 = require("./mysqlClient");
|
|
8
8
|
let dbClient = null;
|
|
9
|
-
const initDb = (config) => {
|
|
9
|
+
const initDb = async (config) => {
|
|
10
10
|
if (!config.type)
|
|
11
11
|
throw new Error('Type is required. Accept values: pg | mysql');
|
|
12
12
|
if (!config.options)
|
|
13
13
|
throw new Error('Connection options is required');
|
|
14
14
|
if (config.type === 'pg') {
|
|
15
15
|
const pool = new pg_1.Pool(config.options);
|
|
16
|
-
dbClient = (0, pgClient_1.createPgClient)(pool);
|
|
16
|
+
dbClient = await (0, pgClient_1.createPgClient)(pool);
|
|
17
17
|
console.log(`@starbemtech/star-db-query-builder: Postgres db client created success`);
|
|
18
18
|
}
|
|
19
19
|
else if (config.type === 'mysql') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initDb.js","sourceRoot":"","sources":["../../../src/db/initDb.ts"],"names":[],"mappings":";;;AAAA,2BAAmC;AACnC,4CAA8D;AAC9D,yCAA2C;AAC3C,+CAAiD;AAIjD,IAAI,QAAQ,GAA2B,IAAI,CAAA;AAEpC,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"initDb.js","sourceRoot":"","sources":["../../../src/db/initDb.ts"],"names":[],"mappings":";;;AAAA,2BAAmC;AACnC,4CAA8D;AAC9D,yCAA2C;AAC3C,+CAAiD;AAIjD,IAAI,QAAQ,GAA2B,IAAI,CAAA;AAEpC,MAAM,MAAM,GAAG,KAAK,EAAK,MAG/B,EAAiB,EAAE;IAClB,IAAI,CAAC,MAAM,CAAC,IAAI;QACd,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAEhE,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IAEtE,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,SAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvC,QAAQ,GAAG,MAAM,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAA;QAErC,OAAO,CAAC,GAAG,CACT,wEAAwE,CACzE,CAAA;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAA,oBAAe,EAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC5C,QAAQ,GAAG,IAAA,+BAAiB,EAAC,IAAI,CAAC,CAAA;QAElC,OAAO,CAAC,IAAI,CACV,sEAAsE,CACvE,CAAA;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC,CAAA;AA1BY,QAAA,MAAM,UA0BlB;AAEM,MAAM,WAAW,GAAG,GAAoB,EAAE;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AANY,QAAA,WAAW,eAMvB"}
|
package/dist/src/db/pgClient.js
CHANGED
|
@@ -1,12 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createPgClient = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
async function ensureUnaccentExtension(pool) {
|
|
5
|
+
try {
|
|
6
|
+
const checkResult = await pool.query(`
|
|
7
|
+
SELECT 1 FROM pg_extension WHERE extname = 'unaccent'
|
|
8
|
+
`);
|
|
9
|
+
if (checkResult.rows.length === 0) {
|
|
10
|
+
await pool.query('CREATE EXTENSION IF NOT EXISTS unaccent');
|
|
11
|
+
throw new Error('@starbemtech/star-db-query-builder: Extensão unaccent instalada com sucesso.');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
throw new Error(`@starbemtech/star-db-query-builder: Não foi possível instalar a extensão unaccent:
|
|
16
|
+
${error}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const createPgClient = async (pool) => {
|
|
20
|
+
await ensureUnaccentExtension(pool);
|
|
21
|
+
return {
|
|
22
|
+
clientType: 'pg',
|
|
23
|
+
query: async (sql, params) => {
|
|
24
|
+
const { rows } = await pool.query(sql, params);
|
|
25
|
+
return rows;
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
};
|
|
11
29
|
exports.createPgClient = createPgClient;
|
|
12
30
|
//# sourceMappingURL=pgClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgClient.js","sourceRoot":"","sources":["../../../src/db/pgClient.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"pgClient.js","sourceRoot":"","sources":["../../../src/db/pgClient.ts"],"names":[],"mappings":";;;AAGA,KAAK,UAAU,uBAAuB,CAAC,IAAU;IAC/C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;;KAEpC,CAAC,CAAA;QAEF,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;YAC3D,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb;QACE,KAAK,EAAE,CACV,CAAA;IACH,CAAC;AACH,CAAC;AAEM,MAAM,cAAc,GAAG,KAAK,EAAE,IAAU,EAA4B,EAAE;IAC3E,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAA;IAEnC,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,KAAK,EAAK,GAAW,EAAE,MAAc,EAAc,EAAE;YAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAC9C,OAAO,IAAoB,CAAA;QAC7B,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAVY,QAAA,cAAc,kBAU1B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { QueryParams } from './types';
|
|
2
2
|
export declare const findFirst: <T>({ tableName, dbClient, select, where, groupBy, orderBy, }: QueryParams<T>) => Promise<T | null>;
|
|
3
|
-
export declare const findMany: <T>({ tableName, dbClient, select, where, groupBy, orderBy, limit, offset, }: QueryParams<T>) => Promise<T[]>;
|
|
3
|
+
export declare const findMany: <T>({ tableName, dbClient, select, where, groupBy, orderBy, limit, offset, unaccent, }: QueryParams<T>) => Promise<T[]>;
|
|
4
4
|
export declare const insert: <P, R>({ tableName, dbClient, data, returning, }: QueryParams<R> & {
|
|
5
5
|
data: P;
|
|
6
6
|
returning?: string[];
|
|
@@ -12,4 +12,4 @@ export declare const update: <P, R>({ tableName, dbClient, id, data, returning,
|
|
|
12
12
|
export declare const deleteOne: <T>({ tableName, dbClient, id, permanently, }: QueryParams<T> & {
|
|
13
13
|
permanently?: boolean;
|
|
14
14
|
}) => Promise<void>;
|
|
15
|
-
export declare const joins: <T>({ tableName, dbClient, select, joins, where, groupBy, orderBy, limit, offset, }: QueryParams<T>) => Promise<T[]>;
|
|
15
|
+
export declare const joins: <T>({ tableName, dbClient, select, joins, where, groupBy, orderBy, limit, offset, unaccent, }: QueryParams<T>) => Promise<T[]>;
|
|
@@ -20,13 +20,13 @@ const findFirst = async ({ tableName, dbClient, select, where, groupBy, orderBy,
|
|
|
20
20
|
return rows[0] || null;
|
|
21
21
|
};
|
|
22
22
|
exports.findFirst = findFirst;
|
|
23
|
-
const findMany = async ({ tableName, dbClient, select, where, groupBy, orderBy, limit, offset, }) => {
|
|
23
|
+
const findMany = async ({ tableName, dbClient, select, where, groupBy, orderBy, limit, offset, unaccent, }) => {
|
|
24
24
|
if (!tableName)
|
|
25
25
|
throw new Error('Table name is required');
|
|
26
26
|
if (!dbClient)
|
|
27
27
|
throw new Error('DB client is required');
|
|
28
28
|
const fields = (0, utils_1.createSelectFields)(select, dbClient.clientType);
|
|
29
|
-
const [whereClause, params] = (0, utils_1.createWhereClause)(where, 1, dbClient.clientType);
|
|
29
|
+
const [whereClause, params] = (0, utils_1.createWhereClause)(where, 1, dbClient.clientType, unaccent);
|
|
30
30
|
const orderByClause = (0, utils_1.createOrderByClause)(orderBy);
|
|
31
31
|
const groupByClause = (0, utils_1.createGroupByClause)(groupBy);
|
|
32
32
|
const limitClause = (0, utils_1.createLimitClause)(limit);
|
|
@@ -118,14 +118,14 @@ const deleteOne = async ({ tableName, dbClient, id, permanently = false, }) => {
|
|
|
118
118
|
: `UPDATE ${tableName} SET status = 'deleted' WHERE id = ${dbClient.clientType === 'pg' ? '$1' : '?'}`, [id]);
|
|
119
119
|
};
|
|
120
120
|
exports.deleteOne = deleteOne;
|
|
121
|
-
const joins = async ({ tableName, dbClient, select, joins, where, groupBy, orderBy, limit, offset, }) => {
|
|
121
|
+
const joins = async ({ tableName, dbClient, select, joins, where, groupBy, orderBy, limit, offset, unaccent, }) => {
|
|
122
122
|
if (!tableName)
|
|
123
123
|
throw new Error('Table name is required');
|
|
124
124
|
if (!dbClient)
|
|
125
125
|
throw new Error('DB client is required');
|
|
126
126
|
const fields = Array.isArray(select) ? select : [];
|
|
127
127
|
const selectFields = (0, utils_1.createSelectFields)(fields, dbClient.clientType);
|
|
128
|
-
const [whereClause, params] = (0, utils_1.createWhereClause)(where, 1, dbClient.clientType);
|
|
128
|
+
const [whereClause, params] = (0, utils_1.createWhereClause)(where, 1, dbClient.clientType, unaccent);
|
|
129
129
|
const groupByClause = (0, utils_1.createGroupByClause)(groupBy);
|
|
130
130
|
const orderByClause = (0, utils_1.createOrderByClause)(orderBy);
|
|
131
131
|
const limitClause = (0, utils_1.createLimitClause)(limit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genericRepository.js","sourceRoot":"","sources":["../../../src/default/genericRepository.ts"],"names":[],"mappings":";;;AAAA,+BAAiC;AAEjC,mCASgB;AAET,MAAM,SAAS,GAAG,KAAK,EAAK,EACjC,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,GACQ,EAAqB,EAAE;IACtC,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IACzD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAEvD,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC9D,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,IAAA,yBAAiB,EAC7C,KAAK,EACL,CAAC,EACD,QAAQ,CAAC,UAAU,CACpB,CAAA;IAED,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,CAAA;IAClD,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC,OAAO,CAAC,CAAA;IAElD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAC/B,UAAU,MAAM,SAAS,SAAS;QAC9B,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;QACzC,aAAa;QACb,aAAa;OACd,EACH,MAAM,CACP,CAAA;IAED,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AACxB,CAAC,CAAA;AA/BY,QAAA,SAAS,aA+BrB;AAEM,MAAM,QAAQ,GAAG,KAAK,EAAK,EAChC,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,
|
|
1
|
+
{"version":3,"file":"genericRepository.js","sourceRoot":"","sources":["../../../src/default/genericRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { Conditions, OrderBy, DBClients } from './types';
|
|
|
2
2
|
export declare const createSelectFields: (fields: string[] | undefined, clientType: DBClients) => string;
|
|
3
3
|
export declare const generatePlaceholders: (keys: any[], clientType: DBClients) => string;
|
|
4
4
|
export declare const generateSetClause: (keys: any[], clientType: DBClients) => string;
|
|
5
|
-
export declare const createWhereClause: <T>(conditions: Conditions<T> | undefined, startIndex: number | undefined, clientType: DBClients) => [string, any[], number];
|
|
5
|
+
export declare const createWhereClause: <T>(conditions: Conditions<T> | undefined, startIndex: number | undefined, clientType: DBClients, unaccent?: boolean) => [string, any[], number];
|
|
6
6
|
export declare const createOrderByClause: (orderBy?: OrderBy) => string;
|
|
7
7
|
export declare const createGroupByClause: (groupBy?: string[]) => string;
|
|
8
8
|
export declare const createLimitClause: (limit?: number) => string;
|
|
@@ -25,7 +25,7 @@ const generateSetClause = (keys, clientType) => {
|
|
|
25
25
|
.join(', ');
|
|
26
26
|
};
|
|
27
27
|
exports.generateSetClause = generateSetClause;
|
|
28
|
-
const createWhereClause = (conditions = {}, startIndex = 1, clientType) => {
|
|
28
|
+
const createWhereClause = (conditions = {}, startIndex = 1, clientType, unaccent) => {
|
|
29
29
|
let index = startIndex;
|
|
30
30
|
const whereParts = [];
|
|
31
31
|
const values = [];
|
|
@@ -34,7 +34,7 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType) => {
|
|
|
34
34
|
if ('operator' in condition && 'value' in condition) {
|
|
35
35
|
const { operator, value } = condition;
|
|
36
36
|
if (operator.includes('NULL')) {
|
|
37
|
-
whereParts.push(
|
|
37
|
+
whereParts.push(`${key} ${operator}`);
|
|
38
38
|
}
|
|
39
39
|
else if (Array.isArray(value)) {
|
|
40
40
|
const placeholders = value
|
|
@@ -43,26 +43,31 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType) => {
|
|
|
43
43
|
: mysqlPlaceholderGenerator())
|
|
44
44
|
.join(', ');
|
|
45
45
|
if (operator === 'BETWEEN') {
|
|
46
|
-
whereParts.push(
|
|
47
|
-
? `${key} ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
48
|
-
: `${key} ${operator} ${placeholders.replace(', ', ' AND ')}`);
|
|
46
|
+
whereParts.push(`${key} ${operator} ${placeholders.replace(', ', ' AND ')}`);
|
|
49
47
|
}
|
|
50
48
|
else if (operator === 'IN') {
|
|
51
|
-
whereParts.push(
|
|
52
|
-
? `${key} ${operator} (${placeholders})`
|
|
53
|
-
: `${key} ${operator} (${placeholders})`);
|
|
49
|
+
whereParts.push(`${key} ${operator} (${placeholders})`);
|
|
54
50
|
}
|
|
55
51
|
else {
|
|
56
|
-
whereParts.push(
|
|
57
|
-
? `${key} ${operator} (${placeholders})`
|
|
58
|
-
: `${key} ${operator} ${placeholders}`);
|
|
52
|
+
whereParts.push(`${key} ${operator} (${placeholders})`);
|
|
59
53
|
}
|
|
60
54
|
values.push(...value);
|
|
61
55
|
}
|
|
62
56
|
else {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
57
|
+
if (unaccent && clientType === 'pg') {
|
|
58
|
+
if (operator.toUpperCase() === 'ILIKE') {
|
|
59
|
+
whereParts.push(`unaccent(${key}::text) ILIKE unaccent(${pgPlaceholderGenerator(index)})`);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
whereParts.push(`unaccent(${key}::text) ${operator} unaccent(${pgPlaceholderGenerator(index)})`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
whereParts.push(clientType === 'pg'
|
|
67
|
+
? `${key} ${operator} ${pgPlaceholderGenerator(index)}`
|
|
68
|
+
: `${key} ${operator} ${mysqlPlaceholderGenerator()}`);
|
|
69
|
+
}
|
|
70
|
+
index++;
|
|
66
71
|
values.push(value);
|
|
67
72
|
}
|
|
68
73
|
}
|
|
@@ -85,9 +90,7 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType) => {
|
|
|
85
90
|
return '';
|
|
86
91
|
})
|
|
87
92
|
.filter((part) => part);
|
|
88
|
-
whereParts.push(
|
|
89
|
-
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
90
|
-
: `${subWhereParts.join(` ${logicalOperator} `)}`);
|
|
93
|
+
whereParts.push(`(${subWhereParts.join(` ${logicalOperator} `)})`);
|
|
91
94
|
}
|
|
92
95
|
}
|
|
93
96
|
else {
|
|
@@ -104,22 +107,15 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType) => {
|
|
|
104
107
|
subCondition !== null) {
|
|
105
108
|
const key = Object.keys(subCondition)[0];
|
|
106
109
|
const condition = subCondition[key];
|
|
107
|
-
processCondition(key, condition);
|
|
110
|
+
processCondition(key, condition); // Certifica que o unaccent é processado aqui também
|
|
108
111
|
return whereParts.pop();
|
|
109
112
|
}
|
|
110
113
|
return '';
|
|
111
114
|
})
|
|
112
115
|
.filter((part) => part);
|
|
113
|
-
whereParts.push(
|
|
114
|
-
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
115
|
-
: `${subWhereParts.join(` ${logicalOperator} `)}`);
|
|
116
|
+
whereParts.push(`(${subWhereParts.join(` ${logicalOperator} `)})`);
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
|
-
else {
|
|
119
|
-
Object.entries(conditions).forEach(([key, value]) => {
|
|
120
|
-
processCondition(key, value);
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
119
|
const whereClause = whereParts.length > 0 ? ` WHERE ${whereParts.join(' AND ')}` : '';
|
|
124
120
|
return [whereClause, values, index];
|
|
125
121
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/default/utils.ts"],"names":[],"mappings":";;;AAEA,MAAM,uBAAuB,GAAG,CAC9B,KAAe,EACf,UAAqB,EACb,EAAE;IACV,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACzC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAC5C,CAAA;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAA;AAC7D,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;AAEpC,MAAM,kBAAkB,GAAG,CAChC,SAAmB,EAAE,EACrB,UAAqB,EACb,EAAE;IACV,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAChC,CAAC,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC;QAC7C,CAAC,CAAC,GAAG,CAAA;AACT,CAAC,CAAA;AAPY,QAAA,kBAAkB,sBAO9B;AAEM,MAAM,oBAAoB,GAAG,CAClC,IAAW,EACX,UAAqB,EACb,EAAE;IACV,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC,CAAA;AAPY,QAAA,oBAAoB,wBAOhC;AAEM,MAAM,iBAAiB,GAAG,CAC/B,IAAW,EACX,UAAqB,EACb,EAAE;IACV,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAClB,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAC9D;SACA,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC,CAAA;AATY,QAAA,iBAAiB,qBAS7B;AAEM,MAAM,iBAAiB,GAAG,CAC/B,aAA4B,EAAE,EAC9B,UAAU,GAAG,CAAC,EACd,UAAqB,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/default/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/db/initDb.ts
CHANGED
|
@@ -7,7 +7,10 @@ import { DBClients } from '../default/types'
|
|
|
7
7
|
|
|
8
8
|
let dbClient: IDatabaseClient | null = null
|
|
9
9
|
|
|
10
|
-
export const initDb = <T>(config: {
|
|
10
|
+
export const initDb = async <T>(config: {
|
|
11
|
+
type: DBClients
|
|
12
|
+
options: T
|
|
13
|
+
}): Promise<void> => {
|
|
11
14
|
if (!config.type)
|
|
12
15
|
throw new Error('Type is required. Accept values: pg | mysql')
|
|
13
16
|
|
|
@@ -15,7 +18,7 @@ export const initDb = <T>(config: { type: DBClients; options: T }): void => {
|
|
|
15
18
|
|
|
16
19
|
if (config.type === 'pg') {
|
|
17
20
|
const pool = new PgPool(config.options)
|
|
18
|
-
dbClient = createPgClient(pool)
|
|
21
|
+
dbClient = await createPgClient(pool)
|
|
19
22
|
|
|
20
23
|
console.log(
|
|
21
24
|
`@starbemtech/star-db-query-builder: Postgres db client created success`
|
package/src/db/pgClient.ts
CHANGED
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
import { Pool } from 'pg'
|
|
2
2
|
import { IDatabaseClient } from './IDatabaseClient'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
async function ensureUnaccentExtension(pool: Pool): Promise<void> {
|
|
5
|
+
try {
|
|
6
|
+
const checkResult = await pool.query(`
|
|
7
|
+
SELECT 1 FROM pg_extension WHERE extname = 'unaccent'
|
|
8
|
+
`)
|
|
9
|
+
|
|
10
|
+
if (checkResult.rows.length === 0) {
|
|
11
|
+
await pool.query('CREATE EXTENSION IF NOT EXISTS unaccent')
|
|
12
|
+
throw new Error(
|
|
13
|
+
'@starbemtech/star-db-query-builder: Extensão unaccent instalada com sucesso.'
|
|
14
|
+
)
|
|
15
|
+
}
|
|
16
|
+
} catch (error) {
|
|
17
|
+
throw new Error(
|
|
18
|
+
`@starbemtech/star-db-query-builder: Não foi possível instalar a extensão unaccent:
|
|
19
|
+
${error}`
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export const createPgClient = async (pool: Pool): Promise<IDatabaseClient> => {
|
|
25
|
+
await ensureUnaccentExtension(pool)
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
clientType: 'pg',
|
|
29
|
+
query: async <T>(sql: string, params?: any[]): Promise<T> => {
|
|
30
|
+
const { rows } = await pool.query(sql, params)
|
|
31
|
+
return rows as unknown as T
|
|
32
|
+
},
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -53,12 +53,19 @@ export const findMany = async <T>({
|
|
|
53
53
|
orderBy,
|
|
54
54
|
limit,
|
|
55
55
|
offset,
|
|
56
|
+
unaccent,
|
|
56
57
|
}: QueryParams<T>): Promise<T[]> => {
|
|
57
58
|
if (!tableName) throw new Error('Table name is required')
|
|
58
59
|
if (!dbClient) throw new Error('DB client is required')
|
|
59
60
|
|
|
60
61
|
const fields = createSelectFields(select, dbClient.clientType)
|
|
61
|
-
const [whereClause, params] = createWhereClause(
|
|
62
|
+
const [whereClause, params] = createWhereClause(
|
|
63
|
+
where,
|
|
64
|
+
1,
|
|
65
|
+
dbClient.clientType,
|
|
66
|
+
unaccent
|
|
67
|
+
)
|
|
68
|
+
|
|
62
69
|
const orderByClause = createOrderByClause(orderBy)
|
|
63
70
|
const groupByClause = createGroupByClause(groupBy)
|
|
64
71
|
const limitClause = createLimitClause(limit)
|
|
@@ -115,7 +122,7 @@ export const insert = async <P, R>({
|
|
|
115
122
|
const inserted = await dbClient.query<R[]>(query, values)
|
|
116
123
|
|
|
117
124
|
if (dbClient.clientType === 'mysql') {
|
|
118
|
-
const rows = await dbClient.query<R>(
|
|
125
|
+
const rows: any = await dbClient.query<R>(
|
|
119
126
|
`SELECT ${
|
|
120
127
|
returning && returning.length > 0
|
|
121
128
|
? createSelectFields(returning, dbClient.clientType)
|
|
@@ -160,7 +167,7 @@ export const update = async <P, R>({
|
|
|
160
167
|
const updated = await dbClient.query<R[]>(query, values)
|
|
161
168
|
|
|
162
169
|
if (dbClient.clientType === 'mysql') {
|
|
163
|
-
const rows = await dbClient.query<R>(
|
|
170
|
+
const rows: any = await dbClient.query<R>(
|
|
164
171
|
`SELECT ${
|
|
165
172
|
returning && returning.length > 0
|
|
166
173
|
? createSelectFields(returning, dbClient.clientType)
|
|
@@ -210,13 +217,19 @@ export const joins = async <T>({
|
|
|
210
217
|
orderBy,
|
|
211
218
|
limit,
|
|
212
219
|
offset,
|
|
220
|
+
unaccent,
|
|
213
221
|
}: QueryParams<T>): Promise<T[]> => {
|
|
214
222
|
if (!tableName) throw new Error('Table name is required')
|
|
215
223
|
if (!dbClient) throw new Error('DB client is required')
|
|
216
224
|
|
|
217
225
|
const fields = Array.isArray(select) ? select : []
|
|
218
226
|
const selectFields = createSelectFields(fields, dbClient.clientType)
|
|
219
|
-
const [whereClause, params] = createWhereClause(
|
|
227
|
+
const [whereClause, params] = createWhereClause(
|
|
228
|
+
where,
|
|
229
|
+
1,
|
|
230
|
+
dbClient.clientType,
|
|
231
|
+
unaccent
|
|
232
|
+
)
|
|
220
233
|
const groupByClause = createGroupByClause(groupBy)
|
|
221
234
|
const orderByClause = createOrderByClause(orderBy)
|
|
222
235
|
const limitClause = createLimitClause(limit)
|
package/src/default/types.ts
CHANGED
package/src/default/utils.ts
CHANGED
|
@@ -45,7 +45,8 @@ export const generateSetClause = (
|
|
|
45
45
|
export const createWhereClause = <T>(
|
|
46
46
|
conditions: Conditions<T> = {},
|
|
47
47
|
startIndex = 1,
|
|
48
|
-
clientType: DBClients
|
|
48
|
+
clientType: DBClients,
|
|
49
|
+
unaccent?: boolean
|
|
49
50
|
): [string, any[], number] => {
|
|
50
51
|
let index = startIndex
|
|
51
52
|
const whereParts: string[] = []
|
|
@@ -56,9 +57,7 @@ export const createWhereClause = <T>(
|
|
|
56
57
|
if ('operator' in condition && 'value' in condition) {
|
|
57
58
|
const { operator, value } = condition
|
|
58
59
|
if (operator.includes('NULL')) {
|
|
59
|
-
whereParts.push(
|
|
60
|
-
clientType === 'pg' ? `${key} ${operator} ` : `${key} ${operator} `
|
|
61
|
-
)
|
|
60
|
+
whereParts.push(`${key} ${operator}`)
|
|
62
61
|
} else if (Array.isArray(value)) {
|
|
63
62
|
const placeholders = value
|
|
64
63
|
.map(() =>
|
|
@@ -70,31 +69,33 @@ export const createWhereClause = <T>(
|
|
|
70
69
|
|
|
71
70
|
if (operator === 'BETWEEN') {
|
|
72
71
|
whereParts.push(
|
|
73
|
-
|
|
74
|
-
? `${key} ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
75
|
-
: `${key} ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
72
|
+
`${key} ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
76
73
|
)
|
|
77
74
|
} else if (operator === 'IN') {
|
|
78
|
-
whereParts.push(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
75
|
+
whereParts.push(`${key} ${operator} (${placeholders})`)
|
|
76
|
+
} else {
|
|
77
|
+
whereParts.push(`${key} ${operator} (${placeholders})`)
|
|
78
|
+
}
|
|
79
|
+
values.push(...value)
|
|
80
|
+
} else {
|
|
81
|
+
if (unaccent && clientType === 'pg') {
|
|
82
|
+
if (operator.toUpperCase() === 'ILIKE') {
|
|
83
|
+
whereParts.push(
|
|
84
|
+
`unaccent(${key}::text) ILIKE unaccent(${pgPlaceholderGenerator(index)})`
|
|
85
|
+
)
|
|
86
|
+
} else {
|
|
87
|
+
whereParts.push(
|
|
88
|
+
`unaccent(${key}::text) ${operator} unaccent(${pgPlaceholderGenerator(index)})`
|
|
89
|
+
)
|
|
90
|
+
}
|
|
83
91
|
} else {
|
|
84
92
|
whereParts.push(
|
|
85
93
|
clientType === 'pg'
|
|
86
|
-
? `${key} ${operator}
|
|
87
|
-
: `${key} ${operator} ${
|
|
94
|
+
? `${key} ${operator} ${pgPlaceholderGenerator(index)}`
|
|
95
|
+
: `${key} ${operator} ${mysqlPlaceholderGenerator()}`
|
|
88
96
|
)
|
|
89
97
|
}
|
|
90
|
-
|
|
91
|
-
} else {
|
|
92
|
-
whereParts.push(
|
|
93
|
-
clientType === 'pg'
|
|
94
|
-
? `${key} ${operator} ${pgPlaceholderGenerator(index++)}`
|
|
95
|
-
: `${key} ${operator} ${mysqlPlaceholderGenerator()}`
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
+
index++
|
|
98
99
|
values.push(value)
|
|
99
100
|
}
|
|
100
101
|
}
|
|
@@ -122,11 +123,8 @@ export const createWhereClause = <T>(
|
|
|
122
123
|
return ''
|
|
123
124
|
})
|
|
124
125
|
.filter((part) => part)
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
128
|
-
: `${subWhereParts.join(` ${logicalOperator} `)}`
|
|
129
|
-
)
|
|
126
|
+
|
|
127
|
+
whereParts.push(`(${subWhereParts.join(` ${logicalOperator} `)})`)
|
|
130
128
|
}
|
|
131
129
|
} else {
|
|
132
130
|
Object.entries(conditions).forEach(([key, value]) =>
|
|
@@ -148,7 +146,7 @@ export const createWhereClause = <T>(
|
|
|
148
146
|
) {
|
|
149
147
|
const key = Object.keys(subCondition)[0]
|
|
150
148
|
const condition = subCondition[key]
|
|
151
|
-
processCondition(key, condition)
|
|
149
|
+
processCondition(key, condition) // Certifica que o unaccent é processado aqui também
|
|
152
150
|
return whereParts.pop()
|
|
153
151
|
}
|
|
154
152
|
|
|
@@ -156,21 +154,12 @@ export const createWhereClause = <T>(
|
|
|
156
154
|
})
|
|
157
155
|
.filter((part) => part)
|
|
158
156
|
|
|
159
|
-
whereParts.push(
|
|
160
|
-
clientType === 'pg'
|
|
161
|
-
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
162
|
-
: `${subWhereParts.join(` ${logicalOperator} `)}`
|
|
163
|
-
)
|
|
157
|
+
whereParts.push(`(${subWhereParts.join(` ${logicalOperator} `)})`)
|
|
164
158
|
}
|
|
165
|
-
} else {
|
|
166
|
-
Object.entries(conditions).forEach(([key, value]) => {
|
|
167
|
-
processCondition(key, value as Condition<T>)
|
|
168
|
-
})
|
|
169
159
|
}
|
|
170
160
|
|
|
171
161
|
const whereClause =
|
|
172
162
|
whereParts.length > 0 ? ` WHERE ${whereParts.join(' AND ')}` : ''
|
|
173
|
-
|
|
174
163
|
return [whereClause, values, index]
|
|
175
164
|
}
|
|
176
165
|
|