@starbemtech/star-db-query-builder 1.0.27 → 1.0.29
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 +23 -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 +15 -2
- package/src/default/types.ts +1 -0
- package/src/default/utils.ts +28 -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
|
}
|
|
@@ -79,15 +84,14 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType) => {
|
|
|
79
84
|
subCondition !== null) {
|
|
80
85
|
const key = Object.keys(subCondition)[0];
|
|
81
86
|
const condition = subCondition[key];
|
|
87
|
+
// Adiciona o tratamento de unaccent nas condições de JOINS
|
|
82
88
|
processCondition(key, condition);
|
|
83
89
|
return whereParts.pop();
|
|
84
90
|
}
|
|
85
91
|
return '';
|
|
86
92
|
})
|
|
87
93
|
.filter((part) => part);
|
|
88
|
-
whereParts.push(
|
|
89
|
-
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
90
|
-
: `${subWhereParts.join(` ${logicalOperator} `)}`);
|
|
94
|
+
whereParts.push(`(${subWhereParts.join(` ${logicalOperator} `)})`);
|
|
91
95
|
}
|
|
92
96
|
}
|
|
93
97
|
else {
|
|
@@ -104,22 +108,15 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType) => {
|
|
|
104
108
|
subCondition !== null) {
|
|
105
109
|
const key = Object.keys(subCondition)[0];
|
|
106
110
|
const condition = subCondition[key];
|
|
107
|
-
processCondition(key, condition);
|
|
111
|
+
processCondition(key, condition); // Certifica que o unaccent é processado aqui também
|
|
108
112
|
return whereParts.pop();
|
|
109
113
|
}
|
|
110
114
|
return '';
|
|
111
115
|
})
|
|
112
116
|
.filter((part) => part);
|
|
113
|
-
whereParts.push(
|
|
114
|
-
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
115
|
-
: `${subWhereParts.join(` ${logicalOperator} `)}`);
|
|
117
|
+
whereParts.push(`(${subWhereParts.join(` ${logicalOperator} `)})`);
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
|
-
else {
|
|
119
|
-
Object.entries(conditions).forEach(([key, value]) => {
|
|
120
|
-
processCondition(key, value);
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
120
|
const whereClause = whereParts.length > 0 ? ` WHERE ${whereParts.join(' AND ')}` : '';
|
|
124
121
|
return [whereClause, values, index];
|
|
125
122
|
};
|
|
@@ -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":";;;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,EACrB,QAAkB,EACO,EAAE;IAC3B,IAAI,KAAK,GAAG,UAAU,CAAA;IACtB,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAU,EAAE,CAAA;IAExB,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,SAAuB,EAAE,EAAE;QAChE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,UAAU,IAAI,SAAS,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gBACpD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,SAAS,CAAA;gBACrC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC,CAAA;gBACvC,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,MAAM,YAAY,GAAG,KAAK;yBACvB,GAAG,CAAC,GAAG,EAAE,CACR,UAAU,KAAK,IAAI;wBACjB,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;wBACjC,CAAC,CAAC,yBAAyB,EAAE,CAChC;yBACA,IAAI,CAAC,IAAI,CAAC,CAAA;oBAEb,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,UAAU,CAAC,IAAI,CACb,GAAG,GAAG,IAAI,QAAQ,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAC5D,CAAA;oBACH,CAAC;yBAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;wBAC7B,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,KAAK,YAAY,GAAG,CAAC,CAAA;oBACzD,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,QAAQ,KAAK,YAAY,GAAG,CAAC,CAAA;oBACzD,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;gBACvB,CAAC;qBAAM,CAAC;oBACN,IAAI,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBACpC,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;4BACvC,UAAU,CAAC,IAAI,CACb,YAAY,GAAG,0BAA0B,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAC1E,CAAA;wBACH,CAAC;6BAAM,CAAC;4BACN,UAAU,CAAC,IAAI,CACb,YAAY,GAAG,WAAW,QAAQ,aAAa,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAChF,CAAA;wBACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,IAAI,CACb,UAAU,KAAK,IAAI;4BACjB,CAAC,CAAC,GAAG,GAAG,IAAI,QAAQ,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE;4BACvD,CAAC,CAAC,GAAG,GAAG,IAAI,QAAQ,IAAI,yBAAyB,EAAE,EAAE,CACxD,CAAA;oBACH,CAAC;oBACD,KAAK,EAAE,CAAA;oBACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;QAC1B,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QACvD,MAAM,mBAAmB,GAAG,UAAU,CAAC,KAAK,CAAA;QAE5C,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,mBAAmB;iBACtC,GAAG,CAAC,CAAC,YAAiB,EAAE,EAAE;gBACzB,IACE,OAAO,YAAY,KAAK,QAAQ;oBAChC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC5B,YAAY,KAAK,IAAI,EACrB,CAAC;oBACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;oBACxC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;oBAEnC,2DAA2D;oBAC3D,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;oBAChC,OAAO,UAAU,CAAC,GAAG,EAAE,CAAA;gBACzB,CAAC;gBACD,OAAO,EAAE,CAAA;YACX,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;YAEzB,UAAU,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,eAAe,GAAG,CAAC,GAAG,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAClD,gBAAgB,CAAC,GAAG,EAAE,KAAqB,CAAC,CAC7C,CAAA;IACH,CAAC;IAED,IAAI,IAAI,IAAI,UAAU,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;QACpD,MAAM,mBAAmB,GAAG,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC,GAAG,CAAA;QAE3D,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,mBAAmB;iBACtC,GAAG,CAAC,CAAC,YAAiB,EAAE,EAAE;gBACzB,IACE,OAAO,YAAY,KAAK,QAAQ;oBAChC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC5B,YAAY,KAAK,IAAI,EACrB,CAAC;oBACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;oBACxC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;oBACnC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA,CAAC,oDAAoD;oBACrF,OAAO,UAAU,CAAC,GAAG,EAAE,CAAA;gBACzB,CAAC;gBAED,OAAO,EAAE,CAAA;YACX,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;YAEzB,UAAU,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,eAAe,GAAG,CAAC,GAAG,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GACf,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACnE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;AACrC,CAAC,CAAA;AAxHY,QAAA,iBAAiB,qBAwH7B;AAEM,MAAM,mBAAmB,GAAG,CAAC,OAAiB,EAAE,EAAE;IACvD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzE,OAAO,aAAa,MAAM,EAAE,CAAA;AAC9B,CAAC,CAAA;AAJY,QAAA,mBAAmB,uBAI/B;AAEM,MAAM,mBAAmB,GAAG,CAAC,OAAkB,EAAE,EAAE;IACxD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/C,OAAO,aAAa,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AAC1C,CAAC,CAAA;AAHY,QAAA,mBAAmB,uBAG/B;AAEM,MAAM,iBAAiB,GAAG,CAAC,KAAc,EAAE,EAAE;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,OAAO,UAAU,KAAK,EAAE,CAAA;AAC1B,CAAC,CAAA;AAHY,QAAA,iBAAiB,qBAG7B;AAEM,MAAM,kBAAkB,GAAG,CAAC,MAAe,EAAE,EAAE;IACpD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IACtB,OAAO,WAAW,MAAM,EAAE,CAAA;AAC5B,CAAC,CAAA;AAHY,QAAA,kBAAkB,sBAG9B"}
|
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)
|
|
@@ -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
|
}
|
|
@@ -116,17 +117,15 @@ export const createWhereClause = <T>(
|
|
|
116
117
|
const key = Object.keys(subCondition)[0]
|
|
117
118
|
const condition = subCondition[key]
|
|
118
119
|
|
|
120
|
+
// Adiciona o tratamento de unaccent nas condições de JOINS
|
|
119
121
|
processCondition(key, condition)
|
|
120
122
|
return whereParts.pop()
|
|
121
123
|
}
|
|
122
124
|
return ''
|
|
123
125
|
})
|
|
124
126
|
.filter((part) => part)
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
128
|
-
: `${subWhereParts.join(` ${logicalOperator} `)}`
|
|
129
|
-
)
|
|
127
|
+
|
|
128
|
+
whereParts.push(`(${subWhereParts.join(` ${logicalOperator} `)})`)
|
|
130
129
|
}
|
|
131
130
|
} else {
|
|
132
131
|
Object.entries(conditions).forEach(([key, value]) =>
|
|
@@ -148,7 +147,7 @@ export const createWhereClause = <T>(
|
|
|
148
147
|
) {
|
|
149
148
|
const key = Object.keys(subCondition)[0]
|
|
150
149
|
const condition = subCondition[key]
|
|
151
|
-
processCondition(key, condition)
|
|
150
|
+
processCondition(key, condition) // Certifica que o unaccent é processado aqui também
|
|
152
151
|
return whereParts.pop()
|
|
153
152
|
}
|
|
154
153
|
|
|
@@ -156,21 +155,12 @@ export const createWhereClause = <T>(
|
|
|
156
155
|
})
|
|
157
156
|
.filter((part) => part)
|
|
158
157
|
|
|
159
|
-
whereParts.push(
|
|
160
|
-
clientType === 'pg'
|
|
161
|
-
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
162
|
-
: `${subWhereParts.join(` ${logicalOperator} `)}`
|
|
163
|
-
)
|
|
158
|
+
whereParts.push(`(${subWhereParts.join(` ${logicalOperator} `)})`)
|
|
164
159
|
}
|
|
165
|
-
} else {
|
|
166
|
-
Object.entries(conditions).forEach(([key, value]) => {
|
|
167
|
-
processCondition(key, value as Condition<T>)
|
|
168
|
-
})
|
|
169
160
|
}
|
|
170
161
|
|
|
171
162
|
const whereClause =
|
|
172
163
|
whereParts.length > 0 ? ` WHERE ${whereParts.join(' AND ')}` : ''
|
|
173
|
-
|
|
174
164
|
return [whereClause, values, index]
|
|
175
165
|
}
|
|
176
166
|
|