drizzle-orm 0.43.1-63b40d5 → 0.43.1-9811cd4

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 (359) hide show
  1. package/column-builder.cjs.map +1 -1
  2. package/column-builder.d.cts +6 -4
  3. package/column-builder.d.ts +6 -4
  4. package/column-builder.js.map +1 -1
  5. package/column.cjs +2 -0
  6. package/column.cjs.map +1 -1
  7. package/column.d.cts +1 -0
  8. package/column.d.ts +1 -0
  9. package/column.js +2 -0
  10. package/column.js.map +1 -1
  11. package/mssql-core/alias.cjs +32 -0
  12. package/mssql-core/alias.cjs.map +1 -0
  13. package/mssql-core/alias.d.cts +4 -0
  14. package/mssql-core/alias.d.ts +4 -0
  15. package/mssql-core/alias.js +8 -0
  16. package/mssql-core/alias.js.map +1 -0
  17. package/mssql-core/checks.cjs +58 -0
  18. package/mssql-core/checks.cjs.map +1 -0
  19. package/mssql-core/checks.d.cts +18 -0
  20. package/mssql-core/checks.d.ts +18 -0
  21. package/mssql-core/checks.js +32 -0
  22. package/mssql-core/checks.js.map +1 -0
  23. package/mssql-core/columns/all.cjs +72 -0
  24. package/mssql-core/columns/all.cjs.map +1 -0
  25. package/mssql-core/columns/all.d.cts +43 -0
  26. package/mssql-core/columns/all.d.ts +43 -0
  27. package/mssql-core/columns/all.js +48 -0
  28. package/mssql-core/columns/all.js.map +1 -0
  29. package/mssql-core/columns/bigint.cjs +67 -0
  30. package/mssql-core/columns/bigint.cjs.map +1 -0
  31. package/mssql-core/columns/bigint.d.cts +33 -0
  32. package/mssql-core/columns/bigint.d.ts +33 -0
  33. package/mssql-core/columns/bigint.js +41 -0
  34. package/mssql-core/columns/bigint.js.map +1 -0
  35. package/mssql-core/columns/binary.cjs +57 -0
  36. package/mssql-core/columns/binary.cjs.map +1 -0
  37. package/mssql-core/columns/binary.d.cts +28 -0
  38. package/mssql-core/columns/binary.d.ts +28 -0
  39. package/mssql-core/columns/binary.js +31 -0
  40. package/mssql-core/columns/binary.js.map +1 -0
  41. package/mssql-core/columns/bit.cjs +54 -0
  42. package/mssql-core/columns/bit.cjs.map +1 -0
  43. package/mssql-core/columns/bit.d.cts +24 -0
  44. package/mssql-core/columns/bit.d.ts +24 -0
  45. package/mssql-core/columns/bit.js +28 -0
  46. package/mssql-core/columns/bit.js.map +1 -0
  47. package/mssql-core/columns/char.cjs +74 -0
  48. package/mssql-core/columns/char.cjs.map +1 -0
  49. package/mssql-core/columns/char.d.cts +37 -0
  50. package/mssql-core/columns/char.d.ts +37 -0
  51. package/mssql-core/columns/char.js +47 -0
  52. package/mssql-core/columns/char.js.map +1 -0
  53. package/mssql-core/columns/common.cjs +110 -0
  54. package/mssql-core/columns/common.cjs.map +1 -0
  55. package/mssql-core/columns/common.d.cts +67 -0
  56. package/mssql-core/columns/common.d.ts +67 -0
  57. package/mssql-core/columns/common.js +83 -0
  58. package/mssql-core/columns/common.js.map +1 -0
  59. package/mssql-core/columns/custom.cjs +75 -0
  60. package/mssql-core/columns/custom.cjs.map +1 -0
  61. package/mssql-core/columns/custom.d.cts +149 -0
  62. package/mssql-core/columns/custom.d.ts +149 -0
  63. package/mssql-core/columns/custom.js +49 -0
  64. package/mssql-core/columns/custom.js.map +1 -0
  65. package/mssql-core/columns/date.cjs +94 -0
  66. package/mssql-core/columns/date.cjs.map +1 -0
  67. package/mssql-core/columns/date.common.cjs +37 -0
  68. package/mssql-core/columns/date.common.cjs.map +1 -0
  69. package/mssql-core/columns/date.common.d.cts +12 -0
  70. package/mssql-core/columns/date.common.d.ts +12 -0
  71. package/mssql-core/columns/date.common.js +13 -0
  72. package/mssql-core/columns/date.common.js.map +1 -0
  73. package/mssql-core/columns/date.d.cts +55 -0
  74. package/mssql-core/columns/date.d.ts +55 -0
  75. package/mssql-core/columns/date.js +66 -0
  76. package/mssql-core/columns/date.js.map +1 -0
  77. package/mssql-core/columns/datetime.cjs +94 -0
  78. package/mssql-core/columns/datetime.cjs.map +1 -0
  79. package/mssql-core/columns/datetime.d.cts +54 -0
  80. package/mssql-core/columns/datetime.d.ts +54 -0
  81. package/mssql-core/columns/datetime.js +66 -0
  82. package/mssql-core/columns/datetime.js.map +1 -0
  83. package/mssql-core/columns/datetime2.cjs +102 -0
  84. package/mssql-core/columns/datetime2.cjs.map +1 -0
  85. package/mssql-core/columns/datetime2.d.cts +54 -0
  86. package/mssql-core/columns/datetime2.d.ts +54 -0
  87. package/mssql-core/columns/datetime2.js +74 -0
  88. package/mssql-core/columns/datetime2.js.map +1 -0
  89. package/mssql-core/columns/datetimeoffset.cjs +102 -0
  90. package/mssql-core/columns/datetimeoffset.cjs.map +1 -0
  91. package/mssql-core/columns/datetimeoffset.d.cts +54 -0
  92. package/mssql-core/columns/datetimeoffset.d.ts +54 -0
  93. package/mssql-core/columns/datetimeoffset.js +74 -0
  94. package/mssql-core/columns/datetimeoffset.js.map +1 -0
  95. package/mssql-core/columns/decimal.cjs +68 -0
  96. package/mssql-core/columns/decimal.cjs.map +1 -0
  97. package/mssql-core/columns/decimal.d.cts +30 -0
  98. package/mssql-core/columns/decimal.d.ts +30 -0
  99. package/mssql-core/columns/decimal.js +42 -0
  100. package/mssql-core/columns/decimal.js.map +1 -0
  101. package/mssql-core/columns/float.cjs +58 -0
  102. package/mssql-core/columns/float.cjs.map +1 -0
  103. package/mssql-core/columns/float.d.cts +28 -0
  104. package/mssql-core/columns/float.d.ts +28 -0
  105. package/mssql-core/columns/float.js +32 -0
  106. package/mssql-core/columns/float.js.map +1 -0
  107. package/mssql-core/columns/index.cjs +63 -0
  108. package/mssql-core/columns/index.cjs.map +1 -0
  109. package/mssql-core/columns/index.d.cts +21 -0
  110. package/mssql-core/columns/index.d.ts +21 -0
  111. package/mssql-core/columns/index.js +22 -0
  112. package/mssql-core/columns/index.js.map +1 -0
  113. package/mssql-core/columns/int.cjs +53 -0
  114. package/mssql-core/columns/int.cjs.map +1 -0
  115. package/mssql-core/columns/int.d.cts +23 -0
  116. package/mssql-core/columns/int.d.ts +23 -0
  117. package/mssql-core/columns/int.js +27 -0
  118. package/mssql-core/columns/int.js.map +1 -0
  119. package/mssql-core/columns/numeric.cjs +68 -0
  120. package/mssql-core/columns/numeric.cjs.map +1 -0
  121. package/mssql-core/columns/numeric.d.cts +27 -0
  122. package/mssql-core/columns/numeric.d.ts +27 -0
  123. package/mssql-core/columns/numeric.js +42 -0
  124. package/mssql-core/columns/numeric.js.map +1 -0
  125. package/mssql-core/columns/real.cjs +53 -0
  126. package/mssql-core/columns/real.cjs.map +1 -0
  127. package/mssql-core/columns/real.d.cts +23 -0
  128. package/mssql-core/columns/real.d.ts +23 -0
  129. package/mssql-core/columns/real.js +27 -0
  130. package/mssql-core/columns/real.js.map +1 -0
  131. package/mssql-core/columns/smallint.cjs +62 -0
  132. package/mssql-core/columns/smallint.cjs.map +1 -0
  133. package/mssql-core/columns/smallint.d.cts +24 -0
  134. package/mssql-core/columns/smallint.d.ts +24 -0
  135. package/mssql-core/columns/smallint.js +36 -0
  136. package/mssql-core/columns/smallint.js.map +1 -0
  137. package/mssql-core/columns/text.cjs +68 -0
  138. package/mssql-core/columns/text.cjs.map +1 -0
  139. package/mssql-core/columns/text.d.cts +45 -0
  140. package/mssql-core/columns/text.d.ts +45 -0
  141. package/mssql-core/columns/text.js +41 -0
  142. package/mssql-core/columns/text.js.map +1 -0
  143. package/mssql-core/columns/time.cjs +90 -0
  144. package/mssql-core/columns/time.cjs.map +1 -0
  145. package/mssql-core/columns/time.d.cts +49 -0
  146. package/mssql-core/columns/time.d.ts +49 -0
  147. package/mssql-core/columns/time.js +62 -0
  148. package/mssql-core/columns/time.js.map +1 -0
  149. package/mssql-core/columns/tinyint.cjs +62 -0
  150. package/mssql-core/columns/tinyint.cjs.map +1 -0
  151. package/mssql-core/columns/tinyint.d.cts +24 -0
  152. package/mssql-core/columns/tinyint.d.ts +24 -0
  153. package/mssql-core/columns/tinyint.js +36 -0
  154. package/mssql-core/columns/tinyint.js.map +1 -0
  155. package/mssql-core/columns/varbinary.cjs +61 -0
  156. package/mssql-core/columns/varbinary.cjs.map +1 -0
  157. package/mssql-core/columns/varbinary.d.cts +27 -0
  158. package/mssql-core/columns/varbinary.d.ts +27 -0
  159. package/mssql-core/columns/varbinary.js +35 -0
  160. package/mssql-core/columns/varbinary.js.map +1 -0
  161. package/mssql-core/columns/varchar.cjs +117 -0
  162. package/mssql-core/columns/varchar.cjs.map +1 -0
  163. package/mssql-core/columns/varchar.d.cts +66 -0
  164. package/mssql-core/columns/varchar.d.ts +66 -0
  165. package/mssql-core/columns/varchar.js +88 -0
  166. package/mssql-core/columns/varchar.js.map +1 -0
  167. package/mssql-core/db.cjs +254 -0
  168. package/mssql-core/db.cjs.map +1 -0
  169. package/mssql-core/db.d.cts +228 -0
  170. package/mssql-core/db.d.ts +228 -0
  171. package/mssql-core/db.js +235 -0
  172. package/mssql-core/db.js.map +1 -0
  173. package/mssql-core/dialect.cjs +611 -0
  174. package/mssql-core/dialect.cjs.map +1 -0
  175. package/mssql-core/dialect.d.cts +58 -0
  176. package/mssql-core/dialect.d.ts +58 -0
  177. package/mssql-core/dialect.js +593 -0
  178. package/mssql-core/dialect.js.map +1 -0
  179. package/mssql-core/expressions.cjs +49 -0
  180. package/mssql-core/expressions.cjs.map +1 -0
  181. package/mssql-core/expressions.d.cts +8 -0
  182. package/mssql-core/expressions.d.ts +8 -0
  183. package/mssql-core/expressions.js +22 -0
  184. package/mssql-core/expressions.js.map +1 -0
  185. package/mssql-core/foreign-keys.cjs +91 -0
  186. package/mssql-core/foreign-keys.cjs.map +1 -0
  187. package/mssql-core/foreign-keys.d.cts +51 -0
  188. package/mssql-core/foreign-keys.d.ts +51 -0
  189. package/mssql-core/foreign-keys.js +65 -0
  190. package/mssql-core/foreign-keys.js.map +1 -0
  191. package/mssql-core/index.cjs +55 -0
  192. package/mssql-core/index.cjs.map +1 -0
  193. package/mssql-core/index.d.cts +17 -0
  194. package/mssql-core/index.d.ts +17 -0
  195. package/mssql-core/index.js +18 -0
  196. package/mssql-core/index.js.map +1 -0
  197. package/mssql-core/indexes.cjs +80 -0
  198. package/mssql-core/indexes.cjs.map +1 -0
  199. package/mssql-core/indexes.d.cts +49 -0
  200. package/mssql-core/indexes.d.ts +49 -0
  201. package/mssql-core/indexes.js +52 -0
  202. package/mssql-core/indexes.js.map +1 -0
  203. package/mssql-core/primary-keys.cjs +64 -0
  204. package/mssql-core/primary-keys.cjs.map +1 -0
  205. package/mssql-core/primary-keys.d.cts +23 -0
  206. package/mssql-core/primary-keys.d.ts +23 -0
  207. package/mssql-core/primary-keys.js +38 -0
  208. package/mssql-core/primary-keys.js.map +1 -0
  209. package/mssql-core/query-builders/delete.cjs +107 -0
  210. package/mssql-core/query-builders/delete.cjs.map +1 -0
  211. package/mssql-core/query-builders/delete.d.cts +98 -0
  212. package/mssql-core/query-builders/delete.d.ts +98 -0
  213. package/mssql-core/query-builders/delete.js +83 -0
  214. package/mssql-core/query-builders/delete.js.map +1 -0
  215. package/mssql-core/query-builders/index.cjs +33 -0
  216. package/mssql-core/query-builders/index.cjs.map +1 -0
  217. package/mssql-core/query-builders/index.d.cts +6 -0
  218. package/mssql-core/query-builders/index.d.ts +6 -0
  219. package/mssql-core/query-builders/index.js +7 -0
  220. package/mssql-core/query-builders/index.js.map +1 -0
  221. package/mssql-core/query-builders/insert.cjs +105 -0
  222. package/mssql-core/query-builders/insert.cjs.map +1 -0
  223. package/mssql-core/query-builders/insert.d.cts +78 -0
  224. package/mssql-core/query-builders/insert.d.ts +78 -0
  225. package/mssql-core/query-builders/insert.js +80 -0
  226. package/mssql-core/query-builders/insert.js.map +1 -0
  227. package/mssql-core/query-builders/query-builder.cjs +95 -0
  228. package/mssql-core/query-builders/query-builder.cjs.map +1 -0
  229. package/mssql-core/query-builders/query-builder.d.cts +32 -0
  230. package/mssql-core/query-builders/query-builder.d.ts +32 -0
  231. package/mssql-core/query-builders/query-builder.js +71 -0
  232. package/mssql-core/query-builders/query-builder.js.map +1 -0
  233. package/mssql-core/query-builders/query.cjs +126 -0
  234. package/mssql-core/query-builders/query.cjs.map +1 -0
  235. package/mssql-core/query-builders/query.d.cts +42 -0
  236. package/mssql-core/query-builders/query.d.ts +42 -0
  237. package/mssql-core/query-builders/query.js +103 -0
  238. package/mssql-core/query-builders/query.js.map +1 -0
  239. package/mssql-core/query-builders/select.cjs +679 -0
  240. package/mssql-core/query-builders/select.cjs.map +1 -0
  241. package/mssql-core/query-builders/select.d.cts +549 -0
  242. package/mssql-core/query-builders/select.d.ts +549 -0
  243. package/mssql-core/query-builders/select.js +649 -0
  244. package/mssql-core/query-builders/select.js.map +1 -0
  245. package/mssql-core/query-builders/select.types.cjs +17 -0
  246. package/mssql-core/query-builders/select.types.cjs.map +1 -0
  247. package/mssql-core/query-builders/select.types.d.cts +142 -0
  248. package/mssql-core/query-builders/select.types.d.ts +142 -0
  249. package/mssql-core/query-builders/select.types.js +1 -0
  250. package/mssql-core/query-builders/select.types.js.map +1 -0
  251. package/mssql-core/query-builders/update.cjs +138 -0
  252. package/mssql-core/query-builders/update.cjs.map +1 -0
  253. package/mssql-core/query-builders/update.d.cts +141 -0
  254. package/mssql-core/query-builders/update.d.ts +141 -0
  255. package/mssql-core/query-builders/update.js +113 -0
  256. package/mssql-core/query-builders/update.js.map +1 -0
  257. package/mssql-core/schema.cjs +51 -0
  258. package/mssql-core/schema.cjs.map +1 -0
  259. package/mssql-core/schema.d.cts +22 -0
  260. package/mssql-core/schema.d.ts +22 -0
  261. package/mssql-core/schema.js +25 -0
  262. package/mssql-core/schema.js.map +1 -0
  263. package/mssql-core/session.cjs +74 -0
  264. package/mssql-core/session.cjs.map +1 -0
  265. package/mssql-core/session.d.cts +63 -0
  266. package/mssql-core/session.d.ts +63 -0
  267. package/mssql-core/session.js +48 -0
  268. package/mssql-core/session.js.map +1 -0
  269. package/mssql-core/subquery.cjs +17 -0
  270. package/mssql-core/subquery.cjs.map +1 -0
  271. package/mssql-core/subquery.d.cts +18 -0
  272. package/mssql-core/subquery.d.ts +18 -0
  273. package/mssql-core/subquery.js +1 -0
  274. package/mssql-core/subquery.js.map +1 -0
  275. package/mssql-core/table.cjs +81 -0
  276. package/mssql-core/table.cjs.map +1 -0
  277. package/mssql-core/table.d.cts +43 -0
  278. package/mssql-core/table.d.ts +43 -0
  279. package/mssql-core/table.js +53 -0
  280. package/mssql-core/table.js.map +1 -0
  281. package/mssql-core/unique-constraint.cjs +76 -0
  282. package/mssql-core/unique-constraint.cjs.map +1 -0
  283. package/mssql-core/unique-constraint.d.cts +23 -0
  284. package/mssql-core/unique-constraint.d.ts +23 -0
  285. package/mssql-core/unique-constraint.js +49 -0
  286. package/mssql-core/unique-constraint.js.map +1 -0
  287. package/mssql-core/utils.cjs +85 -0
  288. package/mssql-core/utils.cjs.map +1 -0
  289. package/mssql-core/utils.d.cts +31 -0
  290. package/mssql-core/utils.d.ts +31 -0
  291. package/mssql-core/utils.js +60 -0
  292. package/mssql-core/utils.js.map +1 -0
  293. package/mssql-core/view-base.cjs +33 -0
  294. package/mssql-core/view-base.cjs.map +1 -0
  295. package/mssql-core/view-base.d.cts +9 -0
  296. package/mssql-core/view-base.d.ts +9 -0
  297. package/mssql-core/view-base.js +9 -0
  298. package/mssql-core/view-base.js.map +1 -0
  299. package/mssql-core/view-common.cjs +29 -0
  300. package/mssql-core/view-common.cjs.map +1 -0
  301. package/mssql-core/view-common.d.cts +1 -0
  302. package/mssql-core/view-common.d.ts +1 -0
  303. package/mssql-core/view-common.js +5 -0
  304. package/mssql-core/view-common.js.map +1 -0
  305. package/mssql-core/view.cjs +154 -0
  306. package/mssql-core/view.cjs.map +1 -0
  307. package/mssql-core/view.d.cts +64 -0
  308. package/mssql-core/view.d.ts +64 -0
  309. package/mssql-core/view.js +125 -0
  310. package/mssql-core/view.js.map +1 -0
  311. package/node-mssql/driver.cjs +88 -0
  312. package/node-mssql/driver.cjs.map +1 -0
  313. package/node-mssql/driver.d.cts +34 -0
  314. package/node-mssql/driver.d.ts +34 -0
  315. package/node-mssql/driver.js +65 -0
  316. package/node-mssql/driver.js.map +1 -0
  317. package/node-mssql/index.cjs +25 -0
  318. package/node-mssql/index.cjs.map +1 -0
  319. package/node-mssql/index.d.cts +2 -0
  320. package/node-mssql/index.d.ts +2 -0
  321. package/node-mssql/index.js +3 -0
  322. package/node-mssql/index.js.map +1 -0
  323. package/node-mssql/migrator.cjs +33 -0
  324. package/node-mssql/migrator.cjs.map +1 -0
  325. package/node-mssql/migrator.d.cts +3 -0
  326. package/node-mssql/migrator.d.ts +3 -0
  327. package/node-mssql/migrator.js +9 -0
  328. package/node-mssql/migrator.js.map +1 -0
  329. package/node-mssql/session.cjs +243 -0
  330. package/node-mssql/session.cjs.map +1 -0
  331. package/node-mssql/session.d.cts +47 -0
  332. package/node-mssql/session.d.ts +47 -0
  333. package/node-mssql/session.js +211 -0
  334. package/node-mssql/session.js.map +1 -0
  335. package/package.json +989 -337
  336. package/pg-core/columns/common.cjs +11 -10
  337. package/pg-core/columns/common.cjs.map +1 -1
  338. package/pg-core/columns/common.d.cts +3 -2
  339. package/pg-core/columns/common.d.ts +3 -2
  340. package/pg-core/columns/common.js +11 -10
  341. package/pg-core/columns/common.js.map +1 -1
  342. package/pg-core/unique-constraint.cjs +5 -1
  343. package/pg-core/unique-constraint.cjs.map +1 -1
  344. package/pg-core/unique-constraint.d.cts +2 -0
  345. package/pg-core/unique-constraint.d.ts +2 -0
  346. package/pg-core/unique-constraint.js +5 -1
  347. package/pg-core/unique-constraint.js.map +1 -1
  348. package/relations.cjs +48 -0
  349. package/relations.cjs.map +1 -1
  350. package/relations.d.cts +1 -0
  351. package/relations.d.ts +1 -0
  352. package/relations.js +47 -0
  353. package/relations.js.map +1 -1
  354. package/version.cjs +2 -2
  355. package/version.cjs.map +1 -1
  356. package/version.d.cts +2 -2
  357. package/version.d.ts +2 -2
  358. package/version.js +2 -2
  359. package/version.js.map +1 -1
@@ -0,0 +1,211 @@
1
+ import mssql from "mssql";
2
+ import { once } from "node:events";
3
+ import { entityKind } from "../entity.js";
4
+ import { NoopLogger } from "../logger.js";
5
+ import {
6
+ MsSqlSession,
7
+ MsSqlTransaction,
8
+ PreparedQuery
9
+ } from "../mssql-core/session.js";
10
+ import { fillPlaceholders, sql } from "../sql/sql.js";
11
+ import { mapResultRow } from "../utils.js";
12
+ class NodeMsSqlPreparedQuery extends PreparedQuery {
13
+ constructor(client, queryString, params, logger, fields, customResultMapper) {
14
+ super();
15
+ this.client = client;
16
+ this.params = params;
17
+ this.logger = logger;
18
+ this.fields = fields;
19
+ this.customResultMapper = customResultMapper;
20
+ this.rawQuery = {
21
+ sql: queryString,
22
+ parameters: params
23
+ };
24
+ }
25
+ static [entityKind] = "NodeMsSqlPreparedQuery";
26
+ rawQuery;
27
+ async execute(placeholderValues = {}) {
28
+ const params = fillPlaceholders(this.params, placeholderValues);
29
+ this.logger.logQuery(this.rawQuery.sql, params);
30
+ const {
31
+ fields,
32
+ client,
33
+ rawQuery,
34
+ joinsNotNullableMap,
35
+ customResultMapper
36
+ } = this;
37
+ const request = client.request();
38
+ for (const [index, param] of params.entries()) {
39
+ request.input(`par${index}`, param);
40
+ }
41
+ if (!fields && !customResultMapper) {
42
+ return request.query(rawQuery.sql);
43
+ }
44
+ request.arrayRowMode = true;
45
+ const rows = await request.query(rawQuery.sql);
46
+ if (customResultMapper) {
47
+ return customResultMapper(rows.recordset);
48
+ }
49
+ return rows.recordset.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
50
+ }
51
+ async *iterator(placeholderValues = {}) {
52
+ const params = fillPlaceholders(this.params, placeholderValues);
53
+ const {
54
+ fields,
55
+ rawQuery,
56
+ joinsNotNullableMap,
57
+ client,
58
+ customResultMapper
59
+ } = this;
60
+ const request = client.request();
61
+ request.stream = true;
62
+ const hasRowsMapper = Boolean(fields || customResultMapper);
63
+ if (hasRowsMapper) {
64
+ request.arrayRowMode = true;
65
+ }
66
+ for (const [index, param] of params.entries()) {
67
+ request.input(`par${index}`, param);
68
+ }
69
+ const stream = request.toReadableStream();
70
+ request.query(rawQuery.sql);
71
+ function dataListener() {
72
+ stream.pause();
73
+ }
74
+ stream.on("data", dataListener);
75
+ try {
76
+ const onEnd = once(stream, "end");
77
+ const onError = once(stream, "error");
78
+ while (true) {
79
+ stream.resume();
80
+ const row = await Promise.race([
81
+ onEnd,
82
+ onError,
83
+ new Promise((resolve) => stream.once("data", resolve))
84
+ ]);
85
+ if (row === void 0 || Array.isArray(row) && row.length === 0) {
86
+ break;
87
+ } else if (row instanceof Error) {
88
+ throw row;
89
+ } else {
90
+ if (hasRowsMapper) {
91
+ if (customResultMapper) {
92
+ const mappedRow = customResultMapper([row]);
93
+ yield Array.isArray(mappedRow) ? mappedRow[0] : mappedRow;
94
+ } else {
95
+ yield mapResultRow(
96
+ fields,
97
+ row,
98
+ joinsNotNullableMap
99
+ );
100
+ }
101
+ } else {
102
+ yield row;
103
+ }
104
+ }
105
+ }
106
+ } finally {
107
+ stream.off("data", dataListener);
108
+ request.cancel();
109
+ }
110
+ }
111
+ }
112
+ class NodeMsSqlSession extends MsSqlSession {
113
+ constructor(client, dialect, schema, options) {
114
+ super(dialect);
115
+ this.client = client;
116
+ this.schema = schema;
117
+ this.options = options;
118
+ this.logger = options.logger ?? new NoopLogger();
119
+ }
120
+ static [entityKind] = "NodeMsSqlSession";
121
+ logger;
122
+ prepareQuery(query, fields, customResultMapper) {
123
+ return new NodeMsSqlPreparedQuery(
124
+ this.client,
125
+ query.sql,
126
+ query.params,
127
+ this.logger,
128
+ fields,
129
+ customResultMapper
130
+ );
131
+ }
132
+ /**
133
+ * @internal
134
+ * What is its purpose?
135
+ */
136
+ query(query, params) {
137
+ this.logger.logQuery(query, params);
138
+ const request = this.client.request();
139
+ request.arrayRowMode = true;
140
+ for (const [index, param] of params.entries()) {
141
+ request.input(`par${index}`, param);
142
+ }
143
+ return request.query(query);
144
+ }
145
+ async all(query) {
146
+ const querySql = this.dialect.sqlToQuery(query);
147
+ this.logger.logQuery(querySql.sql, querySql.params);
148
+ return this.query(querySql.sql, querySql.params).then(
149
+ (result) => result.recordset
150
+ );
151
+ }
152
+ async transaction(transaction, config) {
153
+ const mssqlTransaction = this.client.transaction();
154
+ const session = new NodeMsSqlSession(
155
+ mssqlTransaction,
156
+ this.dialect,
157
+ this.schema,
158
+ this.options
159
+ );
160
+ const tx = new NodeMsSqlTransaction(
161
+ this.dialect,
162
+ session,
163
+ this.schema,
164
+ 0
165
+ );
166
+ await mssqlTransaction.begin(
167
+ config?.isolationLevel ? isolationLevelMap[config.isolationLevel] : void 0
168
+ );
169
+ try {
170
+ const result = await transaction(tx);
171
+ await mssqlTransaction.commit();
172
+ return result;
173
+ } catch (err) {
174
+ await mssqlTransaction.rollback();
175
+ throw err;
176
+ }
177
+ }
178
+ }
179
+ class NodeMsSqlTransaction extends MsSqlTransaction {
180
+ static [entityKind] = "NodeMsSqlTransaction";
181
+ async transaction(transaction) {
182
+ const savepointName = `sp${this.nestedIndex + 1}`;
183
+ const tx = new NodeMsSqlTransaction(
184
+ this.dialect,
185
+ this.session,
186
+ this.schema,
187
+ this.nestedIndex + 1
188
+ );
189
+ await tx.execute(sql.raw(`save transaction ${savepointName}`));
190
+ try {
191
+ const result = await transaction(tx);
192
+ return result;
193
+ } catch (err) {
194
+ await tx.execute(sql.raw(`rollback transaction ${savepointName}`));
195
+ throw err;
196
+ }
197
+ }
198
+ }
199
+ const isolationLevelMap = {
200
+ "read uncommitted": mssql.ISOLATION_LEVEL.READ_UNCOMMITTED,
201
+ "read committed": mssql.ISOLATION_LEVEL.READ_COMMITTED,
202
+ "repeatable read": mssql.ISOLATION_LEVEL.REPEATABLE_READ,
203
+ serializable: mssql.ISOLATION_LEVEL.SERIALIZABLE,
204
+ snapshot: mssql.ISOLATION_LEVEL.SNAPSHOT
205
+ };
206
+ export {
207
+ NodeMsSqlPreparedQuery,
208
+ NodeMsSqlSession,
209
+ NodeMsSqlTransaction
210
+ };
211
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/node-mssql/session.ts"],"sourcesContent":["import type { ConnectionPool, IResult, Request } from 'mssql';\nimport mssql from 'mssql';\nimport { once } from 'node:events';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { MsSqlDialect } from '~/mssql-core/dialect.ts';\nimport type { SelectedFieldsOrdered } from '~/mssql-core/query-builders/select.types.ts';\nimport {\n\tMsSqlSession,\n\tMsSqlTransaction,\n\ttype MsSqlTransactionConfig,\n\tPreparedQuery,\n\ttype PreparedQueryConfig,\n\ttype PreparedQueryHKT,\n\ttype PreparedQueryKind,\n\ttype QueryResultHKT,\n} from '~/mssql-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport type NodeMsSqlClient = Pick<ConnectionPool, 'request'>;\n\nexport type MsSqlQueryResult<T extends unknown | unknown[] = any> = IResult<T>;\n\nexport class NodeMsSqlPreparedQuery<\n\tT extends PreparedQueryConfig,\n> extends PreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'NodeMsSqlPreparedQuery';\n\n\tprivate rawQuery: {\n\t\tsql: string;\n\t\tparameters: unknown[];\n\t};\n\n\tconstructor(\n\t\tprivate client: NodeMsSqlClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper();\n\t\tthis.rawQuery = {\n\t\t\tsql: queryString,\n\t\t\tparameters: params,\n\t\t};\n\t}\n\n\tasync execute(\n\t\tplaceholderValues: Record<string, unknown> = {},\n\t): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.rawQuery.sql, params);\n\n\t\tconst {\n\t\t\tfields,\n\t\t\tclient,\n\t\t\trawQuery,\n\t\t\tjoinsNotNullableMap,\n\t\t\tcustomResultMapper,\n\t\t} = this;\n\t\tconst request = client.request() as Request & { arrayRowMode: boolean };\n\t\tfor (const [index, param] of params.entries()) {\n\t\t\trequest.input(`par${index}`, param);\n\t\t}\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn request.query(rawQuery.sql) as Promise<T['execute']>;\n\t\t}\n\n\t\trequest.arrayRowMode = true;\n\t\tconst rows = await request.query<any[]>(rawQuery.sql);\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows.recordset);\n\t\t}\n\n\t\treturn rows.recordset.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tasync *iterator(\n\t\tplaceholderValues: Record<string, unknown> = {},\n\t): AsyncGenerator<\n\t\tT['execute'] extends any[] ? T['execute'][number] : T['execute']\n\t> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tconst {\n\t\t\tfields,\n\t\t\trawQuery,\n\t\t\tjoinsNotNullableMap,\n\t\t\tclient,\n\t\t\tcustomResultMapper,\n\t\t} = this;\n\t\tconst request = client.request() as Request & { arrayRowMode: boolean };\n\t\trequest.stream = true;\n\t\tconst hasRowsMapper = Boolean(fields || customResultMapper);\n\n\t\tif (hasRowsMapper) {\n\t\t\trequest.arrayRowMode = true;\n\t\t}\n\n\t\tfor (const [index, param] of params.entries()) {\n\t\t\trequest.input(`par${index}`, param);\n\t\t}\n\n\t\tconst stream = request.toReadableStream();\n\n\t\trequest.query(rawQuery.sql);\n\n\t\tfunction dataListener() {\n\t\t\tstream.pause();\n\t\t}\n\n\t\tstream.on('data', dataListener);\n\n\t\ttry {\n\t\t\tconst onEnd = once(stream, 'end');\n\t\t\tconst onError = once(stream, 'error');\n\n\t\t\twhile (true) {\n\t\t\t\tstream.resume();\n\t\t\t\tconst row = await Promise.race([\n\t\t\t\t\tonEnd,\n\t\t\t\t\tonError,\n\t\t\t\t\tnew Promise((resolve) => stream.once('data', resolve)),\n\t\t\t\t]);\n\t\t\t\tif (row === undefined || (Array.isArray(row) && row.length === 0)) {\n\t\t\t\t\tbreak;\n\t\t\t\t\t// eslint-disable-next-line no-instanceof/no-instanceof\n\t\t\t\t} else if (row instanceof Error) {\n\t\t\t\t\tthrow row;\n\t\t\t\t} else {\n\t\t\t\t\tif (hasRowsMapper) {\n\t\t\t\t\t\tif (customResultMapper) {\n\t\t\t\t\t\t\tconst mappedRow = customResultMapper([row as unknown[]]);\n\t\t\t\t\t\t\tyield Array.isArray(mappedRow) ? mappedRow[0] : mappedRow;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tyield mapResultRow(\n\t\t\t\t\t\t\t\tfields!,\n\t\t\t\t\t\t\t\trow as unknown[],\n\t\t\t\t\t\t\t\tjoinsNotNullableMap,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tyield row as T['execute'];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tstream.off('data', dataListener);\n\t\t\trequest.cancel();\n\t\t}\n\t}\n}\n\nexport interface NodeMsSqlSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class NodeMsSqlSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MsSqlSession<\n\tNodeMsSqlQueryResultHKT,\n\tNodeMsSqlPreparedQueryHKT,\n\tTFullSchema,\n\tTSchema\n> {\n\tstatic override readonly [entityKind]: string = 'NodeMsSqlSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: NodeMsSqlClient,\n\t\tdialect: MsSqlDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: NodeMsSqlSessionOptions,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PreparedQueryKind<NodeMsSqlPreparedQueryHKT, T> {\n\t\treturn new NodeMsSqlPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tcustomResultMapper,\n\t\t) as PreparedQueryKind<NodeMsSqlPreparedQueryHKT, T>;\n\t}\n\n\t/**\n\t * @internal\n\t * What is its purpose?\n\t */\n\tquery(query: string, params: unknown[]): Promise<MsSqlQueryResult> {\n\t\tthis.logger.logQuery(query, params);\n\n\t\tconst request = this.client.request() as Request & {\n\t\t\tarrayRowMode: boolean;\n\t\t};\n\t\trequest.arrayRowMode = true;\n\n\t\tfor (const [index, param] of params.entries()) {\n\t\t\trequest.input(`par${index}`, param);\n\t\t}\n\n\t\treturn request.query(query);\n\t}\n\n\toverride async all<T = unknown>(query: SQL): Promise<T[]> {\n\t\tconst querySql = this.dialect.sqlToQuery(query);\n\t\tthis.logger.logQuery(querySql.sql, querySql.params);\n\t\treturn this.query(querySql.sql, querySql.params).then(\n\t\t\t(result) => result.recordset,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeMsSqlTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: MsSqlTransactionConfig,\n\t): Promise<T> {\n\t\tconst mssqlTransaction = (this.client as ConnectionPool).transaction();\n\t\tconst session = new NodeMsSqlSession(\n\t\t\tmssqlTransaction,\n\t\t\tthis.dialect,\n\t\t\tthis.schema,\n\t\t\tthis.options,\n\t\t);\n\t\tconst tx = new NodeMsSqlTransaction(\n\t\t\tthis.dialect,\n\t\t\tsession as MsSqlSession<any, any, any, any>,\n\t\t\tthis.schema,\n\t\t\t0,\n\t\t);\n\n\t\tawait mssqlTransaction.begin(\n\t\t\tconfig?.isolationLevel\n\t\t\t\t? isolationLevelMap[config.isolationLevel]\n\t\t\t\t: undefined,\n\t\t);\n\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait mssqlTransaction.commit();\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait mssqlTransaction.rollback();\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class NodeMsSqlTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MsSqlTransaction<\n\tNodeMsSqlQueryResultHKT,\n\tNodeMsSqlPreparedQueryHKT,\n\tTFullSchema,\n\tTSchema\n> {\n\tstatic override readonly [entityKind]: string = 'NodeMsSqlTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: NodeMsSqlTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new NodeMsSqlTransaction(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\n\t\tawait tx.execute(sql.raw(`save transaction ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback transaction ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nconst isolationLevelMap: Record<\n\tMsSqlTransactionConfig['isolationLevel'],\n\t(typeof mssql.ISOLATION_LEVEL)[keyof (typeof mssql)['ISOLATION_LEVEL']]\n> = {\n\t'read uncommitted': mssql.ISOLATION_LEVEL.READ_UNCOMMITTED,\n\t'read committed': mssql.ISOLATION_LEVEL.READ_COMMITTED,\n\t'repeatable read': mssql.ISOLATION_LEVEL.REPEATABLE_READ,\n\tserializable: mssql.ISOLATION_LEVEL.SERIALIZABLE,\n\tsnapshot: mssql.ISOLATION_LEVEL.SNAPSHOT,\n};\n\nexport interface NodeMsSqlQueryResultHKT extends QueryResultHKT {\n\ttype: MsSqlQueryResult<this['row']>;\n}\n\nexport interface NodeMsSqlPreparedQueryHKT extends PreparedQueryHKT {\n\ttype: NodeMsSqlPreparedQuery<Assume<this['config'], PreparedQueryConfig>>;\n}\n"],"mappings":"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","names":[]}