af-db-ts 2.0.19 → 2.0.73
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/dist/cjs/__tests__/db/ms/@gen-types/test-table_schema.js +3 -0
- package/dist/cjs/__tests__/db/ms/@gen-types/test-table_schema.js.map +1 -0
- package/dist/cjs/__tests__/db/ms/ddl/column-schema-for-test-table-schema-ms.json +216 -0
- package/dist/cjs/__tests__/db/ms/ms-get-sql.spec.js +190 -0
- package/dist/cjs/__tests__/db/ms/ms-get-sql.spec.js.map +1 -0
- package/dist/cjs/__tests__/db/ms/ms-prepare-sql-value.spec.js +584 -0
- package/dist/cjs/__tests__/db/ms/ms-prepare-sql-value.spec.js.map +1 -0
- package/dist/cjs/__tests__/db/ms/ms-table-schema.spec.js +107 -0
- package/dist/cjs/__tests__/db/ms/ms-table-schema.spec.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-hard_case.js +3 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-hard_case.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-only_one_serial.js +3 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-only_one_serial.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-only_one_uniq.js +3 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-only_one_uniq.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-serial_and_uniq.js +3 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-serial_and_uniq.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-table_schema.js +3 -0
- package/dist/cjs/__tests__/db/pg/@gen-types/test-table_schema.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/ddl/column-schema-for-test-table-schema-pg.json +170 -0
- package/dist/cjs/__tests__/db/pg/gen-table-interfaces-4-test-pg.js +36 -0
- package/dist/cjs/__tests__/db/pg/gen-table-interfaces-4-test-pg.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/pg-get-sql.spec.js +261 -0
- package/dist/cjs/__tests__/db/pg/pg-get-sql.spec.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/pg-insert.spec.js +294 -0
- package/dist/cjs/__tests__/db/pg/pg-insert.spec.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/pg-prepare-sql-value.spec.js +575 -0
- package/dist/cjs/__tests__/db/pg/pg-prepare-sql-value.spec.js.map +1 -0
- package/dist/cjs/__tests__/db/pg/pg-table-schema.spec.js +117 -0
- package/dist/cjs/__tests__/db/pg/pg-table-schema.spec.js.map +1 -0
- package/dist/cjs/src/@types/i-data-types-ms.js +3 -0
- package/dist/cjs/src/@types/i-data-types-ms.js.map +1 -0
- package/dist/cjs/src/@types/i-data-types-pg.js +7 -0
- package/dist/cjs/src/@types/i-data-types-pg.js.map +1 -0
- package/dist/cjs/src/@types/i-pg.js +0 -21
- package/dist/cjs/src/@types/i-pg.js.map +1 -1
- package/dist/cjs/src/common.js +6 -5
- package/dist/cjs/src/common.js.map +1 -1
- package/dist/cjs/src/index.js +75 -54
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/ms/gen-table-interfaces-ms.js +64 -0
- package/dist/cjs/src/ms/gen-table-interfaces-ms.js.map +1 -0
- package/dist/cjs/src/ms/get-sql/insert.js +37 -0
- package/dist/cjs/src/ms/get-sql/insert.js.map +1 -0
- package/dist/cjs/src/ms/get-sql/merge.js +93 -0
- package/dist/cjs/src/ms/get-sql/merge.js.map +1 -0
- package/dist/cjs/src/ms/get-sql/update.js +32 -0
- package/dist/cjs/src/ms/get-sql/update.js.map +1 -0
- package/dist/cjs/src/{mssql → ms}/pool-ms.js +6 -23
- package/dist/cjs/src/ms/pool-ms.js.map +1 -0
- package/dist/cjs/src/ms/prepare-value.js +178 -0
- package/dist/cjs/src/ms/prepare-value.js.map +1 -0
- package/dist/cjs/src/{mssql → ms}/query-ms.js +1 -1
- package/dist/cjs/src/ms/query-ms.js.map +1 -0
- package/dist/cjs/src/ms/table-schema-ms.js +241 -0
- package/dist/cjs/src/ms/table-schema-ms.js.map +1 -0
- package/dist/cjs/src/ms/utils-ms.js +92 -0
- package/dist/cjs/src/ms/utils-ms.js.map +1 -0
- package/dist/cjs/src/ms/wrap-transaction-ms.js +32 -0
- package/dist/cjs/src/ms/wrap-transaction-ms.js.map +1 -0
- package/dist/cjs/src/pg/gen-table-interfaces-pg.js +83 -0
- package/dist/cjs/src/pg/gen-table-interfaces-pg.js.map +1 -0
- package/dist/cjs/src/pg/get-sql/insert.js +38 -0
- package/dist/cjs/src/pg/get-sql/insert.js.map +1 -0
- package/dist/cjs/src/pg/get-sql/merge.js +60 -0
- package/dist/cjs/src/pg/get-sql/merge.js.map +1 -0
- package/dist/cjs/src/pg/get-sql/update.js +32 -0
- package/dist/cjs/src/pg/get-sql/update.js.map +1 -0
- package/dist/cjs/src/pg/{insert.js → insert-pg.js} +10 -10
- package/dist/cjs/src/pg/insert-pg.js.map +1 -0
- package/dist/cjs/src/pg/is-table-or-view-exists.js +1 -2
- package/dist/cjs/src/pg/is-table-or-view-exists.js.map +1 -1
- package/dist/cjs/src/pg/{pg-pool.js → pool-pg.js} +6 -7
- package/dist/cjs/src/pg/pool-pg.js.map +1 -0
- package/dist/cjs/src/pg/prepare-value.js +116 -69
- package/dist/cjs/src/pg/prepare-value.js.map +1 -1
- package/dist/cjs/src/pg/query-pg.js +2 -2
- package/dist/cjs/src/pg/query-pg.js.map +1 -1
- package/dist/cjs/src/pg/table-schema-pg.js +183 -0
- package/dist/cjs/src/pg/table-schema-pg.js.map +1 -0
- package/dist/cjs/src/pg/utils-pg.js +99 -0
- package/dist/cjs/src/pg/utils-pg.js.map +1 -0
- package/dist/cjs/src/utils/utils-array.js +152 -0
- package/dist/cjs/src/utils/utils-array.js.map +1 -0
- package/dist/cjs/src/utils/utils-dt.js +121 -0
- package/dist/cjs/src/utils/utils-dt.js.map +1 -0
- package/dist/cjs/src/utils/utils-num.js +127 -0
- package/dist/cjs/src/utils/utils-num.js.map +1 -0
- package/dist/cjs/src/utils/utils.js +66 -0
- package/dist/cjs/src/utils/utils.js.map +1 -0
- package/dist/esm/src/@types/i-data-types-ms.js +2 -0
- package/dist/esm/src/@types/i-data-types-ms.js.map +1 -0
- package/dist/esm/src/@types/i-data-types-pg.js +6 -0
- package/dist/esm/src/@types/i-data-types-pg.js.map +1 -0
- package/dist/esm/src/@types/i-pg.js +1 -20
- package/dist/esm/src/@types/i-pg.js.map +1 -1
- package/dist/esm/src/common.js +3 -2
- package/dist/esm/src/common.js.map +1 -1
- package/dist/esm/src/index.js +24 -15
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/ms/gen-table-interfaces-ms.js +36 -0
- package/dist/esm/src/ms/gen-table-interfaces-ms.js.map +1 -0
- package/dist/esm/src/ms/get-sql/insert.js +33 -0
- package/dist/esm/src/ms/get-sql/insert.js.map +1 -0
- package/dist/esm/src/ms/get-sql/merge.js +89 -0
- package/dist/esm/src/ms/get-sql/merge.js.map +1 -0
- package/dist/esm/src/ms/get-sql/update.js +28 -0
- package/dist/esm/src/ms/get-sql/update.js.map +1 -0
- package/dist/esm/src/{mssql → ms}/pool-ms.js +5 -20
- package/dist/esm/src/ms/pool-ms.js.map +1 -0
- package/dist/esm/src/ms/prepare-value.js +149 -0
- package/dist/esm/src/ms/prepare-value.js.map +1 -0
- package/dist/esm/src/{mssql → ms}/query-ms.js +1 -1
- package/dist/esm/src/ms/query-ms.js.map +1 -0
- package/dist/esm/src/ms/table-schema-ms.js +213 -0
- package/dist/esm/src/ms/table-schema-ms.js.map +1 -0
- package/dist/esm/src/ms/utils-ms.js +65 -0
- package/dist/esm/src/ms/utils-ms.js.map +1 -0
- package/dist/esm/src/ms/wrap-transaction-ms.js +28 -0
- package/dist/esm/src/ms/wrap-transaction-ms.js.map +1 -0
- package/dist/esm/src/pg/gen-table-interfaces-pg.js +55 -0
- package/dist/esm/src/pg/gen-table-interfaces-pg.js.map +1 -0
- package/dist/esm/src/pg/get-sql/insert.js +34 -0
- package/dist/esm/src/pg/get-sql/insert.js.map +1 -0
- package/dist/esm/src/pg/get-sql/merge.js +56 -0
- package/dist/esm/src/pg/get-sql/merge.js.map +1 -0
- package/dist/esm/src/pg/get-sql/update.js +28 -0
- package/dist/esm/src/pg/get-sql/update.js.map +1 -0
- package/dist/esm/src/pg/{insert.js → insert-pg.js} +10 -10
- package/dist/esm/src/pg/insert-pg.js.map +1 -0
- package/dist/esm/src/pg/is-table-or-view-exists.js +1 -2
- package/dist/esm/src/pg/is-table-or-view-exists.js.map +1 -1
- package/dist/esm/src/pg/{pg-pool.js → pool-pg.js} +6 -7
- package/dist/esm/src/pg/pool-pg.js.map +1 -0
- package/dist/esm/src/pg/prepare-value.js +113 -67
- package/dist/esm/src/pg/prepare-value.js.map +1 -1
- package/dist/esm/src/pg/query-pg.js +1 -1
- package/dist/esm/src/pg/query-pg.js.map +1 -1
- package/dist/esm/src/pg/table-schema-pg.js +178 -0
- package/dist/esm/src/pg/table-schema-pg.js.map +1 -0
- package/dist/esm/src/pg/utils-pg.js +93 -0
- package/dist/esm/src/pg/utils-pg.js.map +1 -0
- package/dist/esm/src/utils/utils-array.js +125 -0
- package/dist/esm/src/utils/utils-array.js.map +1 -0
- package/dist/esm/src/utils/utils-dt.js +114 -0
- package/dist/esm/src/utils/utils-dt.js.map +1 -0
- package/dist/esm/src/utils/utils-num.js +117 -0
- package/dist/esm/src/utils/utils-num.js.map +1 -0
- package/dist/esm/src/utils/utils.js +58 -0
- package/dist/esm/src/utils/utils.js.map +1 -0
- package/dist/types/src/@types/i-common.d.ts +35 -3
- package/dist/types/src/@types/i-common.d.ts.map +1 -1
- package/dist/types/src/@types/i-data-types-ms.d.ts +3 -0
- package/dist/types/src/@types/i-data-types-ms.d.ts.map +1 -0
- package/dist/types/src/@types/i-data-types-pg.d.ts +35 -0
- package/dist/types/src/@types/i-data-types-pg.d.ts.map +1 -0
- package/dist/types/src/@types/i-ms.d.ts +26 -126
- package/dist/types/src/@types/i-ms.d.ts.map +1 -1
- package/dist/types/src/@types/i-pg.d.ts +11 -35
- package/dist/types/src/@types/i-pg.d.ts.map +1 -1
- package/dist/types/src/common.d.ts +1 -0
- package/dist/types/src/common.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +28 -16
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/ms/gen-table-interfaces-ms.d.ts +3 -0
- package/dist/types/src/ms/gen-table-interfaces-ms.d.ts.map +1 -0
- package/dist/types/src/ms/get-sql/insert.d.ts +9 -0
- package/dist/types/src/ms/get-sql/insert.d.ts.map +1 -0
- package/dist/types/src/ms/get-sql/merge.d.ts +14 -0
- package/dist/types/src/ms/get-sql/merge.d.ts.map +1 -0
- package/dist/types/src/ms/get-sql/update.d.ts +9 -0
- package/dist/types/src/ms/get-sql/update.d.ts.map +1 -0
- package/dist/types/src/{mssql → ms}/pool-ms.d.ts +0 -8
- package/dist/types/src/ms/pool-ms.d.ts.map +1 -0
- package/dist/types/src/ms/prepare-value.d.ts +12 -0
- package/dist/types/src/ms/prepare-value.d.ts.map +1 -0
- package/dist/types/src/ms/query-ms.d.ts +3 -0
- package/dist/types/src/ms/query-ms.d.ts.map +1 -0
- package/dist/types/src/ms/table-schema-ms.d.ts +9 -0
- package/dist/types/src/ms/table-schema-ms.d.ts.map +1 -0
- package/dist/types/src/ms/utils-ms.d.ts +3 -0
- package/dist/types/src/ms/utils-ms.d.ts.map +1 -0
- package/dist/types/src/ms/wrap-transaction-ms.d.ts +5 -0
- package/dist/types/src/ms/wrap-transaction-ms.d.ts.map +1 -0
- package/dist/types/src/pg/gen-table-interfaces-pg.d.ts +3 -0
- package/dist/types/src/pg/gen-table-interfaces-pg.d.ts.map +1 -0
- package/dist/types/src/pg/get-sql/insert.d.ts +9 -0
- package/dist/types/src/pg/get-sql/insert.d.ts.map +1 -0
- package/dist/types/src/pg/get-sql/merge.d.ts +10 -0
- package/dist/types/src/pg/get-sql/merge.d.ts.map +1 -0
- package/dist/types/src/pg/get-sql/update.d.ts +9 -0
- package/dist/types/src/pg/get-sql/update.d.ts.map +1 -0
- package/dist/types/src/pg/{insert.d.ts → insert-pg.d.ts} +3 -3
- package/dist/types/src/pg/insert-pg.d.ts.map +1 -0
- package/dist/types/src/pg/{pg-pool.d.ts → pool-pg.d.ts} +1 -1
- package/dist/types/src/pg/{pg-pool.d.ts.map → pool-pg.d.ts.map} +1 -1
- package/dist/types/src/pg/prepare-value.d.ts +3 -1
- package/dist/types/src/pg/prepare-value.d.ts.map +1 -1
- package/dist/types/src/pg/query-pg.d.ts +3 -2
- package/dist/types/src/pg/query-pg.d.ts.map +1 -1
- package/dist/types/src/pg/table-schema-pg.d.ts +12 -0
- package/dist/types/src/pg/table-schema-pg.d.ts.map +1 -0
- package/dist/types/src/pg/utils-pg.d.ts +5 -0
- package/dist/types/src/pg/utils-pg.d.ts.map +1 -0
- package/dist/types/src/utils/utils-array.d.ts +5 -0
- package/dist/types/src/utils/utils-array.d.ts.map +1 -0
- package/dist/types/src/utils/utils-dt.d.ts +15 -0
- package/dist/types/src/utils/utils-dt.d.ts.map +1 -0
- package/dist/types/src/utils/utils-num.d.ts +9 -0
- package/dist/types/src/utils/utils-num.d.ts.map +1 -0
- package/dist/types/src/utils/utils.d.ts +18 -0
- package/dist/types/src/utils/utils.d.ts.map +1 -0
- package/package.json +13 -13
- package/src/@types/i-common.ts +42 -4
- package/src/@types/i-data-types-ms.ts +81 -0
- package/src/@types/i-data-types-pg.ts +120 -0
- package/src/@types/i-ms.ts +29 -153
- package/src/@types/i-pg.ts +11 -36
- package/src/common.ts +4 -2
- package/src/index.ts +101 -59
- package/src/ms/gen-table-interfaces-ms.ts +52 -0
- package/src/ms/get-sql/insert.ts +45 -0
- package/src/ms/get-sql/merge.ts +118 -0
- package/src/ms/get-sql/update.ts +46 -0
- package/src/{mssql → ms}/pool-ms.ts +0 -16
- package/src/ms/prepare-value.ts +175 -0
- package/src/{mssql → ms}/query-ms.ts +2 -2
- package/src/ms/table-schema-ms.ts +231 -0
- package/src/ms/utils-ms.ts +72 -0
- package/src/ms/wrap-transaction-ms.ts +27 -0
- package/src/pg/gen-table-interfaces-pg.ts +74 -0
- package/src/pg/get-sql/insert.ts +46 -0
- package/src/pg/get-sql/merge.ts +70 -0
- package/src/pg/get-sql/update.ts +46 -0
- package/src/pg/{insert.ts → insert-pg.ts} +9 -9
- package/src/pg/prepare-value.ts +129 -67
- package/src/pg/query-pg.ts +4 -3
- package/src/pg/table-schema-pg.ts +196 -0
- package/src/pg/utils-pg.ts +97 -0
- package/src/utils/utils-array.ts +133 -0
- package/src/utils/utils-dt.ts +123 -0
- package/src/utils/utils-num.ts +131 -0
- package/src/utils/utils.ts +64 -0
- package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js +0 -50
- package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js.map +0 -1
- package/dist/cjs/src/mssql/get-value-for-sql.js +0 -277
- package/dist/cjs/src/mssql/get-value-for-sql.js.map +0 -1
- package/dist/cjs/src/mssql/pool-ms.js.map +0 -1
- package/dist/cjs/src/mssql/query-ms.js.map +0 -1
- package/dist/cjs/src/mssql/sql.js +0 -427
- package/dist/cjs/src/mssql/sql.js.map +0 -1
- package/dist/cjs/src/mssql/utils.js +0 -36
- package/dist/cjs/src/mssql/utils.js.map +0 -1
- package/dist/cjs/src/pg/get-merge-sql.js +0 -52
- package/dist/cjs/src/pg/get-merge-sql.js.map +0 -1
- package/dist/cjs/src/pg/get-update-sql.js +0 -30
- package/dist/cjs/src/pg/get-update-sql.js.map +0 -1
- package/dist/cjs/src/pg/insert.js.map +0 -1
- package/dist/cjs/src/pg/pg-pool.js.map +0 -1
- package/dist/cjs/src/pg/table-schema.js +0 -179
- package/dist/cjs/src/pg/table-schema.js.map +0 -1
- package/dist/cjs/src/utils.js +0 -17
- package/dist/cjs/src/utils.js.map +0 -1
- package/dist/esm/src/mssql/get-value-for-sql.js +0 -272
- package/dist/esm/src/mssql/get-value-for-sql.js.map +0 -1
- package/dist/esm/src/mssql/pool-ms.js.map +0 -1
- package/dist/esm/src/mssql/query-ms.js.map +0 -1
- package/dist/esm/src/mssql/sql.js +0 -390
- package/dist/esm/src/mssql/sql.js.map +0 -1
- package/dist/esm/src/mssql/utils.js +0 -31
- package/dist/esm/src/mssql/utils.js.map +0 -1
- package/dist/esm/src/pg/get-merge-sql.js +0 -48
- package/dist/esm/src/pg/get-merge-sql.js.map +0 -1
- package/dist/esm/src/pg/get-update-sql.js +0 -26
- package/dist/esm/src/pg/get-update-sql.js.map +0 -1
- package/dist/esm/src/pg/insert.js.map +0 -1
- package/dist/esm/src/pg/pg-pool.js.map +0 -1
- package/dist/esm/src/pg/table-schema.js +0 -174
- package/dist/esm/src/pg/table-schema.js.map +0 -1
- package/dist/esm/src/utils.js +0 -14
- package/dist/esm/src/utils.js.map +0 -1
- package/dist/types/src/mssql/get-value-for-sql.d.ts +0 -11
- package/dist/types/src/mssql/get-value-for-sql.d.ts.map +0 -1
- package/dist/types/src/mssql/pool-ms.d.ts.map +0 -1
- package/dist/types/src/mssql/query-ms.d.ts +0 -3
- package/dist/types/src/mssql/query-ms.d.ts.map +0 -1
- package/dist/types/src/mssql/sql.d.ts +0 -57
- package/dist/types/src/mssql/sql.d.ts.map +0 -1
- package/dist/types/src/mssql/utils.d.ts +0 -10
- package/dist/types/src/mssql/utils.d.ts.map +0 -1
- package/dist/types/src/pg/get-merge-sql.d.ts +0 -9
- package/dist/types/src/pg/get-merge-sql.d.ts.map +0 -1
- package/dist/types/src/pg/get-update-sql.d.ts +0 -3
- package/dist/types/src/pg/get-update-sql.d.ts.map +0 -1
- package/dist/types/src/pg/insert.d.ts.map +0 -1
- package/dist/types/src/pg/table-schema.d.ts +0 -12
- package/dist/types/src/pg/table-schema.d.ts.map +0 -1
- package/dist/types/src/utils.d.ts +0 -9
- package/dist/types/src/utils.d.ts.map +0 -1
- package/src/mssql/get-value-for-sql.ts +0 -325
- package/src/mssql/sql.ts +0 -430
- package/src/mssql/utils.ts +0 -31
- package/src/pg/get-merge-sql.ts +0 -62
- package/src/pg/get-update-sql.ts +0 -32
- package/src/pg/table-schema.ts +0 -189
- package/src/utils.ts +0 -14
- /package/src/pg/{pg-pool.ts → pool-pg.ts} +0 -0
package/src/@types/i-pg.ts
CHANGED
|
@@ -1,39 +1,13 @@
|
|
|
1
1
|
import { Pool, PoolClient } from 'pg';
|
|
2
|
+
import { IFieldDef, TFieldName } from './i-common';
|
|
3
|
+
import { TDataTypePg } from './i-data-types-pg';
|
|
2
4
|
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
'boolean' = 'boolean',
|
|
7
|
-
'character' = 'character',
|
|
8
|
-
'varchar' = 'character varying',
|
|
9
|
-
'date' = 'date',
|
|
10
|
-
'integer' = 'integer',
|
|
11
|
-
'json' = 'json',
|
|
12
|
-
'jsonb' = 'jsonb',
|
|
13
|
-
'numeric' = 'numeric',
|
|
14
|
-
'real' = 'real',
|
|
15
|
-
'smallint' = 'smallint',
|
|
16
|
-
'text' = 'text',
|
|
17
|
-
'timestamptz' = 'timestamp with time zone',
|
|
18
|
-
'timestamp' = 'timestamp without time zone',
|
|
19
|
-
'uuid' = 'uuid',
|
|
20
|
-
'ARRAY' = 'ARRAY',
|
|
5
|
+
export interface IFieldDefPg extends IFieldDef {
|
|
6
|
+
dataType?: TDataTypePg,
|
|
7
|
+
arrayType?: TDataTypePg,
|
|
21
8
|
}
|
|
22
9
|
|
|
23
|
-
export interface
|
|
24
|
-
name: string,
|
|
25
|
-
isNullable: boolean,
|
|
26
|
-
columnDefault: string | number | boolean,
|
|
27
|
-
hasDefault: boolean,
|
|
28
|
-
dataType: EDataTypePg,
|
|
29
|
-
maxLen?: number,
|
|
30
|
-
precision?: number,
|
|
31
|
-
radix?: number,
|
|
32
|
-
dtPrecision?: number,
|
|
33
|
-
udtName?: string,
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface TRecordSchemaPg {
|
|
10
|
+
export interface TColumnsSchemaPg {
|
|
37
11
|
[fieldName: string]: IFieldDefPg,
|
|
38
12
|
}
|
|
39
13
|
|
|
@@ -42,13 +16,14 @@ export interface TUniqueConstraintsPg {
|
|
|
42
16
|
}
|
|
43
17
|
|
|
44
18
|
export interface ITableSchemaPg {
|
|
45
|
-
|
|
19
|
+
columnsSchema: TColumnsSchemaPg,
|
|
46
20
|
pk: string[],
|
|
47
21
|
uc: TUniqueConstraintsPg,
|
|
48
|
-
serials: string[],
|
|
49
22
|
defaults: { [fieldName: string]: string },
|
|
50
|
-
|
|
51
|
-
|
|
23
|
+
fieldsArray: TFieldName[], // массив имен всех полей
|
|
24
|
+
serialsFields: TFieldName[], // массив имен полей типа identity
|
|
25
|
+
readOnlyFields: TFieldName[], // массив имен полей ReadOnly
|
|
26
|
+
fieldsWoSerialsAndRO: TFieldName[], // массив имен полей без полей identity и ReadOnly
|
|
52
27
|
}
|
|
53
28
|
|
|
54
29
|
export interface IPoolClientPg extends PoolClient {
|
package/src/common.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { magenta } from 'af-color';
|
|
2
|
-
import { closeAllPgConnectionsPg } from './pg/pg
|
|
3
|
-
import { closeAllDbConnectionsMs } from './
|
|
2
|
+
import { closeAllPgConnectionsPg } from './pg/pool-pg';
|
|
3
|
+
import { closeAllDbConnectionsMs } from './ms/pool-ms';
|
|
4
4
|
import { logger } from './logger-error';
|
|
5
5
|
|
|
6
|
+
export const NULL = 'null';
|
|
7
|
+
|
|
6
8
|
export const logSqlError = (err: Error | any, throwError?: boolean, textSQL?: string, prefix?: string) => {
|
|
7
9
|
if (prefix) {
|
|
8
10
|
logger.error(prefix);
|
package/src/index.ts
CHANGED
|
@@ -20,79 +20,120 @@ export {
|
|
|
20
20
|
} from './@types/i-config';
|
|
21
21
|
|
|
22
22
|
export {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
closeAllDb,
|
|
24
|
+
graceExit,
|
|
25
|
+
logSqlError,
|
|
26
|
+
} from './common';
|
|
27
|
+
|
|
28
|
+
export { setLogger } from './logger-error';
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
schemaTable,
|
|
32
|
+
prepareJSON,
|
|
33
|
+
binToHexString,
|
|
34
|
+
removePairBrackets,
|
|
35
|
+
q,
|
|
36
|
+
} from './utils/utils';
|
|
37
|
+
|
|
38
|
+
export {
|
|
39
|
+
getLuxonDT,
|
|
40
|
+
getTypeOfDateInput,
|
|
41
|
+
dateTimeValue,
|
|
42
|
+
getDatetimeWithPrecisionAndOffset,
|
|
43
|
+
} from './utils/utils-dt';
|
|
44
|
+
|
|
45
|
+
export {
|
|
46
|
+
parseIntNumber,
|
|
47
|
+
prepareIntNumber,
|
|
48
|
+
|
|
49
|
+
parseFloatNumber,
|
|
50
|
+
prepareFloatNumber,
|
|
51
|
+
|
|
52
|
+
prepareBigIntNumber,
|
|
53
|
+
} from './utils/utils-num';
|
|
54
|
+
|
|
55
|
+
// ######################### MS #####################################
|
|
56
|
+
|
|
57
|
+
export { TDataTypeMs } from './@types/i-data-types-ms';
|
|
58
|
+
|
|
59
|
+
export {
|
|
60
|
+
IFieldDefMs,
|
|
61
|
+
TColumnsSchemaMs,
|
|
62
|
+
ITableSchemaMs,
|
|
63
|
+
TUniqueConstraintsMs,
|
|
25
64
|
IConnectionPoolsMs,
|
|
26
|
-
IPrepareSqlStringArgsMs,
|
|
27
|
-
TRecordSchemaAssocMs,
|
|
28
|
-
IGetMergeSQLOptionsMs,
|
|
29
|
-
IPrepareRecordForSqlArgsMs,
|
|
30
|
-
IPrepareRecordParamsMs,
|
|
31
|
-
ISchemaArrayMs,
|
|
32
|
-
IValueForSQLPartialArgsMs,
|
|
33
|
-
TFieldTypeCorrectionMs,
|
|
34
|
-
ISchemaItemMs,
|
|
35
|
-
TGetRecordSchemaOptionsMs,
|
|
36
|
-
TGetRecordSchemaResultMs,
|
|
37
|
-
TMergeResultMs,
|
|
38
|
-
TMergeRulesMs,
|
|
39
|
-
TRecordSchemaMs,
|
|
40
65
|
TGetPoolConnectionOptionsMs,
|
|
41
66
|
} from './@types/i-ms';
|
|
42
67
|
|
|
43
68
|
export {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
EDataTypePg,
|
|
48
|
-
TUniqueConstraintsPg,
|
|
49
|
-
IPoolPg,
|
|
50
|
-
IConnectionPoolsPg,
|
|
51
|
-
IPoolClientPg,
|
|
52
|
-
} from './@types/i-pg';
|
|
69
|
+
genTableInterfaceMs,
|
|
70
|
+
genTableInterfacesMs,
|
|
71
|
+
} from './ms/gen-table-interfaces-ms';
|
|
53
72
|
|
|
54
|
-
export {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
} from './
|
|
73
|
+
export { getJsTypeByTypeMs } from './ms/utils-ms';
|
|
74
|
+
|
|
75
|
+
export { getInsertSqlMs } from './ms/get-sql/insert';
|
|
76
|
+
|
|
77
|
+
export { getMergeSqlMs } from './ms/get-sql/merge';
|
|
78
|
+
|
|
79
|
+
export { getUpdateSqlMs } from './ms/get-sql/update';
|
|
59
80
|
|
|
60
81
|
export {
|
|
82
|
+
poolsCacheMs,
|
|
61
83
|
getPoolConnectionMs,
|
|
62
84
|
closeAllDbConnectionsMs,
|
|
63
85
|
closeDbConnectionsAndExitMs,
|
|
64
86
|
closeDbConnectionsMs,
|
|
65
87
|
getDbConfigMs,
|
|
66
88
|
getPoolMs,
|
|
67
|
-
|
|
68
|
-
closeAllDbConnections,
|
|
69
|
-
closeDbConnectionsAndExit,
|
|
70
|
-
} from './mssql/pool-ms';
|
|
71
|
-
|
|
72
|
-
export { queryMs } from './mssql/query-ms';
|
|
89
|
+
} from './ms/pool-ms';
|
|
73
90
|
|
|
74
91
|
export {
|
|
92
|
+
prepareSqlValueMs,
|
|
75
93
|
prepareSqlStringMs,
|
|
94
|
+
} from './ms/prepare-value';
|
|
95
|
+
|
|
96
|
+
export { queryMs } from './ms/query-ms';
|
|
97
|
+
|
|
98
|
+
export {
|
|
99
|
+
getTableSchemaMs,
|
|
76
100
|
correctRecordSchemaMs,
|
|
77
|
-
|
|
78
|
-
wrapTransactionMs,
|
|
79
|
-
serializeMs,
|
|
80
|
-
getRecordValuesForSqlMs,
|
|
81
|
-
getSqlSetExpressionMs,
|
|
82
|
-
getSqlValuesExpressionMs,
|
|
83
|
-
prepareRecordForSqlMs,
|
|
84
|
-
prepareDataForSqlMs,
|
|
85
|
-
getRowsAffectedMs,
|
|
86
|
-
sql,
|
|
87
|
-
} from './mssql/sql';
|
|
101
|
+
} from './ms/table-schema-ms';
|
|
88
102
|
|
|
89
|
-
export {
|
|
103
|
+
export { wrapTransactionMs } from './ms/wrap-transaction-ms';
|
|
90
104
|
|
|
91
|
-
|
|
105
|
+
// ######################### PG #####################################
|
|
92
106
|
|
|
93
|
-
export {
|
|
107
|
+
export {
|
|
108
|
+
IFieldDefPg,
|
|
109
|
+
TColumnsSchemaPg,
|
|
110
|
+
ITableSchemaPg,
|
|
111
|
+
TUniqueConstraintsPg,
|
|
112
|
+
IPoolPg,
|
|
113
|
+
IConnectionPoolsPg,
|
|
114
|
+
IPoolClientPg,
|
|
115
|
+
} from './@types/i-pg';
|
|
94
116
|
|
|
95
|
-
export {
|
|
117
|
+
export { TDataTypePg } from './@types/i-data-types-pg';
|
|
118
|
+
|
|
119
|
+
export {
|
|
120
|
+
genTableInterfacePg,
|
|
121
|
+
genTableInterfacesPg,
|
|
122
|
+
} from './pg/gen-table-interfaces-pg';
|
|
123
|
+
|
|
124
|
+
export {
|
|
125
|
+
getJsTypeByTypePg,
|
|
126
|
+
getTypeByUdtNamePg,
|
|
127
|
+
getNormalizedTypePg,
|
|
128
|
+
} from './pg/utils-pg';
|
|
129
|
+
|
|
130
|
+
export { getInsertSqlPg } from './pg/get-sql/insert';
|
|
131
|
+
|
|
132
|
+
export { getMergeSqlPg } from './pg/get-sql/merge';
|
|
133
|
+
|
|
134
|
+
export { getUpdateSqlPg } from './pg/get-sql/update';
|
|
135
|
+
|
|
136
|
+
export { insertPg, EUpdateLevel } from './pg/insert-pg';
|
|
96
137
|
|
|
97
138
|
export { isTableOrViewExistsPg } from './pg/is-table-or-view-exists';
|
|
98
139
|
|
|
@@ -102,15 +143,16 @@ export {
|
|
|
102
143
|
closePoolPg,
|
|
103
144
|
getDbConfigPg,
|
|
104
145
|
closeAllPgConnectionsPg,
|
|
105
|
-
} from './pg/pg
|
|
146
|
+
} from './pg/pool-pg';
|
|
106
147
|
|
|
107
|
-
export {
|
|
148
|
+
export {
|
|
149
|
+
prepareSqlStringPg,
|
|
150
|
+
prepareSqlValuePg,
|
|
151
|
+
} from './pg/prepare-value';
|
|
108
152
|
|
|
109
153
|
export { queryPg } from './pg/query-pg';
|
|
110
154
|
|
|
111
|
-
export {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
export { setLogger } from './logger-error';
|
|
116
|
-
export { schemaTable } from './utils';
|
|
155
|
+
export {
|
|
156
|
+
getFieldsAndValuesPg,
|
|
157
|
+
getTableSchemaPg,
|
|
158
|
+
} from './pg/table-schema-pg';
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* eslint-disable no-await-in-loop */
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as fs from 'fs';
|
|
4
|
+
import { echo } from 'af-echo-ts';
|
|
5
|
+
import { IFieldDefMs } from '../@types/i-ms';
|
|
6
|
+
import { getTableSchemaMs } from './table-schema-ms';
|
|
7
|
+
import { closeAllDbConnectionsMs } from './pool-ms';
|
|
8
|
+
import { schemaTable } from '../utils/utils';
|
|
9
|
+
import { getJsTypeByTypeMs } from './utils-ms';
|
|
10
|
+
|
|
11
|
+
const getFieldDefinition = (d: IFieldDefMs): string => {
|
|
12
|
+
const fieldName = d.name + (d.isNullable || d.hasDefault ? '?' : '');
|
|
13
|
+
return `${fieldName}: ${getJsTypeByTypeMs(d.dataType, d.arrayType)}${d.isNullable ? ' | null' : ''}`;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const TABLE_INTERFACES_DIR = __dirname.replace(/\\/g, '/').replace(/\/dist\//, '/');
|
|
17
|
+
|
|
18
|
+
export const genTableInterfaceMs = async (
|
|
19
|
+
connectionId: string,
|
|
20
|
+
commonSchemaAndTable: string,
|
|
21
|
+
tableInterfacesDir: string = TABLE_INTERFACES_DIR,
|
|
22
|
+
): Promise<void> => {
|
|
23
|
+
const tableSchema = await getTableSchemaMs(connectionId, commonSchemaAndTable);
|
|
24
|
+
const interfaceName = `I${schemaTable.to.common(commonSchemaAndTable)
|
|
25
|
+
.replace('.', '_')
|
|
26
|
+
.split('_')
|
|
27
|
+
.map((word) => word[0].toUpperCase() + word.substring(1))
|
|
28
|
+
.join('')}Record`;
|
|
29
|
+
|
|
30
|
+
const linesArr = Object.values(tableSchema.columnsSchema).map(getFieldDefinition);
|
|
31
|
+
const content = `export interface ${interfaceName} {\n${linesArr.map((v) => ` ${v}`).join(',\n')},\n}\n`;
|
|
32
|
+
|
|
33
|
+
const fileName = `${commonSchemaAndTable.replace('.', '-').toLowerCase()}.ts`;
|
|
34
|
+
const filePath = path.resolve(path.join(tableInterfacesDir, fileName));
|
|
35
|
+
|
|
36
|
+
fs.writeFileSync(filePath, content);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const genTableInterfacesMs = async (
|
|
40
|
+
connectionId: string,
|
|
41
|
+
tables: string[],
|
|
42
|
+
tableInterfacesDir: string = TABLE_INTERFACES_DIR,
|
|
43
|
+
): Promise<void> => {
|
|
44
|
+
for (let i = 0; i < tables.length; i++) {
|
|
45
|
+
const commonSchemaAndTable = tables[i];
|
|
46
|
+
await genTableInterfaceMs(connectionId, commonSchemaAndTable, tableInterfacesDir);
|
|
47
|
+
}
|
|
48
|
+
echo.g(`Generated ${tables.length} table interfaces in folder '.${
|
|
49
|
+
tableInterfacesDir.replace(process.cwd().replace(/\\/g, '/'), '')}/'`);
|
|
50
|
+
await closeAllDbConnectionsMs();
|
|
51
|
+
process.exit(0);
|
|
52
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { getTableSchemaMs } from '../table-schema-ms';
|
|
2
|
+
import { prepareSqlValueMs } from '../prepare-value';
|
|
3
|
+
import { ITableSchemaMs } from '../../@types/i-ms';
|
|
4
|
+
import { TDBRecord, TRecordSet } from '../../@types/i-common';
|
|
5
|
+
import { schemaTable } from '../../utils/utils';
|
|
6
|
+
|
|
7
|
+
export const getInsertSqlMs = async <U extends TDBRecord = TDBRecord>(arg: {
|
|
8
|
+
connectionId: string,
|
|
9
|
+
commonSchemaAndTable: string,
|
|
10
|
+
recordset: TRecordSet<U>,
|
|
11
|
+
excludeFromInsert?: string[],
|
|
12
|
+
addOutputInserted?: boolean,
|
|
13
|
+
}): Promise<string> => {
|
|
14
|
+
const { commonSchemaAndTable } = arg;
|
|
15
|
+
|
|
16
|
+
const tableSchema: ITableSchemaMs = await getTableSchemaMs(arg.connectionId, commonSchemaAndTable);
|
|
17
|
+
const { columnsSchema, fieldsWoSerialsAndRO, defaults } = tableSchema;
|
|
18
|
+
|
|
19
|
+
const insertFieldsArray = fieldsWoSerialsAndRO.filter((f) => (!(arg.excludeFromInsert || []).includes(f)));
|
|
20
|
+
const insertFieldsList = insertFieldsArray.map((f) => `[${f}]`).join(', ');
|
|
21
|
+
|
|
22
|
+
const preparedRowsArray = arg.recordset.map((record) => {
|
|
23
|
+
const preparedRecordValuesArray = insertFieldsArray.map((f) => {
|
|
24
|
+
const value = record[f];
|
|
25
|
+
const fieldDef = columnsSchema[f];
|
|
26
|
+
if (value != null) {
|
|
27
|
+
return prepareSqlValueMs({ value, fieldDef });
|
|
28
|
+
}
|
|
29
|
+
const defVal = defaults[f];
|
|
30
|
+
if (!fieldDef.isNullable && defVal != null) {
|
|
31
|
+
return defVal;
|
|
32
|
+
}
|
|
33
|
+
return 'NULL';
|
|
34
|
+
});
|
|
35
|
+
return preparedRecordValuesArray.join(',');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const values = preparedRowsArray.map((v) => `(${v})`).join('\n,');
|
|
39
|
+
const out = arg.addOutputInserted ? ' OUTPUT inserted.* ' : '';
|
|
40
|
+
const target = schemaTable.to.ms(commonSchemaAndTable);
|
|
41
|
+
// noinspection UnnecessaryLocalVariableJS
|
|
42
|
+
const insertSQL = `INSERT INTO ${target} (${insertFieldsList}) ${out}
|
|
43
|
+
VALUES ${values};`;
|
|
44
|
+
return insertSQL;
|
|
45
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { getTableSchemaMs } from '../table-schema-ms';
|
|
2
|
+
import { prepareSqlValueMs } from '../prepare-value';
|
|
3
|
+
import { ITableSchemaMs } from '../../@types/i-ms';
|
|
4
|
+
import { schemaTable } from '../../utils/utils';
|
|
5
|
+
import { TDBRecord, TRecordSet } from '../../@types/i-common';
|
|
6
|
+
|
|
7
|
+
export const getMergeSqlMs = async <U extends TDBRecord = TDBRecord> (arg: {
|
|
8
|
+
connectionId: string,
|
|
9
|
+
commonSchemaAndTable: string,
|
|
10
|
+
recordset: TRecordSet<U>,
|
|
11
|
+
omitFields?: string[],
|
|
12
|
+
excludeFromInsert?: string[],
|
|
13
|
+
noUpdateIfNull?: boolean,
|
|
14
|
+
withClause?: string,
|
|
15
|
+
mergeIdentity?: string[], // Список полей, по которым оценивается уникальность записи. По умолчанию - поля PK
|
|
16
|
+
noReturnMergeResult?: boolean,
|
|
17
|
+
mergeCorrection?: (_sql: string) => string,
|
|
18
|
+
}): Promise<string> => {
|
|
19
|
+
const {
|
|
20
|
+
connectionId,
|
|
21
|
+
commonSchemaAndTable,
|
|
22
|
+
recordset,
|
|
23
|
+
omitFields = [],
|
|
24
|
+
} = arg;
|
|
25
|
+
if (!recordset?.length) {
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
const schemaTableStr = schemaTable.to.ms(commonSchemaAndTable);
|
|
29
|
+
const tableSchema: ITableSchemaMs = await getTableSchemaMs(connectionId, commonSchemaAndTable);
|
|
30
|
+
const { columnsSchema, pk, fieldsWoSerialsAndRO, defaults } = tableSchema;
|
|
31
|
+
|
|
32
|
+
let mergeFieldsArr: string[] = fieldsWoSerialsAndRO;
|
|
33
|
+
if (omitFields.length) {
|
|
34
|
+
const set = new Set(omitFields);
|
|
35
|
+
mergeFieldsArr = fieldsWoSerialsAndRO.filter((fieldName) => !set.has(fieldName));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const mergeValues = recordset.map((record: U) => {
|
|
39
|
+
const preparedValues: (string | number)[] = [];
|
|
40
|
+
|
|
41
|
+
mergeFieldsArr.forEach((f) => {
|
|
42
|
+
const value = record[f];
|
|
43
|
+
let sqlValue = prepareSqlValueMs({ value, fieldDef: columnsSchema[f] });
|
|
44
|
+
if (defaults[f] != null && (sqlValue == null || sqlValue === 'null')) {
|
|
45
|
+
sqlValue = defaults[f];
|
|
46
|
+
}
|
|
47
|
+
preparedValues.push(sqlValue);
|
|
48
|
+
});
|
|
49
|
+
return `(${preparedValues.join(', ')})`;
|
|
50
|
+
}).join(',\n ').trim();
|
|
51
|
+
|
|
52
|
+
const { mergeIdentity = pk } = arg;
|
|
53
|
+
if (!mergeIdentity?.length) {
|
|
54
|
+
throw new Error(`The list of fields by which the uniqueness of a record is assessed is empty!`);
|
|
55
|
+
}
|
|
56
|
+
const onClause = mergeIdentity.map((f) => (`target.[${f}] = source.[${f}]`)).join(' AND ');
|
|
57
|
+
|
|
58
|
+
const updateFields = mergeFieldsArr.filter((f) => (!mergeIdentity.includes(f)));
|
|
59
|
+
|
|
60
|
+
const updateFieldsList = updateFields.map((f) => (`target.[${f}] = ${
|
|
61
|
+
arg.noUpdateIfNull
|
|
62
|
+
? `COALESCE(source.[${f}], target.[${f}])`
|
|
63
|
+
: `source.[${f}]`
|
|
64
|
+
}`)).join(',\n ');
|
|
65
|
+
|
|
66
|
+
const insertFieldsArray = mergeFieldsArr.filter((f) => (!(arg.excludeFromInsert || []).includes(f)));
|
|
67
|
+
const mergeFieldsList = mergeFieldsArr.map((f) => `[${f}]`).join(',\n ');
|
|
68
|
+
|
|
69
|
+
const insertSourceList = insertFieldsArray.map((f) => (`source.[${f}]`)).join(',\n ');
|
|
70
|
+
const insertFieldsList = insertFieldsArray.map((f) => `[${f}]`).join(',\n ');
|
|
71
|
+
|
|
72
|
+
let mergeSQL = `MERGE ${schemaTableStr} ${arg.withClause || ''} AS target
|
|
73
|
+
USING
|
|
74
|
+
(
|
|
75
|
+
SELECT * FROM (
|
|
76
|
+
VALUES
|
|
77
|
+
${mergeValues}
|
|
78
|
+
)
|
|
79
|
+
AS s (
|
|
80
|
+
${mergeFieldsList}
|
|
81
|
+
)
|
|
82
|
+
)
|
|
83
|
+
AS source
|
|
84
|
+
ON ${onClause}
|
|
85
|
+
|
|
86
|
+
WHEN MATCHED THEN
|
|
87
|
+
UPDATE SET
|
|
88
|
+
${updateFieldsList}
|
|
89
|
+
|
|
90
|
+
WHEN NOT MATCHED THEN
|
|
91
|
+
INSERT (
|
|
92
|
+
${insertFieldsList}
|
|
93
|
+
)
|
|
94
|
+
VALUES (
|
|
95
|
+
${insertSourceList}
|
|
96
|
+
)`;
|
|
97
|
+
|
|
98
|
+
if (!arg.noReturnMergeResult) {
|
|
99
|
+
mergeSQL = `
|
|
100
|
+
${'DECLARE'} @t TABLE ( act VARCHAR(20));
|
|
101
|
+
DECLARE @total AS INTEGER;
|
|
102
|
+
DECLARE @i AS INTEGER;
|
|
103
|
+
DECLARE @u AS INTEGER;
|
|
104
|
+
${mergeSQL}
|
|
105
|
+
OUTPUT $action INTO @t;
|
|
106
|
+
SET @total = @@ROWCOUNT;
|
|
107
|
+
SELECT @i = COUNT(*) FROM @t WHERE act = 'INSERT';
|
|
108
|
+
SELECT @u = COUNT(*) FROM @t WHERE act != 'INSERT';
|
|
109
|
+
SELECT @total as total, @i as inserted, @u as updated;
|
|
110
|
+
`;
|
|
111
|
+
} else {
|
|
112
|
+
mergeSQL += `;\n`;
|
|
113
|
+
}
|
|
114
|
+
if (typeof arg.mergeCorrection === 'function') {
|
|
115
|
+
mergeSQL = arg.mergeCorrection(mergeSQL);
|
|
116
|
+
}
|
|
117
|
+
return mergeSQL;
|
|
118
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { getTableSchemaMs } from '../table-schema-ms';
|
|
2
|
+
import { prepareSqlValueMs } from '../prepare-value';
|
|
3
|
+
import { ITableSchemaMs } from '../../@types/i-ms';
|
|
4
|
+
import { TDBRecord } from '../../@types/i-common';
|
|
5
|
+
import { schemaTable } from '../../utils/utils';
|
|
6
|
+
|
|
7
|
+
export const getUpdateSqlMs = async <U extends TDBRecord = TDBRecord>(arg: {
|
|
8
|
+
connectionId: string,
|
|
9
|
+
commonSchemaAndTable: string,
|
|
10
|
+
record: U,
|
|
11
|
+
customSets: TDBRecord,
|
|
12
|
+
updateIdentity?: string[],
|
|
13
|
+
}): Promise<string> => {
|
|
14
|
+
const {
|
|
15
|
+
connectionId,
|
|
16
|
+
commonSchemaAndTable,
|
|
17
|
+
record,
|
|
18
|
+
customSets = {},
|
|
19
|
+
} = arg;
|
|
20
|
+
const tableSchema: ITableSchemaMs = await getTableSchemaMs(connectionId, commonSchemaAndTable);
|
|
21
|
+
const { columnsSchema, pk, fieldsWoSerialsAndRO } = tableSchema;
|
|
22
|
+
|
|
23
|
+
const { updateIdentity = pk } = arg;
|
|
24
|
+
|
|
25
|
+
const updateFields = fieldsWoSerialsAndRO.filter((f) => (!updateIdentity.includes(f)));
|
|
26
|
+
|
|
27
|
+
const getPreparedSqlValue = (f: string) => prepareSqlValueMs({ value: record[f], fieldDef: columnsSchema[f] });
|
|
28
|
+
|
|
29
|
+
const preparedRecord: TDBRecord = {};
|
|
30
|
+
updateFields.forEach((f) => {
|
|
31
|
+
if (customSets[f] !== undefined) {
|
|
32
|
+
preparedRecord[f] = customSets[f];
|
|
33
|
+
} else if (record[f] !== undefined) {
|
|
34
|
+
preparedRecord[f] = getPreparedSqlValue(f);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
const sets = Object.entries(preparedRecord).map(([f, v]) => `[${f}] = ${v}`).join(', ');
|
|
38
|
+
|
|
39
|
+
const where = updateIdentity.map((f) => `[${f}] = ${getPreparedSqlValue(f)}`).join(' AND ');
|
|
40
|
+
|
|
41
|
+
// noinspection UnnecessaryLocalVariableJS
|
|
42
|
+
const updateSql = `${'UPDATE'} ${schemaTable.to.ms(commonSchemaAndTable)} SET
|
|
43
|
+
${sets}
|
|
44
|
+
WHERE ${where};`;
|
|
45
|
+
return updateSql;
|
|
46
|
+
};
|
|
@@ -157,14 +157,6 @@ export const closeDbConnectionsMs = async (poolsToClose: ConnectionPool | Connec
|
|
|
157
157
|
}
|
|
158
158
|
};
|
|
159
159
|
|
|
160
|
-
/**
|
|
161
|
-
* @deprecated since version 2.0.0
|
|
162
|
-
*/
|
|
163
|
-
export const closeAllDbConnections = async (prefix?: string, noEcho?: boolean) => {
|
|
164
|
-
const poolsToClose = Object.values(poolsCacheMs);
|
|
165
|
-
await closeDbConnectionsMs(poolsToClose, prefix, noEcho);
|
|
166
|
-
};
|
|
167
|
-
|
|
168
160
|
/**
|
|
169
161
|
* Закрывает все соединения с БД
|
|
170
162
|
*
|
|
@@ -176,14 +168,6 @@ export const closeAllDbConnectionsMs = async (prefix?: string, noEcho?: boolean)
|
|
|
176
168
|
await closeDbConnectionsMs(poolsToClose, prefix, noEcho);
|
|
177
169
|
};
|
|
178
170
|
|
|
179
|
-
/**
|
|
180
|
-
* @deprecated since version 2.0.0
|
|
181
|
-
*/
|
|
182
|
-
export const closeDbConnectionsAndExit = async (poolsToClose: ConnectionPool | ConnectionPool[], prefix?: string) => {
|
|
183
|
-
await closeDbConnectionsMs(poolsToClose, prefix);
|
|
184
|
-
process.exit(0);
|
|
185
|
-
};
|
|
186
|
-
|
|
187
171
|
/**
|
|
188
172
|
* Закрывает указанные соединения с БД и прерывает работу скрипта
|
|
189
173
|
*
|