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
@@ -0,0 +1,575 @@
1
+ "use strict";
2
+ /* eslint-disable max-len */
3
+ /* eslint-disable no-console */
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ // "America/Toronto" -05:00
6
+ // "Europe/Berlin" +01:00
7
+ // "Europe/Moscow" +03:00
8
+ const luxon_1 = require("luxon");
9
+ const src_1 = require("../../../src");
10
+ const valuesAs0 = [
11
+ ['0', '0'],
12
+ [0, '0'],
13
+ ];
14
+ const valuesAsIntPositive = [
15
+ ['1', '1'],
16
+ [1, '1'],
17
+ ['+1.6', '2'],
18
+ [1.6, '2'],
19
+ ['+1.2', '1'],
20
+ [1.2, '1'],
21
+ ['0123', '123'],
22
+ ];
23
+ const valuesAsIntNegative = [
24
+ ['-1', '-1'],
25
+ [-1, '-1'],
26
+ ['-1.6', '-2'],
27
+ ];
28
+ const valuesAsNull = [
29
+ [null, 'null'],
30
+ [undefined, 'null'],
31
+ ['', 'null'],
32
+ ['u-2o', 'null'],
33
+ [false, 'null'],
34
+ [true, 'null'],
35
+ [[], 'null'],
36
+ [[1], 'null'],
37
+ [[-1], 'null'],
38
+ [{ a: 1 }, 'null'],
39
+ [{}, 'null'],
40
+ ];
41
+ describe('prepare sql value PG', () => {
42
+ describe('numeric', () => {
43
+ const testArr = [
44
+ [223.37253, '223.37', { precision: 5, scale: 2 }],
45
+ [-9223.37253, '-9223.373', { precision: 8, scale: 3 }],
46
+ [49223.37253, '49223.373', { precision: 8, scale: 3 }],
47
+ [549223.3725, '999.99', { precision: 5, scale: 2 }],
48
+ [49223.3725, '49223.4', { precision: 6, scale: 1 }],
49
+ [149223.3725, '99999.9', { precision: 6, scale: 1 }],
50
+ ...valuesAs0,
51
+ ...valuesAsNull,
52
+ ['1', '1'],
53
+ [1, '1'],
54
+ ['+1.6', '1.6'],
55
+ [1.6, '1.6'],
56
+ ['-1.2', '-1.2'],
57
+ [-1.2, '-1.2'],
58
+ ['0123', '123'],
59
+ ['-1', '-1'],
60
+ [-1, '-1'],
61
+ [12345.12345, '12345.12345'],
62
+ [-12345.12345, '-12345.12345'],
63
+ ['.6', '0.6'],
64
+ ['000.6', '0.6'],
65
+ [-9223372036854775808, '-9223372036854776000'],
66
+ [9223372036854775800, '9223372036854776000'],
67
+ // eslint-disable-next-line no-loss-of-precision
68
+ [-9223.372036854775808, '-9223.372036854777'],
69
+ // eslint-disable-next-line no-loss-of-precision
70
+ [9223.372036854775800, '9223.372036854777'],
71
+ [0.000000000000000000758, '7.58e-19'],
72
+ ];
73
+ testArr.forEach((caseValues) => {
74
+ const [value, expected, fieldDef = {}] = caseValues;
75
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { ...fieldDef, dataType: 'numeric' } });
76
+ test(`${value} --> ${res}`, () => {
77
+ expect(res).toBe(expected);
78
+ });
79
+ });
80
+ });
81
+ describe('time zone', () => {
82
+ test(`Node time zone should be Europe/Moscow`, () => {
83
+ expect(Intl.DateTimeFormat().resolvedOptions().timeZone).toBe('Europe/Moscow');
84
+ });
85
+ });
86
+ describe('boolean', () => {
87
+ const testArr = [
88
+ [null, 'null'],
89
+ [undefined, 'null'],
90
+ ['%#@@!', 'false'],
91
+ [false, 'false'],
92
+ ['false', 'false'],
93
+ ['0', 'false'],
94
+ ['no', 'false'],
95
+ ['no', 'false'],
96
+ ['нет', 'false'],
97
+ [0, 'false'],
98
+ ['true', 'true'],
99
+ ['1', 'true'],
100
+ ['yes', 'true'],
101
+ ['да', 'true'],
102
+ [1, 'true'],
103
+ [-1, 'true'],
104
+ [10, 'true'],
105
+ [[], 'true'],
106
+ [[1], 'true'],
107
+ [{ a: 1 }, 'true'],
108
+ [{}, 'true'],
109
+ ];
110
+ testArr.forEach((caseValues) => {
111
+ const [value, expected] = caseValues;
112
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { dataType: 'boolean' } });
113
+ test(`${value} --> ${res}`, () => {
114
+ expect(res).toBe(expected);
115
+ });
116
+ });
117
+ });
118
+ describe('smallint', () => {
119
+ const testArr = [
120
+ ...valuesAs0,
121
+ ...valuesAsIntPositive,
122
+ ...valuesAsIntNegative,
123
+ [12345678, '32767'],
124
+ [-12345678, '-32768'],
125
+ ...valuesAsNull,
126
+ ];
127
+ testArr.forEach((caseValues) => {
128
+ const [value, expected] = caseValues;
129
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { dataType: 'smallint' } });
130
+ test(`${value} --> ${res}`, () => {
131
+ expect(res).toBe(expected);
132
+ });
133
+ });
134
+ });
135
+ describe('int', () => {
136
+ const testArr = [
137
+ ...valuesAs0,
138
+ ...valuesAsNull,
139
+ ...valuesAsIntPositive,
140
+ ...valuesAsIntNegative,
141
+ [3147483647, '2147483647'],
142
+ [-3147483648, '-2147483648'],
143
+ ];
144
+ testArr.forEach((caseValues) => {
145
+ const [value, expected] = caseValues;
146
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { dataType: 'int' } });
147
+ test(`${value} --> ${res}`, () => {
148
+ expect(res).toBe(expected);
149
+ });
150
+ });
151
+ });
152
+ describe('bigint', () => {
153
+ const testArr = [
154
+ ['.6', 'null'],
155
+ ...valuesAs0,
156
+ ['1', '1'],
157
+ [1, '1'],
158
+ ['+1.6', '1'],
159
+ [1.6, '1'],
160
+ ['+1.2', '1'],
161
+ [1.2, '1'],
162
+ ['0123', '123'],
163
+ ['-1', '-1'],
164
+ [-1, '-1'],
165
+ ['-1.6', '-1'],
166
+ // Макс числа без варнинга об потере точности
167
+ [-9223372036854775808, '-9223372036854775808'],
168
+ [9223372036854775800, '9223372036854775808'], // ! на конце появляется 8
169
+ // Приводятся к максимальному и минимальному числам не BigInt
170
+ // eslint-disable-next-line no-loss-of-precision
171
+ [-9223372036854775809, '-9223372036854775808'],
172
+ // eslint-disable-next-line no-loss-of-precision
173
+ [9223372036854775807, '9223372036854775808'],
174
+ // Приводятся к максимальному и минимальному числам не BigInt
175
+ // eslint-disable-next-line no-loss-of-precision
176
+ [-9223372036854775809, '-9223372036854775808'],
177
+ // eslint-disable-next-line no-loss-of-precision
178
+ [9223372036854775807, '9223372036854775808'],
179
+ [-1234567890123456, '-1234567890123456'],
180
+ [1234567890123456, '1234567890123456'],
181
+ // n
182
+ [9223372036854775800n, '9223372036854775800'],
183
+ [-9223372036854775808n, '-9223372036854775808'],
184
+ [9223372036854775807n, '9223372036854775807'],
185
+ [-9223372036854775809n, '-9223372036854775809'],
186
+ [-1, '-1'],
187
+ [3101019223372036854775807n, '3101019223372036854775807'],
188
+ [-3101019223372036854775808n, '-3101019223372036854775808'],
189
+ // String
190
+ ['9223372036854775800', '9223372036854775800'],
191
+ ['-9223372036854775808', '-9223372036854775808'],
192
+ ['3101019223372036854775807', '3101019223372036854775807'],
193
+ ['-3101019223372036854775808', '-3101019223372036854775808'],
194
+ ...valuesAsNull,
195
+ ];
196
+ testArr.forEach((caseValues) => {
197
+ const [value, expected] = caseValues;
198
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { dataType: 'bigint' } });
199
+ test(`${value} --> ${res}`, () => {
200
+ expect(res).toBe(expected);
201
+ });
202
+ });
203
+ });
204
+ describe('real', () => {
205
+ const testArr = [
206
+ ...valuesAs0,
207
+ ...valuesAsNull,
208
+ ['1', '1'],
209
+ [1, '1'],
210
+ ['+1.6', '1.6'],
211
+ [1.6, '1.6'],
212
+ ['-1.2', '-1.2'],
213
+ [-1.2, '-1.2'],
214
+ ['0123', '123'],
215
+ ['-1', '-1'],
216
+ [-1, '-1'],
217
+ [12345.12345, '12345.12345'],
218
+ [-12345.12345, '-12345.12345'],
219
+ ['.6', '0.6'],
220
+ ['000.6', '0.6'],
221
+ [-9223372036854775808, '-9223372036854776000'],
222
+ [9223372036854775800, '9223372036854776000'],
223
+ // eslint-disable-next-line no-loss-of-precision
224
+ [-9223.372036854775808, '-9223.372036854777'],
225
+ // eslint-disable-next-line no-loss-of-precision
226
+ [9223.372036854775800, '9223.372036854777'],
227
+ [0.000000000000000000758, '7.58e-19'],
228
+ ];
229
+ testArr.forEach((caseValues) => {
230
+ const [value, expected] = caseValues;
231
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { dataType: 'real' } });
232
+ test(`${value} --> ${res}`, () => {
233
+ expect(res).toBe(expected);
234
+ });
235
+ });
236
+ });
237
+ describe('json', () => {
238
+ const testArr = [
239
+ [null, 'null'],
240
+ [undefined, 'null'],
241
+ ['', `'""'::json`],
242
+ ['ffff', `'"ffff"'::json`],
243
+ ['0', `'"0"'::json`],
244
+ ['{{}}', `'"{{}}"'::json`],
245
+ [true, `'true'::json`],
246
+ [-1.2, `'-1.2'::json`],
247
+ [1, `'1'::json`],
248
+ [[], `'[]'::json`],
249
+ [[1, 'f', true, null], `'[1,"f",true,null]'::json`],
250
+ [{ a: 1, b: '2', c: false }, `'{"a":1,"b":"2","c":false}'::json`],
251
+ ];
252
+ testArr.forEach((caseValues) => {
253
+ const [value, expected] = caseValues;
254
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { dataType: 'json' } });
255
+ test(`${value} --> ${res}`, () => {
256
+ expect(res).toBe(expected);
257
+ });
258
+ });
259
+ });
260
+ describe('jsonb', () => {
261
+ const testArr = [
262
+ [{ a: 1, b: '2' }, `'{"a":1,"b":"2"}'::jsonb`],
263
+ ];
264
+ testArr.forEach((caseValues) => {
265
+ const [value, expected] = caseValues;
266
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { dataType: 'jsonb' } });
267
+ test(`${value} --> ${res}`, () => {
268
+ expect(res).toBe(expected);
269
+ });
270
+ });
271
+ });
272
+ describe('varchar(10)', () => {
273
+ const testArr = [
274
+ [null, 'null'],
275
+ [undefined, 'null'],
276
+ ['', `''`],
277
+ [`_aa'aa_`, `$s$_aa'aa_$s$`],
278
+ [`aa%aa`, `'aa%aa'`],
279
+ [`aa$aa`, `'aa$aa'`],
280
+ [`_aa$$aa_`, `$s$_aa$$aa_$s$`],
281
+ [{ a: 1, b: '2' }, `'[object Ob'`],
282
+ [[], `''`],
283
+ [1, `'1'`],
284
+ [0, `'0'`],
285
+ ];
286
+ testArr.forEach((caseValues) => {
287
+ const [value, expected] = caseValues;
288
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { dataType: 'varchar', length: 10 } });
289
+ test(`${value} --> ${res}`, () => {
290
+ expect(res).toBe(expected);
291
+ });
292
+ });
293
+ });
294
+ describe('uuid', () => {
295
+ const testArr = [
296
+ [null, 'null'],
297
+ [undefined, 'null'],
298
+ ['', 'null'],
299
+ [`edacd531-c762-45bb-b5d1-01d49219b`, 'null'],
300
+ [45, 'null'],
301
+ [`edacd531-c762-45bb-b5d1-01d49219bbfd`, `'edacd531-c762-45bb-b5d1-01d49219bbfd'`],
302
+ [`edacd531-c762-45bb-b5d1-01d49219bbfdffff`, `'edacd531-c762-45bb-b5d1-01d49219bbfd'`],
303
+ ];
304
+ testArr.forEach((caseValues) => {
305
+ const [value, expected] = caseValues;
306
+ const res = (0, src_1.prepareSqlValuePg)({ value, fieldDef: { dataType: 'uuid' } });
307
+ test(`${value} --> ${res}`, () => {
308
+ expect(res).toBe(expected);
309
+ });
310
+ });
311
+ });
312
+ describe('timestamp', () => {
313
+ const testArr = [
314
+ // Исходное время интерпретируется в указанной таймзоне (fromZone). Результат - в локальной
315
+ ['2000-01-22T11:59:59.123', `'2000-01-22T14:59:59.123000+03:00'::timestamp`, { dateTimeOptions: { fromZone: 'UTC', includeOffset: true } }],
316
+ ['2000-01-22T11:59:59.123', `'2000-01-22T14:59:59.123000'::timestamp`, { dateTimeOptions: { fromZone: 'UTC' } }],
317
+ // Исходное время интерпретируется в локальной таймзоне (fromZone). Результат - в локальной
318
+ ['2000-01-22T11:59:59.123', `'2000-01-22T11:59:59.123000+03:00'::timestamp`, { dateTimeOptions: { includeOffset: true } }],
319
+ ['2000-01-22T11:59:59.123', `'2000-01-22T11:59:59.123000'::timestamp`],
320
+ // Исходное время интерпретируется в указанной таймзоне (fromZone). Результат - в указанной (setZone)
321
+ ['2000-01-22T11:59:59.123', `'2000-01-22T11:59:59.123000Z'::timestamp`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC', includeOffset: true } }],
322
+ ['2000-01-22T11:59:59.123', `'2000-01-22T11:59:59.123000'::timestamp`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
323
+ // Неполные миллисекунды
324
+ ['2000-01-22T11:59:59.12', `'2000-01-22T11:59:59.120000'::timestamp`],
325
+ ['2000-01-22T11:59:59.1', `'2000-01-22T11:59:59.100000'::timestamp`],
326
+ // Строки с указанием таймзоны
327
+ ['2000-01-22T11:59:59.123Z', `'2000-01-22T14:59:59.123000'::timestamp`],
328
+ ['2000-01-22T11:59:59.12+03:00', `'2000-01-22T11:59:59.120000'::timestamp`],
329
+ ['2000-01-22T11:59:59', `'2000-01-22T11:59:59.000000'::timestamp`],
330
+ ['2000-01-22T11:59', `'2000-01-22T11:59:00.000000'::timestamp`],
331
+ ['2000-01-22 11:59:59.123', `'2000-01-22T11:59:59.123000'::timestamp`],
332
+ ['2000-01-22 11:59:59.12', `'2000-01-22T11:59:59.120000'::timestamp`],
333
+ ['2000-01-22 11:59:59.1', `'2000-01-22T11:59:59.100000'::timestamp`],
334
+ ['2000-01-22 11:59:59', `'2000-01-22T11:59:59.000000'::timestamp`],
335
+ ['2000-01-22 11:59', `'2000-01-22T11:59:00.000000'::timestamp`],
336
+ ['2000-01-22', `'2000-01-22T00:00:00.000000'::timestamp`],
337
+ [new Date(2023, 1, 2, 22, 11, 59, 123), `'2023-02-02T22:11:59.123000'::timestamp`],
338
+ [1675365119123, `'2023-02-02T22:11:59.123000'::timestamp`],
339
+ [luxon_1.DateTime.fromMillis(1675365119123), `'2023-02-02T22:11:59.123000'::timestamp`],
340
+ ['22:59:59.123', `'${luxon_1.DateTime.now().toISODate()}T22:59:59.123000'::timestamp`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
341
+ ['11:59:59.1', `'${luxon_1.DateTime.now().toISODate()}T14:59:59.100000'::timestamp`, { dateTimeOptions: { fromZone: 'UTC' } }],
342
+ ['11:59:59', `'${luxon_1.DateTime.now().toISODate()}T11:59:59.000000'::timestamp`],
343
+ ['22:59', `'${luxon_1.DateTime.now().plus({ day: 1 }).toISODate()}T01:59:00.000000'::timestamp`, { dateTimeOptions: { fromZone: 'UTC' } }],
344
+ ['DDDDDD', 'null'],
345
+ [null, 'null'],
346
+ [undefined, 'null'],
347
+ ];
348
+ testArr.forEach((caseValues) => {
349
+ const [value, expected, fDev = {}] = caseValues;
350
+ const fieldDef = { ...fDev, dataType: 'timestamp' };
351
+ const dateStrOut = (0, src_1.prepareSqlValuePg)({ value, fieldDef });
352
+ const { fromZone: f, setZone: s } = fDev.dateTimeOptions || {};
353
+ const v = value + (f ? ` / from: ${f}` : '') + (s ? ` / to: ${s}` : '');
354
+ test(`${v} --> ${dateStrOut}`, () => {
355
+ expect(dateStrOut).toBe(expected);
356
+ });
357
+ });
358
+ });
359
+ describe('timestamptz', () => {
360
+ const testArr = [
361
+ // Исходное время интерпретируется в указанной таймзоне (fromZone). Результат - в локальной
362
+ ['2000-01-22T11:59:59.123', `'2000-01-22T14:59:59.123000+03:00'::timestamptz`, { dateTimeOptions: { fromZone: 'UTC' } }],
363
+ // по умолчанию offset включен
364
+ ['2000-01-22T11:59:59.123', `'2000-01-22T14:59:59.123000'::timestamptz`, { dateTimeOptions: { fromZone: 'UTC', includeOffset: false } }],
365
+ // Исходное время интерпретируется в локальной таймзоне (fromZone). Результат - в локальной
366
+ ['2000-01-22T11:59:59.123', `'2000-01-22T11:59:59.123000+03:00'::timestamptz`, { dateTimeOptions: { includeOffset: true } }],
367
+ ['2000-01-22T11:59:59.123', `'2000-01-22T11:59:59.123000+03:00'::timestamptz`],
368
+ // Исходное время интерпретируется в указанной таймзоне (fromZone). Результат - в указанной (setZone)
369
+ ['2000-01-22T11:59:59.123', `'2000-01-22T11:59:59.123000Z'::timestamptz`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC', includeOffset: true } }],
370
+ ['2000-01-22T11:59:59.123', `'2000-01-22T11:59:59.123000Z'::timestamptz`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
371
+ // Неполные миллисекунды
372
+ ['2000-01-22T11:59:59.12', `'2000-01-22T11:59:59.120000+03:00'::timestamptz`],
373
+ ['2000-01-22T11:59:59.1', `'2000-01-22T11:59:59.100000+03:00'::timestamptz`],
374
+ // Строки с указанием таймзоны
375
+ ['2000-01-22T11:59:59.123Z', `'2000-01-22T14:59:59.123000+03:00'::timestamptz`],
376
+ ['2000-01-22T11:59:59.12+03:00', `'2000-01-22T11:59:59.120000+03:00'::timestamptz`],
377
+ ['2000-01-22T11:59:59', `'2000-01-22T11:59:59.000000+03:00'::timestamptz`],
378
+ ['2000-01-22T11:59', `'2000-01-22T11:59:00.000000+03:00'::timestamptz`],
379
+ ['2000-01-22 11:59:59.123', `'2000-01-22T11:59:59.123000+03:00'::timestamptz`],
380
+ ['2000-01-22 11:59:59.12', `'2000-01-22T11:59:59.120000+03:00'::timestamptz`],
381
+ ['2000-01-22 11:59:59.1', `'2000-01-22T11:59:59.100000+03:00'::timestamptz`],
382
+ ['2000-01-22 11:59:59', `'2000-01-22T11:59:59.000000+03:00'::timestamptz`],
383
+ ['2000-01-22 11:59', `'2000-01-22T11:59:00.000000+03:00'::timestamptz`],
384
+ ['2000-01-22', `'2000-01-22T00:00:00.000000+03:00'::timestamptz`],
385
+ [new Date(2023, 1, 2, 22, 11, 59, 123), `'2023-02-02T22:11:59.123000+03:00'::timestamptz`],
386
+ [1675365119123, `'2023-02-02T22:11:59.123000+03:00'::timestamptz`],
387
+ [luxon_1.DateTime.fromMillis(1675365119123), `'2023-02-02T22:11:59.123000+03:00'::timestamptz`],
388
+ ['22:59:59.123', `'${luxon_1.DateTime.now().toISODate()}T22:59:59.123000Z'::timestamptz`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
389
+ ['11:59:59.1', `'${luxon_1.DateTime.now().toISODate()}T14:59:59.100000+03:00'::timestamptz`, { dateTimeOptions: { fromZone: 'UTC' } }],
390
+ ['11:59:59', `'${luxon_1.DateTime.now().toISODate()}T11:59:59.000000+03:00'::timestamptz`],
391
+ ['22:59', `'${luxon_1.DateTime.now().plus({ day: 1 }).toISODate()}T01:59:00.000000+03:00'::timestamptz`, { dateTimeOptions: { fromZone: 'UTC' } }],
392
+ // ========= SCALE =============
393
+ ['2000-01-22 11:59:59.123', `'2000-01-22T11:59:59+03:00'::timestamptz`, { dtPrecision: 0 }],
394
+ ['2000-01-22 11:59:59.123', `'2000-01-22T11:59:59.1+03:00'::timestamptz`, { dtPrecision: 1 }],
395
+ ['2000-01-22 11:59:59.123', `'2000-01-22T11:59:59.12+03:00'::timestamptz`, { dtPrecision: 2 }],
396
+ ['2000-01-22 11:59:59.123', `'2000-01-22T11:59:59.123+03:00'::timestamptz`, { dtPrecision: 3 }],
397
+ ['2000-01-22 11:59:59.123', `'2000-01-22T11:59:59.1230+03:00'::timestamptz`, { dtPrecision: 4 }],
398
+ ['2000-01-22 11:59:59.123', `'2000-01-22T11:59:59.1230000+03:00'::timestamptz`, { dtPrecision: 7 }],
399
+ ['2000-01-22 11:59:59.123', `'2000-01-22T11:59:59.1230000+03:00'::timestamptz`, { dtPrecision: 10 }],
400
+ ['2000-01-22 11:59:59.1234567', `'2000-01-22T11:59:59.123456+03:00'::timestamptz`],
401
+ ['2000-01-22 11:59:59.1234567', `'2000-01-22T11:59:59.1234+03:00'::timestamptz`, { dtPrecision: 4 }],
402
+ ['2000-01-22 11:59:59.1234567', `'2000-01-22T11:59:59.1234567+03:00'::timestamptz`, { dtPrecision: 7 }],
403
+ // ========= SCALE, ZONE =============
404
+ ['2000-01-22 11:59:59.123Z', `'2000-01-22T14:59:59.1230+03:00'::timestamptz`, { dtPrecision: 4 }],
405
+ ['2000-01-22 11:59:59.123+05:00', `'2000-01-22T09:59:59.1230+03:00'::timestamptz`, { dtPrecision: 4 }],
406
+ ['2000-01-22 11:59:59.123Z', `'2000-01-22T14:59:59.123000+03:00'::timestamptz`],
407
+ ['2000-01-22 11:59:59.123+05:00', `'2000-01-22T09:59:59.123000+03:00'::timestamptz`],
408
+ ['2000-01-22 11:59:59.123+05:00', `'2000-01-22T06:59:59.123000Z'::timestamptz`, { dateTimeOptions: { setZone: 'UTC' } }],
409
+ ['DDDDDD', 'null'],
410
+ [null, 'null'],
411
+ [undefined, 'null'],
412
+ ];
413
+ testArr.forEach((caseValues) => {
414
+ const [value, expected, fDev = {}] = caseValues;
415
+ const fieldDef = { ...fDev, dataType: 'timestamptz' };
416
+ const dateStrOut = (0, src_1.prepareSqlValuePg)({ value, fieldDef });
417
+ const { fromZone: f, setZone: s } = fDev.dateTimeOptions || {};
418
+ const v = value + (f ? ` / from: ${f}` : '') + (s ? ` / to: ${s}` : '');
419
+ test(`${v} --> ${dateStrOut}`, () => {
420
+ expect(dateStrOut).toBe(expected);
421
+ });
422
+ });
423
+ });
424
+ describe('date', () => {
425
+ const testArr = [
426
+ ['2000-01-22T11:59:59.123', `'2000-01-22'::date`, { dateTimeOptions: { fromZone: 'UTC' } }],
427
+ ['2000-01-22T11:59:59.123', `'2000-01-22'::date`],
428
+ ['2000-01-22T22:59:59.123', `'2000-01-23'::date`, { dateTimeOptions: { fromZone: 'UTC' } }],
429
+ ['2000-01-22T22:59:59.123', `'2000-01-22'::date`],
430
+ ['2000-01-22T22:59:59.123', `'2000-01-22'::date`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
431
+ ['2000-01-22T11:59:59.1', `'2000-01-22'::date`, { dateTimeOptions: { fromZone: 'UTC' } }],
432
+ ['2000-01-22T11:59:59', `'2000-01-22'::date`],
433
+ ['2000-01-22T22:59', `'2000-01-23'::date`, { dateTimeOptions: { fromZone: 'UTC' } }],
434
+ ['2000-01-22 22:59:59.123', `'2000-01-22'::date`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
435
+ ['2000-01-22 11:59:59.1', `'2000-01-22'::date`, { dateTimeOptions: { fromZone: 'UTC' } }],
436
+ ['2000-01-22 11:59:59', `'2000-01-22'::date`],
437
+ ['2000-01-22 22:59', `'2000-01-23'::date`, { dateTimeOptions: { fromZone: 'UTC' } }],
438
+ ['2000-01-22', `'2000-01-22'::date`],
439
+ [new Date(2023, 1, 2, 22, 11, 59), `'2023-02-02'::date`],
440
+ [1675365119123, `'2023-02-02'::date`],
441
+ [luxon_1.DateTime.fromMillis(1675365119123), `'2023-02-02'::date`],
442
+ ['DDDDDD', 'null'],
443
+ [null, 'null'],
444
+ [undefined, 'null'],
445
+ ];
446
+ testArr.forEach((caseValues) => {
447
+ const [value, expected, fDev = {}] = caseValues;
448
+ const fieldDef = { ...fDev, dataType: 'date' };
449
+ const dateStrOut = (0, src_1.prepareSqlValuePg)({ value, fieldDef });
450
+ const { fromZone: f, setZone: s } = fDev.dateTimeOptions || {};
451
+ const v = value + (f ? ` / from: ${f}` : '') + (s ? ` / to: ${s}` : '');
452
+ test(`${v} --> ${dateStrOut}`, () => {
453
+ expect(dateStrOut).toBe(expected);
454
+ });
455
+ });
456
+ });
457
+ describe('time', () => {
458
+ const testArr = [
459
+ ['22:59:59.1234', `'22:59:59.1234'::time`],
460
+ ['2000-01-22T11:59:59.123', `'14:59:59.123'::time`, { dateTimeOptions: { fromZone: 'UTC' } }],
461
+ ['2000-01-22T11:59:59.123', `'11:59:59.123'::time`],
462
+ ['2000-01-22T22:59:59.123', `'01:59:59.123'::time`, { dateTimeOptions: { fromZone: 'UTC' } }],
463
+ ['2000-01-22T22:59:59.123', `'22:59:59.123'::time`],
464
+ ['2000-01-22T22:59:59.123', `'22:59:59.123'::time`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
465
+ ['2000-01-22T11:59:59.1', `'14:59:59.100'::time`, { dateTimeOptions: { fromZone: 'UTC' } }],
466
+ ['2000-01-22T11:59:59', `'11:59:59'::time`],
467
+ ['2000-01-22T22:59', `'01:59:00'::time`, { dateTimeOptions: { fromZone: 'UTC' } }],
468
+ ['2000-01-22 22:59:59.123', `'22:59:59.123'::time`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
469
+ ['2000-01-22 11:59:59.1', `'14:59:59.100'::time`, { dateTimeOptions: { fromZone: 'UTC' } }],
470
+ ['2000-01-22 11:59:59', `'11:59:59'::time`],
471
+ ['2000-01-22 22:59', `'01:59:00'::time`, { dateTimeOptions: { fromZone: 'UTC' } }],
472
+ ['2000-01-22', `'00:00:00'::time`],
473
+ ['22:59:59.123', `'22:59:59.123'::time`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
474
+ ['11:59:59.1', `'14:59:59.100'::time`, { dateTimeOptions: { fromZone: 'UTC' } }],
475
+ ['11:59:59', `'11:59:59'::time`],
476
+ ['22:59', `'01:59:00'::time`, { dateTimeOptions: { fromZone: 'UTC' } }],
477
+ [new Date(2023, 1, 2, 22, 11, 59, 123), `'22:11:59.123'::time`],
478
+ [1675365119123, `'22:11:59.123'::time`],
479
+ [luxon_1.DateTime.fromMillis(1675365119123), `'22:11:59.123'::time`],
480
+ ['DDDDDD', 'null'],
481
+ [null, 'null'],
482
+ [undefined, 'null'],
483
+ ];
484
+ testArr.forEach((caseValues) => {
485
+ const [value, expected, fDev = {}] = caseValues;
486
+ const fieldDef = { ...fDev, dataType: 'time' };
487
+ const dateStrOut = (0, src_1.prepareSqlValuePg)({ value, fieldDef });
488
+ const { fromZone: f, setZone: s } = fDev.dateTimeOptions || {};
489
+ const v = value + (f ? ` / from: ${f}` : '') + (s ? ` / to: ${s}` : '');
490
+ test(`${v} --> ${dateStrOut}`, () => {
491
+ expect(dateStrOut).toBe(expected);
492
+ });
493
+ });
494
+ });
495
+ describe('timetz', () => {
496
+ const testArr = [
497
+ ['2000-01-22T11:59:59.123', `'14:59:59.123+03:00'::timetz`, { dateTimeOptions: { fromZone: 'UTC' } }],
498
+ ['2000-01-22T11:59:59.123', `'11:59:59.123+03:00'::timetz`],
499
+ ['2000-01-22T22:59:59.123', `'01:59:59.123+03:00'::timetz`, { dateTimeOptions: { fromZone: 'UTC' } }],
500
+ ['2000-01-22T22:59:59.123', `'22:59:59.123+03:00'::timetz`],
501
+ ['2000-01-22T22:59:59.123', `'22:59:59.123Z'::timetz`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
502
+ ['2000-01-22T11:59:59.1', `'14:59:59.100+03:00'::timetz`, { dateTimeOptions: { fromZone: 'UTC' } }],
503
+ ['2000-01-22T11:59:59', `'11:59:59+03:00'::timetz`],
504
+ ['2000-01-22T22:59', `'01:59:00+03:00'::timetz`, { dateTimeOptions: { fromZone: 'UTC' } }],
505
+ ['2000-01-22 22:59:59.123', `'22:59:59.123Z'::timetz`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
506
+ ['2000-01-22 11:59:59.1', `'14:59:59.100+03:00'::timetz`, { dateTimeOptions: { fromZone: 'UTC' } }],
507
+ ['2000-01-22 11:59:59', `'11:59:59+03:00'::timetz`],
508
+ ['2000-01-22 22:59', `'01:59:00+03:00'::timetz`, { dateTimeOptions: { fromZone: 'UTC' } }],
509
+ ['2000-01-22', `'00:00:00+03:00'::timetz`],
510
+ ['22:59:59.123', `'22:59:59.123Z'::timetz`, { dateTimeOptions: { fromZone: 'UTC', setZone: 'UTC' } }],
511
+ ['11:59:59.1', `'14:59:59.100+03:00'::timetz`, { dateTimeOptions: { fromZone: 'UTC' } }],
512
+ ['11:59:59', `'11:59:59+03:00'::timetz`],
513
+ ['22:59', `'01:59:00+03:00'::timetz`, { dateTimeOptions: { fromZone: 'UTC' } }],
514
+ [new Date(2023, 1, 2, 22, 11, 59, 123), `'22:11:59.123+03:00'::timetz`],
515
+ [1675365119123, `'22:11:59.123+03:00'::timetz`],
516
+ [luxon_1.DateTime.fromMillis(1675365119123), `'22:11:59.123+03:00'::timetz`],
517
+ ['DDDDDD', 'null'],
518
+ [null, 'null'],
519
+ [undefined, 'null'],
520
+ ];
521
+ testArr.forEach((caseValues) => {
522
+ const [value, expected, fDev = {}] = caseValues;
523
+ const fieldDef = { ...fDev, dataType: 'timetz' };
524
+ const dateStrOut = (0, src_1.prepareSqlValuePg)({ value, fieldDef });
525
+ const { fromZone: f, setZone: s } = fDev.dateTimeOptions || {};
526
+ const v = value + (f ? ` / from: ${f}` : '') + (s ? ` / to: ${s}` : '');
527
+ test(`${v} --> ${dateStrOut}`, () => {
528
+ expect(dateStrOut).toBe(expected);
529
+ });
530
+ });
531
+ });
532
+ describe('bytea', () => {
533
+ const testArr = [
534
+ [Buffer.from('asdfghjkyytreew'), `'0x6173646667686A6B79797472656577'`],
535
+ ['DDDDDD', `'0xDDDDDD'`],
536
+ [null, 'null'],
537
+ [undefined, 'null'],
538
+ ];
539
+ testArr.forEach((caseValues) => {
540
+ const [value, expected, fDev = {}] = caseValues;
541
+ const fieldDef = { ...fDev, dataType: 'bytea' };
542
+ const dateStrOut = (0, src_1.prepareSqlValuePg)({ value, fieldDef });
543
+ test(`${value} --> ${dateStrOut}`, () => {
544
+ expect(dateStrOut).toBe(expected);
545
+ });
546
+ });
547
+ });
548
+ describe('ARRAY', () => {
549
+ const testArr = [
550
+ [null, 'null'],
551
+ [undefined, 'null'],
552
+ [1, 'null'],
553
+ [0, 'null'],
554
+ [false, 'null'],
555
+ [true, 'null'],
556
+ ['', 'null'],
557
+ [{ a: 1, b: '2' }, 'null'],
558
+ [[], `'{}'`],
559
+ [[1, '2', 'a', '', null], `'{1,2,null,null,null}'`, { arrayType: 'int' }],
560
+ [[1, '2', 'a', '', null], `'{"1","2","a","",null}'`, { arrayType: 'varchar' }],
561
+ [[1, 0, '2', 'a', '', true, false, null], `'{true,false,false,false,false,true,false,null}'`, { arrayType: 'bool' }],
562
+ ];
563
+ testArr.forEach((caseValues) => {
564
+ const [value, expected, fDev = {}] = caseValues;
565
+ const fieldDef = { ...fDev, dataType: 'ARRAY' };
566
+ const dateStrOut = (0, src_1.prepareSqlValuePg)({ value, fieldDef });
567
+ let v = Array.isArray(value) ? `[${value.join(', ')}]` : value;
568
+ v = fDev.arrayType ? `${v} / arrayType: ${fDev.arrayType}` : v;
569
+ test(`${v} --> ${dateStrOut}`, () => {
570
+ expect(dateStrOut).toBe(expected);
571
+ });
572
+ });
573
+ });
574
+ });
575
+ //# sourceMappingURL=pg-prepare-sql-value.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pg-prepare-sql-value.spec.js","sourceRoot":"","sources":["../../../../../__tests__/db/pg/pg-prepare-sql-value.spec.ts"],"names":[],"mappings":"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"}