af-db-ts 1.0.5 → 2.0.2
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/README.md +3 -3
- package/dist/cjs/__tests__/01_node_env.spec.js +7 -0
- package/dist/cjs/__tests__/01_node_env.spec.js.map +1 -0
- package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js +50 -0
- package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js.map +1 -0
- package/dist/cjs/__tests__/global-setup.js +7 -0
- package/dist/cjs/__tests__/global-setup.js.map +1 -0
- package/dist/cjs/__tests__/global-teardown.js +7 -0
- package/dist/cjs/__tests__/global-teardown.js.map +1 -0
- package/dist/cjs/{interfaces.js → src/@types/i-common.js} +1 -1
- package/dist/cjs/src/@types/i-common.js.map +1 -0
- package/dist/cjs/src/@types/i-config.js +3 -0
- package/dist/cjs/src/@types/i-config.js.map +1 -0
- package/dist/cjs/src/@types/i-ms.js +3 -0
- package/dist/cjs/src/@types/i-ms.js.map +1 -0
- package/dist/cjs/src/@types/i-pg.js +24 -0
- package/dist/cjs/src/@types/i-pg.js.map +1 -0
- package/dist/cjs/src/common.js +30 -0
- package/dist/cjs/src/common.js.map +1 -0
- package/dist/cjs/src/index.js +59 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/logger-error.js +10 -0
- package/dist/cjs/src/logger-error.js.map +1 -0
- package/dist/cjs/{get-value-for-sql.js → src/mssql/get-value-for-sql.js} +12 -8
- package/dist/cjs/src/mssql/get-value-for-sql.js.map +1 -0
- package/dist/cjs/{db.js → src/mssql/pool-ms.js} +73 -77
- package/dist/cjs/src/mssql/pool-ms.js.map +1 -0
- package/dist/cjs/src/mssql/query-ms.js +47 -0
- package/dist/cjs/src/mssql/query-ms.js.map +1 -0
- package/dist/cjs/{sql.js → src/mssql/sql.js} +72 -49
- package/dist/cjs/src/mssql/sql.js.map +1 -0
- package/dist/cjs/src/mssql/utils.js.map +1 -0
- package/dist/cjs/src/pg/get-merge-sql.js +50 -0
- package/dist/cjs/src/pg/get-merge-sql.js.map +1 -0
- package/dist/cjs/src/pg/get-update-sql.js +29 -0
- package/dist/cjs/src/pg/get-update-sql.js.map +1 -0
- package/dist/cjs/src/pg/insert.js +93 -0
- package/dist/cjs/src/pg/insert.js.map +1 -0
- package/dist/cjs/src/pg/is-table-or-view-exists.js +21 -0
- package/dist/cjs/src/pg/is-table-or-view-exists.js.map +1 -0
- package/dist/cjs/src/pg/pg-pool.js +52 -0
- package/dist/cjs/src/pg/pg-pool.js.map +1 -0
- package/dist/cjs/src/pg/prepare-value.js +84 -0
- package/dist/cjs/src/pg/prepare-value.js.map +1 -0
- package/dist/cjs/src/pg/query-pg.js +23 -0
- package/dist/cjs/src/pg/query-pg.js.map +1 -0
- package/dist/cjs/src/pg/table-schema.js +169 -0
- package/dist/cjs/src/pg/table-schema.js.map +1 -0
- package/dist/esm/src/@types/i-common.js +2 -0
- package/dist/esm/src/@types/i-common.js.map +1 -0
- package/dist/esm/src/@types/i-config.js +2 -0
- package/dist/esm/src/@types/i-config.js.map +1 -0
- package/dist/esm/src/@types/i-ms.js +2 -0
- package/dist/esm/src/@types/i-ms.js.map +1 -0
- package/dist/esm/src/@types/i-pg.js +21 -0
- package/dist/esm/src/@types/i-pg.js.map +1 -0
- package/dist/esm/src/common.js +25 -0
- package/dist/esm/src/common.js.map +1 -0
- package/dist/esm/src/index.js +15 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/logger-error.js +6 -0
- package/dist/esm/src/logger-error.js.map +1 -0
- package/dist/esm/{get-value-for-sql.js → src/mssql/get-value-for-sql.js} +11 -7
- package/dist/esm/src/mssql/get-value-for-sql.js.map +1 -0
- package/dist/esm/{db.js → src/mssql/pool-ms.js} +35 -62
- package/dist/esm/src/mssql/pool-ms.js.map +1 -0
- package/dist/esm/src/mssql/query-ms.js +20 -0
- package/dist/esm/src/mssql/query-ms.js.map +1 -0
- package/dist/esm/{sql.js → src/mssql/sql.js} +36 -36
- package/dist/esm/src/mssql/sql.js.map +1 -0
- package/dist/esm/src/mssql/utils.js.map +1 -0
- package/dist/esm/src/pg/get-merge-sql.js +46 -0
- package/dist/esm/src/pg/get-merge-sql.js.map +1 -0
- package/dist/esm/src/pg/get-update-sql.js +25 -0
- package/dist/esm/src/pg/get-update-sql.js.map +1 -0
- package/dist/esm/src/pg/insert.js +89 -0
- package/dist/esm/src/pg/insert.js.map +1 -0
- package/dist/esm/src/pg/is-table-or-view-exists.js +17 -0
- package/dist/esm/src/pg/is-table-or-view-exists.js.map +1 -0
- package/dist/esm/src/pg/pg-pool.js +43 -0
- package/dist/esm/src/pg/pg-pool.js.map +1 -0
- package/dist/esm/src/pg/prepare-value.js +79 -0
- package/dist/esm/src/pg/prepare-value.js.map +1 -0
- package/dist/esm/src/pg/query-pg.js +19 -0
- package/dist/esm/src/pg/query-pg.js.map +1 -0
- package/dist/esm/src/pg/table-schema.js +164 -0
- package/dist/esm/src/pg/table-schema.js.map +1 -0
- package/dist/types/src/@types/i-common.d.ts +35 -0
- package/dist/types/src/@types/i-common.d.ts.map +1 -0
- package/dist/types/src/@types/i-config.d.ts +60 -0
- package/dist/types/src/@types/i-config.d.ts.map +1 -0
- package/dist/types/{interfaces.d.ts → src/@types/i-ms.d.ts} +30 -77
- package/dist/types/src/@types/i-ms.d.ts.map +1 -0
- package/dist/types/src/@types/i-pg.d.ts +62 -0
- package/dist/types/src/@types/i-pg.d.ts.map +1 -0
- package/dist/types/src/common.d.ts +6 -0
- package/dist/types/src/common.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +18 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/logger-error.d.ts +7 -0
- package/dist/types/src/logger-error.d.ts.map +1 -0
- package/dist/types/src/mssql/get-value-for-sql.d.ts +11 -0
- package/dist/types/src/mssql/get-value-for-sql.d.ts.map +1 -0
- package/dist/types/{db.d.ts → src/mssql/pool-ms.d.ts} +18 -15
- package/dist/types/src/mssql/pool-ms.d.ts.map +1 -0
- package/dist/types/src/mssql/query-ms.d.ts +3 -0
- package/dist/types/src/mssql/query-ms.d.ts.map +1 -0
- package/dist/types/{sql.d.ts → src/mssql/sql.d.ts} +17 -16
- package/dist/types/src/mssql/sql.d.ts.map +1 -0
- package/dist/types/src/mssql/utils.d.ts.map +1 -0
- package/dist/types/src/pg/get-merge-sql.d.ts +9 -0
- package/dist/types/src/pg/get-merge-sql.d.ts.map +1 -0
- package/dist/types/src/pg/get-update-sql.d.ts +3 -0
- package/dist/types/src/pg/get-update-sql.d.ts.map +1 -0
- package/dist/types/src/pg/insert.d.ts +15 -0
- package/dist/types/src/pg/insert.d.ts.map +1 -0
- package/dist/types/src/pg/is-table-or-view-exists.d.ts +2 -0
- package/dist/types/src/pg/is-table-or-view-exists.d.ts.map +1 -0
- package/dist/types/src/pg/pg-pool.d.ts +6 -0
- package/dist/types/src/pg/pg-pool.d.ts.map +1 -0
- package/dist/types/src/pg/prepare-value.d.ts +7 -0
- package/dist/types/src/pg/prepare-value.d.ts.map +1 -0
- package/dist/types/src/pg/query-pg.d.ts +3 -0
- package/dist/types/src/pg/query-pg.d.ts.map +1 -0
- package/dist/types/src/pg/table-schema.d.ts +12 -0
- package/dist/types/src/pg/table-schema.d.ts.map +1 -0
- package/package.json +21 -24
- package/src/@types/i-common.ts +39 -0
- package/src/@types/i-config.ts +75 -0
- package/src/{interfaces.ts → @types/i-ms.ts} +29 -86
- package/src/@types/i-pg.ts +67 -0
- package/src/common.ts +26 -0
- package/src/index.ts +104 -42
- package/src/logger-error.ts +11 -0
- package/src/{get-value-for-sql.ts → mssql/get-value-for-sql.ts} +15 -9
- package/src/{db.ts → mssql/pool-ms.ts} +40 -71
- package/src/mssql/query-ms.ts +25 -0
- package/src/{sql.ts → mssql/sql.ts} +56 -59
- package/src/pg/get-merge-sql.ts +60 -0
- package/src/pg/get-update-sql.ts +31 -0
- package/src/pg/insert.ts +118 -0
- package/src/pg/is-table-or-view-exists.ts +21 -0
- package/src/pg/pg-pool.ts +49 -0
- package/src/pg/prepare-value.ts +90 -0
- package/src/pg/query-pg.ts +26 -0
- package/src/pg/table-schema.ts +178 -0
- package/dist/cjs/db.js.map +0 -1
- package/dist/cjs/get-value-for-sql.js.map +0 -1
- package/dist/cjs/index.js +0 -21
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/interfaces.js.map +0 -1
- package/dist/cjs/sql.js.map +0 -1
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/db.js.map +0 -1
- package/dist/esm/get-value-for-sql.js.map +0 -1
- package/dist/esm/index.js +0 -4
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/interfaces.js +0 -2
- package/dist/esm/interfaces.js.map +0 -1
- package/dist/esm/sql.js.map +0 -1
- package/dist/esm/utils.js.map +0 -1
- package/dist/types/db.d.ts.map +0 -1
- package/dist/types/get-value-for-sql.d.ts +0 -7
- package/dist/types/get-value-for-sql.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/interfaces.d.ts.map +0 -1
- package/dist/types/sql.d.ts.map +0 -1
- package/dist/types/utils.d.ts.map +0 -1
- /package/dist/cjs/{utils.js → src/mssql/utils.js} +0 -0
- /package/dist/esm/{utils.js → src/mssql/utils.js} +0 -0
- /package/dist/types/{utils.d.ts → src/mssql/utils.d.ts} +0 -0
- /package/src/{utils.ts → mssql/utils.ts} +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.closeAllPgConnectionsPg = exports.closePoolPg = exports.getPoolPg = exports.poolsCachePg = void 0;
|
|
7
|
+
const config_1 = __importDefault(require("config"));
|
|
8
|
+
const pg_1 = require("pg");
|
|
9
|
+
const af_echo_ts_1 = require("af-echo-ts");
|
|
10
|
+
const logger_error_1 = require("../logger-error");
|
|
11
|
+
const pgConfigs = config_1.default.get('db.postgres');
|
|
12
|
+
exports.poolsCachePg = {};
|
|
13
|
+
const getPoolPg = async (connectionId) => {
|
|
14
|
+
if (!exports.poolsCachePg[connectionId]) {
|
|
15
|
+
const poolConfig = { ...pgConfigs.options, ...pgConfigs.dbs[connectionId] };
|
|
16
|
+
const pool = new pg_1.Pool(poolConfig);
|
|
17
|
+
exports.poolsCachePg[connectionId] = pool;
|
|
18
|
+
pool.on('error', (err, client) => {
|
|
19
|
+
client.release(true);
|
|
20
|
+
logger_error_1.logger.error(err);
|
|
21
|
+
});
|
|
22
|
+
pool.on('connect', (client) => {
|
|
23
|
+
const { database, processID } = client;
|
|
24
|
+
af_echo_ts_1.echo.debug(`PG client [${connectionId}] connected! DB: "${database}" / processID: ${processID}`);
|
|
25
|
+
});
|
|
26
|
+
pool.on('remove', (client) => {
|
|
27
|
+
const { database, processID } = client;
|
|
28
|
+
af_echo_ts_1.echo.debug(`PG client [${connectionId}] removed. DB: "${database}" / processID: ${processID}`);
|
|
29
|
+
});
|
|
30
|
+
await pool.connect();
|
|
31
|
+
}
|
|
32
|
+
return exports.poolsCachePg[connectionId];
|
|
33
|
+
};
|
|
34
|
+
exports.getPoolPg = getPoolPg;
|
|
35
|
+
const closePoolPg = async (connectionId) => {
|
|
36
|
+
if (!connectionId) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
const pool = exports.poolsCachePg[connectionId];
|
|
40
|
+
if (!pool) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
const fns = (pool._clients || [])
|
|
44
|
+
.filter((client) => (client === null || client === void 0 ? void 0 : client._connected) && typeof (client === null || client === void 0 ? void 0 : client.end) === 'function')
|
|
45
|
+
.map((client) => client.end());
|
|
46
|
+
await Promise.all(fns);
|
|
47
|
+
return true;
|
|
48
|
+
};
|
|
49
|
+
exports.closePoolPg = closePoolPg;
|
|
50
|
+
const closeAllPgConnectionsPg = async () => Promise.all(Object.keys(exports.poolsCachePg).map((connectionId) => (0, exports.closePoolPg)(connectionId)));
|
|
51
|
+
exports.closeAllPgConnectionsPg = closeAllPgConnectionsPg;
|
|
52
|
+
//# sourceMappingURL=pg-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pg-pool.js","sourceRoot":"","sources":["../../../../src/pg/pg-pool.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,2BAAkD;AAClD,2CAAkC;AAClC,kDAAyC;AAIzC,MAAM,SAAS,GAAG,gBAAM,CAAC,GAAG,CAAyC,aAAa,CAAC,CAAC;AAEvE,QAAA,YAAY,GAAuB,EAAE,CAAC;AAE5C,MAAM,SAAS,GAAG,KAAK,EAAE,YAAoB,EAAoB,EAAE;IACxE,IAAI,CAAC,oBAAY,CAAC,YAAY,CAAC,EAAE;QAC/B,MAAM,UAAU,GAAe,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,GAAG,IAAI,SAAI,CAAC,UAAU,CAAY,CAAC;QAC7C,oBAAY,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,MAAkB,EAAE,EAAE;YAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,qBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAkB,EAAE,EAAE;YACxC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAkC,CAAC;YACnE,iBAAI,CAAC,KAAK,CAAC,cAAc,YAAY,qBAAqB,QAAQ,kBAAkB,SAAS,EAAE,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAkB,EAAE,EAAE;YACvC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAkC,CAAC;YACnE,iBAAI,CAAC,KAAK,CAAC,cAAc,YAAY,mBAAmB,QAAQ,kBAAkB,SAAS,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;KACtB;IACD,OAAO,oBAAY,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC,CAAC;AApBW,QAAA,SAAS,aAoBpB;AAEK,MAAM,WAAW,GAAG,KAAK,EAAE,YAAoB,EAAoB,EAAE;IAC1E,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,KAAK,CAAC;KACd;IACD,MAAM,IAAI,GAAG,oBAAY,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAC;KACb;IACD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC9B,MAAM,CAAC,CAAC,MAAqB,EAAE,EAAE,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,KAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAA,KAAK,UAAU,CAAC;SAC1F,GAAG,CAAC,CAAC,MAAqB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAbW,QAAA,WAAW,eAatB;AAEK,MAAM,uBAAuB,GAAG,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAY,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAA9H,QAAA,uBAAuB,2BAAuG"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prepareSqlValuePg = exports.prepareSqlStringPg = void 0;
|
|
4
|
+
// noinspection SqlResolve
|
|
5
|
+
const luxon_1 = require("luxon");
|
|
6
|
+
const i_pg_1 = require("../@types/i-pg");
|
|
7
|
+
const NULL = 'null';
|
|
8
|
+
const utc$ = (millis) => luxon_1.DateTime.fromMillis(millis == null ? Date.now() : millis).setZone('UTC');
|
|
9
|
+
const prepareSqlStringPg = (s) => {
|
|
10
|
+
s = String(s);
|
|
11
|
+
if (/['\\]|\${2,}/.test(s)) {
|
|
12
|
+
return `$s$${s}$s$`;
|
|
13
|
+
}
|
|
14
|
+
return `'${s}'`;
|
|
15
|
+
};
|
|
16
|
+
exports.prepareSqlStringPg = prepareSqlStringPg;
|
|
17
|
+
const prepareSqlValuePg = (arg) => {
|
|
18
|
+
const { value, fieldDef } = arg;
|
|
19
|
+
if (value == null && fieldDef.isNullable) {
|
|
20
|
+
return NULL;
|
|
21
|
+
}
|
|
22
|
+
switch (fieldDef.dataType) {
|
|
23
|
+
case i_pg_1.EDataTypePg.boolean: {
|
|
24
|
+
return value ? 'true' : 'false';
|
|
25
|
+
}
|
|
26
|
+
case i_pg_1.EDataTypePg.bigint: {
|
|
27
|
+
return `'${value}'`;
|
|
28
|
+
}
|
|
29
|
+
case i_pg_1.EDataTypePg.numeric:
|
|
30
|
+
case i_pg_1.EDataTypePg.real: {
|
|
31
|
+
const v = Number(value);
|
|
32
|
+
return Number.isNaN(v) ? NULL : v;
|
|
33
|
+
}
|
|
34
|
+
case i_pg_1.EDataTypePg.integer:
|
|
35
|
+
case i_pg_1.EDataTypePg.smallint: {
|
|
36
|
+
const v = Number(value);
|
|
37
|
+
return Number.isNaN(v) ? NULL : Math.floor(v);
|
|
38
|
+
}
|
|
39
|
+
case i_pg_1.EDataTypePg.text:
|
|
40
|
+
case i_pg_1.EDataTypePg.character:
|
|
41
|
+
case i_pg_1.EDataTypePg.varchar:
|
|
42
|
+
case i_pg_1.EDataTypePg.uuid: {
|
|
43
|
+
return (0, exports.prepareSqlStringPg)(value);
|
|
44
|
+
}
|
|
45
|
+
case i_pg_1.EDataTypePg.json:
|
|
46
|
+
case i_pg_1.EDataTypePg.jsonb: {
|
|
47
|
+
return (0, exports.prepareSqlStringPg)(JSON.stringify(value));
|
|
48
|
+
}
|
|
49
|
+
case i_pg_1.EDataTypePg.date:
|
|
50
|
+
case i_pg_1.EDataTypePg.timestamp:
|
|
51
|
+
case i_pg_1.EDataTypePg.timestamptz: {
|
|
52
|
+
let v = value;
|
|
53
|
+
if (value instanceof Date) {
|
|
54
|
+
v = +value;
|
|
55
|
+
}
|
|
56
|
+
else if (value instanceof luxon_1.DateTime) {
|
|
57
|
+
v = value.toMillis();
|
|
58
|
+
}
|
|
59
|
+
else if (typeof value === 'string') {
|
|
60
|
+
v = luxon_1.DateTime.fromISO(value).toMillis();
|
|
61
|
+
}
|
|
62
|
+
switch (fieldDef.dataType) {
|
|
63
|
+
case i_pg_1.EDataTypePg.date: {
|
|
64
|
+
return `'${typeof v === 'number' ? utc$(v).toISODate() : v}'::date`;
|
|
65
|
+
}
|
|
66
|
+
case i_pg_1.EDataTypePg.timestamp:
|
|
67
|
+
case i_pg_1.EDataTypePg.timestamptz: {
|
|
68
|
+
return `'${typeof v === 'number' ? utc$(v).toISO() : v}'::timestamptz`;
|
|
69
|
+
}
|
|
70
|
+
default:
|
|
71
|
+
return `'${v}'`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
case i_pg_1.EDataTypePg.USER_DEFINED:
|
|
75
|
+
return (0, exports.prepareSqlStringPg)(value);
|
|
76
|
+
case i_pg_1.EDataTypePg.ARRAY: {
|
|
77
|
+
return (0, exports.prepareSqlStringPg)(JSON.stringify(value));
|
|
78
|
+
}
|
|
79
|
+
default:
|
|
80
|
+
return (0, exports.prepareSqlStringPg)(value);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
exports.prepareSqlValuePg = prepareSqlValuePg;
|
|
84
|
+
//# sourceMappingURL=prepare-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-value.js","sourceRoot":"","sources":["../../../../src/pg/prepare-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queryPg = void 0;
|
|
4
|
+
const pg_pool_1 = require("./pg-pool");
|
|
5
|
+
const common_1 = require("../common");
|
|
6
|
+
const queryPg = async (connectionId, sqlText, sqlValues, throwError, prefix) => {
|
|
7
|
+
const pool = await (0, pg_pool_1.getPoolPg)(connectionId);
|
|
8
|
+
let res;
|
|
9
|
+
try {
|
|
10
|
+
if (Array.isArray(sqlValues)) {
|
|
11
|
+
res = await pool.query(sqlText, sqlValues);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
res = await pool.query(sqlText);
|
|
15
|
+
}
|
|
16
|
+
return res;
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
(0, common_1.logSqlError)(err, !throwError, sqlText, prefix);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
exports.queryPg = queryPg;
|
|
23
|
+
//# sourceMappingURL=query-pg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-pg.js","sourceRoot":"","sources":["../../../../src/pg/query-pg.ts"],"names":[],"mappings":";;;AACA,uCAAsC;AACtC,sCAAwC;AAGjC,MAAM,OAAO,GAAG,KAAK,EAC1B,YAAoB,EACpB,OAAe,EACf,SAAiB,EACjB,UAAoB,EACpB,MAAe,EAEqB,EAAE;IACtC,MAAM,IAAI,GAAY,MAAM,IAAA,mBAAS,EAAC,YAAY,CAAC,CAAC;IACpD,IAAI,GAAgB,CAAC;IACrB,IAAI;QACF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC5B,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SAC5C;aAAM;YACL,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACjC;QACD,OAAO,GAAG,CAAC;KACZ;IAAC,OAAO,GAAG,EAAE;QACZ,IAAA,oBAAW,EAAC,GAAG,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAChD;AACH,CAAC,CAAC;AApBW,QAAA,OAAO,WAoBlB"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFieldsAndValuesPg = exports.getTableSchemaPg = void 0;
|
|
4
|
+
const query_pg_1 = require("./query-pg");
|
|
5
|
+
const logger_error_1 = require("../logger-error");
|
|
6
|
+
const common_1 = require("../common");
|
|
7
|
+
const i_pg_1 = require("../@types/i-pg");
|
|
8
|
+
const tableSchemaHash = {};
|
|
9
|
+
const getRecordSchemaMs = async (connectionId, schemaAndTable) => {
|
|
10
|
+
const [schema, table] = schemaAndTable.split('.');
|
|
11
|
+
const sql = `SELECT column_name,
|
|
12
|
+
column_default,
|
|
13
|
+
is_nullable,
|
|
14
|
+
data_type,
|
|
15
|
+
character_maximum_length,
|
|
16
|
+
numeric_precision,
|
|
17
|
+
numeric_precision_radix,
|
|
18
|
+
datetime_precision,
|
|
19
|
+
udt_name,
|
|
20
|
+
is_generated
|
|
21
|
+
FROM information_schema.columns
|
|
22
|
+
WHERE table_name = '${table}'
|
|
23
|
+
AND table_schema = '${schema}';`;
|
|
24
|
+
const result = await (0, query_pg_1.queryPg)(connectionId, sql);
|
|
25
|
+
const fields = (result === null || result === void 0 ? void 0 : result.rows) || [];
|
|
26
|
+
const recordSchema = {};
|
|
27
|
+
fields.forEach((fieldDef) => {
|
|
28
|
+
const fieldSchema = {
|
|
29
|
+
name: fieldDef.column_name,
|
|
30
|
+
isNullable: /yes/i.test(fieldDef.is_nullable || ''),
|
|
31
|
+
columnDefault: fieldDef.column_default,
|
|
32
|
+
hasDefault: !!fieldDef.column_default,
|
|
33
|
+
dataType: fieldDef.data_type,
|
|
34
|
+
maxLen: fieldDef.character_maximum_length,
|
|
35
|
+
precision: fieldDef.numeric_precision,
|
|
36
|
+
radix: fieldDef.numeric_precision_radix,
|
|
37
|
+
dtPrecision: fieldDef.datetime_precision,
|
|
38
|
+
udtName: fieldDef.udt_name,
|
|
39
|
+
};
|
|
40
|
+
if (fieldDef.is_generated === 'NEVER') {
|
|
41
|
+
Object.entries(fieldSchema).forEach(([prop, value]) => {
|
|
42
|
+
if (value == null) {
|
|
43
|
+
delete fieldSchema[prop];
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
recordSchema[fieldDef.column_name] = fieldSchema;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return recordSchema;
|
|
50
|
+
};
|
|
51
|
+
const getPrimaryKey = async (connectionId, schemaAndTable) => {
|
|
52
|
+
const result = await (0, query_pg_1.queryPg)(connectionId, `SELECT a.attname as f
|
|
53
|
+
FROM pg_index i
|
|
54
|
+
JOIN pg_attribute a
|
|
55
|
+
ON a.attrelid = i.indrelid AND a.attnum = ANY (i.indkey)
|
|
56
|
+
WHERE i.indrelid = '${schemaAndTable}'::regclass
|
|
57
|
+
AND i.indisprimary;`);
|
|
58
|
+
return ((result === null || result === void 0 ? void 0 : result.rows) || []).map(({ f }) => f);
|
|
59
|
+
};
|
|
60
|
+
const getUniqueConstraints = async (connectionId, schemaAndTable) => {
|
|
61
|
+
var _a;
|
|
62
|
+
const [schema, table] = schemaAndTable.split('.');
|
|
63
|
+
const result = await (0, query_pg_1.queryPg)(connectionId, `
|
|
64
|
+
SELECT UI.cn as cn, UI.cols as cols, CASE WHEN UC.cn IS NULL THEN 'UX' ELSE 'UC' END AS typ
|
|
65
|
+
FROM (SELECT c.relname as cn, array_to_json(array_agg(a.attname ORDER BY a.attname)) AS cols
|
|
66
|
+
FROM pg_index i
|
|
67
|
+
JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY (i.indkey)
|
|
68
|
+
JOIN pg_class AS c ON c.oid = i.indexrelid
|
|
69
|
+
WHERE i.indrelid = '${schemaAndTable}'::regclass
|
|
70
|
+
AND i.indisunique
|
|
71
|
+
AND NOT i.indisprimary
|
|
72
|
+
GROUP BY c.relname) AS UI
|
|
73
|
+
LEFT OUTER JOIN (SELECT ccu.constraint_name AS cn
|
|
74
|
+
FROM information_schema.table_constraints tc
|
|
75
|
+
JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_name)
|
|
76
|
+
JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema
|
|
77
|
+
AND tc.table_name = c.table_name AND ccu.column_name = c.column_name
|
|
78
|
+
WHERE tc.table_schema = '${schema}'
|
|
79
|
+
AND tc.table_name = '${table}'
|
|
80
|
+
AND constraint_type = 'UNIQUE'
|
|
81
|
+
GROUP BY ccu.constraint_name) AS UC ON UC.cn = UI.cn
|
|
82
|
+
ORDER BY CASE WHEN UC.cn IS NULL THEN 2 ELSE 1 END
|
|
83
|
+
`);
|
|
84
|
+
const uc = {};
|
|
85
|
+
(_a = result === null || result === void 0 ? void 0 : result.rows) === null || _a === void 0 ? void 0 : _a.forEach(({ cn, cols }) => {
|
|
86
|
+
uc[cn] = cols;
|
|
87
|
+
});
|
|
88
|
+
return uc;
|
|
89
|
+
};
|
|
90
|
+
const getSerials = async (connectionId, schemaAndTable) => {
|
|
91
|
+
var _a, _b;
|
|
92
|
+
const result = await (0, query_pg_1.queryPg)(connectionId, `
|
|
93
|
+
WITH fq_objects AS (SELECT c.oid,
|
|
94
|
+
n.nspname || '.' || c.relname AS fqname,
|
|
95
|
+
c.relkind,
|
|
96
|
+
c.relname AS relation
|
|
97
|
+
FROM pg_class c
|
|
98
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace),
|
|
99
|
+
sequences AS (SELECT oid, fqname FROM fq_objects WHERE relkind = 'S'),
|
|
100
|
+
tables AS (SELECT oid, fqname FROM fq_objects WHERE relkind = 'r')
|
|
101
|
+
SELECT t.fqname AS tbl, array_to_json(array_agg(a.attname ORDER BY a.attname)) AS cols
|
|
102
|
+
FROM pg_depend d
|
|
103
|
+
JOIN sequences s ON s.oid = d.objid
|
|
104
|
+
JOIN tables t ON t.oid = d.refobjid
|
|
105
|
+
JOIN pg_attribute a ON a.attrelid = d.refobjid and a.attnum = d.refobjsubid
|
|
106
|
+
WHERE d.deptype = 'a'
|
|
107
|
+
AND t.fqname = '${schemaAndTable}'
|
|
108
|
+
GROUP BY t.fqname
|
|
109
|
+
`);
|
|
110
|
+
return ((_b = (_a = result === null || result === void 0 ? void 0 : result.rows) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.cols) || [];
|
|
111
|
+
};
|
|
112
|
+
const getTableSchemaPg = async (connectionId, schemaAndTable) => {
|
|
113
|
+
let tableSchema = tableSchemaHash[schemaAndTable];
|
|
114
|
+
if (tableSchema) {
|
|
115
|
+
return tableSchema;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
const recordSchema = await getRecordSchemaMs(connectionId, schemaAndTable);
|
|
119
|
+
const pk = await getPrimaryKey(connectionId, schemaAndTable);
|
|
120
|
+
const uc = await getUniqueConstraints(connectionId, schemaAndTable);
|
|
121
|
+
const serials = await getSerials(connectionId, schemaAndTable);
|
|
122
|
+
const defaults = {};
|
|
123
|
+
Object.values(recordSchema).forEach((fieldDef) => {
|
|
124
|
+
const { name: f, columnDefault, hasDefault } = fieldDef;
|
|
125
|
+
if (hasDefault && !serials.includes(f)) {
|
|
126
|
+
defaults[f] = `${columnDefault}`;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
const fieldsList = Object.keys(recordSchema);
|
|
130
|
+
const fieldsWoSerials = fieldsList.filter((fieldName) => !serials.includes(fieldName));
|
|
131
|
+
tableSchema = {
|
|
132
|
+
recordSchema, pk, uc, defaults, serials, fieldsList, fieldsWoSerials,
|
|
133
|
+
};
|
|
134
|
+
tableSchemaHash[schemaAndTable] = tableSchema;
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
logger_error_1.logger.error(`Failed to get schema for table ${schemaAndTable}`);
|
|
138
|
+
logger_error_1.logger.error(err);
|
|
139
|
+
await (0, common_1.graceExit)();
|
|
140
|
+
}
|
|
141
|
+
return tableSchema;
|
|
142
|
+
};
|
|
143
|
+
exports.getTableSchemaPg = getTableSchemaPg;
|
|
144
|
+
const getFieldsAndValuesPg = (record, recordSchema) => {
|
|
145
|
+
const recordNormalized = {};
|
|
146
|
+
Object.entries(record).forEach(([f, v]) => {
|
|
147
|
+
const { dataType } = recordSchema[f] || {};
|
|
148
|
+
if (!dataType) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if ((dataType === i_pg_1.EDataTypePg.jsonb || dataType === i_pg_1.EDataTypePg.json) && Array.isArray(v)) {
|
|
152
|
+
recordNormalized[f] = JSON.stringify(v);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
recordNormalized[f] = v;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
const fields = Object.keys(recordNormalized);
|
|
159
|
+
const fieldsList = fields.join(', ');
|
|
160
|
+
const values = Object.values(recordNormalized);
|
|
161
|
+
const positionsList = fields.map((__, i) => `$${++i}`).join(', ');
|
|
162
|
+
const setFields = fields.map((f, i) => `${f} = $${++i}`).join(', ');
|
|
163
|
+
const upsertFields = fields.map((f) => `${f} = EXCLUDED.${f}`).join(',\n');
|
|
164
|
+
return {
|
|
165
|
+
fields, fieldsList, values, positionsList, setFields, upsertFields,
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
exports.getFieldsAndValuesPg = getFieldsAndValuesPg;
|
|
169
|
+
//# sourceMappingURL=table-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-schema.js","sourceRoot":"","sources":["../../../../src/pg/table-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-common.js","sourceRoot":"","sources":["../../../../src/@types/i-common.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-config.js","sourceRoot":"","sources":["../../../../src/@types/i-config.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-ms.js","sourceRoot":"","sources":["../../../../src/@types/i-ms.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export var EDataTypePg;
|
|
2
|
+
(function (EDataTypePg) {
|
|
3
|
+
EDataTypePg["USER_DEFINED"] = "USER-DEFINED";
|
|
4
|
+
EDataTypePg["bigint"] = "bigint";
|
|
5
|
+
EDataTypePg["boolean"] = "boolean";
|
|
6
|
+
EDataTypePg["character"] = "character";
|
|
7
|
+
EDataTypePg["varchar"] = "character varying";
|
|
8
|
+
EDataTypePg["date"] = "date";
|
|
9
|
+
EDataTypePg["integer"] = "integer";
|
|
10
|
+
EDataTypePg["json"] = "json";
|
|
11
|
+
EDataTypePg["jsonb"] = "jsonb";
|
|
12
|
+
EDataTypePg["numeric"] = "numeric";
|
|
13
|
+
EDataTypePg["real"] = "real";
|
|
14
|
+
EDataTypePg["smallint"] = "smallint";
|
|
15
|
+
EDataTypePg["text"] = "text";
|
|
16
|
+
EDataTypePg["timestamptz"] = "timestamp with time zone";
|
|
17
|
+
EDataTypePg["timestamp"] = "timestamp without time zone";
|
|
18
|
+
EDataTypePg["uuid"] = "uuid";
|
|
19
|
+
EDataTypePg["ARRAY"] = "ARRAY";
|
|
20
|
+
})(EDataTypePg || (EDataTypePg = {}));
|
|
21
|
+
//# sourceMappingURL=i-pg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-pg.js","sourceRoot":"","sources":["../../../../src/@types/i-pg.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,WAkBX;AAlBD,WAAY,WAAW;IACrB,4CAA+B,CAAA;IAC/B,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;IACzB,4CAA+B,CAAA;IAC/B,4BAAe,CAAA;IACf,kCAAqB,CAAA;IACrB,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,kCAAqB,CAAA;IACrB,4BAAe,CAAA;IACf,oCAAuB,CAAA;IACvB,4BAAe,CAAA;IACf,uDAA0C,CAAA;IAC1C,wDAA2C,CAAA;IAC3C,4BAAe,CAAA;IACf,8BAAiB,CAAA;AACnB,CAAC,EAlBW,WAAW,KAAX,WAAW,QAkBtB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { magenta } from 'af-color';
|
|
2
|
+
import { closeAllPgConnectionsPg } from './pg/pg-pool';
|
|
3
|
+
import { closeAllDbConnectionsMs } from './mssql/pool-ms';
|
|
4
|
+
import { logger } from './logger-error';
|
|
5
|
+
export const logSqlError = (err, throwError, textSQL, prefix) => {
|
|
6
|
+
if (prefix) {
|
|
7
|
+
logger.error(prefix);
|
|
8
|
+
}
|
|
9
|
+
if (textSQL) {
|
|
10
|
+
logger.error(`SQL Error:\n${magenta}${textSQL}`);
|
|
11
|
+
}
|
|
12
|
+
logger.error(err);
|
|
13
|
+
if (throwError) {
|
|
14
|
+
throw err;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Закрывает все соединения с БД и завершает работу скрипта
|
|
19
|
+
*/
|
|
20
|
+
export const graceExit = async () => {
|
|
21
|
+
await closeAllPgConnectionsPg();
|
|
22
|
+
await closeAllDbConnectionsMs();
|
|
23
|
+
process.exit(0);
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAgB,EAAE,UAAoB,EAAE,OAAgB,EAAE,MAAe,EAAE,EAAE;IACvG,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACtB;IACD,IAAI,OAAO,EAAE;QACX,MAAM,CAAC,KAAK,CAAC,eAAe,OAAO,GAAG,OAAO,EAAE,CAAC,CAAC;KAClD;IACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,EAAE;QACd,MAAM,GAAG,CAAC;KACX;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;IAClC,MAAM,uBAAuB,EAAE,CAAC;IAChC,MAAM,uBAAuB,EAAE,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { EDataTypePg, } from './@types/i-pg';
|
|
2
|
+
export { getValueForSqlMs, binToHexString, getValueForSQL, } from './mssql/get-value-for-sql';
|
|
3
|
+
export { getPoolConnectionMs, closeAllDbConnectionsMs, closeDbConnectionsAndExitMs, closeDbConnectionsMs, getDbConfigMs, getPoolMs, poolsCacheMs, closeAllDbConnections, closeDbConnectionsAndExit, } from './mssql/pool-ms';
|
|
4
|
+
export { queryMs } from './mssql/query-ms';
|
|
5
|
+
export { prepareSqlStringMs, correctRecordSchemaMs, getRecordSchemaMs, wrapTransactionMs, serializeMs, getRecordValuesForSqlMs, getSqlSetExpressionMs, getSqlValuesExpressionMs, prepareRecordForSqlMs, prepareDataForSqlMs, getRowsAffectedMs, sql, } from './mssql/sql';
|
|
6
|
+
export { mssqlEscape } from './mssql/utils';
|
|
7
|
+
export { getMergeSqlPg } from './pg/get-merge-sql';
|
|
8
|
+
export { getUpdateSqlPg } from './pg/get-update-sql';
|
|
9
|
+
export { insertPg, EUpdateLevel } from './pg/insert';
|
|
10
|
+
export { isTableOrViewExistsPg } from './pg/is-table-or-view-exists';
|
|
11
|
+
export { poolsCachePg, getPoolPg, closePoolPg, closeAllPgConnectionsPg, } from './pg/pg-pool';
|
|
12
|
+
export { prepareSqlStringPg, prepareSqlValuePg } from './pg/prepare-value';
|
|
13
|
+
export { queryPg } from './pg/query-pg';
|
|
14
|
+
export { getFieldsAndValuesPg, getTableSchemaPg } from './pg/table-schema';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AA0CA,OAAO,EAIL,WAAW,GAKZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACpB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,GAAG,GACJ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-error.js","sourceRoot":"","sources":["../../../src/logger-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMlC,MAAM,CAAC,MAAM,MAAM,GAAc,IAAiB,CAAC;AAEnD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAY,EAAE,EAAE;IACxC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DateTime } from 'luxon';
|
|
2
2
|
import { getBool, rn } from 'af-tools-ts';
|
|
3
|
-
import {
|
|
3
|
+
import { prepareSqlStringMs, sql } from './sql';
|
|
4
4
|
import { mssqlEscape, q } from './utils';
|
|
5
5
|
export const binToHexString = (value) => (value ? `0x${value.toString(16).toUpperCase()}` : null);
|
|
6
6
|
const getTypeOfDateInput = (v) => {
|
|
@@ -147,7 +147,7 @@ const array = (args) => {
|
|
|
147
147
|
/**
|
|
148
148
|
* Возвращает значение, готовое для использования в строке SQL запроса
|
|
149
149
|
*/
|
|
150
|
-
export const
|
|
150
|
+
export const getValueForSqlMs = (args) => {
|
|
151
151
|
let { value, fieldSchema, escapeOnlySingleQuotes } = args;
|
|
152
152
|
const { dateTimeOptions, needValidate } = args;
|
|
153
153
|
if (typeof fieldSchema === 'string') {
|
|
@@ -173,7 +173,7 @@ export const getValueForSQL = (args) => {
|
|
|
173
173
|
if (Array.isArray(value) || typeof value === 'object') {
|
|
174
174
|
value = JSON.stringify(value);
|
|
175
175
|
}
|
|
176
|
-
return
|
|
176
|
+
return prepareSqlStringMs({ ...prepareSqlStringArgs, value });
|
|
177
177
|
case 'string':
|
|
178
178
|
case sql.Char:
|
|
179
179
|
case sql.NChar:
|
|
@@ -182,7 +182,7 @@ export const getValueForSQL = (args) => {
|
|
|
182
182
|
case sql.VarChar:
|
|
183
183
|
case sql.NVarChar:
|
|
184
184
|
case sql.Xml:
|
|
185
|
-
return
|
|
185
|
+
return prepareSqlStringMs(prepareSqlStringArgs);
|
|
186
186
|
case 'uid':
|
|
187
187
|
case 'uuid':
|
|
188
188
|
case 'uniqueIdentifier':
|
|
@@ -193,7 +193,7 @@ export const getValueForSQL = (args) => {
|
|
|
193
193
|
else {
|
|
194
194
|
value = value.substring(0, 36).toUpperCase();
|
|
195
195
|
}
|
|
196
|
-
return
|
|
196
|
+
return prepareSqlStringMs({ ...prepareSqlStringArgs, value, length: 0 });
|
|
197
197
|
case 'datetime':
|
|
198
198
|
case 'date':
|
|
199
199
|
case 'time':
|
|
@@ -255,14 +255,18 @@ export const getValueForSQL = (args) => {
|
|
|
255
255
|
case sql.Geography:
|
|
256
256
|
case sql.Geometry:
|
|
257
257
|
case sql.Variant:
|
|
258
|
-
return
|
|
258
|
+
return prepareSqlStringMs(prepareSqlStringArgs);
|
|
259
259
|
case 'array': {
|
|
260
260
|
return array({
|
|
261
261
|
value, defaultValue, type, arrayType, fieldName, nullable, needValidate,
|
|
262
262
|
});
|
|
263
263
|
}
|
|
264
264
|
default:
|
|
265
|
-
return
|
|
265
|
+
return prepareSqlStringMs(prepareSqlStringArgs);
|
|
266
266
|
}
|
|
267
267
|
};
|
|
268
|
+
/**
|
|
269
|
+
* @deprecated since version 2.0.0
|
|
270
|
+
*/
|
|
271
|
+
export const getValueForSQL = getValueForSqlMs;
|
|
268
272
|
//# sourceMappingURL=get-value-for-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-value-for-sql.js","sourceRoot":"","sources":["../../../../src/mssql/get-value-for-sql.ts"],"names":[],"mappings":"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"}
|