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/mssql-core/dialect.ts"],"sourcesContent":["import { aliasedTable, aliasedTableColumn, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias } from '~/alias.ts';\nimport { CasingCache } from '~/casing.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { MigrationConfig, MigrationMeta } from '~/migrator.ts';\nimport {\n\ttype BuildRelationalQueryResult,\n\ttype DBQueryConfig,\n\tgetOperators,\n\tgetOrderByOperators,\n\tMany,\n\tnormalizeRelation,\n\tOne,\n\ttype Relation,\n\ttype TableRelationalConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { Param, type QueryWithTypings, SQL, sql, type SQLChunk, View } from '~/sql/sql.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { getTableName, getTableUniqueName, Table } from '~/table.ts';\nimport { type Casing, orderSelectedFields, type UpdateSet } from '~/utils.ts';\nimport { and, DrizzleError, eq, type Name, ViewBaseConfig } from '../index.ts';\nimport { MsSqlColumn } from './columns/common.ts';\nimport type { MsSqlDeleteConfig } from './query-builders/delete.ts';\nimport type { MsSqlInsertConfig } from './query-builders/insert.ts';\nimport type { MsSqlSelectConfig, SelectedFieldsOrdered } from './query-builders/select.types.ts';\nimport type { MsSqlUpdateConfig } from './query-builders/update.ts';\nimport type { MsSqlSession } from './session.ts';\nimport { MsSqlTable } from './table.ts';\nimport { MsSqlViewBase } from './view-base.ts';\n\nexport interface MsSqlDialectConfig {\n\tcasing?: Casing;\n}\nexport class MsSqlDialect {\n\tstatic readonly [entityKind]: string = 'MsSqlDialect';\n\n\t/** @internal */\n\treadonly casing: CasingCache;\n\n\tconstructor(config?: MsSqlDialectConfig) {\n\t\tthis.casing = new CasingCache(config?.casing);\n\t}\n\n\tasync migrate(\n\t\tmigrations: MigrationMeta[],\n\t\tsession: MsSqlSession,\n\t\tconfig: Omit<MigrationConfig, 'migrationsSchema'>,\n\t): Promise<void> {\n\t\tconst migrationsTable = config.migrationsTable ?? '__drizzle_migrations';\n\t\tconst migrationTableCreate = sql`\n\t\t\tcreate table ${sql.identifier(migrationsTable)} (\n\t\t\t\tid bigint identity primary key,\n\t\t\t\thash text not null,\n\t\t\t\tcreated_at bigint\n\t\t\t)\n\t\t`;\n\t\tawait session.execute(migrationTableCreate);\n\n\t\tconst dbMigrations = await session.all<{ id: number; hash: string; created_at: string }>(\n\t\t\tsql`select id, hash, created_at from ${\n\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t} order by created_at desc offset 0 rows fetch next 1 rows only`,\n\t\t);\n\n\t\tconst lastDbMigration = dbMigrations[0];\n\n\t\tawait session.transaction(async (tx) => {\n\t\t\tfor (const migration of migrations) {\n\t\t\t\tif (\n\t\t\t\t\t!lastDbMigration\n\t\t\t\t\t|| Number(lastDbMigration.created_at) < migration.folderMillis\n\t\t\t\t) {\n\t\t\t\t\tfor (const stmt of migration.sql) {\n\t\t\t\t\t\tawait tx.execute(sql.raw(stmt));\n\t\t\t\t\t}\n\t\t\t\t\tawait tx.execute(\n\t\t\t\t\t\tsql`insert into ${\n\t\t\t\t\t\t\tsql.identifier(migrationsTable)\n\t\t\t\t\t\t} ([hash], [created_at]) values(${migration.hash}, ${migration.folderMillis})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tescapeName(name: string): string {\n\t\treturn `[${name}]`;\n\t}\n\n\tescapeParam(_num: number): string {\n\t\treturn `@par${_num}`;\n\t}\n\n\tescapeString(str: string): string {\n\t\treturn `'${str.replace(/'/g, \"''\")}'`;\n\t}\n\n\tbuildDeleteQuery({ table, where, output }: MsSqlDeleteConfig): SQL {\n\t\tconst outputSql = output\n\t\t\t? sql` output ${this.buildSelectionOutput(output, { type: 'DELETED' })}`\n\t\t\t: undefined;\n\n\t\tconst whereSql = where ? sql` where ${where}` : undefined;\n\n\t\treturn sql`delete from ${table}${outputSql}${whereSql}`;\n\t}\n\n\tbuildUpdateSet(table: MsSqlTable, set: UpdateSet): SQL {\n\t\tconst tableColumns = table[Table.Symbol.Columns];\n\n\t\tconst columnNames = Object.keys(tableColumns).filter((colName) =>\n\t\t\tset[colName] !== undefined || tableColumns[colName]?.onUpdateFn !== undefined\n\t\t);\n\n\t\tconst setSize = columnNames.length;\n\t\treturn sql.join(columnNames.flatMap((colName, i) => {\n\t\t\tconst col = tableColumns[colName]!;\n\n\t\t\tconst value = set[colName] ?? sql.param(col.onUpdateFn!(), col);\n\t\t\tconst res = sql`${sql.identifier(this.casing.getColumnCasing(col))} = ${value}`;\n\n\t\t\tif (i < setSize - 1) {\n\t\t\t\treturn [res, sql.raw(', ')];\n\t\t\t}\n\t\t\treturn [res];\n\t\t}));\n\t\t// const setEntries = Object.entries(set);\n\t\t//\n\t\t// const setSize = setEntries.length;\n\t\t// return sql.join(\n\t\t// \tsetEntries\n\t\t// \t\t.flatMap(([colName, value], i): SQL[] => {\n\t\t// \t\t\tconst col: MsSqlColumn = table[Table.Symbol.Columns][colName]!;\n\t\t// \t\t\tconst res = sql`${sql.identifier(col.name)} = ${value}`;\n\t\t// \t\t\tif (i < setSize - 1) {\n\t\t// \t\t\t\treturn [res, sql.raw(', ')];\n\t\t// \t\t\t}\n\t\t// \t\t\treturn [res];\n\t\t// \t\t}),\n\t\t// );\n\t}\n\n\tbuildUpdateQuery({ table, set, where, output }: MsSqlUpdateConfig): SQL {\n\t\tconst setSql = this.buildUpdateSet(table, set);\n\n\t\tconst outputSql = sql``;\n\n\t\tif (output) {\n\t\t\toutputSql.append(sql` output `);\n\n\t\t\tif (output.inserted) {\n\t\t\t\toutputSql.append(this.buildSelectionOutput(output.inserted, { type: 'INSERTED' }));\n\t\t\t}\n\n\t\t\tif (output.deleted) {\n\t\t\t\tif (output.inserted) outputSql.append(sql`, `); // add space if both are present\n\t\t\t\toutputSql.append(this.buildSelectionOutput(output.deleted, { type: 'DELETED' }));\n\t\t\t}\n\t\t}\n\n\t\tconst whereSql = where ? sql` where ${where}` : undefined;\n\n\t\treturn sql`update ${table} set ${setSql}${outputSql}${whereSql}`;\n\t}\n\n\t/**\n\t * Builds selection SQL with provided fields/expressions\n\t *\n\t * Examples:\n\t *\n\t * `select <selection> from`\n\t *\n\t * `insert ... returning <selection>`\n\t *\n\t * If `isSingleTable` is true, then columns won't be prefixed with table name\n\t */\n\tprivate buildSelection(\n\t\tfields: SelectedFieldsOrdered,\n\t\t{ isSingleTable = false }: { isSingleTable?: boolean } = {},\n\t): SQL {\n\t\tconst columnsLen = fields.length;\n\n\t\tconst chunks = fields\n\t\t\t.flatMap(({ field }, i) => {\n\t\t\t\tconst chunk: SQLChunk[] = [];\n\n\t\t\t\tif (is(field, SQL.Aliased) && field.isSelectionField) {\n\t\t\t\t\tchunk.push(sql.identifier(field.fieldAlias));\n\t\t\t\t} else if (is(field, SQL.Aliased) || is(field, SQL)) {\n\t\t\t\t\tconst query = is(field, SQL.Aliased) ? field.sql : field;\n\n\t\t\t\t\tif (isSingleTable) {\n\t\t\t\t\t\tchunk.push(\n\t\t\t\t\t\t\tnew SQL(\n\t\t\t\t\t\t\t\tquery.queryChunks.map((c) => {\n\t\t\t\t\t\t\t\t\tif (is(c, MsSqlColumn)) {\n\t\t\t\t\t\t\t\t\t\treturn sql.identifier(this.casing.getColumnCasing(c));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn c;\n\t\t\t\t\t\t\t\t}),\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\tchunk.push(query);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (is(field, SQL.Aliased)) {\n\t\t\t\t\t\tchunk.push(sql` as ${sql.identifier(field.fieldAlias)}`);\n\t\t\t\t\t}\n\t\t\t\t} else if (is(field, Column)) {\n\t\t\t\t\tif (isSingleTable) {\n\t\t\t\t\t\tchunk.push(sql.identifier(this.casing.getColumnCasing(field)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchunk.push(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (i < columnsLen - 1) {\n\t\t\t\t\tchunk.push(sql`, `);\n\t\t\t\t}\n\n\t\t\t\treturn chunk;\n\t\t\t});\n\n\t\treturn sql.join(chunks);\n\t}\n\n\tprivate buildSelectionOutput(\n\t\tfields: SelectedFieldsOrdered,\n\t\t{ type }: { type: 'INSERTED' | 'DELETED' },\n\t): SQL {\n\t\tconst columnsLen = fields.length;\n\n\t\tconst chunks = fields\n\t\t\t.flatMap(({ field }, i) => {\n\t\t\t\tconst chunk: SQLChunk[] = [];\n\n\t\t\t\tif (is(field, SQL.Aliased) && field.isSelectionField) {\n\t\t\t\t\tchunk.push(sql.join([sql.raw(`${type}.`), sql.identifier(field.fieldAlias)]));\n\t\t\t\t} else if (is(field, SQL.Aliased) || is(field, SQL)) {\n\t\t\t\t\tconst query = is(field, SQL.Aliased) ? field.sql : field;\n\n\t\t\t\t\tchunk.push(\n\t\t\t\t\t\tnew SQL(\n\t\t\t\t\t\t\tquery.queryChunks.map((c) => {\n\t\t\t\t\t\t\t\tif (is(c, MsSqlColumn)) {\n\t\t\t\t\t\t\t\t\treturn sql.join([sql.raw(`${type}.`), sql.identifier(this.casing.getColumnCasing(c))]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn c;\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (is(field, SQL.Aliased)) {\n\t\t\t\t\t\tchunk.push(sql` as ${sql.identifier(field.fieldAlias)}`);\n\t\t\t\t\t}\n\t\t\t\t} else if (is(field, Column)) {\n\t\t\t\t\tchunk.push(sql.join([sql.raw(`${type}.`), sql.identifier(this.casing.getColumnCasing(field))]));\n\t\t\t\t}\n\n\t\t\t\tif (i < columnsLen - 1) {\n\t\t\t\t\tchunk.push(sql`, `);\n\t\t\t\t}\n\n\t\t\t\treturn chunk;\n\t\t\t});\n\n\t\treturn sql.join(chunks);\n\t}\n\n\tbuildSelectQuery(\n\t\t{\n\t\t\twithList,\n\t\t\tfields,\n\t\t\tfieldsFlat,\n\t\t\twhere,\n\t\t\thaving,\n\t\t\ttable,\n\t\t\tjoins,\n\t\t\torderBy,\n\t\t\tgroupBy,\n\t\t\tfetch,\n\t\t\tfor: _for,\n\t\t\ttop,\n\t\t\toffset,\n\t\t\tdistinct,\n\t\t\tsetOperators,\n\t\t}: MsSqlSelectConfig,\n\t): SQL {\n\t\tconst fieldsList = fieldsFlat ?? orderSelectedFields<MsSqlColumn>(fields);\n\t\tfor (const f of fieldsList) {\n\t\t\tif (\n\t\t\t\tis(f.field, Column)\n\t\t\t\t&& getTableName(f.field.table)\n\t\t\t\t\t!== (is(table, Subquery)\n\t\t\t\t\t\t? table._.alias\n\t\t\t\t\t\t: is(table, MsSqlViewBase)\n\t\t\t\t\t\t? table[ViewBaseConfig].name\n\t\t\t\t\t\t: is(table, SQL)\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: getTableName(table))\n\t\t\t\t&& !((table) =>\n\t\t\t\t\tjoins?.some(({ alias }) =>\n\t\t\t\t\t\talias === (table[Table.Symbol.IsAlias] ? getTableName(table) : table[Table.Symbol.BaseName])\n\t\t\t\t\t))(f.field.table)\n\t\t\t) {\n\t\t\t\tconst tableName = getTableName(f.field.table);\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Your \"${\n\t\t\t\t\t\tf.path.join('->')\n\t\t\t\t\t}\" field references a column \"${tableName}\".\"${f.field.name}\", but the table \"${tableName}\" is not part of the query! Did you forget to join it?`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst isSingleTable = !joins || joins.length === 0;\n\n\t\tlet withSql: SQL | undefined;\n\t\tif (withList?.length) {\n\t\t\tconst withSqlChunks = [sql`with `];\n\t\t\tfor (const [i, w] of withList.entries()) {\n\t\t\t\twithSqlChunks.push(sql`${sql.identifier(w._.alias)} as (${w._.sql})`);\n\t\t\t\tif (i < withList.length - 1) {\n\t\t\t\t\twithSqlChunks.push(sql`, `);\n\t\t\t\t}\n\t\t\t}\n\t\t\twithSqlChunks.push(sql` `);\n\t\t\twithSql = sql.join(withSqlChunks);\n\t\t}\n\n\t\tconst distinctSql = distinct ? sql` distinct` : undefined;\n\n\t\tconst topSql = top\n\t\t\t? sql` top(${top})`\n\t\t\t: undefined;\n\n\t\tconst selection = this.buildSelection(fieldsList, { isSingleTable });\n\n\t\tconst tableSql = (() => {\n\t\t\tif (is(table, Table) && table[Table.Symbol.OriginalName] !== table[Table.Symbol.Name]) {\n\t\t\t\tlet fullName = sql`${sql.identifier(table[Table.Symbol.OriginalName])} ${\n\t\t\t\t\tsql.identifier(table[Table.Symbol.Name])\n\t\t\t\t}`;\n\t\t\t\tif (table[Table.Symbol.Schema]) {\n\t\t\t\t\tfullName = sql`${sql.identifier(table[Table.Symbol.Schema]!)}.${fullName}`;\n\t\t\t\t}\n\t\t\t\treturn fullName;\n\t\t\t}\n\n\t\t\treturn table;\n\t\t})();\n\n\t\tconst joinsArray: SQL[] = [];\n\n\t\tif (joins) {\n\t\t\tfor (const [index, joinMeta] of joins.entries()) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tjoinsArray.push(sql` `);\n\t\t\t\t}\n\t\t\t\tconst table = joinMeta.table;\n\t\t\t\tconst lateralSql = joinMeta.lateral ? sql` lateral` : undefined;\n\n\t\t\t\tif (is(table, MsSqlTable)) {\n\t\t\t\t\tconst tableName = table[MsSqlTable.Symbol.Name];\n\t\t\t\t\tconst tableSchema = table[MsSqlTable.Symbol.Schema];\n\t\t\t\t\tconst origTableName = table[MsSqlTable.Symbol.OriginalName];\n\t\t\t\t\tconst alias = tableName === origTableName ? undefined : joinMeta.alias;\n\t\t\t\t\tjoinsArray.push(\n\t\t\t\t\t\tsql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${\n\t\t\t\t\t\t\ttableSchema ? sql`${sql.identifier(tableSchema)}.` : undefined\n\t\t\t\t\t\t}${sql.identifier(origTableName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`,\n\t\t\t\t\t);\n\t\t\t\t} else if (is(table, View)) {\n\t\t\t\t\tconst viewName = table[ViewBaseConfig].name;\n\t\t\t\t\tconst viewSchema = table[ViewBaseConfig].schema;\n\t\t\t\t\tconst origViewName = table[ViewBaseConfig].originalName;\n\t\t\t\t\tconst alias = viewName === origViewName ? undefined : joinMeta.alias;\n\t\t\t\t\tjoinsArray.push(\n\t\t\t\t\t\tsql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${\n\t\t\t\t\t\t\tviewSchema ? sql`${sql.identifier(viewSchema)}.` : undefined\n\t\t\t\t\t\t}${sql.identifier(origViewName)}${alias && sql` ${sql.identifier(alias)}`} on ${joinMeta.on}`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tjoinsArray.push(\n\t\t\t\t\t\tsql`${sql.raw(joinMeta.joinType)} join${lateralSql} ${table} on ${joinMeta.on}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (index < joins.length - 1) {\n\t\t\t\t\tjoinsArray.push(sql` `);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst joinsSql = sql.join(joinsArray);\n\n\t\tconst whereSql = where ? sql` where ${where}` : undefined;\n\n\t\tconst havingSql = having ? sql` having ${having}` : undefined;\n\n\t\tlet orderBySql;\n\t\tif (orderBy && orderBy.length > 0) {\n\t\t\torderBySql = sql` order by ${sql.join(orderBy, sql`, `)}`;\n\t\t}\n\n\t\tlet groupBySql;\n\t\tif (groupBy && groupBy.length > 0) {\n\t\t\tgroupBySql = sql` group by ${sql.join(groupBy, sql`, `)}`;\n\t\t}\n\n\t\tconst offsetSql = offset === undefined ? undefined : sql` offset ${offset} rows`;\n\n\t\tconst fetchSql = fetch === undefined ? undefined : sql` fetch next ${fetch} rows only`;\n\n\t\tlet forSQL: SQL | undefined;\n\t\tif (_for && _for.mode === 'json') {\n\t\t\tforSQL = sql` for json ${sql.raw(_for.type)}${\n\t\t\t\t_for.options?.root ? sql` root(${sql.identifier(_for.options.root)})` : undefined\n\t\t\t}${_for.options?.includeNullValues ? sql` include_null_values` : undefined}${\n\t\t\t\t_for.options?.withoutArrayWrapper ? sql` without_array_wrapper` : undefined\n\t\t\t}`;\n\t\t}\n\n\t\tconst finalQuery =\n\t\t\tsql`${withSql}select${distinctSql}${topSql} ${selection} from ${tableSql}${joinsSql}${whereSql}${groupBySql}${havingSql}${orderBySql}${offsetSql}${fetchSql}${forSQL}`;\n\n\t\tif (setOperators.length > 0) {\n\t\t\treturn this.buildSetOperations(finalQuery, setOperators);\n\t\t}\n\n\t\treturn finalQuery;\n\t}\n\n\tbuildSetOperations(leftSelect: SQL, setOperators: MsSqlSelectConfig['setOperators']): SQL {\n\t\tconst [setOperator, ...rest] = setOperators;\n\n\t\tif (!setOperator) {\n\t\t\tthrow new Error('Cannot pass undefined values to any set operator');\n\t\t}\n\n\t\tif (rest.length === 0) {\n\t\t\treturn this.buildSetOperationQuery({ leftSelect, setOperator });\n\t\t}\n\n\t\t// Some recursive magic here\n\t\treturn this.buildSetOperations(\n\t\t\tthis.buildSetOperationQuery({ leftSelect, setOperator }),\n\t\t\trest,\n\t\t);\n\t}\n\n\tbuildSetOperationQuery({\n\t\tleftSelect,\n\t\tsetOperator: { type, isAll, rightSelect, fetch, orderBy, offset },\n\t}: { leftSelect: SQL; setOperator: MsSqlSelectConfig['setOperators'][number] }): SQL {\n\t\tconst leftChunk = sql`(${leftSelect.getSQL()}) `;\n\t\tconst rightChunk = sql`(${rightSelect.getSQL()})`;\n\n\t\tlet orderBySql;\n\t\tif (orderBy && orderBy.length > 0) {\n\t\t\tconst orderByValues: (SQL<unknown> | Name)[] = [];\n\n\t\t\t// The next bit is necessary because the sql operator replaces ${table.column} with `table`.`column`\n\t\t\t// which is invalid MsSql syntax, Table from one of the SELECTs cannot be used in global ORDER clause\n\t\t\tfor (const orderByUnit of orderBy) {\n\t\t\t\tif (is(orderByUnit, MsSqlColumn)) {\n\t\t\t\t\torderByValues.push(sql.identifier(orderByUnit.name));\n\t\t\t\t} else if (is(orderByUnit, SQL)) {\n\t\t\t\t\tfor (let i = 0; i < orderByUnit.queryChunks.length; i++) {\n\t\t\t\t\t\tconst chunk = orderByUnit.queryChunks[i];\n\n\t\t\t\t\t\tif (is(chunk, MsSqlColumn)) {\n\t\t\t\t\t\t\torderByUnit.queryChunks[i] = sql.identifier(chunk.name);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\torderByValues.push(sql`${orderByUnit}`);\n\t\t\t\t} else {\n\t\t\t\t\torderByValues.push(sql`${orderByUnit}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\torderBySql = sql` order by ${sql.join(orderByValues, sql`, `)} `;\n\t\t}\n\n\t\tconst offsetSql = offset === undefined ? undefined : sql` offset ${offset} rows`;\n\n\t\tconst fetchSql = fetch === undefined ? undefined : sql` fetch next ${fetch} rows only`;\n\n\t\tconst operatorChunk = sql.raw(`${type} ${isAll ? 'all ' : ''}`);\n\n\t\treturn sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${offsetSql}${fetchSql}`;\n\t}\n\n\tbuildInsertQuery({ table, values, output }: MsSqlInsertConfig): SQL {\n\t\t// const isSingleValue = values.length === 1;\n\t\tconst valuesSqlList: ((SQLChunk | SQL)[] | SQL)[] = [];\n\t\tconst columns: Record<string, MsSqlColumn> = table[Table.Symbol.Columns];\n\t\tconst colEntries: [string, MsSqlColumn][] = Object.entries(columns).filter(\n\t\t\t([_, col]) => !col.shouldDisableInsert(),\n\t\t);\n\n\t\tconst insertOrder = colEntries.map(([, column]) => sql.identifier(this.casing.getColumnCasing(column)));\n\n\t\tfor (const [valueIndex, value] of values.entries()) {\n\t\t\tconst valueList: (SQLChunk | SQL)[] = [];\n\t\t\tfor (const [fieldName, col] of colEntries) {\n\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\tif (colValue === undefined || (is(colValue, Param) && colValue.value === undefined)) {\n\t\t\t\t\tif (col.defaultFn !== undefined) {\n\t\t\t\t\t\tconst defaultFnResult = col.defaultFn();\n\t\t\t\t\t\tconst defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);\n\t\t\t\t\t\tvalueList.push(defaultValue);\n\t\t\t\t\t} else if (!col.default && col.onUpdateFn !== undefined) {\n\t\t\t\t\t\tconst onUpdateFnResult = col.onUpdateFn();\n\t\t\t\t\t\tconst newValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);\n\t\t\t\t\t\tvalueList.push(newValue);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalueList.push(sql`default`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalueList.push(colValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvaluesSqlList.push(valueList);\n\t\t\tif (valueIndex < values.length - 1) {\n\t\t\t\tvaluesSqlList.push(sql`, `);\n\t\t\t}\n\t\t}\n\n\t\tconst valuesSql = insertOrder.length === 0 ? undefined : sql.join(valuesSqlList);\n\n\t\tconst outputSql = output\n\t\t\t? sql` output ${this.buildSelectionOutput(output, { type: 'INSERTED' })}`\n\t\t\t: undefined;\n\n\t\treturn sql`insert into ${table} ${\n\t\t\tinsertOrder.length === 0 ? sql`default` : insertOrder\n\t\t}${outputSql} values ${valuesSql}`;\n\t}\n\n\tsqlToQuery(sql: SQL, invokeSource?: 'indexes' | undefined): QueryWithTypings {\n\t\treturn sql.toQuery({\n\t\t\tcasing: this.casing,\n\t\t\tescapeName: this.escapeName,\n\t\t\tescapeParam: this.escapeParam,\n\t\t\tescapeString: this.escapeString,\n\t\t\tinvokeSource,\n\t\t});\n\t}\n\n\tbuildRelationalQuery({\n\t\tfullSchema,\n\t\tschema,\n\t\ttableNamesMap,\n\t\ttable,\n\t\ttableConfig,\n\t\tqueryConfig: config,\n\t\ttableAlias,\n\t\tnestedQueryRelation,\n\t\tjoinOn,\n\t}: {\n\t\tfullSchema: Record<string, unknown>;\n\t\tschema: TablesRelationalConfig;\n\t\ttableNamesMap: Record<string, string>;\n\t\ttable: MsSqlTable;\n\t\ttableConfig: TableRelationalConfig;\n\t\tqueryConfig: true | DBQueryConfig<'many', true>;\n\t\ttableAlias: string;\n\t\tnestedQueryRelation?: Relation;\n\t\tjoinOn?: SQL;\n\t}): BuildRelationalQueryResult<MsSqlTable, MsSqlColumn> {\n\t\tlet selection: BuildRelationalQueryResult<MsSqlTable, MsSqlColumn>['selection'] = [];\n\t\tlet limit, offset, orderBy: MsSqlSelectConfig['orderBy'] = [], where;\n\n\t\tif (config === true) {\n\t\t\tconst selectionEntries = Object.entries(tableConfig.columns);\n\t\t\tselection = selectionEntries.map((\n\t\t\t\t[key, value],\n\t\t\t) => ({\n\t\t\t\tdbKey: value.name,\n\t\t\t\ttsKey: key,\n\t\t\t\tfield: aliasedTableColumn(value as MsSqlColumn, tableAlias),\n\t\t\t\trelationTableTsKey: undefined,\n\t\t\t\tisJson: false,\n\t\t\t\tselection: [],\n\t\t\t}));\n\t\t} else {\n\t\t\tconst aliasedColumns = Object.fromEntries(\n\t\t\t\tObject.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)]),\n\t\t\t);\n\n\t\t\tif (config.where) {\n\t\t\t\tconst whereSql = typeof config.where === 'function'\n\t\t\t\t\t? config.where(aliasedColumns, getOperators())\n\t\t\t\t\t: config.where;\n\t\t\t\twhere = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);\n\t\t\t}\n\n\t\t\tconst fieldsSelection: { tsKey: string; value: MsSqlColumn | SQL.Aliased }[] = [];\n\t\t\tlet selectedColumns: string[] = [];\n\n\t\t\t// Figure out which columns to select\n\t\t\tif (config.columns) {\n\t\t\t\tlet isIncludeMode = false;\n\n\t\t\t\tfor (const [field, value] of Object.entries(config.columns)) {\n\t\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (field in tableConfig.columns) {\n\t\t\t\t\t\tif (!isIncludeMode && value === true) {\n\t\t\t\t\t\t\tisIncludeMode = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tselectedColumns.push(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (selectedColumns.length > 0) {\n\t\t\t\t\tselectedColumns = isIncludeMode\n\t\t\t\t\t\t? selectedColumns.filter((c) => config.columns?.[c] === true)\n\t\t\t\t\t\t: Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Select all columns if selection is not specified\n\t\t\t\tselectedColumns = Object.keys(tableConfig.columns);\n\t\t\t}\n\n\t\t\tfor (const field of selectedColumns) {\n\t\t\t\tconst column = tableConfig.columns[field]! as MsSqlColumn;\n\t\t\t\tfieldsSelection.push({ tsKey: field, value: column });\n\t\t\t}\n\n\t\t\tlet selectedRelations: {\n\t\t\t\ttsKey: string;\n\t\t\t\tqueryConfig: true | DBQueryConfig<'many', false>;\n\t\t\t\trelation: Relation;\n\t\t\t}[] = [];\n\n\t\t\t// Figure out which relations to select\n\t\t\tif (config.with) {\n\t\t\t\tselectedRelations = Object.entries(config.with)\n\t\t\t\t\t.filter((entry): entry is [typeof entry[0], NonNullable<typeof entry[1]>] => !!entry[1])\n\t\t\t\t\t.map(([tsKey, queryConfig]) => ({ tsKey, queryConfig, relation: tableConfig.relations[tsKey]! }));\n\t\t\t}\n\n\t\t\tlet extras;\n\n\t\t\t// Figure out which extras to select\n\t\t\tif (config.extras) {\n\t\t\t\textras = typeof config.extras === 'function'\n\t\t\t\t\t? config.extras(aliasedColumns, { sql })\n\t\t\t\t\t: config.extras;\n\t\t\t\tfor (const [tsKey, value] of Object.entries(extras)) {\n\t\t\t\t\tfieldsSelection.push({\n\t\t\t\t\t\ttsKey,\n\t\t\t\t\t\tvalue: mapColumnsInAliasedSQLToAlias(value, tableAlias),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Transform `fieldsSelection` into `selection`\n\t\t\t// `fieldsSelection` shouldn't be used after this point\n\t\t\tfor (const { tsKey, value } of fieldsSelection) {\n\t\t\t\tselection.push({\n\t\t\t\t\tdbKey: is(value, SQL.Aliased) ? value.fieldAlias : tableConfig.columns[tsKey]!.name,\n\t\t\t\t\ttsKey,\n\t\t\t\t\tfield: is(value, Column) ? aliasedTableColumn(value, tableAlias) : value,\n\t\t\t\t\trelationTableTsKey: undefined,\n\t\t\t\t\tisJson: false,\n\t\t\t\t\tselection: [],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet orderByOrig = typeof config.orderBy === 'function'\n\t\t\t\t? config.orderBy(aliasedColumns, getOrderByOperators())\n\t\t\t\t: config.orderBy ?? [];\n\t\t\tif (!Array.isArray(orderByOrig)) {\n\t\t\t\torderByOrig = [orderByOrig];\n\t\t\t}\n\t\t\torderBy = orderByOrig.map((orderByValue) => {\n\t\t\t\tif (is(orderByValue, Column)) {\n\t\t\t\t\treturn aliasedTableColumn(orderByValue, tableAlias) as MsSqlColumn;\n\t\t\t\t}\n\t\t\t\treturn mapColumnsInSQLToAlias(orderByValue, tableAlias);\n\t\t\t});\n\n\t\t\tlimit = config.limit;\n\t\t\toffset = config.offset;\n\n\t\t\t// Process all relations\n\t\t\tfor (\n\t\t\t\tconst {\n\t\t\t\t\ttsKey: selectedRelationTsKey,\n\t\t\t\t\tqueryConfig: selectedRelationConfigValue,\n\t\t\t\t\trelation,\n\t\t\t\t} of selectedRelations\n\t\t\t) {\n\t\t\t\tconst normalizedRelation = normalizeRelation(schema, tableNamesMap, relation);\n\t\t\t\tconst relationTableName = getTableUniqueName(relation.referencedTable);\n\t\t\t\tconst relationTableTsName = tableNamesMap[relationTableName]!;\n\t\t\t\tconst relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;\n\t\t\t\tconst joinOn = and(\n\t\t\t\t\t...normalizedRelation.fields.map((field, i) =>\n\t\t\t\t\t\teq(\n\t\t\t\t\t\t\taliasedTableColumn(normalizedRelation.references[i]!, relationTableAlias),\n\t\t\t\t\t\t\taliasedTableColumn(field, tableAlias),\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tconst builtRelation = this.buildRelationalQuery({\n\t\t\t\t\tfullSchema,\n\t\t\t\t\tschema,\n\t\t\t\t\ttableNamesMap,\n\t\t\t\t\ttable: fullSchema[relationTableTsName] as MsSqlTable,\n\t\t\t\t\ttableConfig: schema[relationTableTsName]!,\n\t\t\t\t\tqueryConfig: is(relation, One)\n\t\t\t\t\t\t? (selectedRelationConfigValue === true\n\t\t\t\t\t\t\t? { limit: 1 }\n\t\t\t\t\t\t\t: { ...selectedRelationConfigValue, limit: 1 })\n\t\t\t\t\t\t: selectedRelationConfigValue,\n\t\t\t\t\ttableAlias: relationTableAlias,\n\t\t\t\t\tjoinOn,\n\t\t\t\t\tnestedQueryRelation: relation,\n\t\t\t\t});\n\t\t\t\tlet fieldSql = sql`(${builtRelation.sql} for json auto, include_null_values)${\n\t\t\t\t\tnestedQueryRelation ? sql` as ${sql.identifier(relationTableAlias)}` : undefined\n\t\t\t\t}`;\n\t\t\t\tif (is(relation, Many)) {\n\t\t\t\t\tfieldSql = sql`${fieldSql}`;\n\t\t\t\t}\n\t\t\t\tconst field = fieldSql.as(selectedRelationTsKey);\n\t\t\t\tselection.push({\n\t\t\t\t\tdbKey: selectedRelationTsKey,\n\t\t\t\t\ttsKey: selectedRelationTsKey,\n\t\t\t\t\tfield,\n\t\t\t\t\trelationTableTsKey: relationTableTsName,\n\t\t\t\t\tisJson: true,\n\t\t\t\t\tselection: builtRelation.selection,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (selection.length === 0) {\n\t\t\tthrow new DrizzleError({\n\t\t\t\tmessage:\n\t\t\t\t\t`No fields selected for table \"${tableConfig.tsName}\" (\"${tableAlias}\"). You need to have at least one item in \"columns\", \"with\" or \"extras\". If you need to select all columns, omit the \"columns\" key or set it to undefined.`,\n\t\t\t});\n\t\t}\n\n\t\tlet result;\n\n\t\twhere = and(joinOn, where);\n\n\t\tif (nestedQueryRelation) {\n\t\t\tlet field = sql`${\n\t\t\t\tsql.join(\n\t\t\t\t\tselection.map((sel) => {\n\t\t\t\t\t\treturn is(sel.field, MsSqlColumn)\n\t\t\t\t\t\t\t? sql.identifier(sel.field.name)\n\t\t\t\t\t\t\t: is(sel.field, SQL.Aliased)\n\t\t\t\t\t\t\t? sel.isJson\n\t\t\t\t\t\t\t\t? sel.field.sql\n\t\t\t\t\t\t\t\t: sql`${sel.field.sql} as ${sql.identifier(sel.field.fieldAlias)}`\n\t\t\t\t\t\t\t: sel.field;\n\t\t\t\t\t}),\n\t\t\t\t\tsql`, `,\n\t\t\t\t)\n\t\t\t}`;\n\t\t\tif (is(nestedQueryRelation, Many)) {\n\t\t\t\tfield = sql`${field}`;\n\t\t\t}\n\t\t\tconst nestedSelection = [{\n\t\t\t\tdbKey: 'data',\n\t\t\t\ttsKey: 'data',\n\t\t\t\tfield,\n\t\t\t\tisJson: true,\n\t\t\t\trelationTableTsKey: tableConfig.tsName,\n\t\t\t\tselection,\n\t\t\t}];\n\n\t\t\tresult = aliasedTable(table, tableAlias);\n\n\t\t\tconst top = offset ? undefined : limit ?? undefined;\n\t\t\tconst fetch = offset && limit ? limit : undefined;\n\n\t\t\t// Mssql required order by to be present in the query if using offset and fetch(limit)\n\t\t\t// With order by 1, the query will be ordered by the first column in the selection\n\t\t\tif (orderBy.length === 0 && offset !== undefined && fetch !== undefined) {\n\t\t\t\torderBy = [sql`1`];\n\t\t\t}\n\n\t\t\tresult = this.buildSelectQuery({\n\t\t\t\ttable: is(result, MsSqlTable) ? result : new Subquery(result, {}, tableAlias),\n\t\t\t\tfields: {},\n\t\t\t\tfieldsFlat: nestedSelection.map(({ field }) => ({\n\t\t\t\t\tpath: [],\n\t\t\t\t\tfield: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field,\n\t\t\t\t})),\n\t\t\t\twhere,\n\t\t\t\ttop,\n\t\t\t\toffset,\n\t\t\t\tfetch,\n\t\t\t\torderBy,\n\t\t\t\tsetOperators: [],\n\t\t\t});\n\t\t} else {\n\t\t\tconst top = offset ? undefined : limit ?? undefined;\n\t\t\tconst fetch = offset && limit ? limit : undefined;\n\n\t\t\tif (orderBy.length === 0 && offset !== undefined && fetch !== undefined) {\n\t\t\t\torderBy = [sql`1`];\n\t\t\t}\n\t\t\tresult = this.buildSelectQuery({\n\t\t\t\ttable: aliasedTable(table, tableAlias),\n\t\t\t\tfields: {},\n\t\t\t\tfieldsFlat: selection.map(({ field }) => ({\n\t\t\t\t\tpath: [],\n\t\t\t\t\tfield: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field,\n\t\t\t\t})),\n\t\t\t\twhere,\n\t\t\t\ttop,\n\t\t\t\toffset,\n\t\t\t\tfetch,\n\t\t\t\torderBy,\n\t\t\t\tsetOperators: [],\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\ttableTsKey: tableConfig.tsName,\n\t\t\tsql: result,\n\t\t\tselection,\n\t\t};\n\t}\n}\n"],"mappings":"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","names":["table","sql","joinOn","field"]}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var expressions_exports = {};
21
+ __export(expressions_exports, {
22
+ concat: () => concat,
23
+ substring: () => substring
24
+ });
25
+ module.exports = __toCommonJS(expressions_exports);
26
+ var import_expressions = require("../sql/expressions/index.cjs");
27
+ var import_sql = require("../sql/sql.cjs");
28
+ __reExport(expressions_exports, require("../sql/expressions/index.cjs"), module.exports);
29
+ function concat(column, value) {
30
+ return import_sql.sql`${column} || ${(0, import_expressions.bindIfParam)(value, column)}`;
31
+ }
32
+ function substring(column, { from, for: _for }) {
33
+ const chunks = [import_sql.sql`substring(`, column];
34
+ if (from !== void 0) {
35
+ chunks.push(import_sql.sql` from `, (0, import_expressions.bindIfParam)(from, column));
36
+ }
37
+ if (_for !== void 0) {
38
+ chunks.push(import_sql.sql` for `, (0, import_expressions.bindIfParam)(_for, column));
39
+ }
40
+ chunks.push(import_sql.sql`)`);
41
+ return import_sql.sql.join(chunks);
42
+ }
43
+ // Annotate the CommonJS export names for ESM import in node:
44
+ 0 && (module.exports = {
45
+ concat,
46
+ substring,
47
+ ...require("../sql/expressions/index.cjs")
48
+ });
49
+ //# sourceMappingURL=expressions.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mssql-core/expressions.ts"],"sourcesContent":["import { bindIfParam } from '~/sql/expressions/index.ts';\nimport type { Placeholder, SQL, SQLChunk, SQLWrapper } from '~/sql/sql.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { MsSqlColumn } from './columns/index.ts';\n\nexport * from '~/sql/expressions/index.ts';\n\n// type ConcatValue = string | number | Placeholder | SQLWrapper;\n//\n// export function concat(...values: [ConcatValue, ConcatValue, ...ConcatValue[]]): SQL<string> {\n// \treturn sql.join(values.map((value) => sql`${value}`), sql`, `) as SQL<string>;\n// }\n\nexport function concat(column: MsSqlColumn | SQL.Aliased, value: string | Placeholder | SQLWrapper): SQL {\n\treturn sql`${column} || ${bindIfParam(value, column)}`;\n}\n\nexport function substring(\n\tcolumn: MsSqlColumn | SQL.Aliased,\n\t{ from, for: _for }: { from?: number | Placeholder | SQLWrapper; for?: number | Placeholder | SQLWrapper },\n): SQL {\n\tconst chunks: SQLChunk[] = [sql`substring(`, column];\n\tif (from !== undefined) {\n\t\tchunks.push(sql` from `, bindIfParam(from, column));\n\t}\n\tif (_for !== undefined) {\n\t\tchunks.push(sql` for `, bindIfParam(_for, column));\n\t}\n\tchunks.push(sql`)`);\n\treturn sql.join(chunks);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA4B;AAE5B,iBAAoB;AAGpB,gCAAc,uCALd;AAaO,SAAS,OAAO,QAAmC,OAA+C;AACxG,SAAO,iBAAM,MAAM,WAAO,gCAAY,OAAO,MAAM,CAAC;AACrD;AAEO,SAAS,UACf,QACA,EAAE,MAAM,KAAK,KAAK,GACZ;AACN,QAAM,SAAqB,CAAC,4BAAiB,MAAM;AACnD,MAAI,SAAS,QAAW;AACvB,WAAO,KAAK,4BAAa,gCAAY,MAAM,MAAM,CAAC;AAAA,EACnD;AACA,MAAI,SAAS,QAAW;AACvB,WAAO,KAAK,2BAAY,gCAAY,MAAM,MAAM,CAAC;AAAA,EAClD;AACA,SAAO,KAAK,iBAAM;AAClB,SAAO,eAAI,KAAK,MAAM;AACvB;","names":[]}
@@ -0,0 +1,8 @@
1
+ import type { Placeholder, SQL, SQLWrapper } from "../sql/sql.cjs";
2
+ import type { MsSqlColumn } from "./columns/index.cjs";
3
+ export * from "../sql/expressions/index.cjs";
4
+ export declare function concat(column: MsSqlColumn | SQL.Aliased, value: string | Placeholder | SQLWrapper): SQL;
5
+ export declare function substring(column: MsSqlColumn | SQL.Aliased, { from, for: _for }: {
6
+ from?: number | Placeholder | SQLWrapper;
7
+ for?: number | Placeholder | SQLWrapper;
8
+ }): SQL;
@@ -0,0 +1,8 @@
1
+ import type { Placeholder, SQL, SQLWrapper } from "../sql/sql.js";
2
+ import type { MsSqlColumn } from "./columns/index.js";
3
+ export * from "../sql/expressions/index.js";
4
+ export declare function concat(column: MsSqlColumn | SQL.Aliased, value: string | Placeholder | SQLWrapper): SQL;
5
+ export declare function substring(column: MsSqlColumn | SQL.Aliased, { from, for: _for }: {
6
+ from?: number | Placeholder | SQLWrapper;
7
+ for?: number | Placeholder | SQLWrapper;
8
+ }): SQL;
@@ -0,0 +1,22 @@
1
+ import { bindIfParam } from "../sql/expressions/index.js";
2
+ import { sql } from "../sql/sql.js";
3
+ export * from "../sql/expressions/index.js";
4
+ function concat(column, value) {
5
+ return sql`${column} || ${bindIfParam(value, column)}`;
6
+ }
7
+ function substring(column, { from, for: _for }) {
8
+ const chunks = [sql`substring(`, column];
9
+ if (from !== void 0) {
10
+ chunks.push(sql` from `, bindIfParam(from, column));
11
+ }
12
+ if (_for !== void 0) {
13
+ chunks.push(sql` for `, bindIfParam(_for, column));
14
+ }
15
+ chunks.push(sql`)`);
16
+ return sql.join(chunks);
17
+ }
18
+ export {
19
+ concat,
20
+ substring
21
+ };
22
+ //# sourceMappingURL=expressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mssql-core/expressions.ts"],"sourcesContent":["import { bindIfParam } from '~/sql/expressions/index.ts';\nimport type { Placeholder, SQL, SQLChunk, SQLWrapper } from '~/sql/sql.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { MsSqlColumn } from './columns/index.ts';\n\nexport * from '~/sql/expressions/index.ts';\n\n// type ConcatValue = string | number | Placeholder | SQLWrapper;\n//\n// export function concat(...values: [ConcatValue, ConcatValue, ...ConcatValue[]]): SQL<string> {\n// \treturn sql.join(values.map((value) => sql`${value}`), sql`, `) as SQL<string>;\n// }\n\nexport function concat(column: MsSqlColumn | SQL.Aliased, value: string | Placeholder | SQLWrapper): SQL {\n\treturn sql`${column} || ${bindIfParam(value, column)}`;\n}\n\nexport function substring(\n\tcolumn: MsSqlColumn | SQL.Aliased,\n\t{ from, for: _for }: { from?: number | Placeholder | SQLWrapper; for?: number | Placeholder | SQLWrapper },\n): SQL {\n\tconst chunks: SQLChunk[] = [sql`substring(`, column];\n\tif (from !== undefined) {\n\t\tchunks.push(sql` from `, bindIfParam(from, column));\n\t}\n\tif (_for !== undefined) {\n\t\tchunks.push(sql` for `, bindIfParam(_for, column));\n\t}\n\tchunks.push(sql`)`);\n\treturn sql.join(chunks);\n}\n"],"mappings":"AAAA,SAAS,mBAAmB;AAE5B,SAAS,WAAW;AAGpB,cAAc;AAQP,SAAS,OAAO,QAAmC,OAA+C;AACxG,SAAO,MAAM,MAAM,OAAO,YAAY,OAAO,MAAM,CAAC;AACrD;AAEO,SAAS,UACf,QACA,EAAE,MAAM,KAAK,KAAK,GACZ;AACN,QAAM,SAAqB,CAAC,iBAAiB,MAAM;AACnD,MAAI,SAAS,QAAW;AACvB,WAAO,KAAK,aAAa,YAAY,MAAM,MAAM,CAAC;AAAA,EACnD;AACA,MAAI,SAAS,QAAW;AACvB,WAAO,KAAK,YAAY,YAAY,MAAM,MAAM,CAAC;AAAA,EAClD;AACA,SAAO,KAAK,MAAM;AAClB,SAAO,IAAI,KAAK,MAAM;AACvB;","names":[]}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var foreign_keys_exports = {};
20
+ __export(foreign_keys_exports, {
21
+ ForeignKey: () => ForeignKey,
22
+ ForeignKeyBuilder: () => ForeignKeyBuilder,
23
+ foreignKey: () => foreignKey
24
+ });
25
+ module.exports = __toCommonJS(foreign_keys_exports);
26
+ var import_entity = require("../entity.cjs");
27
+ class ForeignKeyBuilder {
28
+ static [import_entity.entityKind] = "MsSqlForeignKeyBuilder";
29
+ /** @internal */
30
+ reference;
31
+ /** @internal */
32
+ _onUpdate;
33
+ /** @internal */
34
+ _onDelete;
35
+ constructor(config, actions) {
36
+ this.reference = () => {
37
+ const { name, columns, foreignColumns } = config();
38
+ return { name, columns, foreignTable: foreignColumns[0].table, foreignColumns };
39
+ };
40
+ if (actions) {
41
+ this._onUpdate = actions.onUpdate;
42
+ this._onDelete = actions.onDelete;
43
+ }
44
+ }
45
+ onUpdate(action) {
46
+ this._onUpdate = action;
47
+ return this;
48
+ }
49
+ onDelete(action) {
50
+ this._onDelete = action;
51
+ return this;
52
+ }
53
+ /** @internal */
54
+ build(table) {
55
+ return new ForeignKey(table, this);
56
+ }
57
+ }
58
+ class ForeignKey {
59
+ constructor(table, builder) {
60
+ this.table = table;
61
+ this.reference = builder.reference;
62
+ this.onUpdate = builder._onUpdate;
63
+ this.onDelete = builder._onDelete;
64
+ }
65
+ static [import_entity.entityKind] = "MsSqlForeignKey";
66
+ reference;
67
+ onUpdate;
68
+ onDelete;
69
+ getName() {
70
+ const { name } = this.reference();
71
+ return name;
72
+ }
73
+ }
74
+ function foreignKey(config) {
75
+ function mappedConfig() {
76
+ const { name, columns, foreignColumns } = config;
77
+ return {
78
+ name,
79
+ columns,
80
+ foreignColumns
81
+ };
82
+ }
83
+ return new ForeignKeyBuilder(mappedConfig);
84
+ }
85
+ // Annotate the CommonJS export names for ESM import in node:
86
+ 0 && (module.exports = {
87
+ ForeignKey,
88
+ ForeignKeyBuilder,
89
+ foreignKey
90
+ });
91
+ //# sourceMappingURL=foreign-keys.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mssql-core/foreign-keys.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { AnyMsSqlColumn, MsSqlColumn } from './columns/index.ts';\nimport type { MsSqlTable } from './table.ts';\n\nexport type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';\n\nexport type Reference = () => {\n\treadonly name?: string;\n\treadonly columns: MsSqlColumn[];\n\treadonly foreignTable: MsSqlTable;\n\treadonly foreignColumns: MsSqlColumn[];\n};\n\nexport class ForeignKeyBuilder {\n\tstatic readonly [entityKind]: string = 'MsSqlForeignKeyBuilder';\n\n\t/** @internal */\n\treference: Reference;\n\n\t/** @internal */\n\t_onUpdate: UpdateDeleteAction | undefined;\n\n\t/** @internal */\n\t_onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(\n\t\tconfig: () => {\n\t\t\tname?: string;\n\t\t\tcolumns: MsSqlColumn[];\n\t\t\tforeignColumns: MsSqlColumn[];\n\t\t},\n\t\tactions?: {\n\t\t\tonUpdate?: UpdateDeleteAction;\n\t\t\tonDelete?: UpdateDeleteAction;\n\t\t} | undefined,\n\t) {\n\t\tthis.reference = () => {\n\t\t\tconst { name, columns, foreignColumns } = config();\n\t\t\treturn { name, columns, foreignTable: foreignColumns[0]!.table as MsSqlTable, foreignColumns };\n\t\t};\n\t\tif (actions) {\n\t\t\tthis._onUpdate = actions.onUpdate;\n\t\t\tthis._onDelete = actions.onDelete;\n\t\t}\n\t}\n\n\tonUpdate(action: UpdateDeleteAction): this {\n\t\tthis._onUpdate = action;\n\t\treturn this;\n\t}\n\n\tonDelete(action: UpdateDeleteAction): this {\n\t\tthis._onDelete = action;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuild(table: MsSqlTable): ForeignKey {\n\t\treturn new ForeignKey(table, this);\n\t}\n}\n\nexport type AnyForeignKeyBuilder = ForeignKeyBuilder;\n\nexport class ForeignKey {\n\tstatic readonly [entityKind]: string = 'MsSqlForeignKey';\n\n\treadonly reference: Reference;\n\treadonly onUpdate: UpdateDeleteAction | undefined;\n\treadonly onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(readonly table: MsSqlTable, builder: ForeignKeyBuilder) {\n\t\tthis.reference = builder.reference;\n\t\tthis.onUpdate = builder._onUpdate;\n\t\tthis.onDelete = builder._onDelete;\n\t}\n\n\tgetName() {\n\t\tconst { name } = this.reference();\n\t\treturn name;\n\t}\n}\n\ntype ColumnsWithTable<\n\tTTableName extends string,\n\tTColumns extends MsSqlColumn[],\n> = { [Key in keyof TColumns]: AnyMsSqlColumn<{ tableName: TTableName }> };\n\nexport type GetColumnsTable<TColumns extends MsSqlColumn | MsSqlColumn[]> = (\n\tTColumns extends MsSqlColumn ? TColumns\n\t\t: TColumns extends MsSqlColumn[] ? TColumns[number]\n\t\t: never\n) extends AnyMsSqlColumn<{ tableName: infer TTableName extends string }> ? TTableName\n\t: never;\n\nexport function foreignKey<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends [AnyMsSqlColumn<{ tableName: TTableName }>, ...AnyMsSqlColumn<{ tableName: TTableName }>[]],\n>(\n\tconfig: {\n\t\tname?: string;\n\t\tcolumns: TColumns;\n\t\tforeignColumns: ColumnsWithTable<TForeignTableName, TColumns>;\n\t},\n): ForeignKeyBuilder {\n\tfunction mappedConfig() {\n\t\tconst { name, columns, foreignColumns } = config;\n\t\treturn {\n\t\t\tname,\n\t\t\tcolumns,\n\t\t\tforeignColumns,\n\t\t};\n\t}\n\n\treturn new ForeignKeyBuilder(mappedConfig);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAapB,MAAM,kBAAkB;AAAA,EAC9B,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAGvC;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EAEA,YACC,QAKA,SAIC;AACD,SAAK,YAAY,MAAM;AACtB,YAAM,EAAE,MAAM,SAAS,eAAe,IAAI,OAAO;AACjD,aAAO,EAAE,MAAM,SAAS,cAAc,eAAe,CAAC,EAAG,OAAqB,eAAe;AAAA,IAC9F;AACA,QAAI,SAAS;AACZ,WAAK,YAAY,QAAQ;AACzB,WAAK,YAAY,QAAQ;AAAA,IAC1B;AAAA,EACD;AAAA,EAEA,SAAS,QAAkC;AAC1C,SAAK,YAAY;AACjB,WAAO;AAAA,EACR;AAAA,EAEA,SAAS,QAAkC;AAC1C,SAAK,YAAY;AACjB,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,MAAM,OAA+B;AACpC,WAAO,IAAI,WAAW,OAAO,IAAI;AAAA,EAClC;AACD;AAIO,MAAM,WAAW;AAAA,EAOvB,YAAqB,OAAmB,SAA4B;AAA/C;AACpB,SAAK,YAAY,QAAQ;AACzB,SAAK,WAAW,QAAQ;AACxB,SAAK,WAAW,QAAQ;AAAA,EACzB;AAAA,EAVA,QAAiB,wBAAU,IAAY;AAAA,EAE9B;AAAA,EACA;AAAA,EACA;AAAA,EAQT,UAAU;AACT,UAAM,EAAE,KAAK,IAAI,KAAK,UAAU;AAChC,WAAO;AAAA,EACR;AACD;AAcO,SAAS,WAKf,QAKoB;AACpB,WAAS,eAAe;AACvB,UAAM,EAAE,MAAM,SAAS,eAAe,IAAI;AAC1C,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO,IAAI,kBAAkB,YAAY;AAC1C;","names":[]}
@@ -0,0 +1,51 @@
1
+ import { entityKind } from "../entity.cjs";
2
+ import type { AnyMsSqlColumn, MsSqlColumn } from "./columns/index.cjs";
3
+ import type { MsSqlTable } from "./table.cjs";
4
+ export type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';
5
+ export type Reference = () => {
6
+ readonly name?: string;
7
+ readonly columns: MsSqlColumn[];
8
+ readonly foreignTable: MsSqlTable;
9
+ readonly foreignColumns: MsSqlColumn[];
10
+ };
11
+ export declare class ForeignKeyBuilder {
12
+ static readonly [entityKind]: string;
13
+ constructor(config: () => {
14
+ name?: string;
15
+ columns: MsSqlColumn[];
16
+ foreignColumns: MsSqlColumn[];
17
+ }, actions?: {
18
+ onUpdate?: UpdateDeleteAction;
19
+ onDelete?: UpdateDeleteAction;
20
+ } | undefined);
21
+ onUpdate(action: UpdateDeleteAction): this;
22
+ onDelete(action: UpdateDeleteAction): this;
23
+ }
24
+ export type AnyForeignKeyBuilder = ForeignKeyBuilder;
25
+ export declare class ForeignKey {
26
+ readonly table: MsSqlTable;
27
+ static readonly [entityKind]: string;
28
+ readonly reference: Reference;
29
+ readonly onUpdate: UpdateDeleteAction | undefined;
30
+ readonly onDelete: UpdateDeleteAction | undefined;
31
+ constructor(table: MsSqlTable, builder: ForeignKeyBuilder);
32
+ getName(): string | undefined;
33
+ }
34
+ type ColumnsWithTable<TTableName extends string, TColumns extends MsSqlColumn[]> = {
35
+ [Key in keyof TColumns]: AnyMsSqlColumn<{
36
+ tableName: TTableName;
37
+ }>;
38
+ };
39
+ export type GetColumnsTable<TColumns extends MsSqlColumn | MsSqlColumn[]> = (TColumns extends MsSqlColumn ? TColumns : TColumns extends MsSqlColumn[] ? TColumns[number] : never) extends AnyMsSqlColumn<{
40
+ tableName: infer TTableName extends string;
41
+ }> ? TTableName : never;
42
+ export declare function foreignKey<TTableName extends string, TForeignTableName extends string, TColumns extends [AnyMsSqlColumn<{
43
+ tableName: TTableName;
44
+ }>, ...AnyMsSqlColumn<{
45
+ tableName: TTableName;
46
+ }>[]]>(config: {
47
+ name?: string;
48
+ columns: TColumns;
49
+ foreignColumns: ColumnsWithTable<TForeignTableName, TColumns>;
50
+ }): ForeignKeyBuilder;
51
+ export {};
@@ -0,0 +1,51 @@
1
+ import { entityKind } from "../entity.js";
2
+ import type { AnyMsSqlColumn, MsSqlColumn } from "./columns/index.js";
3
+ import type { MsSqlTable } from "./table.js";
4
+ export type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';
5
+ export type Reference = () => {
6
+ readonly name?: string;
7
+ readonly columns: MsSqlColumn[];
8
+ readonly foreignTable: MsSqlTable;
9
+ readonly foreignColumns: MsSqlColumn[];
10
+ };
11
+ export declare class ForeignKeyBuilder {
12
+ static readonly [entityKind]: string;
13
+ constructor(config: () => {
14
+ name?: string;
15
+ columns: MsSqlColumn[];
16
+ foreignColumns: MsSqlColumn[];
17
+ }, actions?: {
18
+ onUpdate?: UpdateDeleteAction;
19
+ onDelete?: UpdateDeleteAction;
20
+ } | undefined);
21
+ onUpdate(action: UpdateDeleteAction): this;
22
+ onDelete(action: UpdateDeleteAction): this;
23
+ }
24
+ export type AnyForeignKeyBuilder = ForeignKeyBuilder;
25
+ export declare class ForeignKey {
26
+ readonly table: MsSqlTable;
27
+ static readonly [entityKind]: string;
28
+ readonly reference: Reference;
29
+ readonly onUpdate: UpdateDeleteAction | undefined;
30
+ readonly onDelete: UpdateDeleteAction | undefined;
31
+ constructor(table: MsSqlTable, builder: ForeignKeyBuilder);
32
+ getName(): string | undefined;
33
+ }
34
+ type ColumnsWithTable<TTableName extends string, TColumns extends MsSqlColumn[]> = {
35
+ [Key in keyof TColumns]: AnyMsSqlColumn<{
36
+ tableName: TTableName;
37
+ }>;
38
+ };
39
+ export type GetColumnsTable<TColumns extends MsSqlColumn | MsSqlColumn[]> = (TColumns extends MsSqlColumn ? TColumns : TColumns extends MsSqlColumn[] ? TColumns[number] : never) extends AnyMsSqlColumn<{
40
+ tableName: infer TTableName extends string;
41
+ }> ? TTableName : never;
42
+ export declare function foreignKey<TTableName extends string, TForeignTableName extends string, TColumns extends [AnyMsSqlColumn<{
43
+ tableName: TTableName;
44
+ }>, ...AnyMsSqlColumn<{
45
+ tableName: TTableName;
46
+ }>[]]>(config: {
47
+ name?: string;
48
+ columns: TColumns;
49
+ foreignColumns: ColumnsWithTable<TForeignTableName, TColumns>;
50
+ }): ForeignKeyBuilder;
51
+ export {};
@@ -0,0 +1,65 @@
1
+ import { entityKind } from "../entity.js";
2
+ class ForeignKeyBuilder {
3
+ static [entityKind] = "MsSqlForeignKeyBuilder";
4
+ /** @internal */
5
+ reference;
6
+ /** @internal */
7
+ _onUpdate;
8
+ /** @internal */
9
+ _onDelete;
10
+ constructor(config, actions) {
11
+ this.reference = () => {
12
+ const { name, columns, foreignColumns } = config();
13
+ return { name, columns, foreignTable: foreignColumns[0].table, foreignColumns };
14
+ };
15
+ if (actions) {
16
+ this._onUpdate = actions.onUpdate;
17
+ this._onDelete = actions.onDelete;
18
+ }
19
+ }
20
+ onUpdate(action) {
21
+ this._onUpdate = action;
22
+ return this;
23
+ }
24
+ onDelete(action) {
25
+ this._onDelete = action;
26
+ return this;
27
+ }
28
+ /** @internal */
29
+ build(table) {
30
+ return new ForeignKey(table, this);
31
+ }
32
+ }
33
+ class ForeignKey {
34
+ constructor(table, builder) {
35
+ this.table = table;
36
+ this.reference = builder.reference;
37
+ this.onUpdate = builder._onUpdate;
38
+ this.onDelete = builder._onDelete;
39
+ }
40
+ static [entityKind] = "MsSqlForeignKey";
41
+ reference;
42
+ onUpdate;
43
+ onDelete;
44
+ getName() {
45
+ const { name } = this.reference();
46
+ return name;
47
+ }
48
+ }
49
+ function foreignKey(config) {
50
+ function mappedConfig() {
51
+ const { name, columns, foreignColumns } = config;
52
+ return {
53
+ name,
54
+ columns,
55
+ foreignColumns
56
+ };
57
+ }
58
+ return new ForeignKeyBuilder(mappedConfig);
59
+ }
60
+ export {
61
+ ForeignKey,
62
+ ForeignKeyBuilder,
63
+ foreignKey
64
+ };
65
+ //# sourceMappingURL=foreign-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mssql-core/foreign-keys.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { AnyMsSqlColumn, MsSqlColumn } from './columns/index.ts';\nimport type { MsSqlTable } from './table.ts';\n\nexport type UpdateDeleteAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';\n\nexport type Reference = () => {\n\treadonly name?: string;\n\treadonly columns: MsSqlColumn[];\n\treadonly foreignTable: MsSqlTable;\n\treadonly foreignColumns: MsSqlColumn[];\n};\n\nexport class ForeignKeyBuilder {\n\tstatic readonly [entityKind]: string = 'MsSqlForeignKeyBuilder';\n\n\t/** @internal */\n\treference: Reference;\n\n\t/** @internal */\n\t_onUpdate: UpdateDeleteAction | undefined;\n\n\t/** @internal */\n\t_onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(\n\t\tconfig: () => {\n\t\t\tname?: string;\n\t\t\tcolumns: MsSqlColumn[];\n\t\t\tforeignColumns: MsSqlColumn[];\n\t\t},\n\t\tactions?: {\n\t\t\tonUpdate?: UpdateDeleteAction;\n\t\t\tonDelete?: UpdateDeleteAction;\n\t\t} | undefined,\n\t) {\n\t\tthis.reference = () => {\n\t\t\tconst { name, columns, foreignColumns } = config();\n\t\t\treturn { name, columns, foreignTable: foreignColumns[0]!.table as MsSqlTable, foreignColumns };\n\t\t};\n\t\tif (actions) {\n\t\t\tthis._onUpdate = actions.onUpdate;\n\t\t\tthis._onDelete = actions.onDelete;\n\t\t}\n\t}\n\n\tonUpdate(action: UpdateDeleteAction): this {\n\t\tthis._onUpdate = action;\n\t\treturn this;\n\t}\n\n\tonDelete(action: UpdateDeleteAction): this {\n\t\tthis._onDelete = action;\n\t\treturn this;\n\t}\n\n\t/** @internal */\n\tbuild(table: MsSqlTable): ForeignKey {\n\t\treturn new ForeignKey(table, this);\n\t}\n}\n\nexport type AnyForeignKeyBuilder = ForeignKeyBuilder;\n\nexport class ForeignKey {\n\tstatic readonly [entityKind]: string = 'MsSqlForeignKey';\n\n\treadonly reference: Reference;\n\treadonly onUpdate: UpdateDeleteAction | undefined;\n\treadonly onDelete: UpdateDeleteAction | undefined;\n\n\tconstructor(readonly table: MsSqlTable, builder: ForeignKeyBuilder) {\n\t\tthis.reference = builder.reference;\n\t\tthis.onUpdate = builder._onUpdate;\n\t\tthis.onDelete = builder._onDelete;\n\t}\n\n\tgetName() {\n\t\tconst { name } = this.reference();\n\t\treturn name;\n\t}\n}\n\ntype ColumnsWithTable<\n\tTTableName extends string,\n\tTColumns extends MsSqlColumn[],\n> = { [Key in keyof TColumns]: AnyMsSqlColumn<{ tableName: TTableName }> };\n\nexport type GetColumnsTable<TColumns extends MsSqlColumn | MsSqlColumn[]> = (\n\tTColumns extends MsSqlColumn ? TColumns\n\t\t: TColumns extends MsSqlColumn[] ? TColumns[number]\n\t\t: never\n) extends AnyMsSqlColumn<{ tableName: infer TTableName extends string }> ? TTableName\n\t: never;\n\nexport function foreignKey<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends [AnyMsSqlColumn<{ tableName: TTableName }>, ...AnyMsSqlColumn<{ tableName: TTableName }>[]],\n>(\n\tconfig: {\n\t\tname?: string;\n\t\tcolumns: TColumns;\n\t\tforeignColumns: ColumnsWithTable<TForeignTableName, TColumns>;\n\t},\n): ForeignKeyBuilder {\n\tfunction mappedConfig() {\n\t\tconst { name, columns, foreignColumns } = config;\n\t\treturn {\n\t\t\tname,\n\t\t\tcolumns,\n\t\t\tforeignColumns,\n\t\t};\n\t}\n\n\treturn new ForeignKeyBuilder(mappedConfig);\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAapB,MAAM,kBAAkB;AAAA,EAC9B,QAAiB,UAAU,IAAY;AAAA;AAAA,EAGvC;AAAA;AAAA,EAGA;AAAA;AAAA,EAGA;AAAA,EAEA,YACC,QAKA,SAIC;AACD,SAAK,YAAY,MAAM;AACtB,YAAM,EAAE,MAAM,SAAS,eAAe,IAAI,OAAO;AACjD,aAAO,EAAE,MAAM,SAAS,cAAc,eAAe,CAAC,EAAG,OAAqB,eAAe;AAAA,IAC9F;AACA,QAAI,SAAS;AACZ,WAAK,YAAY,QAAQ;AACzB,WAAK,YAAY,QAAQ;AAAA,IAC1B;AAAA,EACD;AAAA,EAEA,SAAS,QAAkC;AAC1C,SAAK,YAAY;AACjB,WAAO;AAAA,EACR;AAAA,EAEA,SAAS,QAAkC;AAC1C,SAAK,YAAY;AACjB,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,MAAM,OAA+B;AACpC,WAAO,IAAI,WAAW,OAAO,IAAI;AAAA,EAClC;AACD;AAIO,MAAM,WAAW;AAAA,EAOvB,YAAqB,OAAmB,SAA4B;AAA/C;AACpB,SAAK,YAAY,QAAQ;AACzB,SAAK,WAAW,QAAQ;AACxB,SAAK,WAAW,QAAQ;AAAA,EACzB;AAAA,EAVA,QAAiB,UAAU,IAAY;AAAA,EAE9B;AAAA,EACA;AAAA,EACA;AAAA,EAQT,UAAU;AACT,UAAM,EAAE,KAAK,IAAI,KAAK,UAAU;AAChC,WAAO;AAAA,EACR;AACD;AAcO,SAAS,WAKf,QAKoB;AACpB,WAAS,eAAe;AACvB,UAAM,EAAE,MAAM,SAAS,eAAe,IAAI;AAC1C,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO,IAAI,kBAAkB,YAAY;AAC1C;","names":[]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var mssql_core_exports = {};
17
+ module.exports = __toCommonJS(mssql_core_exports);
18
+ __reExport(mssql_core_exports, require("./alias.cjs"), module.exports);
19
+ __reExport(mssql_core_exports, require("./checks.cjs"), module.exports);
20
+ __reExport(mssql_core_exports, require("./columns/index.cjs"), module.exports);
21
+ __reExport(mssql_core_exports, require("./db.cjs"), module.exports);
22
+ __reExport(mssql_core_exports, require("./dialect.cjs"), module.exports);
23
+ __reExport(mssql_core_exports, require("./foreign-keys.cjs"), module.exports);
24
+ __reExport(mssql_core_exports, require("./indexes.cjs"), module.exports);
25
+ __reExport(mssql_core_exports, require("./primary-keys.cjs"), module.exports);
26
+ __reExport(mssql_core_exports, require("./query-builders/index.cjs"), module.exports);
27
+ __reExport(mssql_core_exports, require("./schema.cjs"), module.exports);
28
+ __reExport(mssql_core_exports, require("./session.cjs"), module.exports);
29
+ __reExport(mssql_core_exports, require("./subquery.cjs"), module.exports);
30
+ __reExport(mssql_core_exports, require("./table.cjs"), module.exports);
31
+ __reExport(mssql_core_exports, require("./unique-constraint.cjs"), module.exports);
32
+ __reExport(mssql_core_exports, require("./utils.cjs"), module.exports);
33
+ __reExport(mssql_core_exports, require("./view-common.cjs"), module.exports);
34
+ __reExport(mssql_core_exports, require("./view.cjs"), module.exports);
35
+ // Annotate the CommonJS export names for ESM import in node:
36
+ 0 && (module.exports = {
37
+ ...require("./alias.cjs"),
38
+ ...require("./checks.cjs"),
39
+ ...require("./columns/index.cjs"),
40
+ ...require("./db.cjs"),
41
+ ...require("./dialect.cjs"),
42
+ ...require("./foreign-keys.cjs"),
43
+ ...require("./indexes.cjs"),
44
+ ...require("./primary-keys.cjs"),
45
+ ...require("./query-builders/index.cjs"),
46
+ ...require("./schema.cjs"),
47
+ ...require("./session.cjs"),
48
+ ...require("./subquery.cjs"),
49
+ ...require("./table.cjs"),
50
+ ...require("./unique-constraint.cjs"),
51
+ ...require("./utils.cjs"),
52
+ ...require("./view-common.cjs"),
53
+ ...require("./view.cjs")
54
+ });
55
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mssql-core/index.ts"],"sourcesContent":["export * from './alias.ts';\nexport * from './checks.ts';\nexport * from './columns/index.ts';\nexport * from './db.ts';\nexport * from './dialect.ts';\nexport * from './foreign-keys.ts';\nexport * from './indexes.ts';\nexport * from './primary-keys.ts';\nexport * from './query-builders/index.ts';\nexport * from './schema.ts';\nexport * from './session.ts';\nexport * from './subquery.ts';\nexport * from './table.ts';\nexport * from './unique-constraint.ts';\nexport * from './utils.ts';\nexport * from './view-common.ts';\nexport * from './view.ts';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,+BAAc,uBAAd;AACA,+BAAc,wBADd;AAEA,+BAAc,+BAFd;AAGA,+BAAc,oBAHd;AAIA,+BAAc,yBAJd;AAKA,+BAAc,8BALd;AAMA,+BAAc,yBANd;AAOA,+BAAc,8BAPd;AAQA,+BAAc,sCARd;AASA,+BAAc,wBATd;AAUA,+BAAc,yBAVd;AAWA,+BAAc,0BAXd;AAYA,+BAAc,uBAZd;AAaA,+BAAc,mCAbd;AAcA,+BAAc,uBAdd;AAeA,+BAAc,6BAfd;AAgBA,+BAAc,sBAhBd;","names":[]}
@@ -0,0 +1,17 @@
1
+ export * from "./alias.cjs";
2
+ export * from "./checks.cjs";
3
+ export * from "./columns/index.cjs";
4
+ export * from "./db.cjs";
5
+ export * from "./dialect.cjs";
6
+ export * from "./foreign-keys.cjs";
7
+ export * from "./indexes.cjs";
8
+ export * from "./primary-keys.cjs";
9
+ export * from "./query-builders/index.cjs";
10
+ export * from "./schema.cjs";
11
+ export * from "./session.cjs";
12
+ export * from "./subquery.cjs";
13
+ export * from "./table.cjs";
14
+ export * from "./unique-constraint.cjs";
15
+ export * from "./utils.cjs";
16
+ export * from "./view-common.cjs";
17
+ export * from "./view.cjs";
@@ -0,0 +1,17 @@
1
+ export * from "./alias.js";
2
+ export * from "./checks.js";
3
+ export * from "./columns/index.js";
4
+ export * from "./db.js";
5
+ export * from "./dialect.js";
6
+ export * from "./foreign-keys.js";
7
+ export * from "./indexes.js";
8
+ export * from "./primary-keys.js";
9
+ export * from "./query-builders/index.js";
10
+ export * from "./schema.js";
11
+ export * from "./session.js";
12
+ export * from "./subquery.js";
13
+ export * from "./table.js";
14
+ export * from "./unique-constraint.js";
15
+ export * from "./utils.js";
16
+ export * from "./view-common.js";
17
+ export * from "./view.js";
@@ -0,0 +1,18 @@
1
+ export * from "./alias.js";
2
+ export * from "./checks.js";
3
+ export * from "./columns/index.js";
4
+ export * from "./db.js";
5
+ export * from "./dialect.js";
6
+ export * from "./foreign-keys.js";
7
+ export * from "./indexes.js";
8
+ export * from "./primary-keys.js";
9
+ export * from "./query-builders/index.js";
10
+ export * from "./schema.js";
11
+ export * from "./session.js";
12
+ export * from "./subquery.js";
13
+ export * from "./table.js";
14
+ export * from "./unique-constraint.js";
15
+ export * from "./utils.js";
16
+ export * from "./view-common.js";
17
+ export * from "./view.js";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mssql-core/index.ts"],"sourcesContent":["export * from './alias.ts';\nexport * from './checks.ts';\nexport * from './columns/index.ts';\nexport * from './db.ts';\nexport * from './dialect.ts';\nexport * from './foreign-keys.ts';\nexport * from './indexes.ts';\nexport * from './primary-keys.ts';\nexport * from './query-builders/index.ts';\nexport * from './schema.ts';\nexport * from './session.ts';\nexport * from './subquery.ts';\nexport * from './table.ts';\nexport * from './unique-constraint.ts';\nexport * from './utils.ts';\nexport * from './view-common.ts';\nexport * from './view.ts';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}