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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/column-builder.cjs.map +1 -1
  2. package/column-builder.d.cts +6 -4
  3. package/column-builder.d.ts +6 -4
  4. package/column-builder.js.map +1 -1
  5. package/column.cjs +2 -0
  6. package/column.cjs.map +1 -1
  7. package/column.d.cts +1 -0
  8. package/column.d.ts +1 -0
  9. package/column.js +2 -0
  10. package/column.js.map +1 -1
  11. package/mssql-core/alias.cjs +32 -0
  12. package/mssql-core/alias.cjs.map +1 -0
  13. package/mssql-core/alias.d.cts +4 -0
  14. package/mssql-core/alias.d.ts +4 -0
  15. package/mssql-core/alias.js +8 -0
  16. package/mssql-core/alias.js.map +1 -0
  17. package/mssql-core/checks.cjs +58 -0
  18. package/mssql-core/checks.cjs.map +1 -0
  19. package/mssql-core/checks.d.cts +18 -0
  20. package/mssql-core/checks.d.ts +18 -0
  21. package/mssql-core/checks.js +32 -0
  22. package/mssql-core/checks.js.map +1 -0
  23. package/mssql-core/columns/all.cjs +72 -0
  24. package/mssql-core/columns/all.cjs.map +1 -0
  25. package/mssql-core/columns/all.d.cts +43 -0
  26. package/mssql-core/columns/all.d.ts +43 -0
  27. package/mssql-core/columns/all.js +48 -0
  28. package/mssql-core/columns/all.js.map +1 -0
  29. package/mssql-core/columns/bigint.cjs +67 -0
  30. package/mssql-core/columns/bigint.cjs.map +1 -0
  31. package/mssql-core/columns/bigint.d.cts +33 -0
  32. package/mssql-core/columns/bigint.d.ts +33 -0
  33. package/mssql-core/columns/bigint.js +41 -0
  34. package/mssql-core/columns/bigint.js.map +1 -0
  35. package/mssql-core/columns/binary.cjs +57 -0
  36. package/mssql-core/columns/binary.cjs.map +1 -0
  37. package/mssql-core/columns/binary.d.cts +28 -0
  38. package/mssql-core/columns/binary.d.ts +28 -0
  39. package/mssql-core/columns/binary.js +31 -0
  40. package/mssql-core/columns/binary.js.map +1 -0
  41. package/mssql-core/columns/bit.cjs +54 -0
  42. package/mssql-core/columns/bit.cjs.map +1 -0
  43. package/mssql-core/columns/bit.d.cts +24 -0
  44. package/mssql-core/columns/bit.d.ts +24 -0
  45. package/mssql-core/columns/bit.js +28 -0
  46. package/mssql-core/columns/bit.js.map +1 -0
  47. package/mssql-core/columns/char.cjs +74 -0
  48. package/mssql-core/columns/char.cjs.map +1 -0
  49. package/mssql-core/columns/char.d.cts +37 -0
  50. package/mssql-core/columns/char.d.ts +37 -0
  51. package/mssql-core/columns/char.js +47 -0
  52. package/mssql-core/columns/char.js.map +1 -0
  53. package/mssql-core/columns/common.cjs +110 -0
  54. package/mssql-core/columns/common.cjs.map +1 -0
  55. package/mssql-core/columns/common.d.cts +67 -0
  56. package/mssql-core/columns/common.d.ts +67 -0
  57. package/mssql-core/columns/common.js +83 -0
  58. package/mssql-core/columns/common.js.map +1 -0
  59. package/mssql-core/columns/custom.cjs +75 -0
  60. package/mssql-core/columns/custom.cjs.map +1 -0
  61. package/mssql-core/columns/custom.d.cts +149 -0
  62. package/mssql-core/columns/custom.d.ts +149 -0
  63. package/mssql-core/columns/custom.js +49 -0
  64. package/mssql-core/columns/custom.js.map +1 -0
  65. package/mssql-core/columns/date.cjs +94 -0
  66. package/mssql-core/columns/date.cjs.map +1 -0
  67. package/mssql-core/columns/date.common.cjs +37 -0
  68. package/mssql-core/columns/date.common.cjs.map +1 -0
  69. package/mssql-core/columns/date.common.d.cts +12 -0
  70. package/mssql-core/columns/date.common.d.ts +12 -0
  71. package/mssql-core/columns/date.common.js +13 -0
  72. package/mssql-core/columns/date.common.js.map +1 -0
  73. package/mssql-core/columns/date.d.cts +55 -0
  74. package/mssql-core/columns/date.d.ts +55 -0
  75. package/mssql-core/columns/date.js +66 -0
  76. package/mssql-core/columns/date.js.map +1 -0
  77. package/mssql-core/columns/datetime.cjs +94 -0
  78. package/mssql-core/columns/datetime.cjs.map +1 -0
  79. package/mssql-core/columns/datetime.d.cts +54 -0
  80. package/mssql-core/columns/datetime.d.ts +54 -0
  81. package/mssql-core/columns/datetime.js +66 -0
  82. package/mssql-core/columns/datetime.js.map +1 -0
  83. package/mssql-core/columns/datetime2.cjs +102 -0
  84. package/mssql-core/columns/datetime2.cjs.map +1 -0
  85. package/mssql-core/columns/datetime2.d.cts +54 -0
  86. package/mssql-core/columns/datetime2.d.ts +54 -0
  87. package/mssql-core/columns/datetime2.js +74 -0
  88. package/mssql-core/columns/datetime2.js.map +1 -0
  89. package/mssql-core/columns/datetimeoffset.cjs +102 -0
  90. package/mssql-core/columns/datetimeoffset.cjs.map +1 -0
  91. package/mssql-core/columns/datetimeoffset.d.cts +54 -0
  92. package/mssql-core/columns/datetimeoffset.d.ts +54 -0
  93. package/mssql-core/columns/datetimeoffset.js +74 -0
  94. package/mssql-core/columns/datetimeoffset.js.map +1 -0
  95. package/mssql-core/columns/decimal.cjs +68 -0
  96. package/mssql-core/columns/decimal.cjs.map +1 -0
  97. package/mssql-core/columns/decimal.d.cts +30 -0
  98. package/mssql-core/columns/decimal.d.ts +30 -0
  99. package/mssql-core/columns/decimal.js +42 -0
  100. package/mssql-core/columns/decimal.js.map +1 -0
  101. package/mssql-core/columns/float.cjs +58 -0
  102. package/mssql-core/columns/float.cjs.map +1 -0
  103. package/mssql-core/columns/float.d.cts +28 -0
  104. package/mssql-core/columns/float.d.ts +28 -0
  105. package/mssql-core/columns/float.js +32 -0
  106. package/mssql-core/columns/float.js.map +1 -0
  107. package/mssql-core/columns/index.cjs +63 -0
  108. package/mssql-core/columns/index.cjs.map +1 -0
  109. package/mssql-core/columns/index.d.cts +21 -0
  110. package/mssql-core/columns/index.d.ts +21 -0
  111. package/mssql-core/columns/index.js +22 -0
  112. package/mssql-core/columns/index.js.map +1 -0
  113. package/mssql-core/columns/int.cjs +53 -0
  114. package/mssql-core/columns/int.cjs.map +1 -0
  115. package/mssql-core/columns/int.d.cts +23 -0
  116. package/mssql-core/columns/int.d.ts +23 -0
  117. package/mssql-core/columns/int.js +27 -0
  118. package/mssql-core/columns/int.js.map +1 -0
  119. package/mssql-core/columns/numeric.cjs +68 -0
  120. package/mssql-core/columns/numeric.cjs.map +1 -0
  121. package/mssql-core/columns/numeric.d.cts +27 -0
  122. package/mssql-core/columns/numeric.d.ts +27 -0
  123. package/mssql-core/columns/numeric.js +42 -0
  124. package/mssql-core/columns/numeric.js.map +1 -0
  125. package/mssql-core/columns/real.cjs +53 -0
  126. package/mssql-core/columns/real.cjs.map +1 -0
  127. package/mssql-core/columns/real.d.cts +23 -0
  128. package/mssql-core/columns/real.d.ts +23 -0
  129. package/mssql-core/columns/real.js +27 -0
  130. package/mssql-core/columns/real.js.map +1 -0
  131. package/mssql-core/columns/smallint.cjs +62 -0
  132. package/mssql-core/columns/smallint.cjs.map +1 -0
  133. package/mssql-core/columns/smallint.d.cts +24 -0
  134. package/mssql-core/columns/smallint.d.ts +24 -0
  135. package/mssql-core/columns/smallint.js +36 -0
  136. package/mssql-core/columns/smallint.js.map +1 -0
  137. package/mssql-core/columns/text.cjs +68 -0
  138. package/mssql-core/columns/text.cjs.map +1 -0
  139. package/mssql-core/columns/text.d.cts +45 -0
  140. package/mssql-core/columns/text.d.ts +45 -0
  141. package/mssql-core/columns/text.js +41 -0
  142. package/mssql-core/columns/text.js.map +1 -0
  143. package/mssql-core/columns/time.cjs +90 -0
  144. package/mssql-core/columns/time.cjs.map +1 -0
  145. package/mssql-core/columns/time.d.cts +49 -0
  146. package/mssql-core/columns/time.d.ts +49 -0
  147. package/mssql-core/columns/time.js +62 -0
  148. package/mssql-core/columns/time.js.map +1 -0
  149. package/mssql-core/columns/tinyint.cjs +62 -0
  150. package/mssql-core/columns/tinyint.cjs.map +1 -0
  151. package/mssql-core/columns/tinyint.d.cts +24 -0
  152. package/mssql-core/columns/tinyint.d.ts +24 -0
  153. package/mssql-core/columns/tinyint.js +36 -0
  154. package/mssql-core/columns/tinyint.js.map +1 -0
  155. package/mssql-core/columns/varbinary.cjs +61 -0
  156. package/mssql-core/columns/varbinary.cjs.map +1 -0
  157. package/mssql-core/columns/varbinary.d.cts +27 -0
  158. package/mssql-core/columns/varbinary.d.ts +27 -0
  159. package/mssql-core/columns/varbinary.js +35 -0
  160. package/mssql-core/columns/varbinary.js.map +1 -0
  161. package/mssql-core/columns/varchar.cjs +117 -0
  162. package/mssql-core/columns/varchar.cjs.map +1 -0
  163. package/mssql-core/columns/varchar.d.cts +66 -0
  164. package/mssql-core/columns/varchar.d.ts +66 -0
  165. package/mssql-core/columns/varchar.js +88 -0
  166. package/mssql-core/columns/varchar.js.map +1 -0
  167. package/mssql-core/db.cjs +254 -0
  168. package/mssql-core/db.cjs.map +1 -0
  169. package/mssql-core/db.d.cts +228 -0
  170. package/mssql-core/db.d.ts +228 -0
  171. package/mssql-core/db.js +235 -0
  172. package/mssql-core/db.js.map +1 -0
  173. package/mssql-core/dialect.cjs +611 -0
  174. package/mssql-core/dialect.cjs.map +1 -0
  175. package/mssql-core/dialect.d.cts +58 -0
  176. package/mssql-core/dialect.d.ts +58 -0
  177. package/mssql-core/dialect.js +593 -0
  178. package/mssql-core/dialect.js.map +1 -0
  179. package/mssql-core/expressions.cjs +49 -0
  180. package/mssql-core/expressions.cjs.map +1 -0
  181. package/mssql-core/expressions.d.cts +8 -0
  182. package/mssql-core/expressions.d.ts +8 -0
  183. package/mssql-core/expressions.js +22 -0
  184. package/mssql-core/expressions.js.map +1 -0
  185. package/mssql-core/foreign-keys.cjs +91 -0
  186. package/mssql-core/foreign-keys.cjs.map +1 -0
  187. package/mssql-core/foreign-keys.d.cts +51 -0
  188. package/mssql-core/foreign-keys.d.ts +51 -0
  189. package/mssql-core/foreign-keys.js +65 -0
  190. package/mssql-core/foreign-keys.js.map +1 -0
  191. package/mssql-core/index.cjs +55 -0
  192. package/mssql-core/index.cjs.map +1 -0
  193. package/mssql-core/index.d.cts +17 -0
  194. package/mssql-core/index.d.ts +17 -0
  195. package/mssql-core/index.js +18 -0
  196. package/mssql-core/index.js.map +1 -0
  197. package/mssql-core/indexes.cjs +80 -0
  198. package/mssql-core/indexes.cjs.map +1 -0
  199. package/mssql-core/indexes.d.cts +49 -0
  200. package/mssql-core/indexes.d.ts +49 -0
  201. package/mssql-core/indexes.js +52 -0
  202. package/mssql-core/indexes.js.map +1 -0
  203. package/mssql-core/primary-keys.cjs +64 -0
  204. package/mssql-core/primary-keys.cjs.map +1 -0
  205. package/mssql-core/primary-keys.d.cts +23 -0
  206. package/mssql-core/primary-keys.d.ts +23 -0
  207. package/mssql-core/primary-keys.js +38 -0
  208. package/mssql-core/primary-keys.js.map +1 -0
  209. package/mssql-core/query-builders/delete.cjs +107 -0
  210. package/mssql-core/query-builders/delete.cjs.map +1 -0
  211. package/mssql-core/query-builders/delete.d.cts +98 -0
  212. package/mssql-core/query-builders/delete.d.ts +98 -0
  213. package/mssql-core/query-builders/delete.js +83 -0
  214. package/mssql-core/query-builders/delete.js.map +1 -0
  215. package/mssql-core/query-builders/index.cjs +33 -0
  216. package/mssql-core/query-builders/index.cjs.map +1 -0
  217. package/mssql-core/query-builders/index.d.cts +6 -0
  218. package/mssql-core/query-builders/index.d.ts +6 -0
  219. package/mssql-core/query-builders/index.js +7 -0
  220. package/mssql-core/query-builders/index.js.map +1 -0
  221. package/mssql-core/query-builders/insert.cjs +105 -0
  222. package/mssql-core/query-builders/insert.cjs.map +1 -0
  223. package/mssql-core/query-builders/insert.d.cts +78 -0
  224. package/mssql-core/query-builders/insert.d.ts +78 -0
  225. package/mssql-core/query-builders/insert.js +80 -0
  226. package/mssql-core/query-builders/insert.js.map +1 -0
  227. package/mssql-core/query-builders/query-builder.cjs +95 -0
  228. package/mssql-core/query-builders/query-builder.cjs.map +1 -0
  229. package/mssql-core/query-builders/query-builder.d.cts +32 -0
  230. package/mssql-core/query-builders/query-builder.d.ts +32 -0
  231. package/mssql-core/query-builders/query-builder.js +71 -0
  232. package/mssql-core/query-builders/query-builder.js.map +1 -0
  233. package/mssql-core/query-builders/query.cjs +126 -0
  234. package/mssql-core/query-builders/query.cjs.map +1 -0
  235. package/mssql-core/query-builders/query.d.cts +42 -0
  236. package/mssql-core/query-builders/query.d.ts +42 -0
  237. package/mssql-core/query-builders/query.js +103 -0
  238. package/mssql-core/query-builders/query.js.map +1 -0
  239. package/mssql-core/query-builders/select.cjs +679 -0
  240. package/mssql-core/query-builders/select.cjs.map +1 -0
  241. package/mssql-core/query-builders/select.d.cts +549 -0
  242. package/mssql-core/query-builders/select.d.ts +549 -0
  243. package/mssql-core/query-builders/select.js +649 -0
  244. package/mssql-core/query-builders/select.js.map +1 -0
  245. package/mssql-core/query-builders/select.types.cjs +17 -0
  246. package/mssql-core/query-builders/select.types.cjs.map +1 -0
  247. package/mssql-core/query-builders/select.types.d.cts +142 -0
  248. package/mssql-core/query-builders/select.types.d.ts +142 -0
  249. package/mssql-core/query-builders/select.types.js +1 -0
  250. package/mssql-core/query-builders/select.types.js.map +1 -0
  251. package/mssql-core/query-builders/update.cjs +138 -0
  252. package/mssql-core/query-builders/update.cjs.map +1 -0
  253. package/mssql-core/query-builders/update.d.cts +141 -0
  254. package/mssql-core/query-builders/update.d.ts +141 -0
  255. package/mssql-core/query-builders/update.js +113 -0
  256. package/mssql-core/query-builders/update.js.map +1 -0
  257. package/mssql-core/schema.cjs +51 -0
  258. package/mssql-core/schema.cjs.map +1 -0
  259. package/mssql-core/schema.d.cts +22 -0
  260. package/mssql-core/schema.d.ts +22 -0
  261. package/mssql-core/schema.js +25 -0
  262. package/mssql-core/schema.js.map +1 -0
  263. package/mssql-core/session.cjs +74 -0
  264. package/mssql-core/session.cjs.map +1 -0
  265. package/mssql-core/session.d.cts +63 -0
  266. package/mssql-core/session.d.ts +63 -0
  267. package/mssql-core/session.js +48 -0
  268. package/mssql-core/session.js.map +1 -0
  269. package/mssql-core/subquery.cjs +17 -0
  270. package/mssql-core/subquery.cjs.map +1 -0
  271. package/mssql-core/subquery.d.cts +18 -0
  272. package/mssql-core/subquery.d.ts +18 -0
  273. package/mssql-core/subquery.js +1 -0
  274. package/mssql-core/subquery.js.map +1 -0
  275. package/mssql-core/table.cjs +81 -0
  276. package/mssql-core/table.cjs.map +1 -0
  277. package/mssql-core/table.d.cts +43 -0
  278. package/mssql-core/table.d.ts +43 -0
  279. package/mssql-core/table.js +53 -0
  280. package/mssql-core/table.js.map +1 -0
  281. package/mssql-core/unique-constraint.cjs +76 -0
  282. package/mssql-core/unique-constraint.cjs.map +1 -0
  283. package/mssql-core/unique-constraint.d.cts +23 -0
  284. package/mssql-core/unique-constraint.d.ts +23 -0
  285. package/mssql-core/unique-constraint.js +49 -0
  286. package/mssql-core/unique-constraint.js.map +1 -0
  287. package/mssql-core/utils.cjs +85 -0
  288. package/mssql-core/utils.cjs.map +1 -0
  289. package/mssql-core/utils.d.cts +31 -0
  290. package/mssql-core/utils.d.ts +31 -0
  291. package/mssql-core/utils.js +60 -0
  292. package/mssql-core/utils.js.map +1 -0
  293. package/mssql-core/view-base.cjs +33 -0
  294. package/mssql-core/view-base.cjs.map +1 -0
  295. package/mssql-core/view-base.d.cts +9 -0
  296. package/mssql-core/view-base.d.ts +9 -0
  297. package/mssql-core/view-base.js +9 -0
  298. package/mssql-core/view-base.js.map +1 -0
  299. package/mssql-core/view-common.cjs +29 -0
  300. package/mssql-core/view-common.cjs.map +1 -0
  301. package/mssql-core/view-common.d.cts +1 -0
  302. package/mssql-core/view-common.d.ts +1 -0
  303. package/mssql-core/view-common.js +5 -0
  304. package/mssql-core/view-common.js.map +1 -0
  305. package/mssql-core/view.cjs +154 -0
  306. package/mssql-core/view.cjs.map +1 -0
  307. package/mssql-core/view.d.cts +64 -0
  308. package/mssql-core/view.d.ts +64 -0
  309. package/mssql-core/view.js +125 -0
  310. package/mssql-core/view.js.map +1 -0
  311. package/node-mssql/driver.cjs +88 -0
  312. package/node-mssql/driver.cjs.map +1 -0
  313. package/node-mssql/driver.d.cts +34 -0
  314. package/node-mssql/driver.d.ts +34 -0
  315. package/node-mssql/driver.js +65 -0
  316. package/node-mssql/driver.js.map +1 -0
  317. package/node-mssql/index.cjs +25 -0
  318. package/node-mssql/index.cjs.map +1 -0
  319. package/node-mssql/index.d.cts +2 -0
  320. package/node-mssql/index.d.ts +2 -0
  321. package/node-mssql/index.js +3 -0
  322. package/node-mssql/index.js.map +1 -0
  323. package/node-mssql/migrator.cjs +33 -0
  324. package/node-mssql/migrator.cjs.map +1 -0
  325. package/node-mssql/migrator.d.cts +3 -0
  326. package/node-mssql/migrator.d.ts +3 -0
  327. package/node-mssql/migrator.js +9 -0
  328. package/node-mssql/migrator.js.map +1 -0
  329. package/node-mssql/session.cjs +243 -0
  330. package/node-mssql/session.cjs.map +1 -0
  331. package/node-mssql/session.d.cts +47 -0
  332. package/node-mssql/session.d.ts +47 -0
  333. package/node-mssql/session.js +211 -0
  334. package/node-mssql/session.js.map +1 -0
  335. package/package.json +989 -337
  336. package/pg-core/columns/common.cjs +11 -10
  337. package/pg-core/columns/common.cjs.map +1 -1
  338. package/pg-core/columns/common.d.cts +3 -2
  339. package/pg-core/columns/common.d.ts +3 -2
  340. package/pg-core/columns/common.js +11 -10
  341. package/pg-core/columns/common.js.map +1 -1
  342. package/pg-core/unique-constraint.cjs +5 -1
  343. package/pg-core/unique-constraint.cjs.map +1 -1
  344. package/pg-core/unique-constraint.d.cts +2 -0
  345. package/pg-core/unique-constraint.d.ts +2 -0
  346. package/pg-core/unique-constraint.js +5 -1
  347. package/pg-core/unique-constraint.js.map +1 -1
  348. package/relations.cjs +48 -0
  349. package/relations.cjs.map +1 -1
  350. package/relations.d.cts +1 -0
  351. package/relations.d.ts +1 -0
  352. package/relations.js +47 -0
  353. package/relations.js.map +1 -1
  354. package/version.cjs +2 -2
  355. package/version.cjs.map +1 -1
  356. package/version.d.cts +2 -2
  357. package/version.d.ts +2 -2
  358. package/version.js +2 -2
  359. package/version.js.map +1 -1
@@ -0,0 +1,611 @@
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 dialect_exports = {};
20
+ __export(dialect_exports, {
21
+ MsSqlDialect: () => MsSqlDialect
22
+ });
23
+ module.exports = __toCommonJS(dialect_exports);
24
+ var import_alias = require("../alias.cjs");
25
+ var import_casing = require("../casing.cjs");
26
+ var import_column = require("../column.cjs");
27
+ var import_entity = require("../entity.cjs");
28
+ var import_relations = require("../relations.cjs");
29
+ var import_sql = require("../sql/sql.cjs");
30
+ var import_subquery = require("../subquery.cjs");
31
+ var import_table = require("../table.cjs");
32
+ var import_utils = require("../utils.cjs");
33
+ var import__ = require("../index.cjs");
34
+ var import_common = require("./columns/common.cjs");
35
+ var import_table2 = require("./table.cjs");
36
+ var import_view_base = require("./view-base.cjs");
37
+ class MsSqlDialect {
38
+ static [import_entity.entityKind] = "MsSqlDialect";
39
+ /** @internal */
40
+ casing;
41
+ constructor(config) {
42
+ this.casing = new import_casing.CasingCache(config?.casing);
43
+ }
44
+ async migrate(migrations, session, config) {
45
+ const migrationsTable = config.migrationsTable ?? "__drizzle_migrations";
46
+ const migrationTableCreate = import_sql.sql`
47
+ create table ${import_sql.sql.identifier(migrationsTable)} (
48
+ id bigint identity primary key,
49
+ hash text not null,
50
+ created_at bigint
51
+ )
52
+ `;
53
+ await session.execute(migrationTableCreate);
54
+ const dbMigrations = await session.all(
55
+ import_sql.sql`select id, hash, created_at from ${import_sql.sql.identifier(migrationsTable)} order by created_at desc offset 0 rows fetch next 1 rows only`
56
+ );
57
+ const lastDbMigration = dbMigrations[0];
58
+ await session.transaction(async (tx) => {
59
+ for (const migration of migrations) {
60
+ if (!lastDbMigration || Number(lastDbMigration.created_at) < migration.folderMillis) {
61
+ for (const stmt of migration.sql) {
62
+ await tx.execute(import_sql.sql.raw(stmt));
63
+ }
64
+ await tx.execute(
65
+ import_sql.sql`insert into ${import_sql.sql.identifier(migrationsTable)} ([hash], [created_at]) values(${migration.hash}, ${migration.folderMillis})`
66
+ );
67
+ }
68
+ }
69
+ });
70
+ }
71
+ escapeName(name) {
72
+ return `[${name}]`;
73
+ }
74
+ escapeParam(_num) {
75
+ return `@par${_num}`;
76
+ }
77
+ escapeString(str) {
78
+ return `'${str.replace(/'/g, "''")}'`;
79
+ }
80
+ buildDeleteQuery({ table, where, output }) {
81
+ const outputSql = output ? import_sql.sql` output ${this.buildSelectionOutput(output, { type: "DELETED" })}` : void 0;
82
+ const whereSql = where ? import_sql.sql` where ${where}` : void 0;
83
+ return import_sql.sql`delete from ${table}${outputSql}${whereSql}`;
84
+ }
85
+ buildUpdateSet(table, set) {
86
+ const tableColumns = table[import_table.Table.Symbol.Columns];
87
+ const columnNames = Object.keys(tableColumns).filter(
88
+ (colName) => set[colName] !== void 0 || tableColumns[colName]?.onUpdateFn !== void 0
89
+ );
90
+ const setSize = columnNames.length;
91
+ return import_sql.sql.join(columnNames.flatMap((colName, i) => {
92
+ const col = tableColumns[colName];
93
+ const value = set[colName] ?? import_sql.sql.param(col.onUpdateFn(), col);
94
+ const res = import_sql.sql`${import_sql.sql.identifier(this.casing.getColumnCasing(col))} = ${value}`;
95
+ if (i < setSize - 1) {
96
+ return [res, import_sql.sql.raw(", ")];
97
+ }
98
+ return [res];
99
+ }));
100
+ }
101
+ buildUpdateQuery({ table, set, where, output }) {
102
+ const setSql = this.buildUpdateSet(table, set);
103
+ const outputSql = import_sql.sql``;
104
+ if (output) {
105
+ outputSql.append(import_sql.sql` output `);
106
+ if (output.inserted) {
107
+ outputSql.append(this.buildSelectionOutput(output.inserted, { type: "INSERTED" }));
108
+ }
109
+ if (output.deleted) {
110
+ if (output.inserted)
111
+ outputSql.append(import_sql.sql`, `);
112
+ outputSql.append(this.buildSelectionOutput(output.deleted, { type: "DELETED" }));
113
+ }
114
+ }
115
+ const whereSql = where ? import_sql.sql` where ${where}` : void 0;
116
+ return import_sql.sql`update ${table} set ${setSql}${outputSql}${whereSql}`;
117
+ }
118
+ /**
119
+ * Builds selection SQL with provided fields/expressions
120
+ *
121
+ * Examples:
122
+ *
123
+ * `select <selection> from`
124
+ *
125
+ * `insert ... returning <selection>`
126
+ *
127
+ * If `isSingleTable` is true, then columns won't be prefixed with table name
128
+ */
129
+ buildSelection(fields, { isSingleTable = false } = {}) {
130
+ const columnsLen = fields.length;
131
+ const chunks = fields.flatMap(({ field }, i) => {
132
+ const chunk = [];
133
+ if ((0, import_entity.is)(field, import_sql.SQL.Aliased) && field.isSelectionField) {
134
+ chunk.push(import_sql.sql.identifier(field.fieldAlias));
135
+ } else if ((0, import_entity.is)(field, import_sql.SQL.Aliased) || (0, import_entity.is)(field, import_sql.SQL)) {
136
+ const query = (0, import_entity.is)(field, import_sql.SQL.Aliased) ? field.sql : field;
137
+ if (isSingleTable) {
138
+ chunk.push(
139
+ new import_sql.SQL(
140
+ query.queryChunks.map((c) => {
141
+ if ((0, import_entity.is)(c, import_common.MsSqlColumn)) {
142
+ return import_sql.sql.identifier(this.casing.getColumnCasing(c));
143
+ }
144
+ return c;
145
+ })
146
+ )
147
+ );
148
+ } else {
149
+ chunk.push(query);
150
+ }
151
+ if ((0, import_entity.is)(field, import_sql.SQL.Aliased)) {
152
+ chunk.push(import_sql.sql` as ${import_sql.sql.identifier(field.fieldAlias)}`);
153
+ }
154
+ } else if ((0, import_entity.is)(field, import_column.Column)) {
155
+ if (isSingleTable) {
156
+ chunk.push(import_sql.sql.identifier(this.casing.getColumnCasing(field)));
157
+ } else {
158
+ chunk.push(field);
159
+ }
160
+ }
161
+ if (i < columnsLen - 1) {
162
+ chunk.push(import_sql.sql`, `);
163
+ }
164
+ return chunk;
165
+ });
166
+ return import_sql.sql.join(chunks);
167
+ }
168
+ buildSelectionOutput(fields, { type }) {
169
+ const columnsLen = fields.length;
170
+ const chunks = fields.flatMap(({ field }, i) => {
171
+ const chunk = [];
172
+ if ((0, import_entity.is)(field, import_sql.SQL.Aliased) && field.isSelectionField) {
173
+ chunk.push(import_sql.sql.join([import_sql.sql.raw(`${type}.`), import_sql.sql.identifier(field.fieldAlias)]));
174
+ } else if ((0, import_entity.is)(field, import_sql.SQL.Aliased) || (0, import_entity.is)(field, import_sql.SQL)) {
175
+ const query = (0, import_entity.is)(field, import_sql.SQL.Aliased) ? field.sql : field;
176
+ chunk.push(
177
+ new import_sql.SQL(
178
+ query.queryChunks.map((c) => {
179
+ if ((0, import_entity.is)(c, import_common.MsSqlColumn)) {
180
+ return import_sql.sql.join([import_sql.sql.raw(`${type}.`), import_sql.sql.identifier(this.casing.getColumnCasing(c))]);
181
+ }
182
+ return c;
183
+ })
184
+ )
185
+ );
186
+ if ((0, import_entity.is)(field, import_sql.SQL.Aliased)) {
187
+ chunk.push(import_sql.sql` as ${import_sql.sql.identifier(field.fieldAlias)}`);
188
+ }
189
+ } else if ((0, import_entity.is)(field, import_column.Column)) {
190
+ chunk.push(import_sql.sql.join([import_sql.sql.raw(`${type}.`), import_sql.sql.identifier(this.casing.getColumnCasing(field))]));
191
+ }
192
+ if (i < columnsLen - 1) {
193
+ chunk.push(import_sql.sql`, `);
194
+ }
195
+ return chunk;
196
+ });
197
+ return import_sql.sql.join(chunks);
198
+ }
199
+ buildSelectQuery({
200
+ withList,
201
+ fields,
202
+ fieldsFlat,
203
+ where,
204
+ having,
205
+ table,
206
+ joins,
207
+ orderBy,
208
+ groupBy,
209
+ fetch,
210
+ for: _for,
211
+ top,
212
+ offset,
213
+ distinct,
214
+ setOperators
215
+ }) {
216
+ const fieldsList = fieldsFlat ?? (0, import_utils.orderSelectedFields)(fields);
217
+ for (const f of fieldsList) {
218
+ if ((0, import_entity.is)(f.field, import_column.Column) && (0, import_table.getTableName)(f.field.table) !== ((0, import_entity.is)(table, import_subquery.Subquery) ? table._.alias : (0, import_entity.is)(table, import_view_base.MsSqlViewBase) ? table[import__.ViewBaseConfig].name : (0, import_entity.is)(table, import_sql.SQL) ? void 0 : (0, import_table.getTableName)(table)) && !((table2) => joins?.some(
219
+ ({ alias }) => alias === (table2[import_table.Table.Symbol.IsAlias] ? (0, import_table.getTableName)(table2) : table2[import_table.Table.Symbol.BaseName])
220
+ ))(f.field.table)) {
221
+ const tableName = (0, import_table.getTableName)(f.field.table);
222
+ throw new Error(
223
+ `Your "${f.path.join("->")}" field references a column "${tableName}"."${f.field.name}", but the table "${tableName}" is not part of the query! Did you forget to join it?`
224
+ );
225
+ }
226
+ }
227
+ const isSingleTable = !joins || joins.length === 0;
228
+ let withSql;
229
+ if (withList?.length) {
230
+ const withSqlChunks = [import_sql.sql`with `];
231
+ for (const [i, w] of withList.entries()) {
232
+ withSqlChunks.push(import_sql.sql`${import_sql.sql.identifier(w._.alias)} as (${w._.sql})`);
233
+ if (i < withList.length - 1) {
234
+ withSqlChunks.push(import_sql.sql`, `);
235
+ }
236
+ }
237
+ withSqlChunks.push(import_sql.sql` `);
238
+ withSql = import_sql.sql.join(withSqlChunks);
239
+ }
240
+ const distinctSql = distinct ? import_sql.sql` distinct` : void 0;
241
+ const topSql = top ? import_sql.sql` top(${top})` : void 0;
242
+ const selection = this.buildSelection(fieldsList, { isSingleTable });
243
+ const tableSql = (() => {
244
+ if ((0, import_entity.is)(table, import_table.Table) && table[import_table.Table.Symbol.OriginalName] !== table[import_table.Table.Symbol.Name]) {
245
+ let fullName = import_sql.sql`${import_sql.sql.identifier(table[import_table.Table.Symbol.OriginalName])} ${import_sql.sql.identifier(table[import_table.Table.Symbol.Name])}`;
246
+ if (table[import_table.Table.Symbol.Schema]) {
247
+ fullName = import_sql.sql`${import_sql.sql.identifier(table[import_table.Table.Symbol.Schema])}.${fullName}`;
248
+ }
249
+ return fullName;
250
+ }
251
+ return table;
252
+ })();
253
+ const joinsArray = [];
254
+ if (joins) {
255
+ for (const [index, joinMeta] of joins.entries()) {
256
+ if (index === 0) {
257
+ joinsArray.push(import_sql.sql` `);
258
+ }
259
+ const table2 = joinMeta.table;
260
+ const lateralSql = joinMeta.lateral ? import_sql.sql` lateral` : void 0;
261
+ if ((0, import_entity.is)(table2, import_table2.MsSqlTable)) {
262
+ const tableName = table2[import_table2.MsSqlTable.Symbol.Name];
263
+ const tableSchema = table2[import_table2.MsSqlTable.Symbol.Schema];
264
+ const origTableName = table2[import_table2.MsSqlTable.Symbol.OriginalName];
265
+ const alias = tableName === origTableName ? void 0 : joinMeta.alias;
266
+ joinsArray.push(
267
+ import_sql.sql`${import_sql.sql.raw(joinMeta.joinType)} join${lateralSql} ${tableSchema ? import_sql.sql`${import_sql.sql.identifier(tableSchema)}.` : void 0}${import_sql.sql.identifier(origTableName)}${alias && import_sql.sql` ${import_sql.sql.identifier(alias)}`} on ${joinMeta.on}`
268
+ );
269
+ } else if ((0, import_entity.is)(table2, import_sql.View)) {
270
+ const viewName = table2[import__.ViewBaseConfig].name;
271
+ const viewSchema = table2[import__.ViewBaseConfig].schema;
272
+ const origViewName = table2[import__.ViewBaseConfig].originalName;
273
+ const alias = viewName === origViewName ? void 0 : joinMeta.alias;
274
+ joinsArray.push(
275
+ import_sql.sql`${import_sql.sql.raw(joinMeta.joinType)} join${lateralSql} ${viewSchema ? import_sql.sql`${import_sql.sql.identifier(viewSchema)}.` : void 0}${import_sql.sql.identifier(origViewName)}${alias && import_sql.sql` ${import_sql.sql.identifier(alias)}`} on ${joinMeta.on}`
276
+ );
277
+ } else {
278
+ joinsArray.push(
279
+ import_sql.sql`${import_sql.sql.raw(joinMeta.joinType)} join${lateralSql} ${table2} on ${joinMeta.on}`
280
+ );
281
+ }
282
+ if (index < joins.length - 1) {
283
+ joinsArray.push(import_sql.sql` `);
284
+ }
285
+ }
286
+ }
287
+ const joinsSql = import_sql.sql.join(joinsArray);
288
+ const whereSql = where ? import_sql.sql` where ${where}` : void 0;
289
+ const havingSql = having ? import_sql.sql` having ${having}` : void 0;
290
+ let orderBySql;
291
+ if (orderBy && orderBy.length > 0) {
292
+ orderBySql = import_sql.sql` order by ${import_sql.sql.join(orderBy, import_sql.sql`, `)}`;
293
+ }
294
+ let groupBySql;
295
+ if (groupBy && groupBy.length > 0) {
296
+ groupBySql = import_sql.sql` group by ${import_sql.sql.join(groupBy, import_sql.sql`, `)}`;
297
+ }
298
+ const offsetSql = offset === void 0 ? void 0 : import_sql.sql` offset ${offset} rows`;
299
+ const fetchSql = fetch === void 0 ? void 0 : import_sql.sql` fetch next ${fetch} rows only`;
300
+ let forSQL;
301
+ if (_for && _for.mode === "json") {
302
+ forSQL = import_sql.sql` for json ${import_sql.sql.raw(_for.type)}${_for.options?.root ? import_sql.sql` root(${import_sql.sql.identifier(_for.options.root)})` : void 0}${_for.options?.includeNullValues ? import_sql.sql` include_null_values` : void 0}${_for.options?.withoutArrayWrapper ? import_sql.sql` without_array_wrapper` : void 0}`;
303
+ }
304
+ const finalQuery = import_sql.sql`${withSql}select${distinctSql}${topSql} ${selection} from ${tableSql}${joinsSql}${whereSql}${groupBySql}${havingSql}${orderBySql}${offsetSql}${fetchSql}${forSQL}`;
305
+ if (setOperators.length > 0) {
306
+ return this.buildSetOperations(finalQuery, setOperators);
307
+ }
308
+ return finalQuery;
309
+ }
310
+ buildSetOperations(leftSelect, setOperators) {
311
+ const [setOperator, ...rest] = setOperators;
312
+ if (!setOperator) {
313
+ throw new Error("Cannot pass undefined values to any set operator");
314
+ }
315
+ if (rest.length === 0) {
316
+ return this.buildSetOperationQuery({ leftSelect, setOperator });
317
+ }
318
+ return this.buildSetOperations(
319
+ this.buildSetOperationQuery({ leftSelect, setOperator }),
320
+ rest
321
+ );
322
+ }
323
+ buildSetOperationQuery({
324
+ leftSelect,
325
+ setOperator: { type, isAll, rightSelect, fetch, orderBy, offset }
326
+ }) {
327
+ const leftChunk = import_sql.sql`(${leftSelect.getSQL()}) `;
328
+ const rightChunk = import_sql.sql`(${rightSelect.getSQL()})`;
329
+ let orderBySql;
330
+ if (orderBy && orderBy.length > 0) {
331
+ const orderByValues = [];
332
+ for (const orderByUnit of orderBy) {
333
+ if ((0, import_entity.is)(orderByUnit, import_common.MsSqlColumn)) {
334
+ orderByValues.push(import_sql.sql.identifier(orderByUnit.name));
335
+ } else if ((0, import_entity.is)(orderByUnit, import_sql.SQL)) {
336
+ for (let i = 0; i < orderByUnit.queryChunks.length; i++) {
337
+ const chunk = orderByUnit.queryChunks[i];
338
+ if ((0, import_entity.is)(chunk, import_common.MsSqlColumn)) {
339
+ orderByUnit.queryChunks[i] = import_sql.sql.identifier(chunk.name);
340
+ }
341
+ }
342
+ orderByValues.push(import_sql.sql`${orderByUnit}`);
343
+ } else {
344
+ orderByValues.push(import_sql.sql`${orderByUnit}`);
345
+ }
346
+ }
347
+ orderBySql = import_sql.sql` order by ${import_sql.sql.join(orderByValues, import_sql.sql`, `)} `;
348
+ }
349
+ const offsetSql = offset === void 0 ? void 0 : import_sql.sql` offset ${offset} rows`;
350
+ const fetchSql = fetch === void 0 ? void 0 : import_sql.sql` fetch next ${fetch} rows only`;
351
+ const operatorChunk = import_sql.sql.raw(`${type} ${isAll ? "all " : ""}`);
352
+ return import_sql.sql`${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${offsetSql}${fetchSql}`;
353
+ }
354
+ buildInsertQuery({ table, values, output }) {
355
+ const valuesSqlList = [];
356
+ const columns = table[import_table.Table.Symbol.Columns];
357
+ const colEntries = Object.entries(columns).filter(
358
+ ([_, col]) => !col.shouldDisableInsert()
359
+ );
360
+ const insertOrder = colEntries.map(([, column]) => import_sql.sql.identifier(this.casing.getColumnCasing(column)));
361
+ for (const [valueIndex, value] of values.entries()) {
362
+ const valueList = [];
363
+ for (const [fieldName, col] of colEntries) {
364
+ const colValue = value[fieldName];
365
+ if (colValue === void 0 || (0, import_entity.is)(colValue, import_sql.Param) && colValue.value === void 0) {
366
+ if (col.defaultFn !== void 0) {
367
+ const defaultFnResult = col.defaultFn();
368
+ const defaultValue = (0, import_entity.is)(defaultFnResult, import_sql.SQL) ? defaultFnResult : import_sql.sql.param(defaultFnResult, col);
369
+ valueList.push(defaultValue);
370
+ } else if (!col.default && col.onUpdateFn !== void 0) {
371
+ const onUpdateFnResult = col.onUpdateFn();
372
+ const newValue = (0, import_entity.is)(onUpdateFnResult, import_sql.SQL) ? onUpdateFnResult : import_sql.sql.param(onUpdateFnResult, col);
373
+ valueList.push(newValue);
374
+ } else {
375
+ valueList.push(import_sql.sql`default`);
376
+ }
377
+ } else {
378
+ valueList.push(colValue);
379
+ }
380
+ }
381
+ valuesSqlList.push(valueList);
382
+ if (valueIndex < values.length - 1) {
383
+ valuesSqlList.push(import_sql.sql`, `);
384
+ }
385
+ }
386
+ const valuesSql = insertOrder.length === 0 ? void 0 : import_sql.sql.join(valuesSqlList);
387
+ const outputSql = output ? import_sql.sql` output ${this.buildSelectionOutput(output, { type: "INSERTED" })}` : void 0;
388
+ return import_sql.sql`insert into ${table} ${insertOrder.length === 0 ? import_sql.sql`default` : insertOrder}${outputSql} values ${valuesSql}`;
389
+ }
390
+ sqlToQuery(sql2, invokeSource) {
391
+ return sql2.toQuery({
392
+ casing: this.casing,
393
+ escapeName: this.escapeName,
394
+ escapeParam: this.escapeParam,
395
+ escapeString: this.escapeString,
396
+ invokeSource
397
+ });
398
+ }
399
+ buildRelationalQuery({
400
+ fullSchema,
401
+ schema,
402
+ tableNamesMap,
403
+ table,
404
+ tableConfig,
405
+ queryConfig: config,
406
+ tableAlias,
407
+ nestedQueryRelation,
408
+ joinOn
409
+ }) {
410
+ let selection = [];
411
+ let limit, offset, orderBy = [], where;
412
+ if (config === true) {
413
+ const selectionEntries = Object.entries(tableConfig.columns);
414
+ selection = selectionEntries.map(([key, value]) => ({
415
+ dbKey: value.name,
416
+ tsKey: key,
417
+ field: (0, import_alias.aliasedTableColumn)(value, tableAlias),
418
+ relationTableTsKey: void 0,
419
+ isJson: false,
420
+ selection: []
421
+ }));
422
+ } else {
423
+ const aliasedColumns = Object.fromEntries(
424
+ Object.entries(tableConfig.columns).map(([key, value]) => [key, (0, import_alias.aliasedTableColumn)(value, tableAlias)])
425
+ );
426
+ if (config.where) {
427
+ const whereSql = typeof config.where === "function" ? config.where(aliasedColumns, (0, import_relations.getOperators)()) : config.where;
428
+ where = whereSql && (0, import_alias.mapColumnsInSQLToAlias)(whereSql, tableAlias);
429
+ }
430
+ const fieldsSelection = [];
431
+ let selectedColumns = [];
432
+ if (config.columns) {
433
+ let isIncludeMode = false;
434
+ for (const [field, value] of Object.entries(config.columns)) {
435
+ if (value === void 0) {
436
+ continue;
437
+ }
438
+ if (field in tableConfig.columns) {
439
+ if (!isIncludeMode && value === true) {
440
+ isIncludeMode = true;
441
+ }
442
+ selectedColumns.push(field);
443
+ }
444
+ }
445
+ if (selectedColumns.length > 0) {
446
+ selectedColumns = isIncludeMode ? selectedColumns.filter((c) => config.columns?.[c] === true) : Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));
447
+ }
448
+ } else {
449
+ selectedColumns = Object.keys(tableConfig.columns);
450
+ }
451
+ for (const field of selectedColumns) {
452
+ const column = tableConfig.columns[field];
453
+ fieldsSelection.push({ tsKey: field, value: column });
454
+ }
455
+ let selectedRelations = [];
456
+ if (config.with) {
457
+ selectedRelations = Object.entries(config.with).filter((entry) => !!entry[1]).map(([tsKey, queryConfig]) => ({ tsKey, queryConfig, relation: tableConfig.relations[tsKey] }));
458
+ }
459
+ let extras;
460
+ if (config.extras) {
461
+ extras = typeof config.extras === "function" ? config.extras(aliasedColumns, { sql: import_sql.sql }) : config.extras;
462
+ for (const [tsKey, value] of Object.entries(extras)) {
463
+ fieldsSelection.push({
464
+ tsKey,
465
+ value: (0, import_alias.mapColumnsInAliasedSQLToAlias)(value, tableAlias)
466
+ });
467
+ }
468
+ }
469
+ for (const { tsKey, value } of fieldsSelection) {
470
+ selection.push({
471
+ dbKey: (0, import_entity.is)(value, import_sql.SQL.Aliased) ? value.fieldAlias : tableConfig.columns[tsKey].name,
472
+ tsKey,
473
+ field: (0, import_entity.is)(value, import_column.Column) ? (0, import_alias.aliasedTableColumn)(value, tableAlias) : value,
474
+ relationTableTsKey: void 0,
475
+ isJson: false,
476
+ selection: []
477
+ });
478
+ }
479
+ let orderByOrig = typeof config.orderBy === "function" ? config.orderBy(aliasedColumns, (0, import_relations.getOrderByOperators)()) : config.orderBy ?? [];
480
+ if (!Array.isArray(orderByOrig)) {
481
+ orderByOrig = [orderByOrig];
482
+ }
483
+ orderBy = orderByOrig.map((orderByValue) => {
484
+ if ((0, import_entity.is)(orderByValue, import_column.Column)) {
485
+ return (0, import_alias.aliasedTableColumn)(orderByValue, tableAlias);
486
+ }
487
+ return (0, import_alias.mapColumnsInSQLToAlias)(orderByValue, tableAlias);
488
+ });
489
+ limit = config.limit;
490
+ offset = config.offset;
491
+ for (const {
492
+ tsKey: selectedRelationTsKey,
493
+ queryConfig: selectedRelationConfigValue,
494
+ relation
495
+ } of selectedRelations) {
496
+ const normalizedRelation = (0, import_relations.normalizeRelation)(schema, tableNamesMap, relation);
497
+ const relationTableName = (0, import_table.getTableUniqueName)(relation.referencedTable);
498
+ const relationTableTsName = tableNamesMap[relationTableName];
499
+ const relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;
500
+ const joinOn2 = (0, import__.and)(
501
+ ...normalizedRelation.fields.map(
502
+ (field2, i) => (0, import__.eq)(
503
+ (0, import_alias.aliasedTableColumn)(normalizedRelation.references[i], relationTableAlias),
504
+ (0, import_alias.aliasedTableColumn)(field2, tableAlias)
505
+ )
506
+ )
507
+ );
508
+ const builtRelation = this.buildRelationalQuery({
509
+ fullSchema,
510
+ schema,
511
+ tableNamesMap,
512
+ table: fullSchema[relationTableTsName],
513
+ tableConfig: schema[relationTableTsName],
514
+ queryConfig: (0, import_entity.is)(relation, import_relations.One) ? selectedRelationConfigValue === true ? { limit: 1 } : { ...selectedRelationConfigValue, limit: 1 } : selectedRelationConfigValue,
515
+ tableAlias: relationTableAlias,
516
+ joinOn: joinOn2,
517
+ nestedQueryRelation: relation
518
+ });
519
+ let fieldSql = import_sql.sql`(${builtRelation.sql} for json auto, include_null_values)${nestedQueryRelation ? import_sql.sql` as ${import_sql.sql.identifier(relationTableAlias)}` : void 0}`;
520
+ if ((0, import_entity.is)(relation, import_relations.Many)) {
521
+ fieldSql = import_sql.sql`${fieldSql}`;
522
+ }
523
+ const field = fieldSql.as(selectedRelationTsKey);
524
+ selection.push({
525
+ dbKey: selectedRelationTsKey,
526
+ tsKey: selectedRelationTsKey,
527
+ field,
528
+ relationTableTsKey: relationTableTsName,
529
+ isJson: true,
530
+ selection: builtRelation.selection
531
+ });
532
+ }
533
+ }
534
+ if (selection.length === 0) {
535
+ throw new import__.DrizzleError({
536
+ message: `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.`
537
+ });
538
+ }
539
+ let result;
540
+ where = (0, import__.and)(joinOn, where);
541
+ if (nestedQueryRelation) {
542
+ let field = import_sql.sql`${import_sql.sql.join(
543
+ selection.map((sel) => {
544
+ return (0, import_entity.is)(sel.field, import_common.MsSqlColumn) ? import_sql.sql.identifier(sel.field.name) : (0, import_entity.is)(sel.field, import_sql.SQL.Aliased) ? sel.isJson ? sel.field.sql : import_sql.sql`${sel.field.sql} as ${import_sql.sql.identifier(sel.field.fieldAlias)}` : sel.field;
545
+ }),
546
+ import_sql.sql`, `
547
+ )}`;
548
+ if ((0, import_entity.is)(nestedQueryRelation, import_relations.Many)) {
549
+ field = import_sql.sql`${field}`;
550
+ }
551
+ const nestedSelection = [{
552
+ dbKey: "data",
553
+ tsKey: "data",
554
+ field,
555
+ isJson: true,
556
+ relationTableTsKey: tableConfig.tsName,
557
+ selection
558
+ }];
559
+ result = (0, import_alias.aliasedTable)(table, tableAlias);
560
+ const top = offset ? void 0 : limit ?? void 0;
561
+ const fetch = offset && limit ? limit : void 0;
562
+ if (orderBy.length === 0 && offset !== void 0 && fetch !== void 0) {
563
+ orderBy = [import_sql.sql`1`];
564
+ }
565
+ result = this.buildSelectQuery({
566
+ table: (0, import_entity.is)(result, import_table2.MsSqlTable) ? result : new import_subquery.Subquery(result, {}, tableAlias),
567
+ fields: {},
568
+ fieldsFlat: nestedSelection.map(({ field: field2 }) => ({
569
+ path: [],
570
+ field: (0, import_entity.is)(field2, import_column.Column) ? (0, import_alias.aliasedTableColumn)(field2, tableAlias) : field2
571
+ })),
572
+ where,
573
+ top,
574
+ offset,
575
+ fetch,
576
+ orderBy,
577
+ setOperators: []
578
+ });
579
+ } else {
580
+ const top = offset ? void 0 : limit ?? void 0;
581
+ const fetch = offset && limit ? limit : void 0;
582
+ if (orderBy.length === 0 && offset !== void 0 && fetch !== void 0) {
583
+ orderBy = [import_sql.sql`1`];
584
+ }
585
+ result = this.buildSelectQuery({
586
+ table: (0, import_alias.aliasedTable)(table, tableAlias),
587
+ fields: {},
588
+ fieldsFlat: selection.map(({ field }) => ({
589
+ path: [],
590
+ field: (0, import_entity.is)(field, import_column.Column) ? (0, import_alias.aliasedTableColumn)(field, tableAlias) : field
591
+ })),
592
+ where,
593
+ top,
594
+ offset,
595
+ fetch,
596
+ orderBy,
597
+ setOperators: []
598
+ });
599
+ }
600
+ return {
601
+ tableTsKey: tableConfig.tsName,
602
+ sql: result,
603
+ selection
604
+ };
605
+ }
606
+ }
607
+ // Annotate the CommonJS export names for ESM import in node:
608
+ 0 && (module.exports = {
609
+ MsSqlDialect
610
+ });
611
+ //# sourceMappingURL=dialect.cjs.map