drizzle-orm 0.43.0-e2b296d → 0.43.1-08e3953

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 (361) hide show
  1. package/column-builder.cjs.map +1 -1
  2. package/column-builder.d.cts +4 -3
  3. package/column-builder.d.ts +4 -3
  4. package/column-builder.js.map +1 -1
  5. package/gel-core/dialect.cjs +1 -1
  6. package/gel-core/dialect.cjs.map +1 -1
  7. package/gel-core/dialect.js +1 -1
  8. package/gel-core/dialect.js.map +1 -1
  9. package/mssql-core/alias.cjs +32 -0
  10. package/mssql-core/alias.cjs.map +1 -0
  11. package/mssql-core/alias.d.cts +4 -0
  12. package/mssql-core/alias.d.ts +4 -0
  13. package/mssql-core/alias.js +8 -0
  14. package/mssql-core/alias.js.map +1 -0
  15. package/mssql-core/checks.cjs +58 -0
  16. package/mssql-core/checks.cjs.map +1 -0
  17. package/mssql-core/checks.d.cts +18 -0
  18. package/mssql-core/checks.d.ts +18 -0
  19. package/mssql-core/checks.js +32 -0
  20. package/mssql-core/checks.js.map +1 -0
  21. package/mssql-core/columns/all.cjs +72 -0
  22. package/mssql-core/columns/all.cjs.map +1 -0
  23. package/mssql-core/columns/all.d.cts +43 -0
  24. package/mssql-core/columns/all.d.ts +43 -0
  25. package/mssql-core/columns/all.js +48 -0
  26. package/mssql-core/columns/all.js.map +1 -0
  27. package/mssql-core/columns/bigint.cjs +67 -0
  28. package/mssql-core/columns/bigint.cjs.map +1 -0
  29. package/mssql-core/columns/bigint.d.cts +33 -0
  30. package/mssql-core/columns/bigint.d.ts +33 -0
  31. package/mssql-core/columns/bigint.js +41 -0
  32. package/mssql-core/columns/bigint.js.map +1 -0
  33. package/mssql-core/columns/binary.cjs +57 -0
  34. package/mssql-core/columns/binary.cjs.map +1 -0
  35. package/mssql-core/columns/binary.d.cts +28 -0
  36. package/mssql-core/columns/binary.d.ts +28 -0
  37. package/mssql-core/columns/binary.js +31 -0
  38. package/mssql-core/columns/binary.js.map +1 -0
  39. package/mssql-core/columns/bit.cjs +54 -0
  40. package/mssql-core/columns/bit.cjs.map +1 -0
  41. package/mssql-core/columns/bit.d.cts +24 -0
  42. package/mssql-core/columns/bit.d.ts +24 -0
  43. package/mssql-core/columns/bit.js +28 -0
  44. package/mssql-core/columns/bit.js.map +1 -0
  45. package/mssql-core/columns/char.cjs +74 -0
  46. package/mssql-core/columns/char.cjs.map +1 -0
  47. package/mssql-core/columns/char.d.cts +37 -0
  48. package/mssql-core/columns/char.d.ts +37 -0
  49. package/mssql-core/columns/char.js +47 -0
  50. package/mssql-core/columns/char.js.map +1 -0
  51. package/mssql-core/columns/common.cjs +117 -0
  52. package/mssql-core/columns/common.cjs.map +1 -0
  53. package/mssql-core/columns/common.d.cts +67 -0
  54. package/mssql-core/columns/common.d.ts +67 -0
  55. package/mssql-core/columns/common.js +90 -0
  56. package/mssql-core/columns/common.js.map +1 -0
  57. package/mssql-core/columns/custom.cjs +75 -0
  58. package/mssql-core/columns/custom.cjs.map +1 -0
  59. package/mssql-core/columns/custom.d.cts +149 -0
  60. package/mssql-core/columns/custom.d.ts +149 -0
  61. package/mssql-core/columns/custom.js +49 -0
  62. package/mssql-core/columns/custom.js.map +1 -0
  63. package/mssql-core/columns/date.cjs +94 -0
  64. package/mssql-core/columns/date.cjs.map +1 -0
  65. package/mssql-core/columns/date.common.cjs +37 -0
  66. package/mssql-core/columns/date.common.cjs.map +1 -0
  67. package/mssql-core/columns/date.common.d.cts +12 -0
  68. package/mssql-core/columns/date.common.d.ts +12 -0
  69. package/mssql-core/columns/date.common.js +13 -0
  70. package/mssql-core/columns/date.common.js.map +1 -0
  71. package/mssql-core/columns/date.d.cts +55 -0
  72. package/mssql-core/columns/date.d.ts +55 -0
  73. package/mssql-core/columns/date.js +66 -0
  74. package/mssql-core/columns/date.js.map +1 -0
  75. package/mssql-core/columns/datetime.cjs +94 -0
  76. package/mssql-core/columns/datetime.cjs.map +1 -0
  77. package/mssql-core/columns/datetime.d.cts +54 -0
  78. package/mssql-core/columns/datetime.d.ts +54 -0
  79. package/mssql-core/columns/datetime.js +66 -0
  80. package/mssql-core/columns/datetime.js.map +1 -0
  81. package/mssql-core/columns/datetime2.cjs +102 -0
  82. package/mssql-core/columns/datetime2.cjs.map +1 -0
  83. package/mssql-core/columns/datetime2.d.cts +54 -0
  84. package/mssql-core/columns/datetime2.d.ts +54 -0
  85. package/mssql-core/columns/datetime2.js +74 -0
  86. package/mssql-core/columns/datetime2.js.map +1 -0
  87. package/mssql-core/columns/datetimeoffset.cjs +102 -0
  88. package/mssql-core/columns/datetimeoffset.cjs.map +1 -0
  89. package/mssql-core/columns/datetimeoffset.d.cts +54 -0
  90. package/mssql-core/columns/datetimeoffset.d.ts +54 -0
  91. package/mssql-core/columns/datetimeoffset.js +74 -0
  92. package/mssql-core/columns/datetimeoffset.js.map +1 -0
  93. package/mssql-core/columns/decimal.cjs +68 -0
  94. package/mssql-core/columns/decimal.cjs.map +1 -0
  95. package/mssql-core/columns/decimal.d.cts +30 -0
  96. package/mssql-core/columns/decimal.d.ts +30 -0
  97. package/mssql-core/columns/decimal.js +42 -0
  98. package/mssql-core/columns/decimal.js.map +1 -0
  99. package/mssql-core/columns/float.cjs +58 -0
  100. package/mssql-core/columns/float.cjs.map +1 -0
  101. package/mssql-core/columns/float.d.cts +28 -0
  102. package/mssql-core/columns/float.d.ts +28 -0
  103. package/mssql-core/columns/float.js +32 -0
  104. package/mssql-core/columns/float.js.map +1 -0
  105. package/mssql-core/columns/index.cjs +63 -0
  106. package/mssql-core/columns/index.cjs.map +1 -0
  107. package/mssql-core/columns/index.d.cts +21 -0
  108. package/mssql-core/columns/index.d.ts +21 -0
  109. package/mssql-core/columns/index.js +22 -0
  110. package/mssql-core/columns/index.js.map +1 -0
  111. package/mssql-core/columns/int.cjs +53 -0
  112. package/mssql-core/columns/int.cjs.map +1 -0
  113. package/mssql-core/columns/int.d.cts +23 -0
  114. package/mssql-core/columns/int.d.ts +23 -0
  115. package/mssql-core/columns/int.js +27 -0
  116. package/mssql-core/columns/int.js.map +1 -0
  117. package/mssql-core/columns/numeric.cjs +68 -0
  118. package/mssql-core/columns/numeric.cjs.map +1 -0
  119. package/mssql-core/columns/numeric.d.cts +27 -0
  120. package/mssql-core/columns/numeric.d.ts +27 -0
  121. package/mssql-core/columns/numeric.js +42 -0
  122. package/mssql-core/columns/numeric.js.map +1 -0
  123. package/mssql-core/columns/real.cjs +53 -0
  124. package/mssql-core/columns/real.cjs.map +1 -0
  125. package/mssql-core/columns/real.d.cts +23 -0
  126. package/mssql-core/columns/real.d.ts +23 -0
  127. package/mssql-core/columns/real.js +27 -0
  128. package/mssql-core/columns/real.js.map +1 -0
  129. package/mssql-core/columns/smallint.cjs +62 -0
  130. package/mssql-core/columns/smallint.cjs.map +1 -0
  131. package/mssql-core/columns/smallint.d.cts +24 -0
  132. package/mssql-core/columns/smallint.d.ts +24 -0
  133. package/mssql-core/columns/smallint.js +36 -0
  134. package/mssql-core/columns/smallint.js.map +1 -0
  135. package/mssql-core/columns/text.cjs +68 -0
  136. package/mssql-core/columns/text.cjs.map +1 -0
  137. package/mssql-core/columns/text.d.cts +45 -0
  138. package/mssql-core/columns/text.d.ts +45 -0
  139. package/mssql-core/columns/text.js +41 -0
  140. package/mssql-core/columns/text.js.map +1 -0
  141. package/mssql-core/columns/time.cjs +90 -0
  142. package/mssql-core/columns/time.cjs.map +1 -0
  143. package/mssql-core/columns/time.d.cts +49 -0
  144. package/mssql-core/columns/time.d.ts +49 -0
  145. package/mssql-core/columns/time.js +62 -0
  146. package/mssql-core/columns/time.js.map +1 -0
  147. package/mssql-core/columns/tinyint.cjs +62 -0
  148. package/mssql-core/columns/tinyint.cjs.map +1 -0
  149. package/mssql-core/columns/tinyint.d.cts +24 -0
  150. package/mssql-core/columns/tinyint.d.ts +24 -0
  151. package/mssql-core/columns/tinyint.js +36 -0
  152. package/mssql-core/columns/tinyint.js.map +1 -0
  153. package/mssql-core/columns/varbinary.cjs +61 -0
  154. package/mssql-core/columns/varbinary.cjs.map +1 -0
  155. package/mssql-core/columns/varbinary.d.cts +27 -0
  156. package/mssql-core/columns/varbinary.d.ts +27 -0
  157. package/mssql-core/columns/varbinary.js +35 -0
  158. package/mssql-core/columns/varbinary.js.map +1 -0
  159. package/mssql-core/columns/varchar.cjs +117 -0
  160. package/mssql-core/columns/varchar.cjs.map +1 -0
  161. package/mssql-core/columns/varchar.d.cts +66 -0
  162. package/mssql-core/columns/varchar.d.ts +66 -0
  163. package/mssql-core/columns/varchar.js +88 -0
  164. package/mssql-core/columns/varchar.js.map +1 -0
  165. package/mssql-core/db.cjs +254 -0
  166. package/mssql-core/db.cjs.map +1 -0
  167. package/mssql-core/db.d.cts +228 -0
  168. package/mssql-core/db.d.ts +228 -0
  169. package/mssql-core/db.js +235 -0
  170. package/mssql-core/db.js.map +1 -0
  171. package/mssql-core/dialect.cjs +611 -0
  172. package/mssql-core/dialect.cjs.map +1 -0
  173. package/mssql-core/dialect.d.cts +58 -0
  174. package/mssql-core/dialect.d.ts +58 -0
  175. package/mssql-core/dialect.js +593 -0
  176. package/mssql-core/dialect.js.map +1 -0
  177. package/mssql-core/expressions.cjs +49 -0
  178. package/mssql-core/expressions.cjs.map +1 -0
  179. package/mssql-core/expressions.d.cts +8 -0
  180. package/mssql-core/expressions.d.ts +8 -0
  181. package/mssql-core/expressions.js +22 -0
  182. package/mssql-core/expressions.js.map +1 -0
  183. package/mssql-core/foreign-keys.cjs +91 -0
  184. package/mssql-core/foreign-keys.cjs.map +1 -0
  185. package/mssql-core/foreign-keys.d.cts +51 -0
  186. package/mssql-core/foreign-keys.d.ts +51 -0
  187. package/mssql-core/foreign-keys.js +65 -0
  188. package/mssql-core/foreign-keys.js.map +1 -0
  189. package/mssql-core/index.cjs +55 -0
  190. package/mssql-core/index.cjs.map +1 -0
  191. package/mssql-core/index.d.cts +17 -0
  192. package/mssql-core/index.d.ts +17 -0
  193. package/mssql-core/index.js +18 -0
  194. package/mssql-core/index.js.map +1 -0
  195. package/mssql-core/indexes.cjs +80 -0
  196. package/mssql-core/indexes.cjs.map +1 -0
  197. package/mssql-core/indexes.d.cts +49 -0
  198. package/mssql-core/indexes.d.ts +49 -0
  199. package/mssql-core/indexes.js +52 -0
  200. package/mssql-core/indexes.js.map +1 -0
  201. package/mssql-core/primary-keys.cjs +64 -0
  202. package/mssql-core/primary-keys.cjs.map +1 -0
  203. package/mssql-core/primary-keys.d.cts +23 -0
  204. package/mssql-core/primary-keys.d.ts +23 -0
  205. package/mssql-core/primary-keys.js +38 -0
  206. package/mssql-core/primary-keys.js.map +1 -0
  207. package/mssql-core/query-builders/delete.cjs +107 -0
  208. package/mssql-core/query-builders/delete.cjs.map +1 -0
  209. package/mssql-core/query-builders/delete.d.cts +80 -0
  210. package/mssql-core/query-builders/delete.d.ts +80 -0
  211. package/mssql-core/query-builders/delete.js +83 -0
  212. package/mssql-core/query-builders/delete.js.map +1 -0
  213. package/mssql-core/query-builders/index.cjs +33 -0
  214. package/mssql-core/query-builders/index.cjs.map +1 -0
  215. package/mssql-core/query-builders/index.d.cts +6 -0
  216. package/mssql-core/query-builders/index.d.ts +6 -0
  217. package/mssql-core/query-builders/index.js +7 -0
  218. package/mssql-core/query-builders/index.js.map +1 -0
  219. package/mssql-core/query-builders/insert.cjs +105 -0
  220. package/mssql-core/query-builders/insert.cjs.map +1 -0
  221. package/mssql-core/query-builders/insert.d.cts +60 -0
  222. package/mssql-core/query-builders/insert.d.ts +60 -0
  223. package/mssql-core/query-builders/insert.js +80 -0
  224. package/mssql-core/query-builders/insert.js.map +1 -0
  225. package/mssql-core/query-builders/query-builder.cjs +95 -0
  226. package/mssql-core/query-builders/query-builder.cjs.map +1 -0
  227. package/mssql-core/query-builders/query-builder.d.cts +32 -0
  228. package/mssql-core/query-builders/query-builder.d.ts +32 -0
  229. package/mssql-core/query-builders/query-builder.js +71 -0
  230. package/mssql-core/query-builders/query-builder.js.map +1 -0
  231. package/mssql-core/query-builders/query.cjs +126 -0
  232. package/mssql-core/query-builders/query.cjs.map +1 -0
  233. package/mssql-core/query-builders/query.d.cts +42 -0
  234. package/mssql-core/query-builders/query.d.ts +42 -0
  235. package/mssql-core/query-builders/query.js +103 -0
  236. package/mssql-core/query-builders/query.js.map +1 -0
  237. package/mssql-core/query-builders/select.cjs +679 -0
  238. package/mssql-core/query-builders/select.cjs.map +1 -0
  239. package/mssql-core/query-builders/select.d.cts +549 -0
  240. package/mssql-core/query-builders/select.d.ts +549 -0
  241. package/mssql-core/query-builders/select.js +649 -0
  242. package/mssql-core/query-builders/select.js.map +1 -0
  243. package/mssql-core/query-builders/select.types.cjs +17 -0
  244. package/mssql-core/query-builders/select.types.cjs.map +1 -0
  245. package/mssql-core/query-builders/select.types.d.cts +142 -0
  246. package/mssql-core/query-builders/select.types.d.ts +142 -0
  247. package/mssql-core/query-builders/select.types.js +1 -0
  248. package/mssql-core/query-builders/select.types.js.map +1 -0
  249. package/mssql-core/query-builders/update.cjs +138 -0
  250. package/mssql-core/query-builders/update.cjs.map +1 -0
  251. package/mssql-core/query-builders/update.d.cts +109 -0
  252. package/mssql-core/query-builders/update.d.ts +109 -0
  253. package/mssql-core/query-builders/update.js +113 -0
  254. package/mssql-core/query-builders/update.js.map +1 -0
  255. package/mssql-core/schema.cjs +51 -0
  256. package/mssql-core/schema.cjs.map +1 -0
  257. package/mssql-core/schema.d.cts +22 -0
  258. package/mssql-core/schema.d.ts +22 -0
  259. package/mssql-core/schema.js +25 -0
  260. package/mssql-core/schema.js.map +1 -0
  261. package/mssql-core/session.cjs +74 -0
  262. package/mssql-core/session.cjs.map +1 -0
  263. package/mssql-core/session.d.cts +63 -0
  264. package/mssql-core/session.d.ts +63 -0
  265. package/mssql-core/session.js +48 -0
  266. package/mssql-core/session.js.map +1 -0
  267. package/mssql-core/subquery.cjs +17 -0
  268. package/mssql-core/subquery.cjs.map +1 -0
  269. package/mssql-core/subquery.d.cts +18 -0
  270. package/mssql-core/subquery.d.ts +18 -0
  271. package/mssql-core/subquery.js +1 -0
  272. package/mssql-core/subquery.js.map +1 -0
  273. package/mssql-core/table.cjs +81 -0
  274. package/mssql-core/table.cjs.map +1 -0
  275. package/mssql-core/table.d.cts +43 -0
  276. package/mssql-core/table.d.ts +43 -0
  277. package/mssql-core/table.js +53 -0
  278. package/mssql-core/table.js.map +1 -0
  279. package/mssql-core/unique-constraint.cjs +76 -0
  280. package/mssql-core/unique-constraint.cjs.map +1 -0
  281. package/mssql-core/unique-constraint.d.cts +23 -0
  282. package/mssql-core/unique-constraint.d.ts +23 -0
  283. package/mssql-core/unique-constraint.js +49 -0
  284. package/mssql-core/unique-constraint.js.map +1 -0
  285. package/mssql-core/utils.cjs +85 -0
  286. package/mssql-core/utils.cjs.map +1 -0
  287. package/mssql-core/utils.d.cts +31 -0
  288. package/mssql-core/utils.d.ts +31 -0
  289. package/mssql-core/utils.js +60 -0
  290. package/mssql-core/utils.js.map +1 -0
  291. package/mssql-core/view-base.cjs +33 -0
  292. package/mssql-core/view-base.cjs.map +1 -0
  293. package/mssql-core/view-base.d.cts +9 -0
  294. package/mssql-core/view-base.d.ts +9 -0
  295. package/mssql-core/view-base.js +9 -0
  296. package/mssql-core/view-base.js.map +1 -0
  297. package/mssql-core/view-common.cjs +29 -0
  298. package/mssql-core/view-common.cjs.map +1 -0
  299. package/mssql-core/view-common.d.cts +1 -0
  300. package/mssql-core/view-common.d.ts +1 -0
  301. package/mssql-core/view-common.js +5 -0
  302. package/mssql-core/view-common.js.map +1 -0
  303. package/mssql-core/view.cjs +154 -0
  304. package/mssql-core/view.cjs.map +1 -0
  305. package/mssql-core/view.d.cts +64 -0
  306. package/mssql-core/view.d.ts +64 -0
  307. package/mssql-core/view.js +125 -0
  308. package/mssql-core/view.js.map +1 -0
  309. package/mysql-core/dialect.cjs +1 -1
  310. package/mysql-core/dialect.cjs.map +1 -1
  311. package/mysql-core/dialect.js +1 -1
  312. package/mysql-core/dialect.js.map +1 -1
  313. package/node-mssql/driver.cjs +88 -0
  314. package/node-mssql/driver.cjs.map +1 -0
  315. package/node-mssql/driver.d.cts +34 -0
  316. package/node-mssql/driver.d.ts +34 -0
  317. package/node-mssql/driver.js +65 -0
  318. package/node-mssql/driver.js.map +1 -0
  319. package/node-mssql/index.cjs +25 -0
  320. package/node-mssql/index.cjs.map +1 -0
  321. package/node-mssql/index.d.cts +2 -0
  322. package/node-mssql/index.d.ts +2 -0
  323. package/node-mssql/index.js +3 -0
  324. package/node-mssql/index.js.map +1 -0
  325. package/node-mssql/migrator.cjs +33 -0
  326. package/node-mssql/migrator.cjs.map +1 -0
  327. package/node-mssql/migrator.d.cts +3 -0
  328. package/node-mssql/migrator.d.ts +3 -0
  329. package/node-mssql/migrator.js +9 -0
  330. package/node-mssql/migrator.js.map +1 -0
  331. package/node-mssql/session.cjs +243 -0
  332. package/node-mssql/session.cjs.map +1 -0
  333. package/node-mssql/session.d.cts +47 -0
  334. package/node-mssql/session.d.ts +47 -0
  335. package/node-mssql/session.js +211 -0
  336. package/node-mssql/session.js.map +1 -0
  337. package/package.json +653 -1
  338. package/pg-core/dialect.cjs +1 -1
  339. package/pg-core/dialect.cjs.map +1 -1
  340. package/pg-core/dialect.js +1 -1
  341. package/pg-core/dialect.js.map +1 -1
  342. package/pg-core/schema.cjs +2 -2
  343. package/pg-core/schema.cjs.map +1 -1
  344. package/pg-core/schema.d.cts +4 -1
  345. package/pg-core/schema.d.ts +4 -1
  346. package/pg-core/schema.js +2 -2
  347. package/pg-core/schema.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/singlestore-core/dialect.cjs +1 -1
  355. package/singlestore-core/dialect.cjs.map +1 -1
  356. package/singlestore-core/dialect.js +1 -1
  357. package/singlestore-core/dialect.js.map +1 -1
  358. package/version.cjs +1 -1
  359. package/version.d.cts +1 -1
  360. package/version.d.ts +1 -1
  361. package/version.js +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/node-mssql/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { NodeMsSqlDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: NodeMsSqlDatabase<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tawait db.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AAGnC,eAAsB,QACrB,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAC5C,QAAM,GAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AACxD;","names":[]}
@@ -0,0 +1,3 @@
1
+ import type { MigrationConfig } from "../migrator.cjs";
2
+ import type { NodeMsSqlDatabase } from "./driver.cjs";
3
+ export declare function migrate<TSchema extends Record<string, unknown>>(db: NodeMsSqlDatabase<TSchema>, config: MigrationConfig): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import type { MigrationConfig } from "../migrator.js";
2
+ import type { NodeMsSqlDatabase } from "./driver.js";
3
+ export declare function migrate<TSchema extends Record<string, unknown>>(db: NodeMsSqlDatabase<TSchema>, config: MigrationConfig): Promise<void>;
@@ -0,0 +1,9 @@
1
+ import { readMigrationFiles } from "../migrator.js";
2
+ async function migrate(db, config) {
3
+ const migrations = readMigrationFiles(config);
4
+ await db.dialect.migrate(migrations, db.session, config);
5
+ }
6
+ export {
7
+ migrate
8
+ };
9
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/node-mssql/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { NodeMsSqlDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: NodeMsSqlDatabase<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tawait db.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AAGnC,eAAsB,QACrB,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAC5C,QAAM,GAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AACxD;","names":[]}
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var session_exports = {};
30
+ __export(session_exports, {
31
+ NodeMsSqlPreparedQuery: () => NodeMsSqlPreparedQuery,
32
+ NodeMsSqlSession: () => NodeMsSqlSession,
33
+ NodeMsSqlTransaction: () => NodeMsSqlTransaction
34
+ });
35
+ module.exports = __toCommonJS(session_exports);
36
+ var import_mssql = __toESM(require("mssql"), 1);
37
+ var import_node_events = require("node:events");
38
+ var import_entity = require("../entity.cjs");
39
+ var import_logger = require("../logger.cjs");
40
+ var import_session = require("../mssql-core/session.cjs");
41
+ var import_sql = require("../sql/sql.cjs");
42
+ var import_utils = require("../utils.cjs");
43
+ class NodeMsSqlPreparedQuery extends import_session.PreparedQuery {
44
+ constructor(client, queryString, params, logger, fields, customResultMapper) {
45
+ super();
46
+ this.client = client;
47
+ this.params = params;
48
+ this.logger = logger;
49
+ this.fields = fields;
50
+ this.customResultMapper = customResultMapper;
51
+ this.rawQuery = {
52
+ sql: queryString,
53
+ parameters: params
54
+ };
55
+ }
56
+ static [import_entity.entityKind] = "NodeMsSqlPreparedQuery";
57
+ rawQuery;
58
+ async execute(placeholderValues = {}) {
59
+ const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
60
+ this.logger.logQuery(this.rawQuery.sql, params);
61
+ const {
62
+ fields,
63
+ client,
64
+ rawQuery,
65
+ joinsNotNullableMap,
66
+ customResultMapper
67
+ } = this;
68
+ const request = client.request();
69
+ for (const [index, param] of params.entries()) {
70
+ request.input(`par${index}`, param);
71
+ }
72
+ if (!fields && !customResultMapper) {
73
+ return request.query(rawQuery.sql);
74
+ }
75
+ request.arrayRowMode = true;
76
+ const rows = await request.query(rawQuery.sql);
77
+ if (customResultMapper) {
78
+ return customResultMapper(rows.recordset);
79
+ }
80
+ return rows.recordset.map((row) => (0, import_utils.mapResultRow)(fields, row, joinsNotNullableMap));
81
+ }
82
+ async *iterator(placeholderValues = {}) {
83
+ const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
84
+ const {
85
+ fields,
86
+ rawQuery,
87
+ joinsNotNullableMap,
88
+ client,
89
+ customResultMapper
90
+ } = this;
91
+ const request = client.request();
92
+ request.stream = true;
93
+ const hasRowsMapper = Boolean(fields || customResultMapper);
94
+ if (hasRowsMapper) {
95
+ request.arrayRowMode = true;
96
+ }
97
+ for (const [index, param] of params.entries()) {
98
+ request.input(`par${index}`, param);
99
+ }
100
+ const stream = request.toReadableStream();
101
+ request.query(rawQuery.sql);
102
+ function dataListener() {
103
+ stream.pause();
104
+ }
105
+ stream.on("data", dataListener);
106
+ try {
107
+ const onEnd = (0, import_node_events.once)(stream, "end");
108
+ const onError = (0, import_node_events.once)(stream, "error");
109
+ while (true) {
110
+ stream.resume();
111
+ const row = await Promise.race([
112
+ onEnd,
113
+ onError,
114
+ new Promise((resolve) => stream.once("data", resolve))
115
+ ]);
116
+ if (row === void 0 || Array.isArray(row) && row.length === 0) {
117
+ break;
118
+ } else if (row instanceof Error) {
119
+ throw row;
120
+ } else {
121
+ if (hasRowsMapper) {
122
+ if (customResultMapper) {
123
+ const mappedRow = customResultMapper([row]);
124
+ yield Array.isArray(mappedRow) ? mappedRow[0] : mappedRow;
125
+ } else {
126
+ yield (0, import_utils.mapResultRow)(
127
+ fields,
128
+ row,
129
+ joinsNotNullableMap
130
+ );
131
+ }
132
+ } else {
133
+ yield row;
134
+ }
135
+ }
136
+ }
137
+ } finally {
138
+ stream.off("data", dataListener);
139
+ request.cancel();
140
+ }
141
+ }
142
+ }
143
+ class NodeMsSqlSession extends import_session.MsSqlSession {
144
+ constructor(client, dialect, schema, options) {
145
+ super(dialect);
146
+ this.client = client;
147
+ this.schema = schema;
148
+ this.options = options;
149
+ this.logger = options.logger ?? new import_logger.NoopLogger();
150
+ }
151
+ static [import_entity.entityKind] = "NodeMsSqlSession";
152
+ logger;
153
+ prepareQuery(query, fields, customResultMapper) {
154
+ return new NodeMsSqlPreparedQuery(
155
+ this.client,
156
+ query.sql,
157
+ query.params,
158
+ this.logger,
159
+ fields,
160
+ customResultMapper
161
+ );
162
+ }
163
+ /**
164
+ * @internal
165
+ * What is its purpose?
166
+ */
167
+ query(query, params) {
168
+ this.logger.logQuery(query, params);
169
+ const request = this.client.request();
170
+ request.arrayRowMode = true;
171
+ for (const [index, param] of params.entries()) {
172
+ request.input(`par${index}`, param);
173
+ }
174
+ return request.query(query);
175
+ }
176
+ async all(query) {
177
+ const querySql = this.dialect.sqlToQuery(query);
178
+ this.logger.logQuery(querySql.sql, querySql.params);
179
+ return this.query(querySql.sql, querySql.params).then(
180
+ (result) => result.recordset
181
+ );
182
+ }
183
+ async transaction(transaction, config) {
184
+ const mssqlTransaction = this.client.transaction();
185
+ const session = new NodeMsSqlSession(
186
+ mssqlTransaction,
187
+ this.dialect,
188
+ this.schema,
189
+ this.options
190
+ );
191
+ const tx = new NodeMsSqlTransaction(
192
+ this.dialect,
193
+ session,
194
+ this.schema,
195
+ 0
196
+ );
197
+ await mssqlTransaction.begin(
198
+ config?.isolationLevel ? isolationLevelMap[config.isolationLevel] : void 0
199
+ );
200
+ try {
201
+ const result = await transaction(tx);
202
+ await mssqlTransaction.commit();
203
+ return result;
204
+ } catch (err) {
205
+ await mssqlTransaction.rollback();
206
+ throw err;
207
+ }
208
+ }
209
+ }
210
+ class NodeMsSqlTransaction extends import_session.MsSqlTransaction {
211
+ static [import_entity.entityKind] = "NodeMsSqlTransaction";
212
+ async transaction(transaction) {
213
+ const savepointName = `sp${this.nestedIndex + 1}`;
214
+ const tx = new NodeMsSqlTransaction(
215
+ this.dialect,
216
+ this.session,
217
+ this.schema,
218
+ this.nestedIndex + 1
219
+ );
220
+ await tx.execute(import_sql.sql.raw(`save transaction ${savepointName}`));
221
+ try {
222
+ const result = await transaction(tx);
223
+ return result;
224
+ } catch (err) {
225
+ await tx.execute(import_sql.sql.raw(`rollback transaction ${savepointName}`));
226
+ throw err;
227
+ }
228
+ }
229
+ }
230
+ const isolationLevelMap = {
231
+ "read uncommitted": import_mssql.default.ISOLATION_LEVEL.READ_UNCOMMITTED,
232
+ "read committed": import_mssql.default.ISOLATION_LEVEL.READ_COMMITTED,
233
+ "repeatable read": import_mssql.default.ISOLATION_LEVEL.REPEATABLE_READ,
234
+ serializable: import_mssql.default.ISOLATION_LEVEL.SERIALIZABLE,
235
+ snapshot: import_mssql.default.ISOLATION_LEVEL.SNAPSHOT
236
+ };
237
+ // Annotate the CommonJS export names for ESM import in node:
238
+ 0 && (module.exports = {
239
+ NodeMsSqlPreparedQuery,
240
+ NodeMsSqlSession,
241
+ NodeMsSqlTransaction
242
+ });
243
+ //# sourceMappingURL=session.cjs.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":["mssql"]}
@@ -0,0 +1,47 @@
1
+ import type { ConnectionPool, IResult } from 'mssql';
2
+ import { entityKind } from "../entity.cjs";
3
+ import type { Logger } from "../logger.cjs";
4
+ import type { MsSqlDialect } from "../mssql-core/dialect.cjs";
5
+ import type { SelectedFieldsOrdered } from "../mssql-core/query-builders/select.types.cjs";
6
+ import { MsSqlSession, MsSqlTransaction, type MsSqlTransactionConfig, PreparedQuery, type PreparedQueryConfig, type PreparedQueryHKT, type PreparedQueryKind, type QueryResultHKT } from "../mssql-core/session.cjs";
7
+ import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
8
+ import { type Query, type SQL } from "../sql/sql.cjs";
9
+ import { type Assume } from "../utils.cjs";
10
+ export type NodeMsSqlClient = Pick<ConnectionPool, 'request'>;
11
+ export type MsSqlQueryResult<T extends unknown | unknown[] = any> = IResult<T>;
12
+ export declare class NodeMsSqlPreparedQuery<T extends PreparedQueryConfig> extends PreparedQuery<T> {
13
+ private client;
14
+ private params;
15
+ private logger;
16
+ private fields;
17
+ private customResultMapper?;
18
+ static readonly [entityKind]: string;
19
+ private rawQuery;
20
+ constructor(client: NodeMsSqlClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
21
+ execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
22
+ iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['execute'] extends any[] ? T['execute'][number] : T['execute']>;
23
+ }
24
+ export interface NodeMsSqlSessionOptions {
25
+ logger?: Logger;
26
+ }
27
+ export declare class NodeMsSqlSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MsSqlSession<NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, TFullSchema, TSchema> {
28
+ private client;
29
+ private schema;
30
+ private options;
31
+ static readonly [entityKind]: string;
32
+ private logger;
33
+ constructor(client: NodeMsSqlClient, dialect: MsSqlDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options: NodeMsSqlSessionOptions);
34
+ prepareQuery<T extends PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute']): PreparedQueryKind<NodeMsSqlPreparedQueryHKT, T>;
35
+ all<T = unknown>(query: SQL): Promise<T[]>;
36
+ transaction<T>(transaction: (tx: NodeMsSqlTransaction<TFullSchema, TSchema>) => Promise<T>, config?: MsSqlTransactionConfig): Promise<T>;
37
+ }
38
+ export declare class NodeMsSqlTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MsSqlTransaction<NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, TFullSchema, TSchema> {
39
+ static readonly [entityKind]: string;
40
+ transaction<T>(transaction: (tx: NodeMsSqlTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
41
+ }
42
+ export interface NodeMsSqlQueryResultHKT extends QueryResultHKT {
43
+ type: MsSqlQueryResult<this['row']>;
44
+ }
45
+ export interface NodeMsSqlPreparedQueryHKT extends PreparedQueryHKT {
46
+ type: NodeMsSqlPreparedQuery<Assume<this['config'], PreparedQueryConfig>>;
47
+ }
@@ -0,0 +1,47 @@
1
+ import type { ConnectionPool, IResult } from 'mssql';
2
+ import { entityKind } from "../entity.js";
3
+ import type { Logger } from "../logger.js";
4
+ import type { MsSqlDialect } from "../mssql-core/dialect.js";
5
+ import type { SelectedFieldsOrdered } from "../mssql-core/query-builders/select.types.js";
6
+ import { MsSqlSession, MsSqlTransaction, type MsSqlTransactionConfig, PreparedQuery, type PreparedQueryConfig, type PreparedQueryHKT, type PreparedQueryKind, type QueryResultHKT } from "../mssql-core/session.js";
7
+ import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
8
+ import { type Query, type SQL } from "../sql/sql.js";
9
+ import { type Assume } from "../utils.js";
10
+ export type NodeMsSqlClient = Pick<ConnectionPool, 'request'>;
11
+ export type MsSqlQueryResult<T extends unknown | unknown[] = any> = IResult<T>;
12
+ export declare class NodeMsSqlPreparedQuery<T extends PreparedQueryConfig> extends PreparedQuery<T> {
13
+ private client;
14
+ private params;
15
+ private logger;
16
+ private fields;
17
+ private customResultMapper?;
18
+ static readonly [entityKind]: string;
19
+ private rawQuery;
20
+ constructor(client: NodeMsSqlClient, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
21
+ execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;
22
+ iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['execute'] extends any[] ? T['execute'][number] : T['execute']>;
23
+ }
24
+ export interface NodeMsSqlSessionOptions {
25
+ logger?: Logger;
26
+ }
27
+ export declare class NodeMsSqlSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MsSqlSession<NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, TFullSchema, TSchema> {
28
+ private client;
29
+ private schema;
30
+ private options;
31
+ static readonly [entityKind]: string;
32
+ private logger;
33
+ constructor(client: NodeMsSqlClient, dialect: MsSqlDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options: NodeMsSqlSessionOptions);
34
+ prepareQuery<T extends PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute']): PreparedQueryKind<NodeMsSqlPreparedQueryHKT, T>;
35
+ all<T = unknown>(query: SQL): Promise<T[]>;
36
+ transaction<T>(transaction: (tx: NodeMsSqlTransaction<TFullSchema, TSchema>) => Promise<T>, config?: MsSqlTransactionConfig): Promise<T>;
37
+ }
38
+ export declare class NodeMsSqlTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MsSqlTransaction<NodeMsSqlQueryResultHKT, NodeMsSqlPreparedQueryHKT, TFullSchema, TSchema> {
39
+ static readonly [entityKind]: string;
40
+ transaction<T>(transaction: (tx: NodeMsSqlTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
41
+ }
42
+ export interface NodeMsSqlQueryResultHKT extends QueryResultHKT {
43
+ type: MsSqlQueryResult<this['row']>;
44
+ }
45
+ export interface NodeMsSqlPreparedQueryHKT extends PreparedQueryHKT {
46
+ type: NodeMsSqlPreparedQuery<Assume<this['config'], PreparedQueryConfig>>;
47
+ }
@@ -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":[]}