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.
Files changed (173) hide show
  1. package/README.md +3 -3
  2. package/dist/cjs/__tests__/01_node_env.spec.js +7 -0
  3. package/dist/cjs/__tests__/01_node_env.spec.js.map +1 -0
  4. package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js +50 -0
  5. package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js.map +1 -0
  6. package/dist/cjs/__tests__/global-setup.js +7 -0
  7. package/dist/cjs/__tests__/global-setup.js.map +1 -0
  8. package/dist/cjs/__tests__/global-teardown.js +7 -0
  9. package/dist/cjs/__tests__/global-teardown.js.map +1 -0
  10. package/dist/cjs/{interfaces.js → src/@types/i-common.js} +1 -1
  11. package/dist/cjs/src/@types/i-common.js.map +1 -0
  12. package/dist/cjs/src/@types/i-config.js +3 -0
  13. package/dist/cjs/src/@types/i-config.js.map +1 -0
  14. package/dist/cjs/src/@types/i-ms.js +3 -0
  15. package/dist/cjs/src/@types/i-ms.js.map +1 -0
  16. package/dist/cjs/src/@types/i-pg.js +24 -0
  17. package/dist/cjs/src/@types/i-pg.js.map +1 -0
  18. package/dist/cjs/src/common.js +30 -0
  19. package/dist/cjs/src/common.js.map +1 -0
  20. package/dist/cjs/src/index.js +59 -0
  21. package/dist/cjs/src/index.js.map +1 -0
  22. package/dist/cjs/src/logger-error.js +10 -0
  23. package/dist/cjs/src/logger-error.js.map +1 -0
  24. package/dist/cjs/{get-value-for-sql.js → src/mssql/get-value-for-sql.js} +12 -8
  25. package/dist/cjs/src/mssql/get-value-for-sql.js.map +1 -0
  26. package/dist/cjs/{db.js → src/mssql/pool-ms.js} +73 -77
  27. package/dist/cjs/src/mssql/pool-ms.js.map +1 -0
  28. package/dist/cjs/src/mssql/query-ms.js +47 -0
  29. package/dist/cjs/src/mssql/query-ms.js.map +1 -0
  30. package/dist/cjs/{sql.js → src/mssql/sql.js} +72 -49
  31. package/dist/cjs/src/mssql/sql.js.map +1 -0
  32. package/dist/cjs/src/mssql/utils.js.map +1 -0
  33. package/dist/cjs/src/pg/get-merge-sql.js +50 -0
  34. package/dist/cjs/src/pg/get-merge-sql.js.map +1 -0
  35. package/dist/cjs/src/pg/get-update-sql.js +29 -0
  36. package/dist/cjs/src/pg/get-update-sql.js.map +1 -0
  37. package/dist/cjs/src/pg/insert.js +93 -0
  38. package/dist/cjs/src/pg/insert.js.map +1 -0
  39. package/dist/cjs/src/pg/is-table-or-view-exists.js +21 -0
  40. package/dist/cjs/src/pg/is-table-or-view-exists.js.map +1 -0
  41. package/dist/cjs/src/pg/pg-pool.js +52 -0
  42. package/dist/cjs/src/pg/pg-pool.js.map +1 -0
  43. package/dist/cjs/src/pg/prepare-value.js +84 -0
  44. package/dist/cjs/src/pg/prepare-value.js.map +1 -0
  45. package/dist/cjs/src/pg/query-pg.js +23 -0
  46. package/dist/cjs/src/pg/query-pg.js.map +1 -0
  47. package/dist/cjs/src/pg/table-schema.js +169 -0
  48. package/dist/cjs/src/pg/table-schema.js.map +1 -0
  49. package/dist/esm/src/@types/i-common.js +2 -0
  50. package/dist/esm/src/@types/i-common.js.map +1 -0
  51. package/dist/esm/src/@types/i-config.js +2 -0
  52. package/dist/esm/src/@types/i-config.js.map +1 -0
  53. package/dist/esm/src/@types/i-ms.js +2 -0
  54. package/dist/esm/src/@types/i-ms.js.map +1 -0
  55. package/dist/esm/src/@types/i-pg.js +21 -0
  56. package/dist/esm/src/@types/i-pg.js.map +1 -0
  57. package/dist/esm/src/common.js +25 -0
  58. package/dist/esm/src/common.js.map +1 -0
  59. package/dist/esm/src/index.js +15 -0
  60. package/dist/esm/src/index.js.map +1 -0
  61. package/dist/esm/src/logger-error.js +6 -0
  62. package/dist/esm/src/logger-error.js.map +1 -0
  63. package/dist/esm/{get-value-for-sql.js → src/mssql/get-value-for-sql.js} +11 -7
  64. package/dist/esm/src/mssql/get-value-for-sql.js.map +1 -0
  65. package/dist/esm/{db.js → src/mssql/pool-ms.js} +35 -62
  66. package/dist/esm/src/mssql/pool-ms.js.map +1 -0
  67. package/dist/esm/src/mssql/query-ms.js +20 -0
  68. package/dist/esm/src/mssql/query-ms.js.map +1 -0
  69. package/dist/esm/{sql.js → src/mssql/sql.js} +36 -36
  70. package/dist/esm/src/mssql/sql.js.map +1 -0
  71. package/dist/esm/src/mssql/utils.js.map +1 -0
  72. package/dist/esm/src/pg/get-merge-sql.js +46 -0
  73. package/dist/esm/src/pg/get-merge-sql.js.map +1 -0
  74. package/dist/esm/src/pg/get-update-sql.js +25 -0
  75. package/dist/esm/src/pg/get-update-sql.js.map +1 -0
  76. package/dist/esm/src/pg/insert.js +89 -0
  77. package/dist/esm/src/pg/insert.js.map +1 -0
  78. package/dist/esm/src/pg/is-table-or-view-exists.js +17 -0
  79. package/dist/esm/src/pg/is-table-or-view-exists.js.map +1 -0
  80. package/dist/esm/src/pg/pg-pool.js +43 -0
  81. package/dist/esm/src/pg/pg-pool.js.map +1 -0
  82. package/dist/esm/src/pg/prepare-value.js +79 -0
  83. package/dist/esm/src/pg/prepare-value.js.map +1 -0
  84. package/dist/esm/src/pg/query-pg.js +19 -0
  85. package/dist/esm/src/pg/query-pg.js.map +1 -0
  86. package/dist/esm/src/pg/table-schema.js +164 -0
  87. package/dist/esm/src/pg/table-schema.js.map +1 -0
  88. package/dist/types/src/@types/i-common.d.ts +35 -0
  89. package/dist/types/src/@types/i-common.d.ts.map +1 -0
  90. package/dist/types/src/@types/i-config.d.ts +60 -0
  91. package/dist/types/src/@types/i-config.d.ts.map +1 -0
  92. package/dist/types/{interfaces.d.ts → src/@types/i-ms.d.ts} +30 -77
  93. package/dist/types/src/@types/i-ms.d.ts.map +1 -0
  94. package/dist/types/src/@types/i-pg.d.ts +62 -0
  95. package/dist/types/src/@types/i-pg.d.ts.map +1 -0
  96. package/dist/types/src/common.d.ts +6 -0
  97. package/dist/types/src/common.d.ts.map +1 -0
  98. package/dist/types/src/index.d.ts +18 -0
  99. package/dist/types/src/index.d.ts.map +1 -0
  100. package/dist/types/src/logger-error.d.ts +7 -0
  101. package/dist/types/src/logger-error.d.ts.map +1 -0
  102. package/dist/types/src/mssql/get-value-for-sql.d.ts +11 -0
  103. package/dist/types/src/mssql/get-value-for-sql.d.ts.map +1 -0
  104. package/dist/types/{db.d.ts → src/mssql/pool-ms.d.ts} +18 -15
  105. package/dist/types/src/mssql/pool-ms.d.ts.map +1 -0
  106. package/dist/types/src/mssql/query-ms.d.ts +3 -0
  107. package/dist/types/src/mssql/query-ms.d.ts.map +1 -0
  108. package/dist/types/{sql.d.ts → src/mssql/sql.d.ts} +17 -16
  109. package/dist/types/src/mssql/sql.d.ts.map +1 -0
  110. package/dist/types/src/mssql/utils.d.ts.map +1 -0
  111. package/dist/types/src/pg/get-merge-sql.d.ts +9 -0
  112. package/dist/types/src/pg/get-merge-sql.d.ts.map +1 -0
  113. package/dist/types/src/pg/get-update-sql.d.ts +3 -0
  114. package/dist/types/src/pg/get-update-sql.d.ts.map +1 -0
  115. package/dist/types/src/pg/insert.d.ts +15 -0
  116. package/dist/types/src/pg/insert.d.ts.map +1 -0
  117. package/dist/types/src/pg/is-table-or-view-exists.d.ts +2 -0
  118. package/dist/types/src/pg/is-table-or-view-exists.d.ts.map +1 -0
  119. package/dist/types/src/pg/pg-pool.d.ts +6 -0
  120. package/dist/types/src/pg/pg-pool.d.ts.map +1 -0
  121. package/dist/types/src/pg/prepare-value.d.ts +7 -0
  122. package/dist/types/src/pg/prepare-value.d.ts.map +1 -0
  123. package/dist/types/src/pg/query-pg.d.ts +3 -0
  124. package/dist/types/src/pg/query-pg.d.ts.map +1 -0
  125. package/dist/types/src/pg/table-schema.d.ts +12 -0
  126. package/dist/types/src/pg/table-schema.d.ts.map +1 -0
  127. package/package.json +21 -24
  128. package/src/@types/i-common.ts +39 -0
  129. package/src/@types/i-config.ts +75 -0
  130. package/src/{interfaces.ts → @types/i-ms.ts} +29 -86
  131. package/src/@types/i-pg.ts +67 -0
  132. package/src/common.ts +26 -0
  133. package/src/index.ts +104 -42
  134. package/src/logger-error.ts +11 -0
  135. package/src/{get-value-for-sql.ts → mssql/get-value-for-sql.ts} +15 -9
  136. package/src/{db.ts → mssql/pool-ms.ts} +40 -71
  137. package/src/mssql/query-ms.ts +25 -0
  138. package/src/{sql.ts → mssql/sql.ts} +56 -59
  139. package/src/pg/get-merge-sql.ts +60 -0
  140. package/src/pg/get-update-sql.ts +31 -0
  141. package/src/pg/insert.ts +118 -0
  142. package/src/pg/is-table-or-view-exists.ts +21 -0
  143. package/src/pg/pg-pool.ts +49 -0
  144. package/src/pg/prepare-value.ts +90 -0
  145. package/src/pg/query-pg.ts +26 -0
  146. package/src/pg/table-schema.ts +178 -0
  147. package/dist/cjs/db.js.map +0 -1
  148. package/dist/cjs/get-value-for-sql.js.map +0 -1
  149. package/dist/cjs/index.js +0 -21
  150. package/dist/cjs/index.js.map +0 -1
  151. package/dist/cjs/interfaces.js.map +0 -1
  152. package/dist/cjs/sql.js.map +0 -1
  153. package/dist/cjs/utils.js.map +0 -1
  154. package/dist/esm/db.js.map +0 -1
  155. package/dist/esm/get-value-for-sql.js.map +0 -1
  156. package/dist/esm/index.js +0 -4
  157. package/dist/esm/index.js.map +0 -1
  158. package/dist/esm/interfaces.js +0 -2
  159. package/dist/esm/interfaces.js.map +0 -1
  160. package/dist/esm/sql.js.map +0 -1
  161. package/dist/esm/utils.js.map +0 -1
  162. package/dist/types/db.d.ts.map +0 -1
  163. package/dist/types/get-value-for-sql.d.ts +0 -7
  164. package/dist/types/get-value-for-sql.d.ts.map +0 -1
  165. package/dist/types/index.d.ts +0 -5
  166. package/dist/types/index.d.ts.map +0 -1
  167. package/dist/types/interfaces.d.ts.map +0 -1
  168. package/dist/types/sql.d.ts.map +0 -1
  169. package/dist/types/utils.d.ts.map +0 -1
  170. /package/dist/cjs/{utils.js → src/mssql/utils.js} +0 -0
  171. /package/dist/esm/{utils.js → src/mssql/utils.js} +0 -0
  172. /package/dist/types/{utils.d.ts → src/mssql/utils.d.ts} +0 -0
  173. /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.getRowsAffected = exports.getSqlValuesExpression = exports.getSqlSetExpression = exports.serialize = exports.wrapTransaction = exports.getRecordSchema = exports.getRecordValuesForSQL = exports.prepareDataForSQL = exports.prepareRecordForSQL = exports.correctRecordSchema = exports.prepareSqlString = exports.sql = void 0;
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 db = require("./db");
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 prepareSqlString = (args) => {
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.prepareSqlString = prepareSqlString;
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 correctRecordSchema = (recordSchemaAssoc,
70
+ const correctRecordSchemaMs = (recordSchemaAssoc,
48
71
  // объект корректировок
49
72
  fieldTypeCorrection) => {
50
- _.each(recordSchemaAssoc, (fieldSchema, fieldName) => {
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
- _.each(fieldTypeCorrection, (correction, fieldName) => {
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.correctRecordSchema = correctRecordSchema;
104
+ exports.correctRecordSchemaMs = correctRecordSchemaMs;
82
105
  /**
83
106
  * Подготовка значений записи для использования в SQL
84
107
  *
85
- * Все поля записи обрабатываются функцией getValueForSQL
108
+ * Все поля записи обрабатываются функцией getValueForSqlMs
86
109
  */
87
- const prepareRecordForSQL = (record, args) => {
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.getValueForSQL)({ ...options, value: record[name], fieldSchema });
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.getValueForSQL)({ ...options, value: null, fieldSchema });
130
+ record[name] = (0, get_value_for_sql_1.getValueForSqlMs)({ ...options, value: null, fieldSchema });
108
131
  }
109
132
  });
110
133
  };
111
- exports.prepareRecordForSQL = prepareRecordForSQL;
134
+ exports.prepareRecordForSqlMs = prepareRecordForSqlMs;
112
135
  /**
113
136
  * Подготовка данных для SQL
114
137
  *
115
- * Все поля всех записей обрабатываются функцией getValueForSQL
138
+ * Все поля всех записей обрабатываются функцией getValueForSqlMs
116
139
  */
117
- const prepareDataForSQL = (recordSet, args) => {
140
+ const prepareDataForSqlMs = (recordSet, args) => {
118
141
  if (recordSet._isPreparedForSQL) {
119
142
  return;
120
143
  }
121
144
  recordSet.forEach((record) => {
122
- (0, exports.prepareRecordForSQL)(record, args);
145
+ (0, exports.prepareRecordForSqlMs)(record, args);
123
146
  });
124
147
  recordSet._isPreparedForSQL = true;
125
148
  };
126
- exports.prepareDataForSQL = prepareDataForSQL;
149
+ exports.prepareDataForSqlMs = prepareDataForSqlMs;
127
150
  /**
128
151
  * Возвращает рекорд, в котором все значения преобразованы в строки и подготовлены для прямой вставки в SQL
129
152
  * В частности, если значение типа строка, то оно уже заключено в одинарные кавычки
130
153
  */
131
- const getRecordValuesForSQL = (record, recordSchema) => {
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.getValueForSQL)({
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.getRecordValuesForSQL = getRecordValuesForSQL;
173
+ exports.getRecordValuesForSqlMs = getRecordValuesForSqlMs;
151
174
  /**
152
175
  * Возвращает схему полей таблицы БД. Либо в виде объекта, либо в виде массива
153
- * Если asArray = true, то вернет TRecordSchema, при этом удалит поля, указанные в omitFields
154
- * Иначе вернет TRecordSchemaAssoc
176
+ * Если asArray = true, то вернет TRecordSchemaMs, при этом удалит поля, указанные в omitFields
177
+ * Иначе вернет TRecordSchemaAssocMs
155
178
  */
156
- const getRecordSchema = async (
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.getPoolConnection(connectionId, { prefix: 'getRecordSchema' });
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(`getRecordSchema SQL 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 = _.omit(columns, omitFields2);
186
- schemaAssoc = Array.isArray(pickFields) ? _.pick(schemaAssoc, pickFields) : schemaAssoc;
187
- (0, exports.correctRecordSchema)(schemaAssoc, fieldTypeCorrection);
188
- const schema = _.map(schemaAssoc, (fo) => (fo))
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.getDbConfig(connectionId);
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.prepareDataForSQL)(packet, { recordSchema: this.schema, ...prepareOptions });
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.getRecordValuesForSQL)(record, this.schema);
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.getRecordSchema = getRecordSchema;
333
+ exports.getRecordSchemaMs = getRecordSchemaMs;
311
334
  /**
312
335
  * Оборачивает инструкции SQL в транзакцию
313
336
  */
314
- const wrapTransaction = (strSQL) => `BEGIN TRY
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.wrapTransaction = wrapTransaction;
361
+ exports.wrapTransactionMs = wrapTransactionMs;
339
362
  /**
340
363
  * Возвращает проверенное и серилизованное значение
341
364
  */
342
- const serialize = (args) => {
343
- const val = (0, get_value_for_sql_1.getValueForSQL)(args);
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.serialize = serialize;
375
+ exports.serializeMs = serializeMs;
353
376
  /**
354
377
  * Возвращает подготовленное выражение SET для использования в UPDATE
355
378
  */
356
- const getSqlSetExpression = (record, recordSchema) => {
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.getValueForSQL)({
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.getSqlSetExpression = getSqlSetExpression;
395
+ exports.getSqlSetExpressionMs = getSqlSetExpressionMs;
373
396
  /**
374
397
  * Возвращает подготовленное выражение (...поля...) VALUES (...значения...) для использования в INSERT
375
398
  *
376
399
  * addOutputInserted - Если true, добавляется выражение OUTPUT inserted.* перед VALUES
377
400
  */
378
- const getSqlValuesExpression = (record, recordSchema, addOutputInserted = false) => {
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.getValueForSQL)({
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.getSqlValuesExpression = getSqlValuesExpression;
398
- const getRowsAffected = (qResult) => (qResult.rowsAffected && qResult.rowsAffected.reduce((a, v) => a + v, 0)) || 0;
399
- exports.getRowsAffected = getRowsAffected;
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"}