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.
Files changed (307) hide show
  1. package/dist/cjs/__tests__/db/ms/@gen-types/test-table_schema.js +3 -0
  2. package/dist/cjs/__tests__/db/ms/@gen-types/test-table_schema.js.map +1 -0
  3. package/dist/cjs/__tests__/db/ms/ddl/column-schema-for-test-table-schema-ms.json +216 -0
  4. package/dist/cjs/__tests__/db/ms/ms-get-sql.spec.js +190 -0
  5. package/dist/cjs/__tests__/db/ms/ms-get-sql.spec.js.map +1 -0
  6. package/dist/cjs/__tests__/db/ms/ms-prepare-sql-value.spec.js +584 -0
  7. package/dist/cjs/__tests__/db/ms/ms-prepare-sql-value.spec.js.map +1 -0
  8. package/dist/cjs/__tests__/db/ms/ms-table-schema.spec.js +107 -0
  9. package/dist/cjs/__tests__/db/ms/ms-table-schema.spec.js.map +1 -0
  10. package/dist/cjs/__tests__/db/pg/@gen-types/test-hard_case.js +3 -0
  11. package/dist/cjs/__tests__/db/pg/@gen-types/test-hard_case.js.map +1 -0
  12. package/dist/cjs/__tests__/db/pg/@gen-types/test-only_one_serial.js +3 -0
  13. package/dist/cjs/__tests__/db/pg/@gen-types/test-only_one_serial.js.map +1 -0
  14. package/dist/cjs/__tests__/db/pg/@gen-types/test-only_one_uniq.js +3 -0
  15. package/dist/cjs/__tests__/db/pg/@gen-types/test-only_one_uniq.js.map +1 -0
  16. package/dist/cjs/__tests__/db/pg/@gen-types/test-serial_and_uniq.js +3 -0
  17. package/dist/cjs/__tests__/db/pg/@gen-types/test-serial_and_uniq.js.map +1 -0
  18. package/dist/cjs/__tests__/db/pg/@gen-types/test-table_schema.js +3 -0
  19. package/dist/cjs/__tests__/db/pg/@gen-types/test-table_schema.js.map +1 -0
  20. package/dist/cjs/__tests__/db/pg/ddl/column-schema-for-test-table-schema-pg.json +170 -0
  21. package/dist/cjs/__tests__/db/pg/gen-table-interfaces-4-test-pg.js +36 -0
  22. package/dist/cjs/__tests__/db/pg/gen-table-interfaces-4-test-pg.js.map +1 -0
  23. package/dist/cjs/__tests__/db/pg/pg-get-sql.spec.js +261 -0
  24. package/dist/cjs/__tests__/db/pg/pg-get-sql.spec.js.map +1 -0
  25. package/dist/cjs/__tests__/db/pg/pg-insert.spec.js +294 -0
  26. package/dist/cjs/__tests__/db/pg/pg-insert.spec.js.map +1 -0
  27. package/dist/cjs/__tests__/db/pg/pg-prepare-sql-value.spec.js +575 -0
  28. package/dist/cjs/__tests__/db/pg/pg-prepare-sql-value.spec.js.map +1 -0
  29. package/dist/cjs/__tests__/db/pg/pg-table-schema.spec.js +117 -0
  30. package/dist/cjs/__tests__/db/pg/pg-table-schema.spec.js.map +1 -0
  31. package/dist/cjs/src/@types/i-data-types-ms.js +3 -0
  32. package/dist/cjs/src/@types/i-data-types-ms.js.map +1 -0
  33. package/dist/cjs/src/@types/i-data-types-pg.js +7 -0
  34. package/dist/cjs/src/@types/i-data-types-pg.js.map +1 -0
  35. package/dist/cjs/src/@types/i-pg.js +0 -21
  36. package/dist/cjs/src/@types/i-pg.js.map +1 -1
  37. package/dist/cjs/src/common.js +6 -5
  38. package/dist/cjs/src/common.js.map +1 -1
  39. package/dist/cjs/src/index.js +75 -54
  40. package/dist/cjs/src/index.js.map +1 -1
  41. package/dist/cjs/src/ms/gen-table-interfaces-ms.js +64 -0
  42. package/dist/cjs/src/ms/gen-table-interfaces-ms.js.map +1 -0
  43. package/dist/cjs/src/ms/get-sql/insert.js +37 -0
  44. package/dist/cjs/src/ms/get-sql/insert.js.map +1 -0
  45. package/dist/cjs/src/ms/get-sql/merge.js +93 -0
  46. package/dist/cjs/src/ms/get-sql/merge.js.map +1 -0
  47. package/dist/cjs/src/ms/get-sql/update.js +32 -0
  48. package/dist/cjs/src/ms/get-sql/update.js.map +1 -0
  49. package/dist/cjs/src/{mssql → ms}/pool-ms.js +6 -23
  50. package/dist/cjs/src/ms/pool-ms.js.map +1 -0
  51. package/dist/cjs/src/ms/prepare-value.js +178 -0
  52. package/dist/cjs/src/ms/prepare-value.js.map +1 -0
  53. package/dist/cjs/src/{mssql → ms}/query-ms.js +1 -1
  54. package/dist/cjs/src/ms/query-ms.js.map +1 -0
  55. package/dist/cjs/src/ms/table-schema-ms.js +241 -0
  56. package/dist/cjs/src/ms/table-schema-ms.js.map +1 -0
  57. package/dist/cjs/src/ms/utils-ms.js +92 -0
  58. package/dist/cjs/src/ms/utils-ms.js.map +1 -0
  59. package/dist/cjs/src/ms/wrap-transaction-ms.js +32 -0
  60. package/dist/cjs/src/ms/wrap-transaction-ms.js.map +1 -0
  61. package/dist/cjs/src/pg/gen-table-interfaces-pg.js +83 -0
  62. package/dist/cjs/src/pg/gen-table-interfaces-pg.js.map +1 -0
  63. package/dist/cjs/src/pg/get-sql/insert.js +38 -0
  64. package/dist/cjs/src/pg/get-sql/insert.js.map +1 -0
  65. package/dist/cjs/src/pg/get-sql/merge.js +60 -0
  66. package/dist/cjs/src/pg/get-sql/merge.js.map +1 -0
  67. package/dist/cjs/src/pg/get-sql/update.js +32 -0
  68. package/dist/cjs/src/pg/get-sql/update.js.map +1 -0
  69. package/dist/cjs/src/pg/{insert.js → insert-pg.js} +10 -10
  70. package/dist/cjs/src/pg/insert-pg.js.map +1 -0
  71. package/dist/cjs/src/pg/is-table-or-view-exists.js +1 -2
  72. package/dist/cjs/src/pg/is-table-or-view-exists.js.map +1 -1
  73. package/dist/cjs/src/pg/{pg-pool.js → pool-pg.js} +6 -7
  74. package/dist/cjs/src/pg/pool-pg.js.map +1 -0
  75. package/dist/cjs/src/pg/prepare-value.js +116 -69
  76. package/dist/cjs/src/pg/prepare-value.js.map +1 -1
  77. package/dist/cjs/src/pg/query-pg.js +2 -2
  78. package/dist/cjs/src/pg/query-pg.js.map +1 -1
  79. package/dist/cjs/src/pg/table-schema-pg.js +183 -0
  80. package/dist/cjs/src/pg/table-schema-pg.js.map +1 -0
  81. package/dist/cjs/src/pg/utils-pg.js +99 -0
  82. package/dist/cjs/src/pg/utils-pg.js.map +1 -0
  83. package/dist/cjs/src/utils/utils-array.js +152 -0
  84. package/dist/cjs/src/utils/utils-array.js.map +1 -0
  85. package/dist/cjs/src/utils/utils-dt.js +121 -0
  86. package/dist/cjs/src/utils/utils-dt.js.map +1 -0
  87. package/dist/cjs/src/utils/utils-num.js +127 -0
  88. package/dist/cjs/src/utils/utils-num.js.map +1 -0
  89. package/dist/cjs/src/utils/utils.js +66 -0
  90. package/dist/cjs/src/utils/utils.js.map +1 -0
  91. package/dist/esm/src/@types/i-data-types-ms.js +2 -0
  92. package/dist/esm/src/@types/i-data-types-ms.js.map +1 -0
  93. package/dist/esm/src/@types/i-data-types-pg.js +6 -0
  94. package/dist/esm/src/@types/i-data-types-pg.js.map +1 -0
  95. package/dist/esm/src/@types/i-pg.js +1 -20
  96. package/dist/esm/src/@types/i-pg.js.map +1 -1
  97. package/dist/esm/src/common.js +3 -2
  98. package/dist/esm/src/common.js.map +1 -1
  99. package/dist/esm/src/index.js +24 -15
  100. package/dist/esm/src/index.js.map +1 -1
  101. package/dist/esm/src/ms/gen-table-interfaces-ms.js +36 -0
  102. package/dist/esm/src/ms/gen-table-interfaces-ms.js.map +1 -0
  103. package/dist/esm/src/ms/get-sql/insert.js +33 -0
  104. package/dist/esm/src/ms/get-sql/insert.js.map +1 -0
  105. package/dist/esm/src/ms/get-sql/merge.js +89 -0
  106. package/dist/esm/src/ms/get-sql/merge.js.map +1 -0
  107. package/dist/esm/src/ms/get-sql/update.js +28 -0
  108. package/dist/esm/src/ms/get-sql/update.js.map +1 -0
  109. package/dist/esm/src/{mssql → ms}/pool-ms.js +5 -20
  110. package/dist/esm/src/ms/pool-ms.js.map +1 -0
  111. package/dist/esm/src/ms/prepare-value.js +149 -0
  112. package/dist/esm/src/ms/prepare-value.js.map +1 -0
  113. package/dist/esm/src/{mssql → ms}/query-ms.js +1 -1
  114. package/dist/esm/src/ms/query-ms.js.map +1 -0
  115. package/dist/esm/src/ms/table-schema-ms.js +213 -0
  116. package/dist/esm/src/ms/table-schema-ms.js.map +1 -0
  117. package/dist/esm/src/ms/utils-ms.js +65 -0
  118. package/dist/esm/src/ms/utils-ms.js.map +1 -0
  119. package/dist/esm/src/ms/wrap-transaction-ms.js +28 -0
  120. package/dist/esm/src/ms/wrap-transaction-ms.js.map +1 -0
  121. package/dist/esm/src/pg/gen-table-interfaces-pg.js +55 -0
  122. package/dist/esm/src/pg/gen-table-interfaces-pg.js.map +1 -0
  123. package/dist/esm/src/pg/get-sql/insert.js +34 -0
  124. package/dist/esm/src/pg/get-sql/insert.js.map +1 -0
  125. package/dist/esm/src/pg/get-sql/merge.js +56 -0
  126. package/dist/esm/src/pg/get-sql/merge.js.map +1 -0
  127. package/dist/esm/src/pg/get-sql/update.js +28 -0
  128. package/dist/esm/src/pg/get-sql/update.js.map +1 -0
  129. package/dist/esm/src/pg/{insert.js → insert-pg.js} +10 -10
  130. package/dist/esm/src/pg/insert-pg.js.map +1 -0
  131. package/dist/esm/src/pg/is-table-or-view-exists.js +1 -2
  132. package/dist/esm/src/pg/is-table-or-view-exists.js.map +1 -1
  133. package/dist/esm/src/pg/{pg-pool.js → pool-pg.js} +6 -7
  134. package/dist/esm/src/pg/pool-pg.js.map +1 -0
  135. package/dist/esm/src/pg/prepare-value.js +113 -67
  136. package/dist/esm/src/pg/prepare-value.js.map +1 -1
  137. package/dist/esm/src/pg/query-pg.js +1 -1
  138. package/dist/esm/src/pg/query-pg.js.map +1 -1
  139. package/dist/esm/src/pg/table-schema-pg.js +178 -0
  140. package/dist/esm/src/pg/table-schema-pg.js.map +1 -0
  141. package/dist/esm/src/pg/utils-pg.js +93 -0
  142. package/dist/esm/src/pg/utils-pg.js.map +1 -0
  143. package/dist/esm/src/utils/utils-array.js +125 -0
  144. package/dist/esm/src/utils/utils-array.js.map +1 -0
  145. package/dist/esm/src/utils/utils-dt.js +114 -0
  146. package/dist/esm/src/utils/utils-dt.js.map +1 -0
  147. package/dist/esm/src/utils/utils-num.js +117 -0
  148. package/dist/esm/src/utils/utils-num.js.map +1 -0
  149. package/dist/esm/src/utils/utils.js +58 -0
  150. package/dist/esm/src/utils/utils.js.map +1 -0
  151. package/dist/types/src/@types/i-common.d.ts +35 -3
  152. package/dist/types/src/@types/i-common.d.ts.map +1 -1
  153. package/dist/types/src/@types/i-data-types-ms.d.ts +3 -0
  154. package/dist/types/src/@types/i-data-types-ms.d.ts.map +1 -0
  155. package/dist/types/src/@types/i-data-types-pg.d.ts +35 -0
  156. package/dist/types/src/@types/i-data-types-pg.d.ts.map +1 -0
  157. package/dist/types/src/@types/i-ms.d.ts +26 -126
  158. package/dist/types/src/@types/i-ms.d.ts.map +1 -1
  159. package/dist/types/src/@types/i-pg.d.ts +11 -35
  160. package/dist/types/src/@types/i-pg.d.ts.map +1 -1
  161. package/dist/types/src/common.d.ts +1 -0
  162. package/dist/types/src/common.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +28 -16
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/ms/gen-table-interfaces-ms.d.ts +3 -0
  166. package/dist/types/src/ms/gen-table-interfaces-ms.d.ts.map +1 -0
  167. package/dist/types/src/ms/get-sql/insert.d.ts +9 -0
  168. package/dist/types/src/ms/get-sql/insert.d.ts.map +1 -0
  169. package/dist/types/src/ms/get-sql/merge.d.ts +14 -0
  170. package/dist/types/src/ms/get-sql/merge.d.ts.map +1 -0
  171. package/dist/types/src/ms/get-sql/update.d.ts +9 -0
  172. package/dist/types/src/ms/get-sql/update.d.ts.map +1 -0
  173. package/dist/types/src/{mssql → ms}/pool-ms.d.ts +0 -8
  174. package/dist/types/src/ms/pool-ms.d.ts.map +1 -0
  175. package/dist/types/src/ms/prepare-value.d.ts +12 -0
  176. package/dist/types/src/ms/prepare-value.d.ts.map +1 -0
  177. package/dist/types/src/ms/query-ms.d.ts +3 -0
  178. package/dist/types/src/ms/query-ms.d.ts.map +1 -0
  179. package/dist/types/src/ms/table-schema-ms.d.ts +9 -0
  180. package/dist/types/src/ms/table-schema-ms.d.ts.map +1 -0
  181. package/dist/types/src/ms/utils-ms.d.ts +3 -0
  182. package/dist/types/src/ms/utils-ms.d.ts.map +1 -0
  183. package/dist/types/src/ms/wrap-transaction-ms.d.ts +5 -0
  184. package/dist/types/src/ms/wrap-transaction-ms.d.ts.map +1 -0
  185. package/dist/types/src/pg/gen-table-interfaces-pg.d.ts +3 -0
  186. package/dist/types/src/pg/gen-table-interfaces-pg.d.ts.map +1 -0
  187. package/dist/types/src/pg/get-sql/insert.d.ts +9 -0
  188. package/dist/types/src/pg/get-sql/insert.d.ts.map +1 -0
  189. package/dist/types/src/pg/get-sql/merge.d.ts +10 -0
  190. package/dist/types/src/pg/get-sql/merge.d.ts.map +1 -0
  191. package/dist/types/src/pg/get-sql/update.d.ts +9 -0
  192. package/dist/types/src/pg/get-sql/update.d.ts.map +1 -0
  193. package/dist/types/src/pg/{insert.d.ts → insert-pg.d.ts} +3 -3
  194. package/dist/types/src/pg/insert-pg.d.ts.map +1 -0
  195. package/dist/types/src/pg/{pg-pool.d.ts → pool-pg.d.ts} +1 -1
  196. package/dist/types/src/pg/{pg-pool.d.ts.map → pool-pg.d.ts.map} +1 -1
  197. package/dist/types/src/pg/prepare-value.d.ts +3 -1
  198. package/dist/types/src/pg/prepare-value.d.ts.map +1 -1
  199. package/dist/types/src/pg/query-pg.d.ts +3 -2
  200. package/dist/types/src/pg/query-pg.d.ts.map +1 -1
  201. package/dist/types/src/pg/table-schema-pg.d.ts +12 -0
  202. package/dist/types/src/pg/table-schema-pg.d.ts.map +1 -0
  203. package/dist/types/src/pg/utils-pg.d.ts +5 -0
  204. package/dist/types/src/pg/utils-pg.d.ts.map +1 -0
  205. package/dist/types/src/utils/utils-array.d.ts +5 -0
  206. package/dist/types/src/utils/utils-array.d.ts.map +1 -0
  207. package/dist/types/src/utils/utils-dt.d.ts +15 -0
  208. package/dist/types/src/utils/utils-dt.d.ts.map +1 -0
  209. package/dist/types/src/utils/utils-num.d.ts +9 -0
  210. package/dist/types/src/utils/utils-num.d.ts.map +1 -0
  211. package/dist/types/src/utils/utils.d.ts +18 -0
  212. package/dist/types/src/utils/utils.d.ts.map +1 -0
  213. package/package.json +13 -13
  214. package/src/@types/i-common.ts +42 -4
  215. package/src/@types/i-data-types-ms.ts +81 -0
  216. package/src/@types/i-data-types-pg.ts +120 -0
  217. package/src/@types/i-ms.ts +29 -153
  218. package/src/@types/i-pg.ts +11 -36
  219. package/src/common.ts +4 -2
  220. package/src/index.ts +101 -59
  221. package/src/ms/gen-table-interfaces-ms.ts +52 -0
  222. package/src/ms/get-sql/insert.ts +45 -0
  223. package/src/ms/get-sql/merge.ts +118 -0
  224. package/src/ms/get-sql/update.ts +46 -0
  225. package/src/{mssql → ms}/pool-ms.ts +0 -16
  226. package/src/ms/prepare-value.ts +175 -0
  227. package/src/{mssql → ms}/query-ms.ts +2 -2
  228. package/src/ms/table-schema-ms.ts +231 -0
  229. package/src/ms/utils-ms.ts +72 -0
  230. package/src/ms/wrap-transaction-ms.ts +27 -0
  231. package/src/pg/gen-table-interfaces-pg.ts +74 -0
  232. package/src/pg/get-sql/insert.ts +46 -0
  233. package/src/pg/get-sql/merge.ts +70 -0
  234. package/src/pg/get-sql/update.ts +46 -0
  235. package/src/pg/{insert.ts → insert-pg.ts} +9 -9
  236. package/src/pg/prepare-value.ts +129 -67
  237. package/src/pg/query-pg.ts +4 -3
  238. package/src/pg/table-schema-pg.ts +196 -0
  239. package/src/pg/utils-pg.ts +97 -0
  240. package/src/utils/utils-array.ts +133 -0
  241. package/src/utils/utils-dt.ts +123 -0
  242. package/src/utils/utils-num.ts +131 -0
  243. package/src/utils/utils.ts +64 -0
  244. package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js +0 -50
  245. package/dist/cjs/__tests__/02_getValueForSqlMs.spec.js.map +0 -1
  246. package/dist/cjs/src/mssql/get-value-for-sql.js +0 -277
  247. package/dist/cjs/src/mssql/get-value-for-sql.js.map +0 -1
  248. package/dist/cjs/src/mssql/pool-ms.js.map +0 -1
  249. package/dist/cjs/src/mssql/query-ms.js.map +0 -1
  250. package/dist/cjs/src/mssql/sql.js +0 -427
  251. package/dist/cjs/src/mssql/sql.js.map +0 -1
  252. package/dist/cjs/src/mssql/utils.js +0 -36
  253. package/dist/cjs/src/mssql/utils.js.map +0 -1
  254. package/dist/cjs/src/pg/get-merge-sql.js +0 -52
  255. package/dist/cjs/src/pg/get-merge-sql.js.map +0 -1
  256. package/dist/cjs/src/pg/get-update-sql.js +0 -30
  257. package/dist/cjs/src/pg/get-update-sql.js.map +0 -1
  258. package/dist/cjs/src/pg/insert.js.map +0 -1
  259. package/dist/cjs/src/pg/pg-pool.js.map +0 -1
  260. package/dist/cjs/src/pg/table-schema.js +0 -179
  261. package/dist/cjs/src/pg/table-schema.js.map +0 -1
  262. package/dist/cjs/src/utils.js +0 -17
  263. package/dist/cjs/src/utils.js.map +0 -1
  264. package/dist/esm/src/mssql/get-value-for-sql.js +0 -272
  265. package/dist/esm/src/mssql/get-value-for-sql.js.map +0 -1
  266. package/dist/esm/src/mssql/pool-ms.js.map +0 -1
  267. package/dist/esm/src/mssql/query-ms.js.map +0 -1
  268. package/dist/esm/src/mssql/sql.js +0 -390
  269. package/dist/esm/src/mssql/sql.js.map +0 -1
  270. package/dist/esm/src/mssql/utils.js +0 -31
  271. package/dist/esm/src/mssql/utils.js.map +0 -1
  272. package/dist/esm/src/pg/get-merge-sql.js +0 -48
  273. package/dist/esm/src/pg/get-merge-sql.js.map +0 -1
  274. package/dist/esm/src/pg/get-update-sql.js +0 -26
  275. package/dist/esm/src/pg/get-update-sql.js.map +0 -1
  276. package/dist/esm/src/pg/insert.js.map +0 -1
  277. package/dist/esm/src/pg/pg-pool.js.map +0 -1
  278. package/dist/esm/src/pg/table-schema.js +0 -174
  279. package/dist/esm/src/pg/table-schema.js.map +0 -1
  280. package/dist/esm/src/utils.js +0 -14
  281. package/dist/esm/src/utils.js.map +0 -1
  282. package/dist/types/src/mssql/get-value-for-sql.d.ts +0 -11
  283. package/dist/types/src/mssql/get-value-for-sql.d.ts.map +0 -1
  284. package/dist/types/src/mssql/pool-ms.d.ts.map +0 -1
  285. package/dist/types/src/mssql/query-ms.d.ts +0 -3
  286. package/dist/types/src/mssql/query-ms.d.ts.map +0 -1
  287. package/dist/types/src/mssql/sql.d.ts +0 -57
  288. package/dist/types/src/mssql/sql.d.ts.map +0 -1
  289. package/dist/types/src/mssql/utils.d.ts +0 -10
  290. package/dist/types/src/mssql/utils.d.ts.map +0 -1
  291. package/dist/types/src/pg/get-merge-sql.d.ts +0 -9
  292. package/dist/types/src/pg/get-merge-sql.d.ts.map +0 -1
  293. package/dist/types/src/pg/get-update-sql.d.ts +0 -3
  294. package/dist/types/src/pg/get-update-sql.d.ts.map +0 -1
  295. package/dist/types/src/pg/insert.d.ts.map +0 -1
  296. package/dist/types/src/pg/table-schema.d.ts +0 -12
  297. package/dist/types/src/pg/table-schema.d.ts.map +0 -1
  298. package/dist/types/src/utils.d.ts +0 -9
  299. package/dist/types/src/utils.d.ts.map +0 -1
  300. package/src/mssql/get-value-for-sql.ts +0 -325
  301. package/src/mssql/sql.ts +0 -430
  302. package/src/mssql/utils.ts +0 -31
  303. package/src/pg/get-merge-sql.ts +0 -62
  304. package/src/pg/get-update-sql.ts +0 -32
  305. package/src/pg/table-schema.ts +0 -189
  306. package/src/utils.ts +0 -14
  307. /package/src/pg/{pg-pool.ts → pool-pg.ts} +0 -0
@@ -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 enum EDataTypePg {
4
- 'USER_DEFINED' = 'USER-DEFINED',
5
- 'bigint' = 'bigint',
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 IFieldDefPg {
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
- recordSchema: TRecordSchemaPg,
19
+ columnsSchema: TColumnsSchemaPg,
46
20
  pk: string[],
47
21
  uc: TUniqueConstraintsPg,
48
- serials: string[],
49
22
  defaults: { [fieldName: string]: string },
50
- fieldsList: string[],
51
- fieldsWoSerials: string[],
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-pool';
3
- import { closeAllDbConnectionsMs } from './mssql/pool-ms';
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
- IFieldSchemaMs,
24
- IGetValueForSqlArgsMs,
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
- IFieldDefPg,
45
- TRecordSchemaPg,
46
- ITableSchemaPg,
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
- getValueForSqlMs,
56
- binToHexString,
57
- getValueForSQL,
58
- } from './mssql/get-value-for-sql';
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
- poolsCacheMs,
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
- getRecordSchemaMs,
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 { mssqlEscape } from './mssql/utils';
103
+ export { wrapTransactionMs } from './ms/wrap-transaction-ms';
90
104
 
91
- export { getMergeSqlPg } from './pg/get-merge-sql';
105
+ // ######################### PG #####################################
92
106
 
93
- export { getUpdateSqlPg } from './pg/get-update-sql';
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 { insertPg, EUpdateLevel } from './pg/insert';
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-pool';
146
+ } from './pg/pool-pg';
106
147
 
107
- export { prepareSqlStringPg, prepareSqlValuePg } from './pg/prepare-value';
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 { getFieldsAndValuesPg, getTableSchemaPg } from './pg/table-schema';
112
-
113
- export { closeAllDb, graceExit, logSqlError } from './common';
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
  *