@starbemtech/star-db-query-builder 1.0.34 → 1.0.36
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/coverage/clover.xml +2 -2
- package/coverage/lcov-report/index.html +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/src/db/initDb.d.ts +3 -6
- package/dist/src/db/initDb.js +11 -17
- package/dist/src/db/initDb.js.map +1 -1
- package/dist/src/db/mysqlClient.d.ts +1 -2
- package/dist/src/db/mysqlClient.js +7 -69
- package/dist/src/db/mysqlClient.js.map +1 -1
- package/dist/src/db/pgClient.d.ts +2 -3
- package/dist/src/db/pgClient.js +7 -90
- package/dist/src/db/pgClient.js.map +1 -1
- package/dist/src/default/genericRepository.d.ts +2 -7
- package/dist/src/default/genericRepository.js +6 -26
- package/dist/src/default/genericRepository.js.map +1 -1
- package/dist/src/default/types.d.ts +1 -10
- package/dist/src/default/utils.d.ts +1 -1
- package/dist/src/default/utils.js +33 -30
- package/dist/src/default/utils.js.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/db/initDb.ts +12 -6
- package/src/db/pgClient.ts +5 -2
- package/dist/src/monitor/monitor.d.ts +0 -9
- package/dist/src/monitor/monitor.js +0 -14
- package/dist/src/monitor/monitor.js.map +0 -1
package/coverage/clover.xml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<coverage generated="
|
|
3
|
-
<project timestamp="
|
|
2
|
+
<coverage generated="1745450914749" clover="3.2.0">
|
|
3
|
+
<project timestamp="1745450914749" name="All files">
|
|
4
4
|
<metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0" elements="0" coveredelements="0" complexity="0" loc="0" ncloc="0" packages="0" files="0" classes="0"/>
|
|
5
5
|
</project>
|
|
6
6
|
</coverage>
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
87
87
|
Code coverage generated by
|
|
88
88
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
89
|
-
at 2025-
|
|
89
|
+
at 2025-04-23T23:28:34.744Z
|
|
90
90
|
</div>
|
|
91
91
|
<script src="prettify.js"></script>
|
|
92
92
|
<script>
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ import { PoolOptions as MySqlPoolOptions } from 'mysql2';
|
|
|
3
3
|
import { Conditions as TypeConditions } from './src/default/types';
|
|
4
4
|
export * from './src/db/initDb';
|
|
5
5
|
export * from './src/default/genericRepository';
|
|
6
|
-
export * from './src/
|
|
6
|
+
export * from './src/services/payment';
|
|
7
7
|
export type { PgPoolConfig, MySqlPoolOptions, TypeConditions };
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
__exportStar(require("./src/db/initDb"), exports);
|
|
19
19
|
// Generic Repository
|
|
20
20
|
__exportStar(require("./src/default/genericRepository"), exports);
|
|
21
|
-
//
|
|
22
|
-
__exportStar(require("./src/
|
|
21
|
+
// Services Repository
|
|
22
|
+
__exportStar(require("./src/services/payment"), exports);
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIA,UAAU;AACV,kDAA+B;AAE/B,qBAAqB;AACrB,kEAA+C;AAE/C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAIA,UAAU;AACV,kDAA+B;AAE/B,qBAAqB;AACrB,kEAA+C;AAE/C,sBAAsB;AACtB,yDAAsC"}
|
package/dist/src/db/initDb.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { IDatabaseClient } from './IDatabaseClient';
|
|
2
|
-
import { DBClients
|
|
2
|
+
import { DBClients } from '../default/types';
|
|
3
3
|
export declare const initDb: <T>(config: {
|
|
4
|
-
name: string;
|
|
5
4
|
type: DBClients;
|
|
6
5
|
options: T;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export declare const getDbClient: (name: string) => IDatabaseClient;
|
|
10
|
-
export declare const getAllDbClients: () => Record<string, IDatabaseClient>;
|
|
6
|
+
}) => void;
|
|
7
|
+
export declare const getDbClient: () => IDatabaseClient;
|
package/dist/src/db/initDb.js
CHANGED
|
@@ -1,42 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getDbClient = exports.initDb = void 0;
|
|
4
4
|
const pg_1 = require("pg");
|
|
5
5
|
const promise_1 = require("mysql2/promise");
|
|
6
6
|
const pgClient_1 = require("./pgClient");
|
|
7
7
|
const mysqlClient_1 = require("./mysqlClient");
|
|
8
|
-
|
|
9
|
-
const initDb =
|
|
8
|
+
let dbClient = null;
|
|
9
|
+
const initDb = (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
|
-
const poolConfig = config.options;
|
|
16
15
|
const pool = new pg_1.Pool(config.options);
|
|
17
|
-
|
|
18
|
-
console.log(`@starbemtech/star-db-query-builder: Postgres db client
|
|
16
|
+
dbClient = (0, pgClient_1.createPgClient)(pool);
|
|
17
|
+
console.log(`@starbemtech/star-db-query-builder: Postgres db client created success`);
|
|
19
18
|
}
|
|
20
19
|
else if (config.type === 'mysql') {
|
|
21
20
|
const pool = (0, promise_1.createPool)(config.options);
|
|
22
|
-
|
|
23
|
-
console.info(`@starbemtech/star-db-query-builder:
|
|
21
|
+
dbClient = (0, mysqlClient_1.createMysqlClient)(pool);
|
|
22
|
+
console.info(`@starbemtech/star-db-query-builder: MySQL db client created success.`);
|
|
24
23
|
}
|
|
25
24
|
else {
|
|
26
25
|
throw new Error('Unsupported database type');
|
|
27
26
|
}
|
|
28
27
|
};
|
|
29
28
|
exports.initDb = initDb;
|
|
30
|
-
const getDbClient = (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
throw new Error(`Database client "${name}" is not initialized`);
|
|
29
|
+
const getDbClient = () => {
|
|
30
|
+
if (!dbClient) {
|
|
31
|
+
throw new Error('Database client is not initialized');
|
|
34
32
|
}
|
|
35
|
-
return
|
|
33
|
+
return dbClient;
|
|
36
34
|
};
|
|
37
35
|
exports.getDbClient = getDbClient;
|
|
38
|
-
const getAllDbClients = () => {
|
|
39
|
-
return dbClients;
|
|
40
|
-
};
|
|
41
|
-
exports.getAllDbClients = getAllDbClients;
|
|
42
36
|
//# sourceMappingURL=initDb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initDb.js","sourceRoot":"","sources":["../../../src/db/initDb.ts"],"names":[],"mappings":";;;AAAA,
|
|
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,CAAI,MAAuC,EAAQ,EAAE;IACzE,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,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAA;QAE/B,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;AAvBY,QAAA,MAAM,UAuBlB;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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { Pool } from 'mysql2/promise';
|
|
2
2
|
import { IDatabaseClient } from './IDatabaseClient';
|
|
3
|
-
|
|
4
|
-
export declare const createMysqlClient: (pool: Pool, retryOptions?: RetryOptions) => IDatabaseClient;
|
|
3
|
+
export declare const createMysqlClient: (pool: Pool) => IDatabaseClient;
|
|
@@ -1,74 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.createMysqlClient = void 0;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
]);
|
|
15
|
-
function isTransientError(error) {
|
|
16
|
-
return error && error.code && transientErrorCodes.has(error.code);
|
|
17
|
-
}
|
|
18
|
-
const createMysqlClient = (pool, retryOptions) => {
|
|
19
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.CONNECTION_CREATED, {
|
|
20
|
-
clientType: 'mysql',
|
|
21
|
-
poolOptions: pool.config,
|
|
22
|
-
});
|
|
23
|
-
return {
|
|
24
|
-
clientType: 'mysql',
|
|
25
|
-
query: async (sql, params) => {
|
|
26
|
-
return (0, promise_retry_1.default)(async (retry, attempt) => {
|
|
27
|
-
const startTime = Date.now();
|
|
28
|
-
try {
|
|
29
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.QUERY_START, {
|
|
30
|
-
clientType: 'mysql',
|
|
31
|
-
sql,
|
|
32
|
-
params,
|
|
33
|
-
attempt,
|
|
34
|
-
});
|
|
35
|
-
const [rows] = await pool.execute(sql, params);
|
|
36
|
-
const elapsedTime = Date.now() - startTime;
|
|
37
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.QUERY_END, {
|
|
38
|
-
clientType: 'mysql',
|
|
39
|
-
sql,
|
|
40
|
-
params,
|
|
41
|
-
attempt,
|
|
42
|
-
elapsedTime,
|
|
43
|
-
});
|
|
44
|
-
return rows;
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
const elapsedTime = Date.now() - startTime;
|
|
48
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.QUERY_ERROR, {
|
|
49
|
-
clientType: 'mysql',
|
|
50
|
-
sql,
|
|
51
|
-
params,
|
|
52
|
-
attempt,
|
|
53
|
-
elapsedTime,
|
|
54
|
-
error,
|
|
55
|
-
});
|
|
56
|
-
if (isTransientError(error)) {
|
|
57
|
-
console.warn(`MySQL query attempt ${attempt} failed, retrying...`, error);
|
|
58
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.RETRY_ATTEMPT, {
|
|
59
|
-
clientType: 'mysql',
|
|
60
|
-
sql,
|
|
61
|
-
params,
|
|
62
|
-
attempt,
|
|
63
|
-
error,
|
|
64
|
-
});
|
|
65
|
-
return retry(error);
|
|
66
|
-
}
|
|
67
|
-
throw error;
|
|
68
|
-
}
|
|
69
|
-
}, retryOptions);
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
};
|
|
4
|
+
const createMysqlClient = (pool) => ({
|
|
5
|
+
clientType: 'mysql',
|
|
6
|
+
query: async (sql, params) => {
|
|
7
|
+
const [rows] = await pool.execute(sql, params);
|
|
8
|
+
return rows;
|
|
9
|
+
},
|
|
10
|
+
});
|
|
73
11
|
exports.createMysqlClient = createMysqlClient;
|
|
74
12
|
//# sourceMappingURL=mysqlClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysqlClient.js","sourceRoot":"","sources":["../../../src/db/mysqlClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mysqlClient.js","sourceRoot":"","sources":["../../../src/db/mysqlClient.ts"],"names":[],"mappings":";;;AAGO,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAAmB,EAAE,CAAC,CAAC;IACjE,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,KAAK,EAAK,GAAW,EAAE,MAAc,EAAc,EAAE;QAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC9C,OAAO,IAAoB,CAAA;IAC7B,CAAC;CACF,CAAC,CAAA;AANW,QAAA,iBAAiB,qBAM5B"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Pool
|
|
1
|
+
import { Pool } from 'pg';
|
|
2
2
|
import { IDatabaseClient } from './IDatabaseClient';
|
|
3
|
-
|
|
4
|
-
export declare const createPgClient: (pool: Pool, retryOptions?: RetryOptions, poolConfig?: PoolConfig) => Promise<IDatabaseClient>;
|
|
3
|
+
export declare const createPgClient: (pool: Pool) => IDatabaseClient;
|
package/dist/src/db/pgClient.js
CHANGED
|
@@ -1,95 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.createPgClient = void 0;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
try {
|
|
15
|
-
const checkResult = await pool.query(`
|
|
16
|
-
SELECT 1 FROM pg_extension WHERE extname = 'unaccent'
|
|
17
|
-
`);
|
|
18
|
-
if (checkResult.rows.length === 0) {
|
|
19
|
-
await pool.query('CREATE EXTENSION IF NOT EXISTS unaccent');
|
|
20
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.CONNECTION_CREATED, {
|
|
21
|
-
clientType: 'pg',
|
|
22
|
-
extension: 'unaccent',
|
|
23
|
-
status: 'installed',
|
|
24
|
-
});
|
|
25
|
-
console.info('@starbemtech/star-db-query-builder: Extensão unaccent instalada com sucesso.');
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.QUERY_ERROR, {
|
|
30
|
-
clientType: 'pg',
|
|
31
|
-
action: 'install_unaccent',
|
|
32
|
-
error,
|
|
33
|
-
});
|
|
34
|
-
throw new Error(`@starbemtech/star-db-query-builder: Não foi possível instalar a extensão unaccent:
|
|
35
|
-
${error}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
const createPgClient = async (pool, retryOptions, poolConfig) => {
|
|
39
|
-
await ensureUnaccentExtension(pool);
|
|
40
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.CONNECTION_CREATED, {
|
|
41
|
-
clientType: 'pg',
|
|
42
|
-
poolOptions: poolConfig,
|
|
43
|
-
});
|
|
44
|
-
return {
|
|
45
|
-
clientType: 'pg',
|
|
46
|
-
query: async (sql, params) => {
|
|
47
|
-
return (0, promise_retry_1.default)(async (retry, attempt) => {
|
|
48
|
-
const startTime = Date.now();
|
|
49
|
-
try {
|
|
50
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.QUERY_START, {
|
|
51
|
-
clientType: 'pg',
|
|
52
|
-
sql,
|
|
53
|
-
params,
|
|
54
|
-
attempt,
|
|
55
|
-
});
|
|
56
|
-
const { rows } = await pool.query(sql, params);
|
|
57
|
-
const elapsedTime = Date.now() - startTime;
|
|
58
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.QUERY_END, {
|
|
59
|
-
clientType: 'pg',
|
|
60
|
-
sql,
|
|
61
|
-
params,
|
|
62
|
-
attempt,
|
|
63
|
-
elapsedTime,
|
|
64
|
-
});
|
|
65
|
-
return rows;
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
const elapsedTime = Date.now() - startTime;
|
|
69
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.QUERY_ERROR, {
|
|
70
|
-
clientType: 'pg',
|
|
71
|
-
sql,
|
|
72
|
-
params,
|
|
73
|
-
attempt,
|
|
74
|
-
elapsedTime,
|
|
75
|
-
error,
|
|
76
|
-
});
|
|
77
|
-
if (isTransientError(error)) {
|
|
78
|
-
console.warn(`Postgres query attempt ${attempt} failed, retrying...`, error);
|
|
79
|
-
monitor_1.monitor.emit(monitor_1.MonitorEvents.RETRY_ATTEMPT, {
|
|
80
|
-
clientType: 'pg',
|
|
81
|
-
sql,
|
|
82
|
-
params,
|
|
83
|
-
attempt,
|
|
84
|
-
error,
|
|
85
|
-
});
|
|
86
|
-
return retry(error);
|
|
87
|
-
}
|
|
88
|
-
throw error;
|
|
89
|
-
}
|
|
90
|
-
}, retryOptions);
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
};
|
|
4
|
+
const createPgClient = (pool) => ({
|
|
5
|
+
clientType: 'pg',
|
|
6
|
+
query: async (sql, params) => {
|
|
7
|
+
const { rows } = await pool.query(sql, params);
|
|
8
|
+
return rows;
|
|
9
|
+
},
|
|
10
|
+
});
|
|
94
11
|
exports.createPgClient = createPgClient;
|
|
95
12
|
//# 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":";;;AAGO,MAAM,cAAc,GAAG,CAAC,IAAU,EAAmB,EAAE,CAAC,CAAC;IAC9D,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,KAAK,EAAK,GAAW,EAAE,MAAc,EAAc,EAAE;QAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC9C,OAAO,IAAoB,CAAA;IAC7B,CAAC;CACF,CAAC,CAAA;AANW,QAAA,cAAc,kBAMzB"}
|
|
@@ -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,
|
|
3
|
+
export declare const findMany: <T>({ tableName, dbClient, select, where, groupBy, orderBy, limit, offset, }: 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,9 +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
|
|
16
|
-
ids: string[] | number[];
|
|
17
|
-
field?: string;
|
|
18
|
-
permanently?: boolean;
|
|
19
|
-
}) => Promise<void>;
|
|
20
|
-
export declare const joins: <T>({ tableName, dbClient, select, joins, where, groupBy, orderBy, limit, offset, unaccent, }: QueryParams<T>) => Promise<T[]>;
|
|
15
|
+
export declare const joins: <T>({ tableName, dbClient, select, joins, where, groupBy, orderBy, limit, offset, }: QueryParams<T>) => Promise<T[]>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.joins = exports.
|
|
3
|
+
exports.joins = exports.deleteOne = exports.update = exports.insert = exports.findMany = exports.findFirst = void 0;
|
|
4
4
|
const uuid_1 = require("uuid");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
const findFirst = async ({ tableName, dbClient, select, where, groupBy, orderBy, }) => {
|
|
@@ -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, }) => {
|
|
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);
|
|
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);
|
|
@@ -48,9 +48,7 @@ const insert = async ({ tableName, dbClient, data, returning, }) => {
|
|
|
48
48
|
throw new Error('DB client is required');
|
|
49
49
|
if (!data)
|
|
50
50
|
throw new Error('Data object is required');
|
|
51
|
-
const keys =
|
|
52
|
-
? Object.keys(data).map((key) => key === 'authorization' ? `"${key}"` : key)
|
|
53
|
-
: Object.keys(data);
|
|
51
|
+
const keys = Object.keys(data);
|
|
54
52
|
const values = Object.values(data);
|
|
55
53
|
keys.unshift('id');
|
|
56
54
|
const generatedUUID = (0, uuid_1.v4)();
|
|
@@ -120,32 +118,14 @@ const deleteOne = async ({ tableName, dbClient, id, permanently = false, }) => {
|
|
|
120
118
|
: `UPDATE ${tableName} SET status = 'deleted' WHERE id = ${dbClient.clientType === 'pg' ? '$1' : '?'}`, [id]);
|
|
121
119
|
};
|
|
122
120
|
exports.deleteOne = deleteOne;
|
|
123
|
-
const
|
|
124
|
-
if (!tableName)
|
|
125
|
-
throw new Error('Table name is required');
|
|
126
|
-
if (!dbClient)
|
|
127
|
-
throw new Error('DB client is required');
|
|
128
|
-
if (!ids || ids.length === 0)
|
|
129
|
-
throw new Error('IDs are required and cannot be empty');
|
|
130
|
-
if (!field)
|
|
131
|
-
throw new Error('Field is required');
|
|
132
|
-
const placeholders = dbClient.clientType === 'pg'
|
|
133
|
-
? ids.map((_, index) => `$${index + 1}`).join(', ')
|
|
134
|
-
: ids.map(() => '?').join(', ');
|
|
135
|
-
const query = permanently
|
|
136
|
-
? `DELETE FROM ${tableName} WHERE ${field} IN (${placeholders})`
|
|
137
|
-
: `UPDATE ${tableName} SET status = 'deleted' WHERE ${field} IN (${placeholders})`;
|
|
138
|
-
await dbClient.query(query, ids);
|
|
139
|
-
};
|
|
140
|
-
exports.deleteMany = deleteMany;
|
|
141
|
-
const joins = async ({ tableName, dbClient, select, joins, where, groupBy, orderBy, limit, offset, unaccent, }) => {
|
|
121
|
+
const joins = async ({ tableName, dbClient, select, joins, where, groupBy, orderBy, limit, offset, }) => {
|
|
142
122
|
if (!tableName)
|
|
143
123
|
throw new Error('Table name is required');
|
|
144
124
|
if (!dbClient)
|
|
145
125
|
throw new Error('DB client is required');
|
|
146
126
|
const fields = Array.isArray(select) ? select : [];
|
|
147
127
|
const selectFields = (0, utils_1.createSelectFields)(fields, dbClient.clientType);
|
|
148
|
-
const [whereClause, params] = (0, utils_1.createWhereClause)(where, 1, dbClient.clientType
|
|
128
|
+
const [whereClause, params] = (0, utils_1.createWhereClause)(where, 1, dbClient.clientType);
|
|
149
129
|
const groupByClause = (0, utils_1.createGroupByClause)(groupBy);
|
|
150
130
|
const orderByClause = (0, utils_1.createOrderByClause)(orderBy);
|
|
151
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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"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import { IDatabaseClient } from '../db/IDatabaseClient';
|
|
2
|
-
export interface RetryOptions {
|
|
3
|
-
retries?: number;
|
|
4
|
-
factor?: number;
|
|
5
|
-
minTimeout?: number;
|
|
6
|
-
maxTimeout?: number;
|
|
7
|
-
randomize?: boolean;
|
|
8
|
-
}
|
|
9
2
|
export interface QueryExec {
|
|
10
3
|
text: string;
|
|
11
4
|
values?: any[];
|
|
12
5
|
}
|
|
13
6
|
type SimpleValue = string | number | boolean | Date;
|
|
14
7
|
export interface OperatorCondition {
|
|
15
|
-
operator: '
|
|
8
|
+
operator: 'LIKE' | '=' | '>' | '<' | 'IN' | 'BETWEEN' | '!=' | '<=' | '>=' | 'NOT IN' | 'LIKE' | 'NOT LIKE';
|
|
16
9
|
value: SimpleValue | SimpleValue[];
|
|
17
10
|
}
|
|
18
11
|
export type LogicalOperator = 'OR' | 'AND';
|
|
@@ -21,7 +14,6 @@ interface LogicalCondition<T> {
|
|
|
21
14
|
OR?: Conditions<T>[];
|
|
22
15
|
AND?: Conditions<T>[];
|
|
23
16
|
JOINS?: Conditions<object>;
|
|
24
|
-
notExists?: OperatorCondition;
|
|
25
17
|
}
|
|
26
18
|
export type Conditions<T> = {
|
|
27
19
|
[P in keyof T]?: Condition<T[P]>;
|
|
@@ -42,7 +34,6 @@ export interface QueryParams<T> {
|
|
|
42
34
|
limit?: number;
|
|
43
35
|
offset?: number;
|
|
44
36
|
joins?: JoinClause[];
|
|
45
|
-
unaccent?: boolean;
|
|
46
37
|
}
|
|
47
38
|
interface JoinClause {
|
|
48
39
|
type: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
|
|
@@ -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
|
|
5
|
+
export declare const createWhereClause: <T>(conditions: Conditions<T> | undefined, startIndex: number | undefined, clientType: DBClients) => [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) => {
|
|
29
29
|
let index = startIndex;
|
|
30
30
|
const whereParts = [];
|
|
31
31
|
const values = [];
|
|
@@ -33,44 +33,33 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType, unaccent
|
|
|
33
33
|
if (typeof condition === 'object' && condition !== null) {
|
|
34
34
|
if ('operator' in condition && 'value' in condition) {
|
|
35
35
|
const { operator, value } = condition;
|
|
36
|
-
if (
|
|
37
|
-
whereParts.push(`NOT EXISTS (${value})`);
|
|
38
|
-
}
|
|
39
|
-
else if (operator.includes('NULL')) {
|
|
40
|
-
whereParts.push(`${key} ${operator}`);
|
|
41
|
-
}
|
|
42
|
-
else if (Array.isArray(value)) {
|
|
36
|
+
if (Array.isArray(value)) {
|
|
43
37
|
const placeholders = value
|
|
44
38
|
.map(() => clientType === 'pg'
|
|
45
39
|
? pgPlaceholderGenerator(index++)
|
|
46
40
|
: mysqlPlaceholderGenerator())
|
|
47
41
|
.join(', ');
|
|
48
42
|
if (operator === 'BETWEEN') {
|
|
49
|
-
whereParts.push(
|
|
43
|
+
whereParts.push(clientType === 'pg'
|
|
44
|
+
? `${key} ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
45
|
+
: `${key} ${operator} ${placeholders.replace(', ', ' AND ')}`);
|
|
50
46
|
}
|
|
51
47
|
else if (operator === 'IN') {
|
|
52
|
-
whereParts.push(
|
|
48
|
+
whereParts.push(clientType === 'pg'
|
|
49
|
+
? `${key} ${operator} ${placeholders.replace(', ', ' AND ')}`
|
|
50
|
+
: `${key} ${operator} (${placeholders})`);
|
|
53
51
|
}
|
|
54
52
|
else {
|
|
55
|
-
whereParts.push(
|
|
53
|
+
whereParts.push(clientType === 'pg'
|
|
54
|
+
? `${key} ${operator} (${placeholders})`
|
|
55
|
+
: `${key} ${operator} ${placeholders}`);
|
|
56
56
|
}
|
|
57
57
|
values.push(...value);
|
|
58
58
|
}
|
|
59
59
|
else {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
whereParts.push(`unaccent(${key}::text) ${operator} unaccent(${pgPlaceholderGenerator(index)})`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
whereParts.push(clientType === 'pg'
|
|
70
|
-
? `${key} ${operator} ${pgPlaceholderGenerator(index)}`
|
|
71
|
-
: `${key} ${operator} ${mysqlPlaceholderGenerator()}`);
|
|
72
|
-
}
|
|
73
|
-
index++;
|
|
60
|
+
whereParts.push(clientType === 'pg'
|
|
61
|
+
? `${key} ${operator} ${pgPlaceholderGenerator(index++)}`
|
|
62
|
+
: `${key} ${operator} ${mysqlPlaceholderGenerator()}`);
|
|
74
63
|
values.push(value);
|
|
75
64
|
}
|
|
76
65
|
}
|
|
@@ -87,18 +76,23 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType, unaccent
|
|
|
87
76
|
subCondition !== null) {
|
|
88
77
|
const key = Object.keys(subCondition)[0];
|
|
89
78
|
const condition = subCondition[key];
|
|
90
|
-
// Adiciona o tratamento de unaccent nas condições de JOINS
|
|
91
79
|
processCondition(key, condition);
|
|
92
80
|
return whereParts.pop();
|
|
93
81
|
}
|
|
94
82
|
return '';
|
|
95
83
|
})
|
|
96
84
|
.filter((part) => part);
|
|
97
|
-
whereParts.push(
|
|
85
|
+
whereParts.push(clientType === 'pg'
|
|
86
|
+
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
87
|
+
: `${subWhereParts.join(` ${logicalOperator} `)}`);
|
|
98
88
|
}
|
|
99
89
|
}
|
|
100
90
|
else {
|
|
101
|
-
Object.entries(conditions).forEach(([key, value]) =>
|
|
91
|
+
Object.entries(conditions).forEach(([key, value]) => {
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
93
|
+
// @ts-expect-error
|
|
94
|
+
processCondition(key, value);
|
|
95
|
+
});
|
|
102
96
|
}
|
|
103
97
|
if ('OR' in conditions || 'AND' in conditions) {
|
|
104
98
|
const logicalOperator = conditions.OR ? 'OR' : 'AND';
|
|
@@ -111,15 +105,24 @@ const createWhereClause = (conditions = {}, startIndex = 1, clientType, unaccent
|
|
|
111
105
|
subCondition !== null) {
|
|
112
106
|
const key = Object.keys(subCondition)[0];
|
|
113
107
|
const condition = subCondition[key];
|
|
114
|
-
processCondition(key, condition);
|
|
108
|
+
processCondition(key, condition);
|
|
115
109
|
return whereParts.pop();
|
|
116
110
|
}
|
|
117
111
|
return '';
|
|
118
112
|
})
|
|
119
113
|
.filter((part) => part);
|
|
120
|
-
whereParts.push(
|
|
114
|
+
whereParts.push(clientType === 'pg'
|
|
115
|
+
? `(${subWhereParts.join(` ${logicalOperator} `)})`
|
|
116
|
+
: `${subWhereParts.join(` ${logicalOperator} `)}`);
|
|
121
117
|
}
|
|
122
118
|
}
|
|
119
|
+
else {
|
|
120
|
+
Object.entries(conditions).forEach(([key, value]) => {
|
|
121
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
122
|
+
// @ts-expect-error
|
|
123
|
+
processCondition(key, value);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
123
126
|
const whereClause = whereParts.length > 0 ? ` WHERE ${whereParts.join(' AND ')}` : '';
|
|
124
127
|
return [whereClause, values, index];
|
|
125
128
|
};
|
|
@@ -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/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { IDatabaseClient } from './src/db/IDatabaseClient'
|
|
|
2
2
|
import { DBClients, QueryParams } from './src/default/types'
|
|
3
3
|
|
|
4
4
|
export declare function initDb<T>(config: { type: DBClients; options: T }): void
|
|
5
|
-
export declare function getDbClient(): IDatabaseClient
|
|
5
|
+
export declare function getDbClient(name?: string): IDatabaseClient
|
|
6
6
|
|
|
7
7
|
// Generic Methods
|
|
8
8
|
export declare function findFirst<T>({
|
package/package.json
CHANGED
package/src/db/initDb.ts
CHANGED
|
@@ -6,12 +6,14 @@ import { IDatabaseClient } from './IDatabaseClient'
|
|
|
6
6
|
import { DBClients, RetryOptions } from '../default/types'
|
|
7
7
|
|
|
8
8
|
const dbClients: Record<string, IDatabaseClient> = {}
|
|
9
|
+
const defaultName = 'default'
|
|
9
10
|
|
|
10
11
|
export const initDb = async <T>(config: {
|
|
11
|
-
name
|
|
12
|
+
name?: string
|
|
12
13
|
type: DBClients
|
|
13
14
|
options: T
|
|
14
15
|
retryOptions?: RetryOptions
|
|
16
|
+
installUnaccentExtension?: boolean
|
|
15
17
|
}): Promise<void> => {
|
|
16
18
|
if (!config.type)
|
|
17
19
|
throw new Error('Type is required. Accept values: pg | mysql')
|
|
@@ -21,10 +23,11 @@ export const initDb = async <T>(config: {
|
|
|
21
23
|
if (config.type === 'pg') {
|
|
22
24
|
const poolConfig = config.options as unknown as PoolConfig
|
|
23
25
|
const pool = new Pool(config.options)
|
|
24
|
-
dbClients[config.name] = await createPgClient(
|
|
26
|
+
dbClients[config.name || defaultName] = await createPgClient(
|
|
25
27
|
pool,
|
|
26
28
|
config.retryOptions,
|
|
27
|
-
poolConfig
|
|
29
|
+
poolConfig,
|
|
30
|
+
config.installUnaccentExtension
|
|
28
31
|
)
|
|
29
32
|
|
|
30
33
|
console.log(
|
|
@@ -32,7 +35,10 @@ export const initDb = async <T>(config: {
|
|
|
32
35
|
)
|
|
33
36
|
} else if (config.type === 'mysql') {
|
|
34
37
|
const pool = createMySqlPool(config.options)
|
|
35
|
-
dbClients[config.name] = createMysqlClient(
|
|
38
|
+
dbClients[config.name || defaultName] = createMysqlClient(
|
|
39
|
+
pool,
|
|
40
|
+
config.retryOptions
|
|
41
|
+
)
|
|
36
42
|
|
|
37
43
|
console.info(
|
|
38
44
|
`@starbemtech/star-db-query-builder: Postgres db client "${config.name}" created successfully`
|
|
@@ -42,8 +48,8 @@ export const initDb = async <T>(config: {
|
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
50
|
|
|
45
|
-
export const getDbClient = (name
|
|
46
|
-
const client = dbClients[name]
|
|
51
|
+
export const getDbClient = (name?: string): IDatabaseClient => {
|
|
52
|
+
const client = dbClients[name || defaultName]
|
|
47
53
|
if (!client) {
|
|
48
54
|
throw new Error(`Database client "${name}" is not initialized`)
|
|
49
55
|
}
|
package/src/db/pgClient.ts
CHANGED
|
@@ -45,9 +45,12 @@ async function ensureUnaccentExtension(pool: Pool): Promise<void> {
|
|
|
45
45
|
export const createPgClient = async (
|
|
46
46
|
pool: Pool,
|
|
47
47
|
retryOptions?: RetryOptions,
|
|
48
|
-
poolConfig?: PoolConfig
|
|
48
|
+
poolConfig?: PoolConfig,
|
|
49
|
+
installUnaccentExtension?: boolean
|
|
49
50
|
): Promise<IDatabaseClient> => {
|
|
50
|
-
|
|
51
|
+
if (installUnaccentExtension) {
|
|
52
|
+
await ensureUnaccentExtension(pool)
|
|
53
|
+
}
|
|
51
54
|
|
|
52
55
|
monitor.emit(MonitorEvents.CONNECTION_CREATED, {
|
|
53
56
|
clientType: 'pg',
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from 'stream';
|
|
2
|
-
export declare enum MonitorEvents {
|
|
3
|
-
CONNECTION_CREATED = "connection_created",
|
|
4
|
-
QUERY_START = "query_start",
|
|
5
|
-
QUERY_END = "query_end",
|
|
6
|
-
QUERY_ERROR = "query_error",
|
|
7
|
-
RETRY_ATTEMPT = "retry_attempt"
|
|
8
|
-
}
|
|
9
|
-
export declare const monitor: EventEmitter<[never]>;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.monitor = exports.MonitorEvents = void 0;
|
|
4
|
-
const stream_1 = require("stream");
|
|
5
|
-
var MonitorEvents;
|
|
6
|
-
(function (MonitorEvents) {
|
|
7
|
-
MonitorEvents["CONNECTION_CREATED"] = "connection_created";
|
|
8
|
-
MonitorEvents["QUERY_START"] = "query_start";
|
|
9
|
-
MonitorEvents["QUERY_END"] = "query_end";
|
|
10
|
-
MonitorEvents["QUERY_ERROR"] = "query_error";
|
|
11
|
-
MonitorEvents["RETRY_ATTEMPT"] = "retry_attempt";
|
|
12
|
-
})(MonitorEvents || (exports.MonitorEvents = MonitorEvents = {}));
|
|
13
|
-
exports.monitor = new stream_1.EventEmitter();
|
|
14
|
-
//# sourceMappingURL=monitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../../src/monitor/monitor.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAErC,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,0DAAyC,CAAA;IACzC,4CAA2B,CAAA;IAC3B,wCAAuB,CAAA;IACvB,4CAA2B,CAAA;IAC3B,gDAA+B,CAAA;AACjC,CAAC,EANW,aAAa,6BAAb,aAAa,QAMxB;AAEY,QAAA,OAAO,GAAG,IAAI,qBAAY,EAAE,CAAA"}
|