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,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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=i-common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-common.js","sourceRoot":"","sources":["../../../../src/@types/i-common.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=i-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i-config.js","sourceRoot":"","sources":["../../../../src/@types/i-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=i-ms.js.map
@@ -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,6 @@
1
+ import { echo } from 'af-echo-ts';
2
+ export const logger = echo;
3
+ export const setLogger = (logger_) => {
4
+ logger.error = logger_.error.bind(logger_);
5
+ };
6
+ //# sourceMappingURL=logger-error.js.map
@@ -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 { prepareSqlString, sql } from './sql';
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 getValueForSQL = (args) => {
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 prepareSqlString({ ...prepareSqlStringArgs, value });
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 prepareSqlString(prepareSqlStringArgs);
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 prepareSqlString({ ...prepareSqlStringArgs, value, length: 0 });
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 prepareSqlString(prepareSqlStringArgs);
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 prepareSqlString(prepareSqlStringArgs);
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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"}