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,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.queryMs = void 0;
|
|
27
|
+
const sql = __importStar(require("mssql"));
|
|
28
|
+
const common_1 = require("../common");
|
|
29
|
+
const pool_ms_1 = require("./pool-ms");
|
|
30
|
+
const queryMs = async (connectionId, sqlText, throwError, prefix) => {
|
|
31
|
+
const pool = await (0, pool_ms_1.getPoolMs)(connectionId, throwError);
|
|
32
|
+
if (!(pool === null || pool === void 0 ? void 0 : pool.connected) && !(pool === null || pool === void 0 ? void 0 : pool.connecting)) {
|
|
33
|
+
await (0, pool_ms_1.closeDbConnectionsMs)(connectionId);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const request = new sql.Request(pool);
|
|
37
|
+
let res;
|
|
38
|
+
try {
|
|
39
|
+
res = await request.query(sqlText);
|
|
40
|
+
return res;
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
(0, common_1.logSqlError)(err, !throwError, sqlText, prefix);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.queryMs = queryMs;
|
|
47
|
+
//# sourceMappingURL=query-ms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-ms.js","sourceRoot":"","sources":["../../../../src/mssql/query-ms.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA6B;AAC7B,sCAAwC;AACxC,uCAA4D;AAErD,MAAM,OAAO,GAAG,KAAK,EAC1B,YAAoB,EACpB,OAAe,EACf,UAAoB,EACpB,MAAe,EACoB,EAAE;IACrC,MAAM,IAAI,GAAG,MAAM,IAAA,mBAAS,EAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAA,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAA,EAAE;QACzC,MAAM,IAAA,8BAAoB,EAAC,YAAY,CAAC,CAAC;QACzC,OAAO;KACR;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,GAAiB,CAAC;IACtB,IAAI;QACF,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,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;AAnBW,QAAA,OAAO,WAmBlB"}
|
|
@@ -1,19 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
26
|
+
exports.getRowsAffectedMs = exports.getSqlValuesExpressionMs = exports.getSqlSetExpressionMs = exports.serializeMs = exports.wrapTransactionMs = exports.getRecordSchemaMs = exports.getRecordValuesForSqlMs = exports.prepareDataForSqlMs = exports.prepareRecordForSqlMs = exports.correctRecordSchemaMs = exports.prepareSqlStringMs = exports.sql = void 0;
|
|
4
27
|
// noinspection SqlResolve
|
|
5
|
-
const sql = require("mssql");
|
|
28
|
+
const sql = __importStar(require("mssql"));
|
|
6
29
|
exports.sql = sql;
|
|
7
|
-
const _ = require("lodash");
|
|
8
30
|
const af_echo_ts_1 = require("af-echo-ts");
|
|
9
|
-
const cache = require("memory-cache");
|
|
10
|
-
const
|
|
31
|
+
const cache = __importStar(require("memory-cache"));
|
|
32
|
+
const af_tools_ts_1 = require("af-tools-ts");
|
|
33
|
+
const db = __importStar(require("./pool-ms"));
|
|
11
34
|
const utils_1 = require("./utils");
|
|
12
35
|
const get_value_for_sql_1 = require("./get-value-for-sql");
|
|
13
36
|
/**
|
|
14
37
|
* Подготовка строки для передачи в SQL
|
|
15
38
|
*/
|
|
16
|
-
const
|
|
39
|
+
const prepareSqlStringMs = (args) => {
|
|
17
40
|
const { value, defaultValue = null, length = 0, nullable = false, noQuotes = false, escapeOnlySingleQuotes = false } = args;
|
|
18
41
|
if (value == null) {
|
|
19
42
|
if (nullable) {
|
|
@@ -36,7 +59,7 @@ const prepareSqlString = (args) => {
|
|
|
36
59
|
}
|
|
37
60
|
return (0, utils_1.q)(val, noQuotes);
|
|
38
61
|
};
|
|
39
|
-
exports.
|
|
62
|
+
exports.prepareSqlStringMs = prepareSqlStringMs;
|
|
40
63
|
const FIELD_SCHEMA_PROPS = ['index', 'name', 'length', 'type', 'scale', 'precision', 'nullable', 'caseSensitive',
|
|
41
64
|
'identity', 'mergeIdentity', 'readOnly', 'inputDateFormat', 'defaultValue'];
|
|
42
65
|
/**
|
|
@@ -44,10 +67,10 @@ const FIELD_SCHEMA_PROPS = ['index', 'name', 'length', 'type', 'scale', 'precisi
|
|
|
44
67
|
* Поля с суффиксом _json получают тип "json". Остальные корректировки берутся из fieldTypeCorrection
|
|
45
68
|
* Например, для полей типа datetime можно передавать свойство inputDateFormat
|
|
46
69
|
*/
|
|
47
|
-
const
|
|
70
|
+
const correctRecordSchemaMs = (recordSchemaAssoc,
|
|
48
71
|
// объект корректировок
|
|
49
72
|
fieldTypeCorrection) => {
|
|
50
|
-
|
|
73
|
+
(0, af_tools_ts_1.each)(recordSchemaAssoc, (fieldSchema, fieldName) => {
|
|
51
74
|
if (/_json$/i.test(fieldName)) {
|
|
52
75
|
fieldSchema.type = 'json';
|
|
53
76
|
}
|
|
@@ -66,7 +89,7 @@ fieldTypeCorrection) => {
|
|
|
66
89
|
}
|
|
67
90
|
});
|
|
68
91
|
if (fieldTypeCorrection && typeof fieldTypeCorrection === 'object') {
|
|
69
|
-
|
|
92
|
+
(0, af_tools_ts_1.each)(fieldTypeCorrection, (correction, fieldName) => {
|
|
70
93
|
FIELD_SCHEMA_PROPS.forEach((prop) => {
|
|
71
94
|
if (correction[prop] !== undefined) {
|
|
72
95
|
if (!recordSchemaAssoc[fieldName]) {
|
|
@@ -78,13 +101,13 @@ fieldTypeCorrection) => {
|
|
|
78
101
|
});
|
|
79
102
|
}
|
|
80
103
|
};
|
|
81
|
-
exports.
|
|
104
|
+
exports.correctRecordSchemaMs = correctRecordSchemaMs;
|
|
82
105
|
/**
|
|
83
106
|
* Подготовка значений записи для использования в SQL
|
|
84
107
|
*
|
|
85
|
-
* Все поля записи обрабатываются функцией
|
|
108
|
+
* Все поля записи обрабатываются функцией getValueForSqlMs
|
|
86
109
|
*/
|
|
87
|
-
const
|
|
110
|
+
const prepareRecordForSqlMs = (record, args) => {
|
|
88
111
|
const { recordSchema, addValues4NotNullableFields, addMissingFields } = args;
|
|
89
112
|
const { dateTimeOptions, needValidate, escapeOnlySingleQuotes, dialect } = args;
|
|
90
113
|
const options = {
|
|
@@ -101,34 +124,34 @@ const prepareRecordForSQL = (record, args) => {
|
|
|
101
124
|
return;
|
|
102
125
|
}
|
|
103
126
|
if (Object.prototype.hasOwnProperty.call(record, name)) {
|
|
104
|
-
record[name] = (0, get_value_for_sql_1.
|
|
127
|
+
record[name] = (0, get_value_for_sql_1.getValueForSqlMs)({ ...options, value: record[name], fieldSchema });
|
|
105
128
|
}
|
|
106
129
|
else if ((!fieldSchema.nullable && addValues4NotNullableFields) || addMissingFields) {
|
|
107
|
-
record[name] = (0, get_value_for_sql_1.
|
|
130
|
+
record[name] = (0, get_value_for_sql_1.getValueForSqlMs)({ ...options, value: null, fieldSchema });
|
|
108
131
|
}
|
|
109
132
|
});
|
|
110
133
|
};
|
|
111
|
-
exports.
|
|
134
|
+
exports.prepareRecordForSqlMs = prepareRecordForSqlMs;
|
|
112
135
|
/**
|
|
113
136
|
* Подготовка данных для SQL
|
|
114
137
|
*
|
|
115
|
-
* Все поля всех записей обрабатываются функцией
|
|
138
|
+
* Все поля всех записей обрабатываются функцией getValueForSqlMs
|
|
116
139
|
*/
|
|
117
|
-
const
|
|
140
|
+
const prepareDataForSqlMs = (recordSet, args) => {
|
|
118
141
|
if (recordSet._isPreparedForSQL) {
|
|
119
142
|
return;
|
|
120
143
|
}
|
|
121
144
|
recordSet.forEach((record) => {
|
|
122
|
-
(0, exports.
|
|
145
|
+
(0, exports.prepareRecordForSqlMs)(record, args);
|
|
123
146
|
});
|
|
124
147
|
recordSet._isPreparedForSQL = true;
|
|
125
148
|
};
|
|
126
|
-
exports.
|
|
149
|
+
exports.prepareDataForSqlMs = prepareDataForSqlMs;
|
|
127
150
|
/**
|
|
128
151
|
* Возвращает рекорд, в котором все значения преобразованы в строки и подготовлены для прямой вставки в SQL
|
|
129
152
|
* В частности, если значение типа строка, то оно уже заключено в одинарные кавычки
|
|
130
153
|
*/
|
|
131
|
-
const
|
|
154
|
+
const getRecordValuesForSqlMs = (record, recordSchema) => {
|
|
132
155
|
const recordValuesForSQL = {};
|
|
133
156
|
recordSchema.forEach((fieldSchema) => {
|
|
134
157
|
const { name = '_#foo#_', readOnly } = fieldSchema;
|
|
@@ -136,7 +159,7 @@ const getRecordValuesForSQL = (record, recordSchema) => {
|
|
|
136
159
|
return;
|
|
137
160
|
}
|
|
138
161
|
if (Object.prototype.hasOwnProperty.call(record, name)) {
|
|
139
|
-
recordValuesForSQL[name] = (0, get_value_for_sql_1.
|
|
162
|
+
recordValuesForSQL[name] = (0, get_value_for_sql_1.getValueForSqlMs)({
|
|
140
163
|
value: record[name],
|
|
141
164
|
fieldSchema,
|
|
142
165
|
escapeOnlySingleQuotes: true,
|
|
@@ -147,13 +170,13 @@ const getRecordValuesForSQL = (record, recordSchema) => {
|
|
|
147
170
|
});
|
|
148
171
|
return recordValuesForSQL;
|
|
149
172
|
};
|
|
150
|
-
exports.
|
|
173
|
+
exports.getRecordValuesForSqlMs = getRecordValuesForSqlMs;
|
|
151
174
|
/**
|
|
152
175
|
* Возвращает схему полей таблицы БД. Либо в виде объекта, либо в виде массива
|
|
153
|
-
* Если asArray = true, то вернет
|
|
154
|
-
* Иначе вернет
|
|
176
|
+
* Если asArray = true, то вернет TRecordSchemaMs, при этом удалит поля, указанные в omitFields
|
|
177
|
+
* Иначе вернет TRecordSchemaAssocMs
|
|
155
178
|
*/
|
|
156
|
-
const
|
|
179
|
+
const getRecordSchemaMs = async (
|
|
157
180
|
// ID соединения (borf|cep|hr|global)
|
|
158
181
|
connectionId,
|
|
159
182
|
// Субъект в выражении FROM для таблицы, схему которой нужно вернуть
|
|
@@ -166,7 +189,7 @@ options = {}) => {
|
|
|
166
189
|
return result;
|
|
167
190
|
}
|
|
168
191
|
const { omitFields, pickFields, fieldTypeCorrection, mergeRules: { mergeIdentity = [], excludeFromInsert = [], noUpdateIfNull = false, correction: mergeCorrection, withClause, } = {}, noReturnMergeResult, dateTimeOptions, } = options;
|
|
169
|
-
const cPool = await db.
|
|
192
|
+
const cPool = await db.getPoolConnectionMs(connectionId, { prefix: 'getRecordSchemaMs' });
|
|
170
193
|
const request = new sql.Request(cPool);
|
|
171
194
|
request.stream = false;
|
|
172
195
|
let res;
|
|
@@ -175,17 +198,17 @@ options = {}) => {
|
|
|
175
198
|
FROM ${schemaAndTable}`);
|
|
176
199
|
}
|
|
177
200
|
catch (err) {
|
|
178
|
-
af_echo_ts_1.echo.error(`
|
|
201
|
+
af_echo_ts_1.echo.error(`getRecordSchemaMs SQL ERROR`);
|
|
179
202
|
af_echo_ts_1.echo.error(err);
|
|
180
203
|
throw err;
|
|
181
204
|
}
|
|
182
205
|
const { columns } = res.recordset;
|
|
183
206
|
const readOnlyFields = Object.entries(columns).filter(([, { readOnly: ro }]) => ro).map(([f]) => f);
|
|
184
207
|
const omitFields2 = [...readOnlyFields, ...(Array.isArray(omitFields) ? omitFields : [])];
|
|
185
|
-
let schemaAssoc =
|
|
186
|
-
schemaAssoc = Array.isArray(pickFields) ?
|
|
187
|
-
(0, exports.
|
|
188
|
-
const schema =
|
|
208
|
+
let schemaAssoc = (0, af_tools_ts_1.omit)(columns, omitFields2);
|
|
209
|
+
schemaAssoc = Array.isArray(pickFields) ? (0, af_tools_ts_1.pick)(schemaAssoc, pickFields) : schemaAssoc;
|
|
210
|
+
(0, exports.correctRecordSchemaMs)(schemaAssoc, fieldTypeCorrection);
|
|
211
|
+
const schema = Object.values(schemaAssoc)
|
|
189
212
|
.sort((a, b) => {
|
|
190
213
|
const ai = ((a === null || a === void 0 ? void 0 : a.index) || 0);
|
|
191
214
|
const bi = ((b === null || b === void 0 ? void 0 : b.index) || 0);
|
|
@@ -214,7 +237,7 @@ options = {}) => {
|
|
|
214
237
|
else {
|
|
215
238
|
updateFieldsList = updateFields.map((fName) => (`target.[${fName}] = source.[${fName}]`)).join(', ');
|
|
216
239
|
}
|
|
217
|
-
const dbConfig = db.
|
|
240
|
+
const dbConfig = db.getDbConfigMs(connectionId);
|
|
218
241
|
const dbSchemaAndTable = `[${dbConfig.database}].${schemaAndTable}`;
|
|
219
242
|
result = {
|
|
220
243
|
connectionId,
|
|
@@ -232,7 +255,7 @@ options = {}) => {
|
|
|
232
255
|
mergeIdentity,
|
|
233
256
|
getMergeSQL(packet, prepareOptions = {}) {
|
|
234
257
|
if (prepareOptions.isPrepareForSQL) {
|
|
235
|
-
(0, exports.
|
|
258
|
+
(0, exports.prepareDataForSqlMs)(packet, { recordSchema: this.schema, ...prepareOptions });
|
|
236
259
|
}
|
|
237
260
|
const values = `(${packet.map((r) => (fields.map((fName) => (r[fName]))
|
|
238
261
|
.join(',')))
|
|
@@ -290,7 +313,7 @@ SELECT @total as total, @i as inserted, @u as updated;
|
|
|
290
313
|
return `INSERT INTO ${schemaAndTable} (${insertFieldsList}) ${addOutputInserted ? ' OUTPUT inserted.* ' : ''} VALUES ${values}`;
|
|
291
314
|
},
|
|
292
315
|
getUpdateSQL(record) {
|
|
293
|
-
const recordForSQL = (0, exports.
|
|
316
|
+
const recordForSQL = (0, exports.getRecordValuesForSqlMs)(record, this.schema);
|
|
294
317
|
const setArray = [];
|
|
295
318
|
updateFields.forEach((fName) => {
|
|
296
319
|
if (recordForSQL[fName] !== undefined) {
|
|
@@ -307,11 +330,11 @@ SELECT @total as total, @i as inserted, @u as updated;
|
|
|
307
330
|
cache.put(propertyPath, result);
|
|
308
331
|
return result;
|
|
309
332
|
};
|
|
310
|
-
exports.
|
|
333
|
+
exports.getRecordSchemaMs = getRecordSchemaMs;
|
|
311
334
|
/**
|
|
312
335
|
* Оборачивает инструкции SQL в транзакцию
|
|
313
336
|
*/
|
|
314
|
-
const
|
|
337
|
+
const wrapTransactionMs = (strSQL) => `BEGIN TRY
|
|
315
338
|
BEGIN TRANSACTION;
|
|
316
339
|
|
|
317
340
|
${strSQL}
|
|
@@ -335,12 +358,12 @@ BEGIN CATCH
|
|
|
335
358
|
|
|
336
359
|
RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState);
|
|
337
360
|
END CATCH;`;
|
|
338
|
-
exports.
|
|
361
|
+
exports.wrapTransactionMs = wrapTransactionMs;
|
|
339
362
|
/**
|
|
340
363
|
* Возвращает проверенное и серилизованное значение
|
|
341
364
|
*/
|
|
342
|
-
const
|
|
343
|
-
const val = (0, get_value_for_sql_1.
|
|
365
|
+
const serializeMs = (args) => {
|
|
366
|
+
const val = (0, get_value_for_sql_1.getValueForSqlMs)(args);
|
|
344
367
|
if (val == null || val === 'NULL') {
|
|
345
368
|
return null;
|
|
346
369
|
}
|
|
@@ -349,17 +372,17 @@ const serialize = (args) => {
|
|
|
349
372
|
}
|
|
350
373
|
return String(val).replace(/(^')|('$)/g, '');
|
|
351
374
|
};
|
|
352
|
-
exports.
|
|
375
|
+
exports.serializeMs = serializeMs;
|
|
353
376
|
/**
|
|
354
377
|
* Возвращает подготовленное выражение SET для использования в UPDATE
|
|
355
378
|
*/
|
|
356
|
-
const
|
|
379
|
+
const getSqlSetExpressionMs = (record, recordSchema) => {
|
|
357
380
|
const setArray = [];
|
|
358
381
|
const { dateTimeOptions } = recordSchema;
|
|
359
382
|
recordSchema.forEach((fieldSchema) => {
|
|
360
383
|
const { name = '_#foo#_' } = fieldSchema;
|
|
361
384
|
if (Object.prototype.hasOwnProperty.call(record, name)) {
|
|
362
|
-
setArray.push(`[${name}] = ${(0, get_value_for_sql_1.
|
|
385
|
+
setArray.push(`[${name}] = ${(0, get_value_for_sql_1.getValueForSqlMs)({
|
|
363
386
|
value: record[name],
|
|
364
387
|
fieldSchema,
|
|
365
388
|
dateTimeOptions,
|
|
@@ -369,13 +392,13 @@ const getSqlSetExpression = (record, recordSchema) => {
|
|
|
369
392
|
});
|
|
370
393
|
return `SET ${setArray.join(', ')}`;
|
|
371
394
|
};
|
|
372
|
-
exports.
|
|
395
|
+
exports.getSqlSetExpressionMs = getSqlSetExpressionMs;
|
|
373
396
|
/**
|
|
374
397
|
* Возвращает подготовленное выражение (...поля...) VALUES (...значения...) для использования в INSERT
|
|
375
398
|
*
|
|
376
399
|
* addOutputInserted - Если true, добавляется выражение OUTPUT inserted.* перед VALUES
|
|
377
400
|
*/
|
|
378
|
-
const
|
|
401
|
+
const getSqlValuesExpressionMs = (record, recordSchema, addOutputInserted = false) => {
|
|
379
402
|
const fieldsArray = [];
|
|
380
403
|
const valuesArray = [];
|
|
381
404
|
const { dateTimeOptions } = recordSchema;
|
|
@@ -383,7 +406,7 @@ const getSqlValuesExpression = (record, recordSchema, addOutputInserted = false)
|
|
|
383
406
|
const { name = '_#foo#_' } = fieldSchema;
|
|
384
407
|
if (Object.prototype.hasOwnProperty.call(record, name)) {
|
|
385
408
|
fieldsArray.push(name);
|
|
386
|
-
const val = (0, get_value_for_sql_1.
|
|
409
|
+
const val = (0, get_value_for_sql_1.getValueForSqlMs)({
|
|
387
410
|
value: record[name],
|
|
388
411
|
fieldSchema,
|
|
389
412
|
dateTimeOptions,
|
|
@@ -394,7 +417,7 @@ const getSqlValuesExpression = (record, recordSchema, addOutputInserted = false)
|
|
|
394
417
|
});
|
|
395
418
|
return `([${fieldsArray.join('], [')}]) ${addOutputInserted ? ' OUTPUT inserted.* ' : ''} VALUES (${valuesArray.join(', ')})`;
|
|
396
419
|
};
|
|
397
|
-
exports.
|
|
398
|
-
const
|
|
399
|
-
exports.
|
|
420
|
+
exports.getSqlValuesExpressionMs = getSqlValuesExpressionMs;
|
|
421
|
+
const getRowsAffectedMs = (qResult) => (qResult.rowsAffected && qResult.rowsAffected.reduce((a, v) => a + v, 0)) || 0;
|
|
422
|
+
exports.getRowsAffectedMs = getRowsAffectedMs;
|
|
400
423
|
//# sourceMappingURL=sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../../../src/mssql/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/mssql/utils.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACI,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,QAAkB,EAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AAA/E,QAAA,CAAC,KAA8E;AAE5F;;;GAGG;AACI,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAE,mBAA4B,KAAK,EAAU,EAAE;IACjF,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,GAAG,GAAG,EAAE,CAAC;KACV;IACD,QAAQ,OAAO,GAAG,EAAE;QAClB,KAAK,QAAQ;YACX,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM;QACR,KAAK,SAAS;YACZ,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACtB,MAAM;QACR;YACE,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;KAC3B;IACD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,IAAI,gBAAgB,EAAE;QACpB,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC;AArBW,QAAA,WAAW,eAqBtB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMergeSqlPg = void 0;
|
|
4
|
+
const table_schema_1 = require("./table-schema");
|
|
5
|
+
const prepare_value_1 = require("./prepare-value");
|
|
6
|
+
const getMergeSqlPg = async (arg) => {
|
|
7
|
+
const { connectionId, targetSchemaAndTable, recordset, omitFields = [], noUpdateIfNull } = arg;
|
|
8
|
+
if (!(recordset === null || recordset === void 0 ? void 0 : recordset.length)) {
|
|
9
|
+
return '';
|
|
10
|
+
}
|
|
11
|
+
const tableSchema = await (0, table_schema_1.getTableSchemaPg)(connectionId, targetSchemaAndTable);
|
|
12
|
+
const { recordSchema, pk, fieldsWoSerials, defaults } = tableSchema;
|
|
13
|
+
let insertFieldsList = fieldsWoSerials;
|
|
14
|
+
if (omitFields.length) {
|
|
15
|
+
const set = new Set(omitFields);
|
|
16
|
+
insertFieldsList = fieldsWoSerials.filter((fieldName) => !set.has(fieldName));
|
|
17
|
+
}
|
|
18
|
+
const insertValues = recordset.map((record) => {
|
|
19
|
+
const preparedValues = [];
|
|
20
|
+
insertFieldsList.forEach((fieldName) => {
|
|
21
|
+
const value = record[fieldName];
|
|
22
|
+
let pgSqlValue = (0, prepare_value_1.prepareSqlValuePg)({ value, fieldDef: recordSchema[fieldName] });
|
|
23
|
+
if (defaults[fieldName] != null && pgSqlValue === 'null') {
|
|
24
|
+
pgSqlValue = defaults[fieldName];
|
|
25
|
+
}
|
|
26
|
+
preparedValues.push(pgSqlValue);
|
|
27
|
+
});
|
|
28
|
+
return `(${preparedValues.join(', ')})`;
|
|
29
|
+
}).join(',\n').trim();
|
|
30
|
+
const upsertFields = insertFieldsList.map((f) => {
|
|
31
|
+
const vArr = [`EXCLUDED."${f}"`];
|
|
32
|
+
if (noUpdateIfNull) {
|
|
33
|
+
vArr.push(`${targetSchemaAndTable}."${f}"`);
|
|
34
|
+
}
|
|
35
|
+
if (defaults[f]) {
|
|
36
|
+
vArr.push(defaults[f]);
|
|
37
|
+
}
|
|
38
|
+
return `"${f}" = ${vArr.length > 1 ? `COALESCE(${vArr.join(', ')})` : vArr[0]}`;
|
|
39
|
+
}).join(',\n');
|
|
40
|
+
// noinspection UnnecessaryLocalVariableJS
|
|
41
|
+
const mergeSQL = `${'INSERT'} INTO ${targetSchemaAndTable}
|
|
42
|
+
(${insertFieldsList.join(', ')})
|
|
43
|
+
VALUES ${insertValues}
|
|
44
|
+
ON CONFLICT (${pk.map((f) => `"${f}"`).join(', ')})
|
|
45
|
+
DO UPDATE SET ${upsertFields}
|
|
46
|
+
`;
|
|
47
|
+
return mergeSQL;
|
|
48
|
+
};
|
|
49
|
+
exports.getMergeSqlPg = getMergeSqlPg;
|
|
50
|
+
//# sourceMappingURL=get-merge-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-merge-sql.js","sourceRoot":"","sources":["../../../../src/pg/get-merge-sql.ts"],"names":[],"mappings":";;;AACA,iDAAkD;AAClD,mDAAoD;AAG7C,MAAM,aAAa,GAAG,KAAK,EAA8C,GAM/E,EAAmB,EAAE;IACpB,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,GAAG,EAAE,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC;IAC/F,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,EAAE;QACtB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,WAAW,GAAmB,MAAM,IAAA,+BAAgB,EAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;IAC/F,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;IAEpE,IAAI,gBAAgB,GAAa,eAAe,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,EAAE;QACrB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;KAC/E;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,MAAS,EAAE,EAAE;QAC/C,MAAM,cAAc,GAAwB,EAAE,CAAC;QAE/C,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,IAAI,UAAU,GAAG,IAAA,iCAAiB,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACjF,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,UAAU,KAAK,MAAM,EAAE;gBACxD,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;aAClC;YACD,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1C,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAEtB,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,GAAG,oBAAoB,KAAK,CAAC,GAAG,CAAC,CAAC;SAC7C;QACD,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,GAAG,QAAQ,SAAS,oBAAoB;KACtD,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;WACrB,YAAY;kBACL,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;mBACjC,YAAY;IAC3B,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAtDW,QAAA,aAAa,iBAsDxB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getUpdateSqlPg = void 0;
|
|
4
|
+
const table_schema_1 = require("./table-schema");
|
|
5
|
+
const prepare_value_1 = require("./prepare-value");
|
|
6
|
+
const getUpdateSqlPg = async (connectionId, schemaAndTable, record, customSets = {}) => {
|
|
7
|
+
const tableSchema = await (0, table_schema_1.getTableSchemaPg)(connectionId, schemaAndTable);
|
|
8
|
+
const { recordSchema, pk, fieldsWoSerials } = tableSchema;
|
|
9
|
+
const sqlValue = (fieldName) => (0, prepare_value_1.prepareSqlValuePg)({ value: record[fieldName], fieldDef: recordSchema[fieldName] });
|
|
10
|
+
const preparedRecord = {};
|
|
11
|
+
fieldsWoSerials.forEach((f) => {
|
|
12
|
+
if (pk.includes(f)) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (customSets[f] !== undefined) {
|
|
16
|
+
preparedRecord[f] = customSets[f];
|
|
17
|
+
}
|
|
18
|
+
else if (record[f] !== undefined) {
|
|
19
|
+
preparedRecord[f] = sqlValue(f);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const sets = Object.entries(preparedRecord).map(([f, v]) => `"${f}" = ${v}`).join(', ');
|
|
23
|
+
const where = pk.map((f) => `"${f}" = ${sqlValue(f)}`).join(' AND ');
|
|
24
|
+
return `${'UPDATE'} ${schemaAndTable} SET
|
|
25
|
+
${sets}
|
|
26
|
+
WHERE ${where};`;
|
|
27
|
+
};
|
|
28
|
+
exports.getUpdateSqlPg = getUpdateSqlPg;
|
|
29
|
+
//# sourceMappingURL=get-update-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-update-sql.js","sourceRoot":"","sources":["../../../../src/pg/get-update-sql.ts"],"names":[],"mappings":";;;AAAA,iDAAkD;AAClD,mDAAoD;AAI7C,MAAM,cAAc,GAAG,KAAK,EACjC,YAAoB,EACpB,cAAsB,EACtB,MAAiB,EACjB,aAAwB,EAAE,EACT,EAAE;IACnB,MAAM,WAAW,GAAmB,MAAM,IAAA,+BAAgB,EAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACzF,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,WAAW,CAAC;IAC1D,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAA,iCAAiB,EAAC,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3H,MAAM,cAAc,GAAc,EAAE,CAAC;IACrC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAClB,OAAO;SACR;QACD,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAC/B,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;SACnC;aAAM,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;YAClC,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;SACjC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,OAAO,GAAG,QAAQ,IAAI,cAAc;MAChC,IAAI;UACA,KAAK,GAAG,CAAC;AACnB,CAAC,CAAC;AAzBW,QAAA,cAAc,kBAyBzB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.insertPg = exports.EUpdateLevel = void 0;
|
|
4
|
+
const af_tools_ts_1 = require("af-tools-ts");
|
|
5
|
+
const table_schema_1 = require("./table-schema");
|
|
6
|
+
const query_pg_1 = require("./query-pg");
|
|
7
|
+
const logger_error_1 = require("../logger-error");
|
|
8
|
+
var EUpdateLevel;
|
|
9
|
+
(function (EUpdateLevel) {
|
|
10
|
+
EUpdateLevel[EUpdateLevel["NEVER_UPDATE"] = 0] = "NEVER_UPDATE";
|
|
11
|
+
EUpdateLevel[EUpdateLevel["UPDATE_IF_NOT_FOUND"] = 1] = "UPDATE_IF_NOT_FOUND";
|
|
12
|
+
EUpdateLevel[EUpdateLevel["UPDATE_ALWAYS"] = 2] = "UPDATE_ALWAYS";
|
|
13
|
+
})(EUpdateLevel || (exports.EUpdateLevel = EUpdateLevel = {}));
|
|
14
|
+
const hasAllValues = (fieldList, record) => (fieldList === null || fieldList === void 0 ? void 0 : fieldList.length) && fieldList.every((f) => record[f] !== undefined);
|
|
15
|
+
const selectByAnyIdentity = async (connectionId, identities, record, source) => {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
const identityAlternativesArr = [];
|
|
18
|
+
let pos = 0;
|
|
19
|
+
const positionValues = [];
|
|
20
|
+
identities.forEach((identityFieldList) => {
|
|
21
|
+
if (hasAllValues(identityFieldList, record)) {
|
|
22
|
+
identityAlternativesArr.push(identityFieldList.map((f) => `${f} = $${positionValues.push(record[f]) && ++pos}`).join(' AND '));
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
let selectSql = '';
|
|
26
|
+
if (identityAlternativesArr.length) {
|
|
27
|
+
const identityWhere = identityAlternativesArr.map((v) => `( ${v} )`).join(' OR ');
|
|
28
|
+
selectSql = `SELECT *
|
|
29
|
+
FROM ${source}
|
|
30
|
+
WHERE ${identityWhere}`;
|
|
31
|
+
const result = await (0, query_pg_1.queryPg)(connectionId, selectSql, positionValues);
|
|
32
|
+
if ((_a = result === null || result === void 0 ? void 0 : result.rows) === null || _a === void 0 ? void 0 : _a[0]) {
|
|
33
|
+
return (_b = result === null || result === void 0 ? void 0 : result.rows) === null || _b === void 0 ? void 0 : _b[0];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const insertPg = async ({ connectionId, record, target, source, isThrow, updateLevel, }) => {
|
|
38
|
+
const { recordSchema, pk = [], serials = [], uc = [] } = await (0, table_schema_1.getTableSchemaPg)(connectionId, target);
|
|
39
|
+
// Cleaning the record: deleting properties not included in the set of fields, with the value undefined and auto-incrementing fields
|
|
40
|
+
const recordWoSerials = (0, af_tools_ts_1.omitBy)(record, (fieldValue, fieldName) => !recordSchema[fieldName] || fieldValue === undefined || serials.includes(fieldName));
|
|
41
|
+
// We form all possible sets of fields, which we then use to search for an added (or already existing) record
|
|
42
|
+
// Normalize (sort) sets
|
|
43
|
+
let identities = [pk, ...serials.map((f) => [f]), ...Object.values(uc)].filter((a) => a.length).map((a) => a.sort());
|
|
44
|
+
// Removing duplicates
|
|
45
|
+
identities = [...(new Set(identities.map((a) => a.join('|'))))].map((s) => s.split('|'));
|
|
46
|
+
source = source || target;
|
|
47
|
+
if (!updateLevel) {
|
|
48
|
+
updateLevel = EUpdateLevel.NEVER_UPDATE;
|
|
49
|
+
}
|
|
50
|
+
let foundRow;
|
|
51
|
+
try {
|
|
52
|
+
if (updateLevel !== EUpdateLevel.UPDATE_ALWAYS) {
|
|
53
|
+
// First, let's look for a suitable entry in the database if there are enough identification fields to search.
|
|
54
|
+
// Most often, there are no identification fields among the inserted fields and are expected
|
|
55
|
+
// appearance of an auto-incrementing identifier after insertion
|
|
56
|
+
foundRow = await selectByAnyIdentity(connectionId, identities, record, source);
|
|
57
|
+
if (foundRow && updateLevel === EUpdateLevel.NEVER_UPDATE) {
|
|
58
|
+
return foundRow;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// There is no suitable record in the database, we insert it
|
|
62
|
+
const { values, positionsList, fieldsList, upsertFields } = (0, table_schema_1.getFieldsAndValuesPg)(recordWoSerials, recordSchema);
|
|
63
|
+
const insertSQL = `INSERT INTO ${target} (${fieldsList})
|
|
64
|
+
VALUES (${positionsList}) ON CONFLICT ${updateLevel === EUpdateLevel.NEVER_UPDATE
|
|
65
|
+
? 'DO NOTHING'
|
|
66
|
+
: `(${pk.join(', ')}) DO UPDATE SET ${upsertFields}`}
|
|
67
|
+
RETURNING *`;
|
|
68
|
+
const result = await (0, query_pg_1.queryPg)(connectionId, insertSQL, values);
|
|
69
|
+
const { rows = [] } = result || {};
|
|
70
|
+
if (!rows[0] && !identities.length) {
|
|
71
|
+
// Hard case
|
|
72
|
+
logger_error_1.logger.error(`The insert into table ${target} was not performed and there is no identification field set to search for an existing record.\nrecord: ${JSON.stringify(record)}`);
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
// The insertion is done. Add auto-incrementing identifiers to the array of identification field sets
|
|
76
|
+
const rowInserted = rows[0];
|
|
77
|
+
const summaryRow = { ...recordWoSerials, ...rowInserted };
|
|
78
|
+
foundRow = await selectByAnyIdentity(connectionId, identities, summaryRow, source);
|
|
79
|
+
if (foundRow) {
|
|
80
|
+
return foundRow;
|
|
81
|
+
}
|
|
82
|
+
// If we could not find a record in the source by identifiers, we return what was returned after insertion.
|
|
83
|
+
return summaryRow;
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
logger_error_1.logger.error(err);
|
|
87
|
+
if (isThrow) {
|
|
88
|
+
throw err;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
exports.insertPg = insertPg;
|
|
93
|
+
//# sourceMappingURL=insert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../src/pg/insert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTableOrViewExistsPg = void 0;
|
|
4
|
+
// noinspection SqlResolve
|
|
5
|
+
const query_pg_1 = require("./query-pg");
|
|
6
|
+
const tableOrViewExistenceCache = new Set();
|
|
7
|
+
const isTableOrViewExistsPg = async (connectionId, schemaOrFullName, tableOrViewNAme) => {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
const entityName = tableOrViewNAme ? `${schemaOrFullName}.${tableOrViewNAme}` : schemaOrFullName;
|
|
10
|
+
if (tableOrViewExistenceCache.has(entityName)) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
const result = await (0, query_pg_1.queryPg)(connectionId, `SELECT to_regclass('${entityName}') as is_exists`);
|
|
14
|
+
if ((_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.is_exists) {
|
|
15
|
+
tableOrViewExistenceCache.add(entityName);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
};
|
|
20
|
+
exports.isTableOrViewExistsPg = isTableOrViewExistsPg;
|
|
21
|
+
//# sourceMappingURL=is-table-or-view-exists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-table-or-view-exists.js","sourceRoot":"","sources":["../../../../src/pg/is-table-or-view-exists.ts"],"names":[],"mappings":";;;AAAA,0BAA0B;AAC1B,yCAAqC;AAErC,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAE,CAAC;AAErC,MAAM,qBAAqB,GAAG,KAAK,EACxC,YAAoB,EACpB,gBAAwB,EACxB,eAAwB,EACN,EAAE;;IACpB,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACjG,IAAI,yBAAyB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;QAC7C,OAAO,IAAI,CAAC;KACb;IACD,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAO,EAAC,YAAY,EAAE,uBAAuB,UAAU,iBAAiB,CAAC,CAAC;IAC/F,IAAI,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAG,CAAC,CAAC,0CAAE,SAAS,EAAE;QAChC,yBAAyB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC"}
|