drizzle-orm 0.38.4-b776df4 → 0.38.4-e36471e

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 (693) hide show
  1. package/_relations.cjs +328 -0
  2. package/_relations.cjs.map +1 -0
  3. package/_relations.d.cts +215 -0
  4. package/_relations.d.ts +215 -0
  5. package/_relations.js +316 -0
  6. package/_relations.js.map +1 -0
  7. package/alias.cjs.map +1 -1
  8. package/alias.d.cts +3 -3
  9. package/alias.d.ts +3 -3
  10. package/alias.js.map +1 -1
  11. package/aws-data-api/pg/driver.cjs +19 -5
  12. package/aws-data-api/pg/driver.cjs.map +1 -1
  13. package/aws-data-api/pg/driver.d.cts +9 -8
  14. package/aws-data-api/pg/driver.d.ts +9 -8
  15. package/aws-data-api/pg/driver.js +9 -8
  16. package/aws-data-api/pg/driver.js.map +1 -1
  17. package/aws-data-api/pg/migrator.cjs.map +1 -1
  18. package/aws-data-api/pg/migrator.d.cts +2 -1
  19. package/aws-data-api/pg/migrator.d.ts +2 -1
  20. package/aws-data-api/pg/migrator.js.map +1 -1
  21. package/aws-data-api/pg/session.cjs +67 -4
  22. package/aws-data-api/pg/session.cjs.map +1 -1
  23. package/aws-data-api/pg/session.d.cts +13 -8
  24. package/aws-data-api/pg/session.d.ts +13 -8
  25. package/aws-data-api/pg/session.js +67 -4
  26. package/aws-data-api/pg/session.js.map +1 -1
  27. package/better-sqlite3/driver.cjs +12 -5
  28. package/better-sqlite3/driver.cjs.map +1 -1
  29. package/better-sqlite3/driver.d.cts +7 -6
  30. package/better-sqlite3/driver.d.ts +7 -6
  31. package/better-sqlite3/driver.js +12 -8
  32. package/better-sqlite3/driver.js.map +1 -1
  33. package/better-sqlite3/migrator.cjs.map +1 -1
  34. package/better-sqlite3/migrator.d.cts +2 -1
  35. package/better-sqlite3/migrator.d.ts +2 -1
  36. package/better-sqlite3/migrator.js.map +1 -1
  37. package/better-sqlite3/session.cjs +49 -4
  38. package/better-sqlite3/session.cjs.map +1 -1
  39. package/better-sqlite3/session.d.cts +14 -8
  40. package/better-sqlite3/session.d.ts +14 -8
  41. package/better-sqlite3/session.js +49 -4
  42. package/better-sqlite3/session.js.map +1 -1
  43. package/bun-sqlite/driver.cjs +22 -5
  44. package/bun-sqlite/driver.cjs.map +1 -1
  45. package/bun-sqlite/driver.d.cts +7 -6
  46. package/bun-sqlite/driver.d.ts +7 -6
  47. package/bun-sqlite/driver.js +12 -8
  48. package/bun-sqlite/driver.js.map +1 -1
  49. package/bun-sqlite/migrator.cjs.map +1 -1
  50. package/bun-sqlite/migrator.d.cts +2 -1
  51. package/bun-sqlite/migrator.d.ts +2 -1
  52. package/bun-sqlite/migrator.js.map +1 -1
  53. package/bun-sqlite/session.cjs +49 -4
  54. package/bun-sqlite/session.cjs.map +1 -1
  55. package/bun-sqlite/session.d.cts +14 -8
  56. package/bun-sqlite/session.d.ts +14 -8
  57. package/bun-sqlite/session.js +49 -4
  58. package/bun-sqlite/session.js.map +1 -1
  59. package/d1/driver.cjs +22 -5
  60. package/d1/driver.cjs.map +1 -1
  61. package/d1/driver.d.cts +3 -2
  62. package/d1/driver.d.ts +3 -2
  63. package/d1/driver.js +12 -8
  64. package/d1/driver.js.map +1 -1
  65. package/d1/migrator.cjs.map +1 -1
  66. package/d1/migrator.d.cts +2 -1
  67. package/d1/migrator.d.ts +2 -1
  68. package/d1/migrator.js.map +1 -1
  69. package/d1/session.cjs +48 -6
  70. package/d1/session.cjs.map +1 -1
  71. package/d1/session.d.cts +15 -8
  72. package/d1/session.d.ts +15 -8
  73. package/d1/session.js +48 -6
  74. package/d1/session.js.map +1 -1
  75. package/durable-sqlite/driver.cjs +16 -5
  76. package/durable-sqlite/driver.cjs.map +1 -1
  77. package/durable-sqlite/driver.d.cts +3 -2
  78. package/durable-sqlite/driver.d.ts +3 -2
  79. package/durable-sqlite/driver.js +6 -8
  80. package/durable-sqlite/driver.js.map +1 -1
  81. package/durable-sqlite/migrator.cjs.map +1 -1
  82. package/durable-sqlite/migrator.d.cts +2 -1
  83. package/durable-sqlite/migrator.d.ts +2 -1
  84. package/durable-sqlite/migrator.js.map +1 -1
  85. package/durable-sqlite/session.cjs +46 -4
  86. package/durable-sqlite/session.cjs.map +1 -1
  87. package/durable-sqlite/session.d.cts +14 -8
  88. package/durable-sqlite/session.d.ts +14 -8
  89. package/durable-sqlite/session.js +46 -4
  90. package/durable-sqlite/session.js.map +1 -1
  91. package/expo-sqlite/driver.cjs +22 -5
  92. package/expo-sqlite/driver.cjs.map +1 -1
  93. package/expo-sqlite/driver.d.cts +3 -2
  94. package/expo-sqlite/driver.d.ts +3 -2
  95. package/expo-sqlite/driver.js +12 -8
  96. package/expo-sqlite/driver.js.map +1 -1
  97. package/expo-sqlite/migrator.cjs.map +1 -1
  98. package/expo-sqlite/migrator.d.cts +3 -2
  99. package/expo-sqlite/migrator.d.ts +3 -2
  100. package/expo-sqlite/migrator.js.map +1 -1
  101. package/expo-sqlite/query.cjs +13 -2
  102. package/expo-sqlite/query.cjs.map +1 -1
  103. package/expo-sqlite/query.d.cts +2 -1
  104. package/expo-sqlite/query.d.ts +2 -1
  105. package/expo-sqlite/query.js +3 -2
  106. package/expo-sqlite/query.js.map +1 -1
  107. package/expo-sqlite/session.cjs +47 -4
  108. package/expo-sqlite/session.cjs.map +1 -1
  109. package/expo-sqlite/session.d.cts +14 -8
  110. package/expo-sqlite/session.d.ts +14 -8
  111. package/expo-sqlite/session.js +47 -4
  112. package/expo-sqlite/session.js.map +1 -1
  113. package/libsql/driver-core.cjs +22 -5
  114. package/libsql/driver-core.cjs.map +1 -1
  115. package/libsql/driver-core.d.cts +2 -1
  116. package/libsql/driver-core.d.ts +2 -1
  117. package/libsql/driver-core.js +12 -8
  118. package/libsql/driver-core.js.map +1 -1
  119. package/libsql/driver.cjs.map +1 -1
  120. package/libsql/driver.d.cts +6 -5
  121. package/libsql/driver.d.ts +6 -5
  122. package/libsql/driver.js.map +1 -1
  123. package/libsql/http/index.cjs.map +1 -1
  124. package/libsql/http/index.d.cts +6 -5
  125. package/libsql/http/index.d.ts +6 -5
  126. package/libsql/http/index.js.map +1 -1
  127. package/libsql/migrator.cjs.map +1 -1
  128. package/libsql/migrator.d.cts +2 -1
  129. package/libsql/migrator.d.ts +2 -1
  130. package/libsql/migrator.js.map +1 -1
  131. package/libsql/node/index.cjs.map +1 -1
  132. package/libsql/node/index.d.cts +6 -5
  133. package/libsql/node/index.d.ts +6 -5
  134. package/libsql/node/index.js.map +1 -1
  135. package/libsql/session.cjs +56 -4
  136. package/libsql/session.cjs.map +1 -1
  137. package/libsql/session.d.cts +15 -9
  138. package/libsql/session.d.ts +15 -9
  139. package/libsql/session.js +56 -4
  140. package/libsql/session.js.map +1 -1
  141. package/libsql/sqlite3/index.cjs.map +1 -1
  142. package/libsql/sqlite3/index.d.cts +6 -5
  143. package/libsql/sqlite3/index.d.ts +6 -5
  144. package/libsql/sqlite3/index.js.map +1 -1
  145. package/libsql/wasm/index.cjs.map +1 -1
  146. package/libsql/wasm/index.d.cts +6 -5
  147. package/libsql/wasm/index.d.ts +6 -5
  148. package/libsql/wasm/index.js.map +1 -1
  149. package/libsql/web/index.cjs.map +1 -1
  150. package/libsql/web/index.d.cts +6 -5
  151. package/libsql/web/index.d.ts +6 -5
  152. package/libsql/web/index.js.map +1 -1
  153. package/libsql/ws/index.cjs.map +1 -1
  154. package/libsql/ws/index.d.cts +6 -5
  155. package/libsql/ws/index.d.ts +6 -5
  156. package/libsql/ws/index.js.map +1 -1
  157. package/mysql-core/db.cjs +40 -25
  158. package/mysql-core/db.cjs.map +1 -1
  159. package/mysql-core/db.d.cts +22 -12
  160. package/mysql-core/db.d.ts +22 -12
  161. package/mysql-core/db.js +39 -24
  162. package/mysql-core/db.js.map +1 -1
  163. package/mysql-core/dialect.cjs +194 -15
  164. package/mysql-core/dialect.cjs.map +1 -1
  165. package/mysql-core/dialect.d.cts +33 -13
  166. package/mysql-core/dialect.d.ts +33 -13
  167. package/mysql-core/dialect.js +191 -21
  168. package/mysql-core/dialect.js.map +1 -1
  169. package/mysql-core/query-builders/_query.cjs +149 -0
  170. package/mysql-core/query-builders/_query.cjs.map +1 -0
  171. package/mysql-core/query-builders/_query.d.cts +44 -0
  172. package/mysql-core/query-builders/_query.d.ts +44 -0
  173. package/mysql-core/query-builders/_query.js +114 -0
  174. package/mysql-core/query-builders/_query.js.map +1 -0
  175. package/mysql-core/query-builders/count.cjs.map +1 -1
  176. package/mysql-core/query-builders/count.d.cts +1 -1
  177. package/mysql-core/query-builders/count.d.ts +1 -1
  178. package/mysql-core/query-builders/count.js.map +1 -1
  179. package/mysql-core/query-builders/query-builder.cjs +11 -15
  180. package/mysql-core/query-builders/query-builder.cjs.map +1 -1
  181. package/mysql-core/query-builders/query-builder.d.cts +6 -2
  182. package/mysql-core/query-builders/query-builder.d.ts +6 -2
  183. package/mysql-core/query-builders/query-builder.js +11 -15
  184. package/mysql-core/query-builders/query-builder.js.map +1 -1
  185. package/mysql-core/query-builders/query.cjs +18 -31
  186. package/mysql-core/query-builders/query.cjs.map +1 -1
  187. package/mysql-core/query-builders/query.d.cts +8 -10
  188. package/mysql-core/query-builders/query.d.ts +8 -10
  189. package/mysql-core/query-builders/query.js +18 -31
  190. package/mysql-core/query-builders/query.js.map +1 -1
  191. package/mysql-core/session.cjs +3 -2
  192. package/mysql-core/session.cjs.map +1 -1
  193. package/mysql-core/session.d.cts +10 -7
  194. package/mysql-core/session.d.ts +10 -7
  195. package/mysql-core/session.js +3 -2
  196. package/mysql-core/session.js.map +1 -1
  197. package/mysql-core/subquery.cjs.map +1 -1
  198. package/mysql-core/subquery.d.cts +2 -15
  199. package/mysql-core/subquery.d.ts +2 -15
  200. package/mysql-proxy/driver.cjs +22 -5
  201. package/mysql-proxy/driver.cjs.map +1 -1
  202. package/mysql-proxy/driver.d.cts +3 -2
  203. package/mysql-proxy/driver.d.ts +3 -2
  204. package/mysql-proxy/driver.js +12 -8
  205. package/mysql-proxy/driver.js.map +1 -1
  206. package/mysql-proxy/migrator.cjs.map +1 -1
  207. package/mysql-proxy/migrator.d.cts +2 -1
  208. package/mysql-proxy/migrator.d.ts +2 -1
  209. package/mysql-proxy/migrator.js.map +1 -1
  210. package/mysql-proxy/session.cjs +27 -2
  211. package/mysql-proxy/session.cjs.map +1 -1
  212. package/mysql-proxy/session.d.cts +13 -8
  213. package/mysql-proxy/session.d.ts +13 -8
  214. package/mysql-proxy/session.js +27 -2
  215. package/mysql-proxy/session.js.map +1 -1
  216. package/mysql2/driver.cjs +24 -7
  217. package/mysql2/driver.cjs.map +1 -1
  218. package/mysql2/driver.d.cts +10 -9
  219. package/mysql2/driver.d.ts +10 -9
  220. package/mysql2/driver.js +14 -10
  221. package/mysql2/driver.js.map +1 -1
  222. package/mysql2/migrator.cjs.map +1 -1
  223. package/mysql2/migrator.d.cts +2 -1
  224. package/mysql2/migrator.d.ts +2 -1
  225. package/mysql2/migrator.js.map +1 -1
  226. package/mysql2/session.cjs +30 -2
  227. package/mysql2/session.cjs.map +1 -1
  228. package/mysql2/session.d.cts +13 -8
  229. package/mysql2/session.d.ts +13 -8
  230. package/mysql2/session.js +30 -2
  231. package/mysql2/session.js.map +1 -1
  232. package/neon/index.cjs +0 -2
  233. package/neon/index.cjs.map +1 -1
  234. package/neon/index.d.cts +0 -1
  235. package/neon/index.d.ts +0 -1
  236. package/neon/index.js +0 -1
  237. package/neon/index.js.map +1 -1
  238. package/neon-http/driver.cjs +21 -7
  239. package/neon-http/driver.cjs.map +1 -1
  240. package/neon-http/driver.d.cts +10 -9
  241. package/neon-http/driver.d.ts +10 -9
  242. package/neon-http/driver.js +11 -7
  243. package/neon-http/driver.js.map +1 -1
  244. package/neon-http/migrator.cjs.map +1 -1
  245. package/neon-http/migrator.d.cts +2 -1
  246. package/neon-http/migrator.d.ts +2 -1
  247. package/neon-http/migrator.js.map +1 -1
  248. package/neon-http/session.cjs +32 -2
  249. package/neon-http/session.cjs.map +1 -1
  250. package/neon-http/session.d.cts +13 -8
  251. package/neon-http/session.d.ts +13 -8
  252. package/neon-http/session.js +32 -2
  253. package/neon-http/session.js.map +1 -1
  254. package/neon-serverless/driver.cjs +18 -7
  255. package/neon-serverless/driver.cjs.map +1 -1
  256. package/neon-serverless/driver.d.cts +9 -8
  257. package/neon-serverless/driver.d.ts +9 -8
  258. package/neon-serverless/driver.js +8 -10
  259. package/neon-serverless/driver.js.map +1 -1
  260. package/neon-serverless/migrator.cjs.map +1 -1
  261. package/neon-serverless/migrator.d.cts +2 -1
  262. package/neon-serverless/migrator.d.ts +2 -1
  263. package/neon-serverless/migrator.js.map +1 -1
  264. package/neon-serverless/session.cjs +40 -5
  265. package/neon-serverless/session.cjs.map +1 -1
  266. package/neon-serverless/session.d.cts +13 -8
  267. package/neon-serverless/session.d.ts +13 -8
  268. package/neon-serverless/session.js +40 -5
  269. package/neon-serverless/session.js.map +1 -1
  270. package/node-postgres/driver.cjs +13 -7
  271. package/node-postgres/driver.cjs.map +1 -1
  272. package/node-postgres/driver.d.cts +9 -8
  273. package/node-postgres/driver.d.ts +9 -8
  274. package/node-postgres/driver.js +13 -10
  275. package/node-postgres/driver.js.map +1 -1
  276. package/node-postgres/migrator.cjs.map +1 -1
  277. package/node-postgres/migrator.d.cts +2 -1
  278. package/node-postgres/migrator.d.ts +2 -1
  279. package/node-postgres/migrator.js.map +1 -1
  280. package/node-postgres/session.cjs +45 -4
  281. package/node-postgres/session.cjs.map +1 -1
  282. package/node-postgres/session.d.cts +13 -8
  283. package/node-postgres/session.d.ts +13 -8
  284. package/node-postgres/session.js +45 -4
  285. package/node-postgres/session.js.map +1 -1
  286. package/op-sqlite/driver.cjs +22 -5
  287. package/op-sqlite/driver.cjs.map +1 -1
  288. package/op-sqlite/driver.d.cts +3 -2
  289. package/op-sqlite/driver.d.ts +3 -2
  290. package/op-sqlite/driver.js +12 -8
  291. package/op-sqlite/driver.js.map +1 -1
  292. package/op-sqlite/migrator.cjs.map +1 -1
  293. package/op-sqlite/migrator.d.cts +3 -2
  294. package/op-sqlite/migrator.d.ts +3 -2
  295. package/op-sqlite/migrator.js.map +1 -1
  296. package/op-sqlite/session.cjs +47 -4
  297. package/op-sqlite/session.cjs.map +1 -1
  298. package/op-sqlite/session.d.cts +14 -8
  299. package/op-sqlite/session.d.ts +14 -8
  300. package/op-sqlite/session.js +47 -4
  301. package/op-sqlite/session.js.map +1 -1
  302. package/package.json +51 -15
  303. package/pg-core/db.cjs +42 -24
  304. package/pg-core/db.cjs.map +1 -1
  305. package/pg-core/db.d.cts +23 -13
  306. package/pg-core/db.d.ts +23 -13
  307. package/pg-core/db.js +41 -23
  308. package/pg-core/db.js.map +1 -1
  309. package/pg-core/dialect.cjs +161 -488
  310. package/pg-core/dialect.cjs.map +1 -1
  311. package/pg-core/dialect.d.cts +24 -7
  312. package/pg-core/dialect.d.ts +24 -7
  313. package/pg-core/dialect.js +158 -494
  314. package/pg-core/dialect.js.map +1 -1
  315. package/pg-core/query-builders/_query.cjs +155 -0
  316. package/pg-core/query-builders/_query.cjs.map +1 -0
  317. package/pg-core/query-builders/_query.d.cts +47 -0
  318. package/pg-core/query-builders/_query.d.ts +47 -0
  319. package/pg-core/query-builders/_query.js +120 -0
  320. package/pg-core/query-builders/_query.js.map +1 -0
  321. package/pg-core/query-builders/count.cjs.map +1 -1
  322. package/pg-core/query-builders/count.d.cts +1 -1
  323. package/pg-core/query-builders/count.d.ts +1 -1
  324. package/pg-core/query-builders/count.js.map +1 -1
  325. package/pg-core/query-builders/delete.cjs +0 -13
  326. package/pg-core/query-builders/delete.cjs.map +1 -1
  327. package/pg-core/query-builders/delete.d.cts +10 -13
  328. package/pg-core/query-builders/delete.d.ts +10 -13
  329. package/pg-core/query-builders/delete.js +1 -14
  330. package/pg-core/query-builders/delete.js.map +1 -1
  331. package/pg-core/query-builders/insert.cjs +0 -13
  332. package/pg-core/query-builders/insert.cjs.map +1 -1
  333. package/pg-core/query-builders/insert.d.cts +8 -10
  334. package/pg-core/query-builders/insert.d.ts +8 -10
  335. package/pg-core/query-builders/insert.js +1 -14
  336. package/pg-core/query-builders/insert.js.map +1 -1
  337. package/pg-core/query-builders/query-builder.cjs +11 -15
  338. package/pg-core/query-builders/query-builder.cjs.map +1 -1
  339. package/pg-core/query-builders/query-builder.d.cts +6 -3
  340. package/pg-core/query-builders/query-builder.d.ts +6 -3
  341. package/pg-core/query-builders/query-builder.js +11 -15
  342. package/pg-core/query-builders/query-builder.js.map +1 -1
  343. package/pg-core/query-builders/query.cjs +15 -18
  344. package/pg-core/query-builders/query.cjs.map +1 -1
  345. package/pg-core/query-builders/query.d.cts +6 -6
  346. package/pg-core/query-builders/query.d.ts +6 -6
  347. package/pg-core/query-builders/query.js +15 -18
  348. package/pg-core/query-builders/query.js.map +1 -1
  349. package/pg-core/query-builders/select.cjs +7 -8
  350. package/pg-core/query-builders/select.cjs.map +1 -1
  351. package/pg-core/query-builders/select.d.cts +3 -3
  352. package/pg-core/query-builders/select.d.ts +3 -3
  353. package/pg-core/query-builders/select.js +7 -8
  354. package/pg-core/query-builders/select.js.map +1 -1
  355. package/pg-core/query-builders/select.types.cjs.map +1 -1
  356. package/pg-core/query-builders/select.types.d.cts +2 -3
  357. package/pg-core/query-builders/select.types.d.ts +2 -3
  358. package/pg-core/query-builders/update.cjs +2 -15
  359. package/pg-core/query-builders/update.cjs.map +1 -1
  360. package/pg-core/query-builders/update.d.cts +13 -18
  361. package/pg-core/query-builders/update.d.ts +13 -18
  362. package/pg-core/query-builders/update.js +3 -16
  363. package/pg-core/query-builders/update.js.map +1 -1
  364. package/pg-core/session.cjs +3 -2
  365. package/pg-core/session.cjs.map +1 -1
  366. package/pg-core/session.d.cts +9 -6
  367. package/pg-core/session.d.ts +9 -6
  368. package/pg-core/session.js +3 -2
  369. package/pg-core/session.js.map +1 -1
  370. package/pg-core/subquery.cjs.map +1 -1
  371. package/pg-core/subquery.d.cts +2 -15
  372. package/pg-core/subquery.d.ts +2 -15
  373. package/pg-proxy/driver.cjs +21 -5
  374. package/pg-proxy/driver.cjs.map +1 -1
  375. package/pg-proxy/driver.d.cts +3 -2
  376. package/pg-proxy/driver.d.ts +3 -2
  377. package/pg-proxy/driver.js +11 -8
  378. package/pg-proxy/driver.js.map +1 -1
  379. package/pg-proxy/migrator.cjs.map +1 -1
  380. package/pg-proxy/migrator.d.cts +2 -1
  381. package/pg-proxy/migrator.d.ts +2 -1
  382. package/pg-proxy/migrator.js.map +1 -1
  383. package/pg-proxy/session.cjs +37 -2
  384. package/pg-proxy/session.cjs.map +1 -1
  385. package/pg-proxy/session.d.cts +13 -8
  386. package/pg-proxy/session.d.ts +13 -8
  387. package/pg-proxy/session.js +37 -2
  388. package/pg-proxy/session.js.map +1 -1
  389. package/pglite/driver.cjs +23 -7
  390. package/pglite/driver.cjs.map +1 -1
  391. package/pglite/driver.d.cts +9 -8
  392. package/pglite/driver.d.ts +9 -8
  393. package/pglite/driver.js +13 -10
  394. package/pglite/driver.js.map +1 -1
  395. package/pglite/migrator.cjs.map +1 -1
  396. package/pglite/migrator.d.cts +2 -1
  397. package/pglite/migrator.d.ts +2 -1
  398. package/pglite/migrator.js.map +1 -1
  399. package/pglite/session.cjs +34 -3
  400. package/pglite/session.cjs.map +1 -1
  401. package/pglite/session.d.cts +13 -8
  402. package/pglite/session.d.ts +13 -8
  403. package/pglite/session.js +34 -3
  404. package/pglite/session.js.map +1 -1
  405. package/planetscale-serverless/driver.cjs +22 -5
  406. package/planetscale-serverless/driver.cjs.map +1 -1
  407. package/planetscale-serverless/driver.d.cts +7 -6
  408. package/planetscale-serverless/driver.d.ts +7 -6
  409. package/planetscale-serverless/driver.js +12 -8
  410. package/planetscale-serverless/driver.js.map +1 -1
  411. package/planetscale-serverless/migrator.cjs.map +1 -1
  412. package/planetscale-serverless/migrator.d.cts +2 -1
  413. package/planetscale-serverless/migrator.d.ts +2 -1
  414. package/planetscale-serverless/migrator.js.map +1 -1
  415. package/planetscale-serverless/session.cjs +45 -5
  416. package/planetscale-serverless/session.cjs.map +1 -1
  417. package/planetscale-serverless/session.d.cts +14 -9
  418. package/planetscale-serverless/session.d.ts +14 -9
  419. package/planetscale-serverless/session.js +45 -5
  420. package/planetscale-serverless/session.js.map +1 -1
  421. package/postgres-js/driver.cjs +6 -5
  422. package/postgres-js/driver.cjs.map +1 -1
  423. package/postgres-js/driver.d.cts +7 -6
  424. package/postgres-js/driver.d.ts +7 -6
  425. package/postgres-js/driver.js +6 -8
  426. package/postgres-js/driver.js.map +1 -1
  427. package/postgres-js/migrator.cjs.map +1 -1
  428. package/postgres-js/migrator.d.cts +2 -1
  429. package/postgres-js/migrator.d.ts +2 -1
  430. package/postgres-js/migrator.js.map +1 -1
  431. package/postgres-js/session.cjs +51 -6
  432. package/postgres-js/session.cjs.map +1 -1
  433. package/postgres-js/session.d.cts +15 -9
  434. package/postgres-js/session.d.ts +15 -9
  435. package/postgres-js/session.js +51 -6
  436. package/postgres-js/session.js.map +1 -1
  437. package/prisma/mysql/driver.cjs +1 -1
  438. package/prisma/mysql/driver.cjs.map +1 -1
  439. package/prisma/mysql/driver.js +1 -1
  440. package/prisma/mysql/driver.js.map +1 -1
  441. package/prisma/mysql/session.cjs +3 -0
  442. package/prisma/mysql/session.cjs.map +1 -1
  443. package/prisma/mysql/session.d.cts +3 -1
  444. package/prisma/mysql/session.d.ts +3 -1
  445. package/prisma/mysql/session.js +3 -0
  446. package/prisma/mysql/session.js.map +1 -1
  447. package/prisma/pg/driver.cjs +1 -1
  448. package/prisma/pg/driver.cjs.map +1 -1
  449. package/prisma/pg/driver.js +1 -1
  450. package/prisma/pg/driver.js.map +1 -1
  451. package/prisma/pg/session.cjs +3 -0
  452. package/prisma/pg/session.cjs.map +1 -1
  453. package/prisma/pg/session.d.cts +3 -1
  454. package/prisma/pg/session.d.ts +3 -1
  455. package/prisma/pg/session.js +3 -0
  456. package/prisma/pg/session.js.map +1 -1
  457. package/prisma/sqlite/driver.cjs +1 -1
  458. package/prisma/sqlite/driver.cjs.map +1 -1
  459. package/prisma/sqlite/driver.js +1 -1
  460. package/prisma/sqlite/driver.js.map +1 -1
  461. package/prisma/sqlite/session.cjs +3 -0
  462. package/prisma/sqlite/session.cjs.map +1 -1
  463. package/prisma/sqlite/session.d.cts +4 -2
  464. package/prisma/sqlite/session.d.ts +4 -2
  465. package/prisma/sqlite/session.js +3 -0
  466. package/prisma/sqlite/session.js.map +1 -1
  467. package/query-builders/select.types.cjs.map +1 -1
  468. package/query-builders/select.types.d.cts +1 -1
  469. package/query-builders/select.types.d.ts +1 -1
  470. package/relations.cjs +595 -245
  471. package/relations.cjs.map +1 -1
  472. package/relations.d.cts +276 -131
  473. package/relations.d.ts +276 -131
  474. package/relations.js +589 -239
  475. package/relations.js.map +1 -1
  476. package/singlestore/driver.cjs +1 -1
  477. package/singlestore/driver.cjs.map +1 -1
  478. package/singlestore/driver.d.cts +1 -1
  479. package/singlestore/driver.d.ts +1 -1
  480. package/singlestore/driver.js +3 -3
  481. package/singlestore/driver.js.map +1 -1
  482. package/singlestore/session.cjs.map +1 -1
  483. package/singlestore/session.d.cts +4 -4
  484. package/singlestore/session.d.ts +4 -4
  485. package/singlestore/session.js.map +1 -1
  486. package/singlestore-core/db.cjs +11 -17
  487. package/singlestore-core/db.cjs.map +1 -1
  488. package/singlestore-core/db.d.cts +10 -7
  489. package/singlestore-core/db.d.ts +10 -7
  490. package/singlestore-core/db.js +11 -17
  491. package/singlestore-core/db.js.map +1 -1
  492. package/singlestore-core/dialect.cjs +16 -6
  493. package/singlestore-core/dialect.cjs.map +1 -1
  494. package/singlestore-core/dialect.d.cts +6 -6
  495. package/singlestore-core/dialect.d.ts +6 -6
  496. package/singlestore-core/dialect.js +6 -12
  497. package/singlestore-core/dialect.js.map +1 -1
  498. package/singlestore-core/query-builders/query-builder.cjs +11 -15
  499. package/singlestore-core/query-builders/query-builder.cjs.map +1 -1
  500. package/singlestore-core/query-builders/query-builder.d.cts +6 -2
  501. package/singlestore-core/query-builders/query-builder.d.ts +6 -2
  502. package/singlestore-core/query-builders/query-builder.js +11 -15
  503. package/singlestore-core/query-builders/query-builder.js.map +1 -1
  504. package/singlestore-core/query-builders/query.cjs +12 -2
  505. package/singlestore-core/query-builders/query.cjs.map +1 -1
  506. package/singlestore-core/query-builders/query.d.cts +6 -6
  507. package/singlestore-core/query-builders/query.d.ts +6 -6
  508. package/singlestore-core/query-builders/query.js +2 -4
  509. package/singlestore-core/query-builders/query.js.map +1 -1
  510. package/singlestore-core/session.cjs.map +1 -1
  511. package/singlestore-core/session.d.cts +5 -5
  512. package/singlestore-core/session.d.ts +5 -5
  513. package/singlestore-core/session.js.map +1 -1
  514. package/singlestore-core/subquery.cjs.map +1 -1
  515. package/singlestore-core/subquery.d.cts +2 -15
  516. package/singlestore-core/subquery.d.ts +2 -15
  517. package/singlestore-proxy/driver.cjs +1 -1
  518. package/singlestore-proxy/driver.cjs.map +1 -1
  519. package/singlestore-proxy/driver.js +3 -3
  520. package/singlestore-proxy/driver.js.map +1 -1
  521. package/singlestore-proxy/session.cjs.map +1 -1
  522. package/singlestore-proxy/session.d.cts +4 -4
  523. package/singlestore-proxy/session.d.ts +4 -4
  524. package/singlestore-proxy/session.js.map +1 -1
  525. package/sql/sql.cjs +1 -6
  526. package/sql/sql.cjs.map +1 -1
  527. package/sql/sql.d.cts +8 -9
  528. package/sql/sql.d.ts +8 -9
  529. package/sql/sql.js +1 -5
  530. package/sql/sql.js.map +1 -1
  531. package/sql-js/driver.cjs +16 -5
  532. package/sql-js/driver.cjs.map +1 -1
  533. package/sql-js/driver.d.cts +3 -2
  534. package/sql-js/driver.d.ts +3 -2
  535. package/sql-js/driver.js +6 -8
  536. package/sql-js/driver.js.map +1 -1
  537. package/sql-js/migrator.cjs.map +1 -1
  538. package/sql-js/migrator.d.cts +2 -1
  539. package/sql-js/migrator.d.ts +2 -1
  540. package/sql-js/migrator.js.map +1 -1
  541. package/sql-js/session.cjs +76 -4
  542. package/sql-js/session.cjs.map +1 -1
  543. package/sql-js/session.d.cts +15 -8
  544. package/sql-js/session.d.ts +15 -8
  545. package/sql-js/session.js +76 -4
  546. package/sql-js/session.js.map +1 -1
  547. package/sqlite-core/db.cjs +49 -31
  548. package/sqlite-core/db.cjs.map +1 -1
  549. package/sqlite-core/db.d.cts +23 -12
  550. package/sqlite-core/db.d.ts +23 -12
  551. package/sqlite-core/db.js +48 -30
  552. package/sqlite-core/db.js.map +1 -1
  553. package/sqlite-core/dialect.cjs +183 -7
  554. package/sqlite-core/dialect.cjs.map +1 -1
  555. package/sqlite-core/dialect.d.cts +28 -9
  556. package/sqlite-core/dialect.d.ts +28 -9
  557. package/sqlite-core/dialect.js +180 -13
  558. package/sqlite-core/dialect.js.map +1 -1
  559. package/sqlite-core/query-builders/_query.cjs +187 -0
  560. package/sqlite-core/query-builders/_query.cjs.map +1 -0
  561. package/sqlite-core/query-builders/_query.d.cts +55 -0
  562. package/sqlite-core/query-builders/_query.d.ts +55 -0
  563. package/sqlite-core/query-builders/_query.js +151 -0
  564. package/sqlite-core/query-builders/_query.js.map +1 -0
  565. package/sqlite-core/query-builders/count.cjs.map +1 -1
  566. package/sqlite-core/query-builders/count.d.cts +1 -1
  567. package/sqlite-core/query-builders/count.d.ts +1 -1
  568. package/sqlite-core/query-builders/count.js.map +1 -1
  569. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  570. package/sqlite-core/query-builders/delete.d.cts +1 -1
  571. package/sqlite-core/query-builders/delete.d.ts +1 -1
  572. package/sqlite-core/query-builders/delete.js.map +1 -1
  573. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  574. package/sqlite-core/query-builders/insert.d.cts +3 -3
  575. package/sqlite-core/query-builders/insert.d.ts +3 -3
  576. package/sqlite-core/query-builders/insert.js.map +1 -1
  577. package/sqlite-core/query-builders/query-builder.cjs +11 -15
  578. package/sqlite-core/query-builders/query-builder.cjs.map +1 -1
  579. package/sqlite-core/query-builders/query-builder.d.cts +6 -2
  580. package/sqlite-core/query-builders/query-builder.d.ts +6 -2
  581. package/sqlite-core/query-builders/query-builder.js +11 -15
  582. package/sqlite-core/query-builders/query-builder.js.map +1 -1
  583. package/sqlite-core/query-builders/query.cjs +53 -32
  584. package/sqlite-core/query-builders/query.cjs.map +1 -1
  585. package/sqlite-core/query-builders/query.d.cts +18 -17
  586. package/sqlite-core/query-builders/query.d.ts +18 -17
  587. package/sqlite-core/query-builders/query.js +53 -32
  588. package/sqlite-core/query-builders/query.js.map +1 -1
  589. package/sqlite-core/query-builders/select.cjs.map +1 -1
  590. package/sqlite-core/query-builders/select.d.cts +3 -3
  591. package/sqlite-core/query-builders/select.d.ts +3 -3
  592. package/sqlite-core/query-builders/select.js.map +1 -1
  593. package/sqlite-core/query-builders/update.cjs.map +1 -1
  594. package/sqlite-core/query-builders/update.d.cts +3 -3
  595. package/sqlite-core/query-builders/update.d.ts +3 -3
  596. package/sqlite-core/query-builders/update.js.map +1 -1
  597. package/sqlite-core/session.cjs +6 -2
  598. package/sqlite-core/session.cjs.map +1 -1
  599. package/sqlite-core/session.d.cts +15 -7
  600. package/sqlite-core/session.d.ts +15 -7
  601. package/sqlite-core/session.js +6 -2
  602. package/sqlite-core/session.js.map +1 -1
  603. package/sqlite-core/subquery.cjs.map +1 -1
  604. package/sqlite-core/subquery.d.cts +2 -15
  605. package/sqlite-core/subquery.d.ts +2 -15
  606. package/sqlite-proxy/driver.cjs +23 -5
  607. package/sqlite-proxy/driver.cjs.map +1 -1
  608. package/sqlite-proxy/driver.d.cts +4 -3
  609. package/sqlite-proxy/driver.d.ts +4 -3
  610. package/sqlite-proxy/driver.js +13 -5
  611. package/sqlite-proxy/driver.js.map +1 -1
  612. package/sqlite-proxy/migrator.cjs.map +1 -1
  613. package/sqlite-proxy/migrator.d.cts +2 -1
  614. package/sqlite-proxy/migrator.d.ts +2 -1
  615. package/sqlite-proxy/migrator.js.map +1 -1
  616. package/sqlite-proxy/session.cjs +50 -6
  617. package/sqlite-proxy/session.cjs.map +1 -1
  618. package/sqlite-proxy/session.d.cts +14 -8
  619. package/sqlite-proxy/session.d.ts +14 -8
  620. package/sqlite-proxy/session.js +50 -6
  621. package/sqlite-proxy/session.js.map +1 -1
  622. package/subquery.cjs.map +1 -1
  623. package/subquery.d.cts +0 -1
  624. package/subquery.d.ts +0 -1
  625. package/subquery.js.map +1 -1
  626. package/table.cjs.map +1 -1
  627. package/table.d.cts +1 -1
  628. package/table.d.ts +1 -1
  629. package/table.js.map +1 -1
  630. package/tidb-serverless/driver.cjs +22 -5
  631. package/tidb-serverless/driver.cjs.map +1 -1
  632. package/tidb-serverless/driver.d.cts +7 -6
  633. package/tidb-serverless/driver.d.ts +7 -6
  634. package/tidb-serverless/driver.js +12 -8
  635. package/tidb-serverless/driver.js.map +1 -1
  636. package/tidb-serverless/migrator.cjs.map +1 -1
  637. package/tidb-serverless/migrator.d.cts +2 -1
  638. package/tidb-serverless/migrator.d.ts +2 -1
  639. package/tidb-serverless/migrator.js.map +1 -1
  640. package/tidb-serverless/session.cjs +62 -5
  641. package/tidb-serverless/session.cjs.map +1 -1
  642. package/tidb-serverless/session.d.cts +14 -9
  643. package/tidb-serverless/session.d.ts +14 -9
  644. package/tidb-serverless/session.js +62 -5
  645. package/tidb-serverless/session.js.map +1 -1
  646. package/utils.cjs +2 -2
  647. package/utils.cjs.map +1 -1
  648. package/utils.d.cts +3 -1
  649. package/utils.d.ts +3 -1
  650. package/utils.js +2 -2
  651. package/utils.js.map +1 -1
  652. package/vercel-postgres/driver.cjs +23 -7
  653. package/vercel-postgres/driver.cjs.map +1 -1
  654. package/vercel-postgres/driver.d.cts +9 -8
  655. package/vercel-postgres/driver.d.ts +9 -8
  656. package/vercel-postgres/driver.js +13 -10
  657. package/vercel-postgres/driver.js.map +1 -1
  658. package/vercel-postgres/migrator.cjs.map +1 -1
  659. package/vercel-postgres/migrator.d.cts +2 -1
  660. package/vercel-postgres/migrator.d.ts +2 -1
  661. package/vercel-postgres/migrator.js.map +1 -1
  662. package/vercel-postgres/session.cjs +34 -8
  663. package/vercel-postgres/session.cjs.map +1 -1
  664. package/vercel-postgres/session.d.cts +14 -10
  665. package/vercel-postgres/session.d.ts +14 -10
  666. package/vercel-postgres/session.js +34 -8
  667. package/vercel-postgres/session.js.map +1 -1
  668. package/version.cjs +1 -1
  669. package/version.d.cts +1 -1
  670. package/version.d.ts +1 -1
  671. package/version.js +1 -1
  672. package/xata-http/driver.cjs +17 -5
  673. package/xata-http/driver.cjs.map +1 -1
  674. package/xata-http/driver.d.cts +5 -4
  675. package/xata-http/driver.d.ts +5 -4
  676. package/xata-http/driver.js +7 -5
  677. package/xata-http/driver.js.map +1 -1
  678. package/xata-http/migrator.cjs.map +1 -1
  679. package/xata-http/migrator.d.cts +2 -1
  680. package/xata-http/migrator.d.ts +2 -1
  681. package/xata-http/migrator.js.map +1 -1
  682. package/xata-http/session.cjs +30 -2
  683. package/xata-http/session.cjs.map +1 -1
  684. package/xata-http/session.d.cts +13 -8
  685. package/xata-http/session.d.ts +13 -8
  686. package/xata-http/session.js +30 -2
  687. package/xata-http/session.js.map +1 -1
  688. package/neon/neon-identity.cjs +0 -38
  689. package/neon/neon-identity.cjs.map +0 -1
  690. package/neon/neon-identity.d.cts +0 -116
  691. package/neon/neon-identity.d.ts +0 -116
  692. package/neon/neon-identity.js +0 -14
  693. package/neon/neon-identity.js.map +0 -1
@@ -4,50 +4,47 @@ import {
4
4
  mapRelationalRow
5
5
  } from "../../relations.js";
6
6
  class RelationalQueryBuilder {
7
- constructor(fullSchema, schema, tableNamesMap, table, tableConfig, dialect, session, mode) {
8
- this.fullSchema = fullSchema;
7
+ constructor(tables, schema, tableNamesMap, table, tableConfig, dialect, session) {
8
+ this.tables = tables;
9
9
  this.schema = schema;
10
10
  this.tableNamesMap = tableNamesMap;
11
11
  this.table = table;
12
12
  this.tableConfig = tableConfig;
13
13
  this.dialect = dialect;
14
14
  this.session = session;
15
- this.mode = mode;
16
15
  }
17
- static [entityKind] = "MySqlRelationalQueryBuilder";
16
+ static [entityKind] = "MySqlRelationalQueryBuilderV2";
18
17
  findMany(config) {
19
18
  return new MySqlRelationalQuery(
20
- this.fullSchema,
19
+ this.tables,
21
20
  this.schema,
22
21
  this.tableNamesMap,
23
22
  this.table,
24
23
  this.tableConfig,
25
24
  this.dialect,
26
25
  this.session,
27
- config ? config : {},
28
- "many",
29
- this.mode
26
+ config ?? true,
27
+ "many"
30
28
  );
31
29
  }
32
30
  findFirst(config) {
33
31
  return new MySqlRelationalQuery(
34
- this.fullSchema,
32
+ this.tables,
35
33
  this.schema,
36
34
  this.tableNamesMap,
37
35
  this.table,
38
36
  this.tableConfig,
39
37
  this.dialect,
40
38
  this.session,
41
- config ? { ...config, limit: 1 } : { limit: 1 },
42
- "first",
43
- this.mode
39
+ config ?? true,
40
+ "first"
44
41
  );
45
42
  }
46
43
  }
47
44
  class MySqlRelationalQuery extends QueryPromise {
48
- constructor(fullSchema, schema, tableNamesMap, table, tableConfig, dialect, session, config, queryMode, mode) {
45
+ constructor(tables, schema, tableNamesMap, table, tableConfig, dialect, session, config, mode) {
49
46
  super();
50
- this.fullSchema = fullSchema;
47
+ this.tables = tables;
51
48
  this.schema = schema;
52
49
  this.tableNamesMap = tableNamesMap;
53
50
  this.table = table;
@@ -55,18 +52,17 @@ class MySqlRelationalQuery extends QueryPromise {
55
52
  this.dialect = dialect;
56
53
  this.session = session;
57
54
  this.config = config;
58
- this.queryMode = queryMode;
59
55
  this.mode = mode;
60
56
  }
61
- static [entityKind] = "MySqlRelationalQuery";
57
+ static [entityKind] = "MySqlRelationalQueryV2";
62
58
  prepare() {
63
59
  const { query, builtQuery } = this._toSQL();
64
- return this.session.prepareQuery(
60
+ return this.session.prepareRelationalQuery(
65
61
  builtQuery,
66
62
  void 0,
67
63
  (rawRows) => {
68
- const rows = rawRows.map((row) => mapRelationalRow(this.schema, this.tableConfig, row, query.selection));
69
- if (this.queryMode === "first") {
64
+ const rows = rawRows.map((row) => mapRelationalRow(row, query.selection));
65
+ if (this.mode === "first") {
70
66
  return rows[0];
71
67
  }
72
68
  return rows;
@@ -74,24 +70,15 @@ class MySqlRelationalQuery extends QueryPromise {
74
70
  );
75
71
  }
76
72
  _getQuery() {
77
- const query = this.mode === "planetscale" ? this.dialect.buildRelationalQueryWithoutLateralSubqueries({
78
- fullSchema: this.fullSchema,
79
- schema: this.schema,
80
- tableNamesMap: this.tableNamesMap,
81
- table: this.table,
82
- tableConfig: this.tableConfig,
83
- queryConfig: this.config,
84
- tableAlias: this.tableConfig.tsName
85
- }) : this.dialect.buildRelationalQuery({
86
- fullSchema: this.fullSchema,
73
+ return this.dialect.buildRelationalQuery({
87
74
  schema: this.schema,
88
75
  tableNamesMap: this.tableNamesMap,
89
76
  table: this.table,
90
77
  tableConfig: this.tableConfig,
91
78
  queryConfig: this.config,
92
- tableAlias: this.tableConfig.tsName
79
+ tables: this.tables,
80
+ mode: this.mode
93
81
  });
94
- return query;
95
82
  }
96
83
  _toSQL() {
97
84
  const query = this._getQuery();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mysql-core/query-builders/query.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport {\n\ttype BuildQueryResult,\n\ttype BuildRelationalQueryResult,\n\ttype DBQueryConfig,\n\tmapRelationalRow,\n\ttype TableRelationalConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { Query, QueryWithTypings, SQL } from '~/sql/sql.ts';\nimport type { KnownKeysOnly } from '~/utils.ts';\nimport type { MySqlDialect } from '../dialect.ts';\nimport type {\n\tMode,\n\tMySqlPreparedQueryConfig,\n\tMySqlSession,\n\tPreparedQueryHKTBase,\n\tPreparedQueryKind,\n} from '../session.ts';\nimport type { MySqlTable } from '../table.ts';\n\nexport class RelationalQueryBuilder<\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTSchema extends TablesRelationalConfig,\n\tTFields extends TableRelationalConfig,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlRelationalQueryBuilder';\n\n\tconstructor(\n\t\tprivate fullSchema: Record<string, unknown>,\n\t\tprivate schema: TSchema,\n\t\tprivate tableNamesMap: Record<string, string>,\n\t\tprivate table: MySqlTable,\n\t\tprivate tableConfig: TableRelationalConfig,\n\t\tprivate dialect: MySqlDialect,\n\t\tprivate session: MySqlSession,\n\t\tprivate mode: Mode,\n\t) {}\n\n\tfindMany<TConfig extends DBQueryConfig<'many', true, TSchema, TFields>>(\n\t\tconfig?: KnownKeysOnly<TConfig, DBQueryConfig<'many', true, TSchema, TFields>>,\n\t): MySqlRelationalQuery<TPreparedQueryHKT, BuildQueryResult<TSchema, TFields, TConfig>[]> {\n\t\treturn new MySqlRelationalQuery(\n\t\t\tthis.fullSchema,\n\t\t\tthis.schema,\n\t\t\tthis.tableNamesMap,\n\t\t\tthis.table,\n\t\t\tthis.tableConfig,\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tconfig ? (config as DBQueryConfig<'many', true>) : {},\n\t\t\t'many',\n\t\t\tthis.mode,\n\t\t);\n\t}\n\n\tfindFirst<TSelection extends Omit<DBQueryConfig<'many', true, TSchema, TFields>, 'limit'>>(\n\t\tconfig?: KnownKeysOnly<TSelection, Omit<DBQueryConfig<'many', true, TSchema, TFields>, 'limit'>>,\n\t): MySqlRelationalQuery<TPreparedQueryHKT, BuildQueryResult<TSchema, TFields, TSelection> | undefined> {\n\t\treturn new MySqlRelationalQuery(\n\t\t\tthis.fullSchema,\n\t\t\tthis.schema,\n\t\t\tthis.tableNamesMap,\n\t\t\tthis.table,\n\t\t\tthis.tableConfig,\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tconfig ? { ...(config as DBQueryConfig<'many', true> | undefined), limit: 1 } : { limit: 1 },\n\t\t\t'first',\n\t\t\tthis.mode,\n\t\t);\n\t}\n}\n\nexport class MySqlRelationalQuery<\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTResult,\n> extends QueryPromise<TResult> {\n\tstatic override readonly [entityKind]: string = 'MySqlRelationalQuery';\n\n\tdeclare protected $brand: 'MySqlRelationalQuery';\n\n\tconstructor(\n\t\tprivate fullSchema: Record<string, unknown>,\n\t\tprivate schema: TablesRelationalConfig,\n\t\tprivate tableNamesMap: Record<string, string>,\n\t\tprivate table: MySqlTable,\n\t\tprivate tableConfig: TableRelationalConfig,\n\t\tprivate dialect: MySqlDialect,\n\t\tprivate session: MySqlSession,\n\t\tprivate config: DBQueryConfig<'many', true> | true,\n\t\tprivate queryMode: 'many' | 'first',\n\t\tprivate mode?: Mode,\n\t) {\n\t\tsuper();\n\t}\n\n\tprepare() {\n\t\tconst { query, builtQuery } = this._toSQL();\n\t\treturn this.session.prepareQuery(\n\t\t\tbuiltQuery,\n\t\t\tundefined,\n\t\t\t(rawRows) => {\n\t\t\t\tconst rows = rawRows.map((row) => mapRelationalRow(this.schema, this.tableConfig, row, query.selection));\n\t\t\t\tif (this.queryMode === 'first') {\n\t\t\t\t\treturn rows[0] as TResult;\n\t\t\t\t}\n\t\t\t\treturn rows as TResult;\n\t\t\t},\n\t\t) as PreparedQueryKind<TPreparedQueryHKT, MySqlPreparedQueryConfig & { execute: TResult }, true>;\n\t}\n\n\tprivate _getQuery() {\n\t\tconst query = this.mode === 'planetscale'\n\t\t\t? this.dialect.buildRelationalQueryWithoutLateralSubqueries({\n\t\t\t\tfullSchema: this.fullSchema,\n\t\t\t\tschema: this.schema,\n\t\t\t\ttableNamesMap: this.tableNamesMap,\n\t\t\t\ttable: this.table,\n\t\t\t\ttableConfig: this.tableConfig,\n\t\t\t\tqueryConfig: this.config,\n\t\t\t\ttableAlias: this.tableConfig.tsName,\n\t\t\t})\n\t\t\t: this.dialect.buildRelationalQuery({\n\t\t\t\tfullSchema: this.fullSchema,\n\t\t\t\tschema: this.schema,\n\t\t\t\ttableNamesMap: this.tableNamesMap,\n\t\t\t\ttable: this.table,\n\t\t\t\ttableConfig: this.tableConfig,\n\t\t\t\tqueryConfig: this.config,\n\t\t\t\ttableAlias: this.tableConfig.tsName,\n\t\t\t});\n\t\treturn query;\n\t}\n\n\tprivate _toSQL(): { query: BuildRelationalQueryResult; builtQuery: QueryWithTypings } {\n\t\tconst query = this._getQuery();\n\n\t\tconst builtQuery = this.dialect.sqlToQuery(query.sql as SQL);\n\n\t\treturn { builtQuery, query };\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this._getQuery().sql as SQL;\n\t}\n\n\ttoSQL(): Query {\n\t\treturn this._toSQL().builtQuery;\n\t}\n\n\toverride execute(): Promise<TResult> {\n\t\treturn this.prepare().execute();\n\t}\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B;AAAA,EAIC;AAAA,OAGM;AAaA,MAAM,uBAIX;AAAA,EAGD,YACS,YACA,QACA,eACA,OACA,aACA,SACA,SACA,MACP;AARO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACN;AAAA,EAXH,QAAiB,UAAU,IAAY;AAAA,EAavC,SACC,QACyF;AACzF,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,SAAU,SAAyC,CAAC;AAAA,MACpD;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AAAA,EAEA,UACC,QACsG;AACtG,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,SAAS,EAAE,GAAI,QAAoD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;AAAA,MAC3F;AAAA,MACA,KAAK;AAAA,IACN;AAAA,EACD;AACD;AAEO,MAAM,6BAGH,aAAsB;AAAA,EAK/B,YACS,YACA,QACA,eACA,OACA,aACA,SACA,SACA,QACA,WACA,MACP;AACD,UAAM;AAXE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EAGT;AAAA,EAjBA,QAA0B,UAAU,IAAY;AAAA,EAmBhD,UAAU;AACT,UAAM,EAAE,OAAO,WAAW,IAAI,KAAK,OAAO;AAC1C,WAAO,KAAK,QAAQ;AAAA,MACnB;AAAA,MACA;AAAA,MACA,CAAC,YAAY;AACZ,cAAM,OAAO,QAAQ,IAAI,CAAC,QAAQ,iBAAiB,KAAK,QAAQ,KAAK,aAAa,KAAK,MAAM,SAAS,CAAC;AACvG,YAAI,KAAK,cAAc,SAAS;AAC/B,iBAAO,KAAK,CAAC;AAAA,QACd;AACA,eAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAAA,EAEQ,YAAY;AACnB,UAAM,QAAQ,KAAK,SAAS,gBACzB,KAAK,QAAQ,6CAA6C;AAAA,MAC3D,YAAY,KAAK;AAAA,MACjB,QAAQ,KAAK;AAAA,MACb,eAAe,KAAK;AAAA,MACpB,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,MAClB,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK,YAAY;AAAA,IAC9B,CAAC,IACC,KAAK,QAAQ,qBAAqB;AAAA,MACnC,YAAY,KAAK;AAAA,MACjB,QAAQ,KAAK;AAAA,MACb,eAAe,KAAK;AAAA,MACpB,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,MAClB,aAAa,KAAK;AAAA,MAClB,YAAY,KAAK,YAAY;AAAA,IAC9B,CAAC;AACF,WAAO;AAAA,EACR;AAAA,EAEQ,SAA8E;AACrF,UAAM,QAAQ,KAAK,UAAU;AAE7B,UAAM,aAAa,KAAK,QAAQ,WAAW,MAAM,GAAU;AAE3D,WAAO,EAAE,YAAY,MAAM;AAAA,EAC5B;AAAA;AAAA,EAGA,SAAc;AACb,WAAO,KAAK,UAAU,EAAE;AAAA,EACzB;AAAA,EAEA,QAAe;AACd,WAAO,KAAK,OAAO,EAAE;AAAA,EACtB;AAAA,EAES,UAA4B;AACpC,WAAO,KAAK,QAAQ,EAAE,QAAQ;AAAA,EAC/B;AACD;","names":[]}
1
+ {"version":3,"sources":["../../../src/mysql-core/query-builders/query.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport {\n\ttype BuildQueryResult,\n\ttype BuildRelationalQueryResult,\n\ttype DBQueryConfig,\n\tmapRelationalRow,\n\ttype TableRelationalConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { Query, QueryWithTypings, SQL } from '~/sql/sql.ts';\nimport type { KnownKeysOnly } from '~/utils.ts';\nimport type { MySqlDialect } from '../dialect.ts';\nimport type { MySqlPreparedQueryConfig, MySqlSession, PreparedQueryHKTBase, PreparedQueryKind } from '../session.ts';\nimport type { MySqlTable } from '../table.ts';\n\nexport class RelationalQueryBuilder<\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTSchema extends TablesRelationalConfig,\n\tTFields extends TableRelationalConfig,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlRelationalQueryBuilderV2';\n\n\tconstructor(\n\t\tprivate tables: Record<string, MySqlTable>,\n\t\tprivate schema: TSchema,\n\t\tprivate tableNamesMap: Record<string, string>,\n\t\tprivate table: MySqlTable,\n\t\tprivate tableConfig: TableRelationalConfig,\n\t\tprivate dialect: MySqlDialect,\n\t\tprivate session: MySqlSession,\n\t) {}\n\n\tfindMany<TConfig extends DBQueryConfig<'many', TSchema, TFields>>(\n\t\tconfig?: KnownKeysOnly<TConfig, DBQueryConfig<'many', TSchema, TFields>>,\n\t): MySqlRelationalQuery<TPreparedQueryHKT, BuildQueryResult<TSchema, TFields, TConfig>[]> {\n\t\treturn new MySqlRelationalQuery(\n\t\t\tthis.tables,\n\t\t\tthis.schema,\n\t\t\tthis.tableNamesMap,\n\t\t\tthis.table,\n\t\t\tthis.tableConfig,\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tconfig as DBQueryConfig<'many'> | undefined ?? true,\n\t\t\t'many',\n\t\t);\n\t}\n\n\tfindFirst<TSelection extends DBQueryConfig<'one', TSchema, TFields>>(\n\t\tconfig?: KnownKeysOnly<TSelection, DBQueryConfig<'one', TSchema, TFields>>,\n\t): MySqlRelationalQuery<TPreparedQueryHKT, BuildQueryResult<TSchema, TFields, TSelection> | undefined> {\n\t\treturn new MySqlRelationalQuery(\n\t\t\tthis.tables,\n\t\t\tthis.schema,\n\t\t\tthis.tableNamesMap,\n\t\t\tthis.table,\n\t\t\tthis.tableConfig,\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tconfig as DBQueryConfig<'one'> | undefined ?? true,\n\t\t\t'first',\n\t\t);\n\t}\n}\n\nexport class MySqlRelationalQuery<\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTResult,\n> extends QueryPromise<TResult> {\n\tstatic override readonly [entityKind]: string = 'MySqlRelationalQueryV2';\n\n\tdeclare protected $brand: 'MySqlRelationalQuery';\n\n\tconstructor(\n\t\tprivate tables: Record<string, MySqlTable>,\n\t\tprivate schema: TablesRelationalConfig,\n\t\tprivate tableNamesMap: Record<string, string>,\n\t\tprivate table: MySqlTable,\n\t\tprivate tableConfig: TableRelationalConfig,\n\t\tprivate dialect: MySqlDialect,\n\t\tprivate session: MySqlSession,\n\t\tprivate config: DBQueryConfig<'many' | 'one'> | true,\n\t\tprivate mode: 'many' | 'first',\n\t) {\n\t\tsuper();\n\t}\n\n\tprepare() {\n\t\tconst { query, builtQuery } = this._toSQL();\n\t\treturn this.session.prepareRelationalQuery(\n\t\t\tbuiltQuery,\n\t\t\tundefined,\n\t\t\t(rawRows) => {\n\t\t\t\tconst rows = rawRows.map((row) => mapRelationalRow(row, query.selection));\n\t\t\t\tif (this.mode === 'first') {\n\t\t\t\t\treturn rows[0] as TResult;\n\t\t\t\t}\n\t\t\t\treturn rows as TResult;\n\t\t\t},\n\t\t) as PreparedQueryKind<TPreparedQueryHKT, MySqlPreparedQueryConfig & { execute: TResult }, true>;\n\t}\n\n\tprivate _getQuery() {\n\t\treturn this.dialect.buildRelationalQuery({\n\t\t\tschema: this.schema,\n\t\t\ttableNamesMap: this.tableNamesMap,\n\t\t\ttable: this.table,\n\t\t\ttableConfig: this.tableConfig,\n\t\t\tqueryConfig: this.config,\n\t\t\ttables: this.tables,\n\t\t\tmode: this.mode,\n\t\t});\n\t}\n\n\tprivate _toSQL(): { query: BuildRelationalQueryResult; builtQuery: QueryWithTypings } {\n\t\tconst query = this._getQuery();\n\n\t\tconst builtQuery = this.dialect.sqlToQuery(query.sql);\n\n\t\treturn { builtQuery, query };\n\t}\n\n\t/** @internal */\n\tgetSQL(): SQL {\n\t\treturn this._getQuery().sql;\n\t}\n\n\ttoSQL(): Query {\n\t\treturn this._toSQL().builtQuery;\n\t}\n\n\toverride execute(): Promise<TResult> {\n\t\treturn this.prepare().execute();\n\t}\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B;AAAA,EAIC;AAAA,OAGM;AAOA,MAAM,uBAIX;AAAA,EAGD,YACS,QACA,QACA,eACA,OACA,aACA,SACA,SACP;AAPO;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EACN;AAAA,EAVH,QAAiB,UAAU,IAAY;AAAA,EAYvC,SACC,QACyF;AACzF,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,UAA+C;AAAA,MAC/C;AAAA,IACD;AAAA,EACD;AAAA,EAEA,UACC,QACsG;AACtG,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,UAA8C;AAAA,MAC9C;AAAA,IACD;AAAA,EACD;AACD;AAEO,MAAM,6BAGH,aAAsB;AAAA,EAK/B,YACS,QACA,QACA,eACA,OACA,aACA,SACA,SACA,QACA,MACP;AACD,UAAM;AAVE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,EAGT;AAAA,EAhBA,QAA0B,UAAU,IAAY;AAAA,EAkBhD,UAAU;AACT,UAAM,EAAE,OAAO,WAAW,IAAI,KAAK,OAAO;AAC1C,WAAO,KAAK,QAAQ;AAAA,MACnB;AAAA,MACA;AAAA,MACA,CAAC,YAAY;AACZ,cAAM,OAAO,QAAQ,IAAI,CAAC,QAAQ,iBAAiB,KAAK,MAAM,SAAS,CAAC;AACxE,YAAI,KAAK,SAAS,SAAS;AAC1B,iBAAO,KAAK,CAAC;AAAA,QACd;AACA,eAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAAA,EAEQ,YAAY;AACnB,WAAO,KAAK,QAAQ,qBAAqB;AAAA,MACxC,QAAQ,KAAK;AAAA,MACb,eAAe,KAAK;AAAA,MACpB,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,MAClB,aAAa,KAAK;AAAA,MAClB,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,IACZ,CAAC;AAAA,EACF;AAAA,EAEQ,SAA8E;AACrF,UAAM,QAAQ,KAAK,UAAU;AAE7B,UAAM,aAAa,KAAK,QAAQ,WAAW,MAAM,GAAG;AAEpD,WAAO,EAAE,YAAY,MAAM;AAAA,EAC5B;AAAA;AAAA,EAGA,SAAc;AACb,WAAO,KAAK,UAAU,EAAE;AAAA,EACzB;AAAA,EAEA,QAAe;AACd,WAAO,KAAK,OAAO,EAAE;AAAA,EACtB;AAAA,EAES,UAA4B;AACpC,WAAO,KAAK,QAAQ,EAAE,QAAQ;AAAA,EAC/B;AACD;","names":[]}
@@ -68,8 +68,9 @@ class MySqlSession {
68
68
  }
69
69
  }
70
70
  class MySqlTransaction extends import_db.MySqlDatabase {
71
- constructor(dialect, session, schema, nestedIndex, mode) {
72
- super(dialect, session, schema, mode);
71
+ constructor(dialect, session, relations, schema, nestedIndex, mode) {
72
+ super(dialect, session, relations, schema, mode);
73
+ this.relations = relations;
73
74
  this.schema = schema;
74
75
  this.nestedIndex = nestedIndex;
75
76
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mysql-core/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { type Query, type SQL, sql } from '~/sql/sql.ts';\nimport type { Assume, Equal } from '~/utils.ts';\nimport { MySqlDatabase } from './db.ts';\nimport type { MySqlDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport type Mode = 'default' | 'planetscale';\n\nexport interface MySqlQueryResultHKT {\n\treadonly $brand: 'MySqlQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnyMySqlQueryResultHKT extends MySqlQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type MySqlQueryResultKind<TKind extends MySqlQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface MySqlPreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface MySqlPreparedQueryHKT {\n\treadonly $brand: 'MySqlPreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends MySqlPreparedQueryHKT,\n\tTConfig extends MySqlPreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], MySqlPreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'MySqlPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tabstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\n\tabstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;\n}\n\nexport interface MySqlTransactionConfig {\n\twithConsistentSnapshot?: boolean;\n\taccessMode?: 'read only' | 'read write';\n\tisolationLevel: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n}\n\nexport abstract class MySqlSession<\n\tTQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlSession';\n\n\tconstructor(protected dialect: MySqlDialect) {}\n\n\tabstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t): PreparedQueryKind<TPreparedQueryHKT, T>;\n\n\texecute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<MySqlPreparedQueryConfig & { execute: T }, PreparedQueryHKTBase>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t).execute();\n\t}\n\n\tabstract all<T = unknown>(query: SQL): Promise<T[]>;\n\n\tasync count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<[[{ count: string }]]>(sql);\n\n\t\treturn Number(\n\t\t\tres[0][0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: MySqlTransactionConfig,\n\t): Promise<T>;\n\n\tprotected getSetTransactionSQL(config: MySqlTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.isolationLevel) {\n\t\t\tparts.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\n\t\treturn parts.length ? sql`set transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n\n\tprotected getStartTransactionSQL(config: MySqlTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.withConsistentSnapshot) {\n\t\t\tparts.push('with consistent snapshot');\n\t\t}\n\n\t\tif (config.accessMode) {\n\t\t\tparts.push(config.accessMode);\n\t\t}\n\n\t\treturn parts.length ? sql`start transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n}\n\nexport abstract class MySqlTransaction<\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tprotected schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprotected readonly nestedIndex: number,\n\t\tmode: Mode,\n\t) {\n\t\tsuper(dialect, session, schema, mode);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** Nested transactions (aka savepoints) only work with InnoDB engine. */\n\tabstract override transaction<T>(\n\t\ttransaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PreparedQueryHKTBase extends MySqlPreparedQueryHKT {\n\ttype: MySqlPreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAC3B,oBAAyC;AAEzC,iBAA0C;AAE1C,gBAA8B;AAuCvB,MAAe,mBAAuD;AAAA,EAC5E,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAGvC;AAKD;AAQO,MAAe,aAKpB;AAAA,EAGD,YAAsB,SAAuB;AAAvB;AAAA,EAAwB;AAAA,EAF9C,QAAiB,wBAAU,IAAY;AAAA,EAYvC,QAAW,OAAwB;AAClC,WAAO,KAAK;AAAA,MACX,KAAK,QAAQ,WAAW,KAAK;AAAA,MAC7B;AAAA,IACD,EAAE,QAAQ;AAAA,EACX;AAAA,EAIA,MAAM,MAAMA,MAA2B;AACtC,UAAM,MAAM,MAAM,KAAK,QAA+BA,IAAG;AAEzD,WAAO;AAAA,MACN,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO;AAAA,IAClB;AAAA,EACD;AAAA,EAOU,qBAAqB,QAAiD;AAC/E,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,gBAAgB;AAC1B,YAAM,KAAK,mBAAmB,OAAO,cAAc,EAAE;AAAA,IACtD;AAEA,WAAO,MAAM,SAAS,iCAAsB,eAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC1E;AAAA,EAEU,uBAAuB,QAAiD;AACjF,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,wBAAwB;AAClC,YAAM,KAAK,0BAA0B;AAAA,IACtC;AAEA,QAAI,OAAO,YAAY;AACtB,YAAM,KAAK,OAAO,UAAU;AAAA,IAC7B;AAEA,WAAO,MAAM,SAAS,mCAAwB,eAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC5E;AACD;AAEO,MAAe,yBAKZ,wBAAqE;AAAA,EAG9E,YACC,SACA,SACU,QACS,aACnB,MACC;AACD,UAAM,SAAS,SAAS,QAAQ,IAAI;AAJ1B;AACS;AAAA,EAIpB;AAAA,EAVA,QAA0B,wBAAU,IAAY;AAAA,EAYhD,WAAkB;AACjB,UAAM,IAAI,uCAAyB;AAAA,EACpC;AAMD;","names":["sql"]}
1
+ {"version":3,"sources":["../../src/mysql-core/session.ts"],"sourcesContent":["import type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport type { AnyRelations, EmptyRelations, ExtractTablesWithRelations, TablesRelationalConfig } from '~/relations.ts';\nimport { type Query, type SQL, sql } from '~/sql/sql.ts';\nimport type { Assume, Equal } from '~/utils.ts';\nimport { MySqlDatabase } from './db.ts';\nimport type { MySqlDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport type Mode = 'default' | 'planetscale';\n\nexport interface MySqlQueryResultHKT {\n\treadonly $brand: 'MySqlQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnyMySqlQueryResultHKT extends MySqlQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type MySqlQueryResultKind<TKind extends MySqlQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface MySqlPreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface MySqlPreparedQueryHKT {\n\treadonly $brand: 'MySqlPreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends MySqlPreparedQueryHKT,\n\tTConfig extends MySqlPreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], MySqlPreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'MySqlPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tabstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\n\tabstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;\n}\n\nexport interface MySqlTransactionConfig {\n\twithConsistentSnapshot?: boolean;\n\taccessMode?: 'read only' | 'read write';\n\tisolationLevel: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n}\n\nexport abstract class MySqlSession<\n\tTQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTTablesConfig extends TablesRelationalConfig = ExtractTablesWithRelations<TRelations>,\n\tTSchema extends V1.TablesRelationalConfig = V1.ExtractTablesWithRelations<TFullSchema>,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlSession';\n\n\tconstructor(protected dialect: MySqlDialect) {}\n\n\tabstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t): PreparedQueryKind<TPreparedQueryHKT, T>;\n\n\tabstract prepareRelationalQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t): PreparedQueryKind<TPreparedQueryHKT, T>;\n\n\texecute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<MySqlPreparedQueryConfig & { execute: T }, PreparedQueryHKTBase>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t).execute();\n\t}\n\n\tabstract all<T = unknown>(query: SQL): Promise<T[]>;\n\n\tasync count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<[[{ count: string }]]>(sql);\n\n\t\treturn Number(\n\t\t\tres[0][0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema>,\n\t\t) => Promise<T>,\n\t\tconfig?: MySqlTransactionConfig,\n\t): Promise<T>;\n\n\tprotected getSetTransactionSQL(config: MySqlTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.isolationLevel) {\n\t\t\tparts.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\n\t\treturn parts.length ? sql`set transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n\n\tprotected getStartTransactionSQL(config: MySqlTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.withConsistentSnapshot) {\n\t\t\tparts.push('with consistent snapshot');\n\t\t}\n\n\t\tif (config.accessMode) {\n\t\t\tparts.push(config.accessMode);\n\t\t}\n\n\t\treturn parts.length ? sql`start transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n}\n\nexport abstract class MySqlTransaction<\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTTablesConfig extends TablesRelationalConfig = ExtractTablesWithRelations<TRelations>,\n\tTSchema extends V1.TablesRelationalConfig = V1.ExtractTablesWithRelations<TFullSchema>,\n> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tprotected relations: AnyRelations | undefined,\n\t\tprotected schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprotected readonly nestedIndex: number,\n\t\tmode: Mode,\n\t) {\n\t\tsuper(dialect, session, relations, schema, mode);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** Nested transactions (aka savepoints) only work with InnoDB engine. */\n\tabstract override transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema>,\n\t\t) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PreparedQueryHKTBase extends MySqlPreparedQueryHKT {\n\ttype: MySqlPreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA2B;AAC3B,oBAAyC;AAEzC,iBAA0C;AAE1C,gBAA8B;AAuCvB,MAAe,mBAAuD;AAAA,EAC5E,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAGvC;AAKD;AAQO,MAAe,aAOpB;AAAA,EAGD,YAAsB,SAAuB;AAAvB;AAAA,EAAwB;AAAA,EAF9C,QAAiB,wBAAU,IAAY;AAAA,EAoBvC,QAAW,OAAwB;AAClC,WAAO,KAAK;AAAA,MACX,KAAK,QAAQ,WAAW,KAAK;AAAA,MAC7B;AAAA,IACD,EAAE,QAAQ;AAAA,EACX;AAAA,EAIA,MAAM,MAAMA,MAA2B;AACtC,UAAM,MAAM,MAAM,KAAK,QAA+BA,IAAG;AAEzD,WAAO;AAAA,MACN,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO;AAAA,IAClB;AAAA,EACD;AAAA,EASU,qBAAqB,QAAiD;AAC/E,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,gBAAgB;AAC1B,YAAM,KAAK,mBAAmB,OAAO,cAAc,EAAE;AAAA,IACtD;AAEA,WAAO,MAAM,SAAS,iCAAsB,eAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC1E;AAAA,EAEU,uBAAuB,QAAiD;AACjF,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,wBAAwB;AAClC,YAAM,KAAK,0BAA0B;AAAA,IACtC;AAEA,QAAI,OAAO,YAAY;AACtB,YAAM,KAAK,OAAO,UAAU;AAAA,IAC7B;AAEA,WAAO,MAAM,SAAS,mCAAwB,eAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC5E;AACD;AAEO,MAAe,yBAOZ,wBAAgG;AAAA,EAGzG,YACC,SACA,SACU,WACA,QACS,aACnB,MACC;AACD,UAAM,SAAS,SAAS,WAAW,QAAQ,IAAI;AALrC;AACA;AACS;AAAA,EAIpB;AAAA,EAXA,QAA0B,wBAAU,IAAY;AAAA,EAahD,WAAkB;AACjB,UAAM,IAAI,uCAAyB;AAAA,EACpC;AAQD;","names":["sql"]}
@@ -1,5 +1,6 @@
1
+ import type * as V1 from "../_relations.cjs";
1
2
  import { entityKind } from "../entity.cjs";
2
- import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
3
+ import type { AnyRelations, EmptyRelations, ExtractTablesWithRelations, TablesRelationalConfig } from "../relations.cjs";
3
4
  import { type Query, type SQL } from "../sql/sql.cjs";
4
5
  import type { Assume, Equal } from "../utils.cjs";
5
6
  import { MySqlDatabase } from "./db.cjs";
@@ -41,26 +42,28 @@ export interface MySqlTransactionConfig {
41
42
  accessMode?: 'read only' | 'read write';
42
43
  isolationLevel: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';
43
44
  }
44
- export declare abstract class MySqlSession<TQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = Record<string, never>> {
45
+ export declare abstract class MySqlSession<TQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TTablesConfig extends TablesRelationalConfig = ExtractTablesWithRelations<TRelations>, TSchema extends V1.TablesRelationalConfig = V1.ExtractTablesWithRelations<TFullSchema>> {
45
46
  protected dialect: MySqlDialect;
46
47
  static readonly [entityKind]: string;
47
48
  constructor(dialect: MySqlDialect);
48
49
  abstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): PreparedQueryKind<TPreparedQueryHKT, T>;
50
+ abstract prepareRelationalQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper: (rows: Record<string, unknown>[]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): PreparedQueryKind<TPreparedQueryHKT, T>;
49
51
  execute<T>(query: SQL): Promise<T>;
50
52
  abstract all<T = unknown>(query: SQL): Promise<T[]>;
51
53
  count(sql: SQL): Promise<number>;
52
- abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>, config?: MySqlTransactionConfig): Promise<T>;
54
+ abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>, config?: MySqlTransactionConfig): Promise<T>;
53
55
  protected getSetTransactionSQL(config: MySqlTransactionConfig): SQL | undefined;
54
56
  protected getStartTransactionSQL(config: MySqlTransactionConfig): SQL | undefined;
55
57
  }
56
- export declare abstract class MySqlTransaction<TQueryResult extends MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = Record<string, never>> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema> {
57
- protected schema: RelationalSchemaConfig<TSchema> | undefined;
58
+ export declare abstract class MySqlTransaction<TQueryResult extends MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TTablesConfig extends TablesRelationalConfig = ExtractTablesWithRelations<TRelations>, TSchema extends V1.TablesRelationalConfig = V1.ExtractTablesWithRelations<TFullSchema>> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema> {
59
+ protected relations: AnyRelations | undefined;
60
+ protected schema: V1.RelationalSchemaConfig<TSchema> | undefined;
58
61
  protected readonly nestedIndex: number;
59
62
  static readonly [entityKind]: string;
60
- constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex: number, mode: Mode);
63
+ constructor(dialect: MySqlDialect, session: MySqlSession, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, nestedIndex: number, mode: Mode);
61
64
  rollback(): never;
62
65
  /** Nested transactions (aka savepoints) only work with InnoDB engine. */
63
- abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>): Promise<T>;
66
+ abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>): Promise<T>;
64
67
  }
65
68
  export interface PreparedQueryHKTBase extends MySqlPreparedQueryHKT {
66
69
  type: MySqlPreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;
@@ -1,5 +1,6 @@
1
+ import type * as V1 from "../_relations.js";
1
2
  import { entityKind } from "../entity.js";
2
- import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
3
+ import type { AnyRelations, EmptyRelations, ExtractTablesWithRelations, TablesRelationalConfig } from "../relations.js";
3
4
  import { type Query, type SQL } from "../sql/sql.js";
4
5
  import type { Assume, Equal } from "../utils.js";
5
6
  import { MySqlDatabase } from "./db.js";
@@ -41,26 +42,28 @@ export interface MySqlTransactionConfig {
41
42
  accessMode?: 'read only' | 'read write';
42
43
  isolationLevel: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';
43
44
  }
44
- export declare abstract class MySqlSession<TQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = Record<string, never>> {
45
+ export declare abstract class MySqlSession<TQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TTablesConfig extends TablesRelationalConfig = ExtractTablesWithRelations<TRelations>, TSchema extends V1.TablesRelationalConfig = V1.ExtractTablesWithRelations<TFullSchema>> {
45
46
  protected dialect: MySqlDialect;
46
47
  static readonly [entityKind]: string;
47
48
  constructor(dialect: MySqlDialect);
48
49
  abstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): PreparedQueryKind<TPreparedQueryHKT, T>;
50
+ abstract prepareRelationalQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper: (rows: Record<string, unknown>[]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): PreparedQueryKind<TPreparedQueryHKT, T>;
49
51
  execute<T>(query: SQL): Promise<T>;
50
52
  abstract all<T = unknown>(query: SQL): Promise<T[]>;
51
53
  count(sql: SQL): Promise<number>;
52
- abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>, config?: MySqlTransactionConfig): Promise<T>;
54
+ abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>, config?: MySqlTransactionConfig): Promise<T>;
53
55
  protected getSetTransactionSQL(config: MySqlTransactionConfig): SQL | undefined;
54
56
  protected getStartTransactionSQL(config: MySqlTransactionConfig): SQL | undefined;
55
57
  }
56
- export declare abstract class MySqlTransaction<TQueryResult extends MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TSchema extends TablesRelationalConfig = Record<string, never>> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema> {
57
- protected schema: RelationalSchemaConfig<TSchema> | undefined;
58
+ export declare abstract class MySqlTransaction<TQueryResult extends MySqlQueryResultHKT, TPreparedQueryHKT extends PreparedQueryHKTBase, TFullSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TTablesConfig extends TablesRelationalConfig = ExtractTablesWithRelations<TRelations>, TSchema extends V1.TablesRelationalConfig = V1.ExtractTablesWithRelations<TFullSchema>> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema> {
59
+ protected relations: AnyRelations | undefined;
60
+ protected schema: V1.RelationalSchemaConfig<TSchema> | undefined;
58
61
  protected readonly nestedIndex: number;
59
62
  static readonly [entityKind]: string;
60
- constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex: number, mode: Mode);
63
+ constructor(dialect: MySqlDialect, session: MySqlSession, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, nestedIndex: number, mode: Mode);
61
64
  rollback(): never;
62
65
  /** Nested transactions (aka savepoints) only work with InnoDB engine. */
63
- abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>): Promise<T>;
66
+ abstract transaction<T>(transaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>): Promise<T>;
64
67
  }
65
68
  export interface PreparedQueryHKTBase extends MySqlPreparedQueryHKT {
66
69
  type: MySqlPreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;
@@ -43,8 +43,9 @@ class MySqlSession {
43
43
  }
44
44
  }
45
45
  class MySqlTransaction extends MySqlDatabase {
46
- constructor(dialect, session, schema, nestedIndex, mode) {
47
- super(dialect, session, schema, mode);
46
+ constructor(dialect, session, relations, schema, nestedIndex, mode) {
47
+ super(dialect, session, relations, schema, mode);
48
+ this.relations = relations;
48
49
  this.schema = schema;
49
50
  this.nestedIndex = nestedIndex;
50
51
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mysql-core/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { type Query, type SQL, sql } from '~/sql/sql.ts';\nimport type { Assume, Equal } from '~/utils.ts';\nimport { MySqlDatabase } from './db.ts';\nimport type { MySqlDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport type Mode = 'default' | 'planetscale';\n\nexport interface MySqlQueryResultHKT {\n\treadonly $brand: 'MySqlQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnyMySqlQueryResultHKT extends MySqlQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type MySqlQueryResultKind<TKind extends MySqlQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface MySqlPreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface MySqlPreparedQueryHKT {\n\treadonly $brand: 'MySqlPreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends MySqlPreparedQueryHKT,\n\tTConfig extends MySqlPreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], MySqlPreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'MySqlPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tabstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\n\tabstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;\n}\n\nexport interface MySqlTransactionConfig {\n\twithConsistentSnapshot?: boolean;\n\taccessMode?: 'read only' | 'read write';\n\tisolationLevel: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n}\n\nexport abstract class MySqlSession<\n\tTQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlSession';\n\n\tconstructor(protected dialect: MySqlDialect) {}\n\n\tabstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t): PreparedQueryKind<TPreparedQueryHKT, T>;\n\n\texecute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<MySqlPreparedQueryConfig & { execute: T }, PreparedQueryHKTBase>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t).execute();\n\t}\n\n\tabstract all<T = unknown>(query: SQL): Promise<T[]>;\n\n\tasync count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<[[{ count: string }]]>(sql);\n\n\t\treturn Number(\n\t\t\tres[0][0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: MySqlTransactionConfig,\n\t): Promise<T>;\n\n\tprotected getSetTransactionSQL(config: MySqlTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.isolationLevel) {\n\t\t\tparts.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\n\t\treturn parts.length ? sql`set transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n\n\tprotected getStartTransactionSQL(config: MySqlTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.withConsistentSnapshot) {\n\t\t\tparts.push('with consistent snapshot');\n\t\t}\n\n\t\tif (config.accessMode) {\n\t\t\tparts.push(config.accessMode);\n\t\t}\n\n\t\treturn parts.length ? sql`start transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n}\n\nexport abstract class MySqlTransaction<\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTSchema extends TablesRelationalConfig = Record<string, never>,\n> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tprotected schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprotected readonly nestedIndex: number,\n\t\tmode: Mode,\n\t) {\n\t\tsuper(dialect, session, schema, mode);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** Nested transactions (aka savepoints) only work with InnoDB engine. */\n\tabstract override transaction<T>(\n\t\ttransaction: (tx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PreparedQueryHKTBase extends MySqlPreparedQueryHKT {\n\ttype: MySqlPreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAC3B,SAAS,gCAAgC;AAEzC,SAA+B,WAAW;AAE1C,SAAS,qBAAqB;AAuCvB,MAAe,mBAAuD;AAAA,EAC5E,QAAiB,UAAU,IAAY;AAAA;AAAA,EAGvC;AAKD;AAQO,MAAe,aAKpB;AAAA,EAGD,YAAsB,SAAuB;AAAvB;AAAA,EAAwB;AAAA,EAF9C,QAAiB,UAAU,IAAY;AAAA,EAYvC,QAAW,OAAwB;AAClC,WAAO,KAAK;AAAA,MACX,KAAK,QAAQ,WAAW,KAAK;AAAA,MAC7B;AAAA,IACD,EAAE,QAAQ;AAAA,EACX;AAAA,EAIA,MAAM,MAAMA,MAA2B;AACtC,UAAM,MAAM,MAAM,KAAK,QAA+BA,IAAG;AAEzD,WAAO;AAAA,MACN,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO;AAAA,IAClB;AAAA,EACD;AAAA,EAOU,qBAAqB,QAAiD;AAC/E,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,gBAAgB;AAC1B,YAAM,KAAK,mBAAmB,OAAO,cAAc,EAAE;AAAA,IACtD;AAEA,WAAO,MAAM,SAAS,sBAAsB,IAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC1E;AAAA,EAEU,uBAAuB,QAAiD;AACjF,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,wBAAwB;AAClC,YAAM,KAAK,0BAA0B;AAAA,IACtC;AAEA,QAAI,OAAO,YAAY;AACtB,YAAM,KAAK,OAAO,UAAU;AAAA,IAC7B;AAEA,WAAO,MAAM,SAAS,wBAAwB,IAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC5E;AACD;AAEO,MAAe,yBAKZ,cAAqE;AAAA,EAG9E,YACC,SACA,SACU,QACS,aACnB,MACC;AACD,UAAM,SAAS,SAAS,QAAQ,IAAI;AAJ1B;AACS;AAAA,EAIpB;AAAA,EAVA,QAA0B,UAAU,IAAY;AAAA,EAYhD,WAAkB;AACjB,UAAM,IAAI,yBAAyB;AAAA,EACpC;AAMD;","names":["sql"]}
1
+ {"version":3,"sources":["../../src/mysql-core/session.ts"],"sourcesContent":["import type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { TransactionRollbackError } from '~/errors.ts';\nimport type { AnyRelations, EmptyRelations, ExtractTablesWithRelations, TablesRelationalConfig } from '~/relations.ts';\nimport { type Query, type SQL, sql } from '~/sql/sql.ts';\nimport type { Assume, Equal } from '~/utils.ts';\nimport { MySqlDatabase } from './db.ts';\nimport type { MySqlDialect } from './dialect.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport type Mode = 'default' | 'planetscale';\n\nexport interface MySqlQueryResultHKT {\n\treadonly $brand: 'MySqlQueryResultHKT';\n\treadonly row: unknown;\n\treadonly type: unknown;\n}\n\nexport interface AnyMySqlQueryResultHKT extends MySqlQueryResultHKT {\n\treadonly type: any;\n}\n\nexport type MySqlQueryResultKind<TKind extends MySqlQueryResultHKT, TRow> = (TKind & {\n\treadonly row: TRow;\n})['type'];\n\nexport interface MySqlPreparedQueryConfig {\n\texecute: unknown;\n\titerator: unknown;\n}\n\nexport interface MySqlPreparedQueryHKT {\n\treadonly $brand: 'MySqlPreparedQueryHKT';\n\treadonly config: unknown;\n\treadonly type: unknown;\n}\n\nexport type PreparedQueryKind<\n\tTKind extends MySqlPreparedQueryHKT,\n\tTConfig extends MySqlPreparedQueryConfig,\n\tTAssume extends boolean = false,\n> = Equal<TAssume, true> extends true\n\t? Assume<(TKind & { readonly config: TConfig })['type'], MySqlPreparedQuery<TConfig>>\n\t: (TKind & { readonly config: TConfig })['type'];\n\nexport abstract class MySqlPreparedQuery<T extends MySqlPreparedQueryConfig> {\n\tstatic readonly [entityKind]: string = 'MySqlPreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tabstract execute(placeholderValues?: Record<string, unknown>): Promise<T['execute']>;\n\n\tabstract iterator(placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;\n}\n\nexport interface MySqlTransactionConfig {\n\twithConsistentSnapshot?: boolean;\n\taccessMode?: 'read only' | 'read write';\n\tisolationLevel: 'read uncommitted' | 'read committed' | 'repeatable read' | 'serializable';\n}\n\nexport abstract class MySqlSession<\n\tTQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase = PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTTablesConfig extends TablesRelationalConfig = ExtractTablesWithRelations<TRelations>,\n\tTSchema extends V1.TablesRelationalConfig = V1.ExtractTablesWithRelations<TFullSchema>,\n> {\n\tstatic readonly [entityKind]: string = 'MySqlSession';\n\n\tconstructor(protected dialect: MySqlDialect) {}\n\n\tabstract prepareQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t): PreparedQueryKind<TPreparedQueryHKT, T>;\n\n\tabstract prepareRelationalQuery<T extends MySqlPreparedQueryConfig, TPreparedQueryHKT extends MySqlPreparedQueryHKT>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => T['execute'],\n\t\tgeneratedIds?: Record<string, unknown>[],\n\t\treturningIds?: SelectedFieldsOrdered,\n\t): PreparedQueryKind<TPreparedQueryHKT, T>;\n\n\texecute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<MySqlPreparedQueryConfig & { execute: T }, PreparedQueryHKTBase>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t).execute();\n\t}\n\n\tabstract all<T = unknown>(query: SQL): Promise<T[]>;\n\n\tasync count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<[[{ count: string }]]>(sql);\n\n\t\treturn Number(\n\t\t\tres[0][0]['count'],\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema>,\n\t\t) => Promise<T>,\n\t\tconfig?: MySqlTransactionConfig,\n\t): Promise<T>;\n\n\tprotected getSetTransactionSQL(config: MySqlTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.isolationLevel) {\n\t\t\tparts.push(`isolation level ${config.isolationLevel}`);\n\t\t}\n\n\t\treturn parts.length ? sql`set transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n\n\tprotected getStartTransactionSQL(config: MySqlTransactionConfig): SQL | undefined {\n\t\tconst parts: string[] = [];\n\n\t\tif (config.withConsistentSnapshot) {\n\t\t\tparts.push('with consistent snapshot');\n\t\t}\n\n\t\tif (config.accessMode) {\n\t\t\tparts.push(config.accessMode);\n\t\t}\n\n\t\treturn parts.length ? sql`start transaction ${sql.raw(parts.join(' '))}` : undefined;\n\t}\n}\n\nexport abstract class MySqlTransaction<\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTPreparedQueryHKT extends PreparedQueryHKTBase,\n\tTFullSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTTablesConfig extends TablesRelationalConfig = ExtractTablesWithRelations<TRelations>,\n\tTSchema extends V1.TablesRelationalConfig = V1.ExtractTablesWithRelations<TFullSchema>,\n> extends MySqlDatabase<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tprotected relations: AnyRelations | undefined,\n\t\tprotected schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprotected readonly nestedIndex: number,\n\t\tmode: Mode,\n\t) {\n\t\tsuper(dialect, session, relations, schema, mode);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n\n\t/** Nested transactions (aka savepoints) only work with InnoDB engine. */\n\tabstract override transaction<T>(\n\t\ttransaction: (\n\t\t\ttx: MySqlTransaction<TQueryResult, TPreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema>,\n\t\t) => Promise<T>,\n\t): Promise<T>;\n}\n\nexport interface PreparedQueryHKTBase extends MySqlPreparedQueryHKT {\n\ttype: MySqlPreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":"AACA,SAAS,kBAAkB;AAC3B,SAAS,gCAAgC;AAEzC,SAA+B,WAAW;AAE1C,SAAS,qBAAqB;AAuCvB,MAAe,mBAAuD;AAAA,EAC5E,QAAiB,UAAU,IAAY;AAAA;AAAA,EAGvC;AAKD;AAQO,MAAe,aAOpB;AAAA,EAGD,YAAsB,SAAuB;AAAvB;AAAA,EAAwB;AAAA,EAF9C,QAAiB,UAAU,IAAY;AAAA,EAoBvC,QAAW,OAAwB;AAClC,WAAO,KAAK;AAAA,MACX,KAAK,QAAQ,WAAW,KAAK;AAAA,MAC7B;AAAA,IACD,EAAE,QAAQ;AAAA,EACX;AAAA,EAIA,MAAM,MAAMA,MAA2B;AACtC,UAAM,MAAM,MAAM,KAAK,QAA+BA,IAAG;AAEzD,WAAO;AAAA,MACN,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO;AAAA,IAClB;AAAA,EACD;AAAA,EASU,qBAAqB,QAAiD;AAC/E,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,gBAAgB;AAC1B,YAAM,KAAK,mBAAmB,OAAO,cAAc,EAAE;AAAA,IACtD;AAEA,WAAO,MAAM,SAAS,sBAAsB,IAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC1E;AAAA,EAEU,uBAAuB,QAAiD;AACjF,UAAM,QAAkB,CAAC;AAEzB,QAAI,OAAO,wBAAwB;AAClC,YAAM,KAAK,0BAA0B;AAAA,IACtC;AAEA,QAAI,OAAO,YAAY;AACtB,YAAM,KAAK,OAAO,UAAU;AAAA,IAC7B;AAEA,WAAO,MAAM,SAAS,wBAAwB,IAAI,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;AAAA,EAC5E;AACD;AAEO,MAAe,yBAOZ,cAAgG;AAAA,EAGzG,YACC,SACA,SACU,WACA,QACS,aACnB,MACC;AACD,UAAM,SAAS,SAAS,WAAW,QAAQ,IAAI;AALrC;AACA;AACS;AAAA,EAIpB;AAAA,EAXA,QAA0B,UAAU,IAAY;AAAA,EAahD,WAAkB;AACjB,UAAM,IAAI,yBAAyB;AAAA,EACpC;AAQD;","names":["sql"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mysql-core/subquery.ts"],"sourcesContent":["import type { TypedQueryBuilder } from '~/query-builders/query-builder.ts';\nimport type { AddAliasToSelection } from '~/query-builders/select.types.ts';\nimport type { ColumnsSelection, SQL } from '~/sql/sql.ts';\nimport type { Subquery, WithSubquery, WithSubqueryWithoutSelection } from '~/subquery.ts';\nimport type { QueryBuilder } from './query-builders/query-builder.ts';\n\nexport type SubqueryWithSelection<\n\tTSelection extends ColumnsSelection,\n\tTAlias extends string,\n> =\n\t& Subquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'mysql'>>\n\t& AddAliasToSelection<TSelection, TAlias, 'mysql'>;\n\nexport type WithSubqueryWithSelection<\n\tTSelection extends ColumnsSelection,\n\tTAlias extends string,\n> =\n\t& WithSubquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'mysql'>>\n\t& AddAliasToSelection<TSelection, TAlias, 'mysql'>;\n\nexport interface WithBuilder {\n\t<TAlias extends string>(alias: TAlias): {\n\t\tas: {\n\t\t\t<TSelection extends ColumnsSelection>(\n\t\t\t\tqb: TypedQueryBuilder<TSelection> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection>),\n\t\t\t): WithSubqueryWithSelection<TSelection, TAlias>;\n\t\t\t(\n\t\t\t\tqb: TypedQueryBuilder<undefined> | ((qb: QueryBuilder) => TypedQueryBuilder<undefined>),\n\t\t\t): WithSubqueryWithoutSelection<TAlias>;\n\t\t};\n\t};\n\t<TAlias extends string, TSelection extends ColumnsSelection>(alias: TAlias, selection: TSelection): {\n\t\tas: (qb: SQL | ((qb: QueryBuilder) => SQL)) => WithSubqueryWithSelection<TSelection, TAlias>;\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/mysql-core/subquery.ts"],"sourcesContent":["import type { AddAliasToSelection } from '~/query-builders/select.types.ts';\nimport type { ColumnsSelection } from '~/sql/sql.ts';\nimport type { Subquery, WithSubquery } from '~/subquery.ts';\n\nexport type SubqueryWithSelection<\n\tTSelection extends ColumnsSelection,\n\tTAlias extends string,\n> =\n\t& Subquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'mysql'>>\n\t& AddAliasToSelection<TSelection, TAlias, 'mysql'>;\n\nexport type WithSubqueryWithSelection<\n\tTSelection extends ColumnsSelection,\n\tTAlias extends string,\n> =\n\t& WithSubquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'mysql'>>\n\t& AddAliasToSelection<TSelection, TAlias, 'mysql'>;\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,18 +1,5 @@
1
- import type { TypedQueryBuilder } from "../query-builders/query-builder.cjs";
2
1
  import type { AddAliasToSelection } from "../query-builders/select.types.cjs";
3
- import type { ColumnsSelection, SQL } from "../sql/sql.cjs";
4
- import type { Subquery, WithSubquery, WithSubqueryWithoutSelection } from "../subquery.cjs";
5
- import type { QueryBuilder } from "./query-builders/query-builder.cjs";
2
+ import type { ColumnsSelection } from "../sql/sql.cjs";
3
+ import type { Subquery, WithSubquery } from "../subquery.cjs";
6
4
  export type SubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string> = Subquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'mysql'>> & AddAliasToSelection<TSelection, TAlias, 'mysql'>;
7
5
  export type WithSubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string> = WithSubquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'mysql'>> & AddAliasToSelection<TSelection, TAlias, 'mysql'>;
8
- export interface WithBuilder {
9
- <TAlias extends string>(alias: TAlias): {
10
- as: {
11
- <TSelection extends ColumnsSelection>(qb: TypedQueryBuilder<TSelection> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection>)): WithSubqueryWithSelection<TSelection, TAlias>;
12
- (qb: TypedQueryBuilder<undefined> | ((qb: QueryBuilder) => TypedQueryBuilder<undefined>)): WithSubqueryWithoutSelection<TAlias>;
13
- };
14
- };
15
- <TAlias extends string, TSelection extends ColumnsSelection>(alias: TAlias, selection: TSelection): {
16
- as: (qb: SQL | ((qb: QueryBuilder) => SQL)) => WithSubqueryWithSelection<TSelection, TAlias>;
17
- };
18
- }
@@ -1,18 +1,5 @@
1
- import type { TypedQueryBuilder } from "../query-builders/query-builder.js";
2
1
  import type { AddAliasToSelection } from "../query-builders/select.types.js";
3
- import type { ColumnsSelection, SQL } from "../sql/sql.js";
4
- import type { Subquery, WithSubquery, WithSubqueryWithoutSelection } from "../subquery.js";
5
- import type { QueryBuilder } from "./query-builders/query-builder.js";
2
+ import type { ColumnsSelection } from "../sql/sql.js";
3
+ import type { Subquery, WithSubquery } from "../subquery.js";
6
4
  export type SubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string> = Subquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'mysql'>> & AddAliasToSelection<TSelection, TAlias, 'mysql'>;
7
5
  export type WithSubqueryWithSelection<TSelection extends ColumnsSelection, TAlias extends string> = WithSubquery<TAlias, AddAliasToSelection<TSelection, TAlias, 'mysql'>> & AddAliasToSelection<TSelection, TAlias, 'mysql'>;
8
- export interface WithBuilder {
9
- <TAlias extends string>(alias: TAlias): {
10
- as: {
11
- <TSelection extends ColumnsSelection>(qb: TypedQueryBuilder<TSelection> | ((qb: QueryBuilder) => TypedQueryBuilder<TSelection>)): WithSubqueryWithSelection<TSelection, TAlias>;
12
- (qb: TypedQueryBuilder<undefined> | ((qb: QueryBuilder) => TypedQueryBuilder<undefined>)): WithSubqueryWithoutSelection<TAlias>;
13
- };
14
- };
15
- <TAlias extends string, TSelection extends ColumnsSelection>(alias: TAlias, selection: TSelection): {
16
- as: (qb: SQL | ((qb: QueryBuilder) => SQL)) => WithSubqueryWithSelection<TSelection, TAlias>;
17
- };
18
- }
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
  var driver_exports = {};
20
30
  __export(driver_exports, {
@@ -22,11 +32,11 @@ __export(driver_exports, {
22
32
  drizzle: () => drizzle
23
33
  });
24
34
  module.exports = __toCommonJS(driver_exports);
35
+ var V1 = __toESM(require("../_relations.cjs"), 1);
25
36
  var import_entity = require("../entity.cjs");
26
37
  var import_logger = require("../logger.cjs");
27
38
  var import_db = require("../mysql-core/db.cjs");
28
39
  var import_dialect = require("../mysql-core/dialect.cjs");
29
- var import_relations = require("../relations.cjs");
30
40
  var import_session = require("./session.cjs");
31
41
  class MySqlRemoteDatabase extends import_db.MySqlDatabase {
32
42
  static [import_entity.entityKind] = "MySqlRemoteDatabase";
@@ -41,9 +51,9 @@ function drizzle(callback, config = {}) {
41
51
  }
42
52
  let schema;
43
53
  if (config.schema) {
44
- const tablesConfig = (0, import_relations.extractTablesRelationalConfig)(
54
+ const tablesConfig = V1.extractTablesRelationalConfig(
45
55
  config.schema,
46
- import_relations.createTableRelationsHelpers
56
+ V1.createTableRelationsHelpers
47
57
  );
48
58
  schema = {
49
59
  fullSchema: config.schema,
@@ -51,8 +61,15 @@ function drizzle(callback, config = {}) {
51
61
  tableNamesMap: tablesConfig.tableNamesMap
52
62
  };
53
63
  }
54
- const session = new import_session.MySqlRemoteSession(callback, dialect, schema, { logger });
55
- return new MySqlRemoteDatabase(dialect, session, schema, "default");
64
+ const relations = config.relations;
65
+ const session = new import_session.MySqlRemoteSession(callback, dialect, relations, schema, { logger });
66
+ return new MySqlRemoteDatabase(
67
+ dialect,
68
+ session,
69
+ relations,
70
+ schema,
71
+ "default"
72
+ );
56
73
  }
57
74
  // Annotate the CommonJS export names for ESM import in node:
58
75
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mysql-proxy/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT, MySqlRemoteSession } from './session.ts';\n\nexport class MySqlRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlRemoteDatabase';\n}\n\nexport type RemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'all' | 'execute',\n) => Promise<{ rows: any[]; insertId?: number; affectedRows?: number }>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tconfig: DrizzleConfig<TSchema> = {},\n): MySqlRemoteDatabase<TSchema> {\n\tconst dialect = new MySqlDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new MySqlRemoteSession(callback, dialect, schema, { logger });\n\treturn new MySqlRemoteDatabase(dialect, session, schema as any, 'default') as MySqlRemoteDatabase<TSchema>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAC3B,oBAA8B;AAC9B,gBAA8B;AAC9B,qBAA6B;AAC7B,uBAKO;AAEP,qBAAqG;AAE9F,MAAM,4BAEH,wBAA+E;AAAA,EACxF,QAA0B,wBAAU,IAAY;AACjD;AAQO,SAAS,QACf,UACA,SAAiC,CAAC,GACH;AAC/B,QAAM,UAAU,IAAI,4BAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,kCAAmB,UAAU,SAAS,QAAQ,EAAE,OAAO,CAAC;AAC5E,SAAO,IAAI,oBAAoB,SAAS,SAAS,QAAe,SAAS;AAC1E;","names":[]}
1
+ {"version":3,"sources":["../../src/mysql-proxy/driver.ts"],"sourcesContent":["import * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT, MySqlRemoteSession } from './session.ts';\n\nexport class MySqlRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'MySqlRemoteDatabase';\n}\n\nexport type RemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'all' | 'execute',\n) => Promise<{ rows: any[]; insertId?: number; affectedRows?: number }>;\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tcallback: RemoteCallback,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): MySqlRemoteDatabase<TSchema, TRelations> {\n\tconst dialect = new MySqlDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations;\n\tconst session = new MySqlRemoteSession(callback, dialect, relations, schema, { logger });\n\treturn new MySqlRemoteDatabase(\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t\t'default',\n\t) as MySqlRemoteDatabase<TSchema, TRelations>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAoB;AACpB,oBAA2B;AAC3B,oBAA8B;AAC9B,gBAA8B;AAC9B,qBAA6B;AAG7B,qBAAqG;AAE9F,MAAM,4BAGH,wBAA2F;AAAA,EACpG,QAA0B,wBAAU,IAAY;AACjD;AAQO,SAAS,QAIf,UACA,SAA6C,CAAC,GACH;AAC3C,QAAM,UAAU,IAAI,4BAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe,GAAG;AAAA,MACvB,OAAO;AAAA,MACP,GAAG;AAAA,IACJ;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO;AACzB,QAAM,UAAU,IAAI,kCAAmB,UAAU,SAAS,WAAW,QAAQ,EAAE,OAAO,CAAC;AACvF,SAAO,IAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;","names":[]}
@@ -1,8 +1,9 @@
1
1
  import { entityKind } from "../entity.cjs";
2
2
  import { MySqlDatabase } from "../mysql-core/db.cjs";
3
+ import type { AnyRelations, EmptyRelations } from "../relations.cjs";
3
4
  import type { DrizzleConfig } from "../utils.cjs";
4
5
  import { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT } from "./session.cjs";
5
- export declare class MySqlRemoteDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema> {
6
+ export declare class MySqlRemoteDatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema, TRelations> {
6
7
  static readonly [entityKind]: string;
7
8
  }
8
9
  export type RemoteCallback = (sql: string, params: any[], method: 'all' | 'execute') => Promise<{
@@ -10,4 +11,4 @@ export type RemoteCallback = (sql: string, params: any[], method: 'all' | 'execu
10
11
  insertId?: number;
11
12
  affectedRows?: number;
12
13
  }>;
13
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema>): MySqlRemoteDatabase<TSchema>;
14
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(callback: RemoteCallback, config?: DrizzleConfig<TSchema, TRelations>): MySqlRemoteDatabase<TSchema, TRelations>;
@@ -1,8 +1,9 @@
1
1
  import { entityKind } from "../entity.js";
2
2
  import { MySqlDatabase } from "../mysql-core/db.js";
3
+ import type { AnyRelations, EmptyRelations } from "../relations.js";
3
4
  import type { DrizzleConfig } from "../utils.js";
4
5
  import { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT } from "./session.js";
5
- export declare class MySqlRemoteDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema> {
6
+ export declare class MySqlRemoteDatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema, TRelations> {
6
7
  static readonly [entityKind]: string;
7
8
  }
8
9
  export type RemoteCallback = (sql: string, params: any[], method: 'all' | 'execute') => Promise<{
@@ -10,4 +11,4 @@ export type RemoteCallback = (sql: string, params: any[], method: 'all' | 'execu
10
11
  insertId?: number;
11
12
  affectedRows?: number;
12
13
  }>;
13
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(callback: RemoteCallback, config?: DrizzleConfig<TSchema>): MySqlRemoteDatabase<TSchema>;
14
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(callback: RemoteCallback, config?: DrizzleConfig<TSchema, TRelations>): MySqlRemoteDatabase<TSchema, TRelations>;
@@ -1,11 +1,8 @@
1
+ import * as V1 from "../_relations.js";
1
2
  import { entityKind } from "../entity.js";
2
3
  import { DefaultLogger } from "../logger.js";
3
4
  import { MySqlDatabase } from "../mysql-core/db.js";
4
5
  import { MySqlDialect } from "../mysql-core/dialect.js";
5
- import {
6
- createTableRelationsHelpers,
7
- extractTablesRelationalConfig
8
- } from "../relations.js";
9
6
  import { MySqlRemoteSession } from "./session.js";
10
7
  class MySqlRemoteDatabase extends MySqlDatabase {
11
8
  static [entityKind] = "MySqlRemoteDatabase";
@@ -20,9 +17,9 @@ function drizzle(callback, config = {}) {
20
17
  }
21
18
  let schema;
22
19
  if (config.schema) {
23
- const tablesConfig = extractTablesRelationalConfig(
20
+ const tablesConfig = V1.extractTablesRelationalConfig(
24
21
  config.schema,
25
- createTableRelationsHelpers
22
+ V1.createTableRelationsHelpers
26
23
  );
27
24
  schema = {
28
25
  fullSchema: config.schema,
@@ -30,8 +27,15 @@ function drizzle(callback, config = {}) {
30
27
  tableNamesMap: tablesConfig.tableNamesMap
31
28
  };
32
29
  }
33
- const session = new MySqlRemoteSession(callback, dialect, schema, { logger });
34
- return new MySqlRemoteDatabase(dialect, session, schema, "default");
30
+ const relations = config.relations;
31
+ const session = new MySqlRemoteSession(callback, dialect, relations, schema, { logger });
32
+ return new MySqlRemoteDatabase(
33
+ dialect,
34
+ session,
35
+ relations,
36
+ schema,
37
+ "default"
38
+ );
35
39
  }
36
40
  export {
37
41
  MySqlRemoteDatabase,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mysql-proxy/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT, MySqlRemoteSession } from './session.ts';\n\nexport class MySqlRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'MySqlRemoteDatabase';\n}\n\nexport type RemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'all' | 'execute',\n) => Promise<{ rows: any[]; insertId?: number; affectedRows?: number }>;\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tcallback: RemoteCallback,\n\tconfig: DrizzleConfig<TSchema> = {},\n): MySqlRemoteDatabase<TSchema> {\n\tconst dialect = new MySqlDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new MySqlRemoteSession(callback, dialect, schema, { logger });\n\treturn new MySqlRemoteDatabase(dialect, session, schema as any, 'default') as MySqlRemoteDatabase<TSchema>;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAEP,SAA2E,0BAA0B;AAE9F,MAAM,4BAEH,cAA+E;AAAA,EACxF,QAA0B,UAAU,IAAY;AACjD;AAQO,SAAS,QACf,UACA,SAAiC,CAAC,GACH;AAC/B,QAAM,UAAU,IAAI,aAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,mBAAmB,UAAU,SAAS,QAAQ,EAAE,OAAO,CAAC;AAC5E,SAAO,IAAI,oBAAoB,SAAS,SAAS,QAAe,SAAS;AAC1E;","names":[]}
1
+ {"version":3,"sources":["../../src/mysql-proxy/driver.ts"],"sourcesContent":["import * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { MySqlDatabase } from '~/mysql-core/db.ts';\nimport { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type MySqlRemotePreparedQueryHKT, type MySqlRemoteQueryResultHKT, MySqlRemoteSession } from './session.ts';\n\nexport class MySqlRemoteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends MySqlDatabase<MySqlRemoteQueryResultHKT, MySqlRemotePreparedQueryHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'MySqlRemoteDatabase';\n}\n\nexport type RemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: 'all' | 'execute',\n) => Promise<{ rows: any[]; insertId?: number; affectedRows?: number }>;\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tcallback: RemoteCallback,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): MySqlRemoteDatabase<TSchema, TRelations> {\n\tconst dialect = new MySqlDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations;\n\tconst session = new MySqlRemoteSession(callback, dialect, relations, schema, { logger });\n\treturn new MySqlRemoteDatabase(\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t\t'default',\n\t) as MySqlRemoteDatabase<TSchema, TRelations>;\n}\n"],"mappings":"AAAA,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAG7B,SAA2E,0BAA0B;AAE9F,MAAM,4BAGH,cAA2F;AAAA,EACpG,QAA0B,UAAU,IAAY;AACjD;AAQO,SAAS,QAIf,UACA,SAA6C,CAAC,GACH;AAC3C,QAAM,UAAU,IAAI,aAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe,GAAG;AAAA,MACvB,OAAO;AAAA,MACP,GAAG;AAAA,IACJ;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO;AACzB,QAAM,UAAU,IAAI,mBAAmB,UAAU,SAAS,WAAW,QAAQ,EAAE,OAAO,CAAC;AACvF,SAAO,IAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mysql-proxy/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { MySqlRemoteDatabase } from './driver.ts';\n\nexport type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: MySqlRemoteDatabase<TSchema>,\n\tcallback: ProxyMigrator,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tconst migrationsTable = config.migrationsTable ?? '__drizzle_migrations';\n\tconst migrationTableCreate = sql`\n\t\tcreate table if not exists ${sql.identifier(migrationsTable)} (\n\t\t\tid serial primary key,\n\t\t\thash text not null,\n\t\t\tcreated_at bigint\n\t\t)\n\t`;\n\tawait db.execute(migrationTableCreate);\n\n\tconst dbMigrations = await db.select({\n\t\tid: sql.raw('id'),\n\t\thash: sql.raw('hash'),\n\t\tcreated_at: sql.raw('created_at'),\n\t}).from(sql.identifier(migrationsTable).getSQL()).orderBy(\n\t\tsql.raw('created_at desc'),\n\t).limit(1);\n\n\tconst lastDbMigration = dbMigrations[0];\n\n\tconst queriesToRun: string[] = [];\n\n\tfor (const migration of migrations) {\n\t\tif (\n\t\t\t!lastDbMigration\n\t\t\t|| Number(lastDbMigration.created_at) < migration.folderMillis\n\t\t) {\n\t\t\tqueriesToRun.push(\n\t\t\t\t...migration.sql,\n\t\t\t\t`insert into ${\n\t\t\t\t\tsql.identifier(migrationsTable).value\n\t\t\t\t} (\\`hash\\`, \\`created_at\\`) values('${migration.hash}', '${migration.folderMillis}')`,\n\t\t\t);\n\t\t}\n\t}\n\n\tawait callback(queriesToRun);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AACnC,iBAAoB;AAKpB,eAAsB,QACrB,IACA,UACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAE5C,QAAM,kBAAkB,OAAO,mBAAmB;AAClD,QAAM,uBAAuB;AAAA,+BACC,eAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAM7D,QAAM,GAAG,QAAQ,oBAAoB;AAErC,QAAM,eAAe,MAAM,GAAG,OAAO;AAAA,IACpC,IAAI,eAAI,IAAI,IAAI;AAAA,IAChB,MAAM,eAAI,IAAI,MAAM;AAAA,IACpB,YAAY,eAAI,IAAI,YAAY;AAAA,EACjC,CAAC,EAAE,KAAK,eAAI,WAAW,eAAe,EAAE,OAAO,CAAC,EAAE;AAAA,IACjD,eAAI,IAAI,iBAAiB;AAAA,EAC1B,EAAE,MAAM,CAAC;AAET,QAAM,kBAAkB,aAAa,CAAC;AAEtC,QAAM,eAAyB,CAAC;AAEhC,aAAW,aAAa,YAAY;AACnC,QACC,CAAC,mBACE,OAAO,gBAAgB,UAAU,IAAI,UAAU,cACjD;AACD,mBAAa;AAAA,QACZ,GAAG,UAAU;AAAA,QACb,eACC,eAAI,WAAW,eAAe,EAAE,KACjC,uCAAuC,UAAU,IAAI,OAAO,UAAU,YAAY;AAAA,MACnF;AAAA,IACD;AAAA,EACD;AAEA,QAAM,SAAS,YAAY;AAC5B;","names":[]}
1
+ {"version":3,"sources":["../../src/mysql-proxy/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { sql } from '~/sql/sql.ts';\nimport type { MySqlRemoteDatabase } from './driver.ts';\n\nexport type ProxyMigrator = (migrationQueries: string[]) => Promise<void>;\n\nexport async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: MySqlRemoteDatabase<TSchema, TRelations>,\n\tcallback: ProxyMigrator,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tconst migrationsTable = config.migrationsTable ?? '__drizzle_migrations';\n\tconst migrationTableCreate = sql`\n\t\tcreate table if not exists ${sql.identifier(migrationsTable)} (\n\t\t\tid serial primary key,\n\t\t\thash text not null,\n\t\t\tcreated_at bigint\n\t\t)\n\t`;\n\tawait db.execute(migrationTableCreate);\n\n\tconst dbMigrations = await db.select({\n\t\tid: sql.raw('id'),\n\t\thash: sql.raw('hash'),\n\t\tcreated_at: sql.raw('created_at'),\n\t}).from(sql.identifier(migrationsTable).getSQL()).orderBy(\n\t\tsql.raw('created_at desc'),\n\t).limit(1);\n\n\tconst lastDbMigration = dbMigrations[0];\n\n\tconst queriesToRun: string[] = [];\n\n\tfor (const migration of migrations) {\n\t\tif (\n\t\t\t!lastDbMigration\n\t\t\t|| Number(lastDbMigration.created_at) < migration.folderMillis\n\t\t) {\n\t\t\tqueriesToRun.push(\n\t\t\t\t...migration.sql,\n\t\t\t\t`insert into ${\n\t\t\t\t\tsql.identifier(migrationsTable).value\n\t\t\t\t} (\\`hash\\`, \\`created_at\\`) values('${migration.hash}', '${migration.folderMillis}')`,\n\t\t\t);\n\t\t}\n\t}\n\n\tawait callback(queriesToRun);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AAEnC,iBAAoB;AAKpB,eAAsB,QACrB,IACA,UACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAE5C,QAAM,kBAAkB,OAAO,mBAAmB;AAClD,QAAM,uBAAuB;AAAA,+BACC,eAAI,WAAW,eAAe,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAM7D,QAAM,GAAG,QAAQ,oBAAoB;AAErC,QAAM,eAAe,MAAM,GAAG,OAAO;AAAA,IACpC,IAAI,eAAI,IAAI,IAAI;AAAA,IAChB,MAAM,eAAI,IAAI,MAAM;AAAA,IACpB,YAAY,eAAI,IAAI,YAAY;AAAA,EACjC,CAAC,EAAE,KAAK,eAAI,WAAW,eAAe,EAAE,OAAO,CAAC,EAAE;AAAA,IACjD,eAAI,IAAI,iBAAiB;AAAA,EAC1B,EAAE,MAAM,CAAC;AAET,QAAM,kBAAkB,aAAa,CAAC;AAEtC,QAAM,eAAyB,CAAC;AAEhC,aAAW,aAAa,YAAY;AACnC,QACC,CAAC,mBACE,OAAO,gBAAgB,UAAU,IAAI,UAAU,cACjD;AACD,mBAAa;AAAA,QACZ,GAAG,UAAU;AAAA,QACb,eACC,eAAI,WAAW,eAAe,EAAE,KACjC,uCAAuC,UAAU,IAAI,OAAO,UAAU,YAAY;AAAA,MACnF;AAAA,IACD;AAAA,EACD;AAEA,QAAM,SAAS,YAAY;AAC5B;","names":[]}