drizzle-orm 0.39.2-1177ad8 → 0.39.2-aaa57ff

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 (702) 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 -9
  12. package/aws-data-api/pg/driver.cjs.map +1 -1
  13. package/aws-data-api/pg/driver.d.cts +9 -9
  14. package/aws-data-api/pg/driver.d.ts +9 -9
  15. package/aws-data-api/pg/driver.js +9 -12
  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 +70 -18
  22. package/aws-data-api/pg/session.cjs.map +1 -1
  23. package/aws-data-api/pg/session.d.cts +16 -21
  24. package/aws-data-api/pg/session.d.ts +16 -21
  25. package/aws-data-api/pg/session.js +70 -18
  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-sql/driver.cjs +16 -9
  44. package/bun-sql/driver.cjs.map +1 -1
  45. package/bun-sql/driver.d.cts +7 -6
  46. package/bun-sql/driver.d.ts +7 -6
  47. package/bun-sql/driver.js +6 -12
  48. package/bun-sql/driver.js.map +1 -1
  49. package/bun-sql/migrator.cjs.map +1 -1
  50. package/bun-sql/migrator.d.cts +2 -1
  51. package/bun-sql/migrator.d.ts +2 -1
  52. package/bun-sql/migrator.js.map +1 -1
  53. package/bun-sql/session.cjs +58 -26
  54. package/bun-sql/session.cjs.map +1 -1
  55. package/bun-sql/session.d.cts +16 -20
  56. package/bun-sql/session.d.ts +16 -20
  57. package/bun-sql/session.js +58 -26
  58. package/bun-sql/session.js.map +1 -1
  59. package/bun-sqlite/driver.cjs +22 -5
  60. package/bun-sqlite/driver.cjs.map +1 -1
  61. package/bun-sqlite/driver.d.cts +7 -6
  62. package/bun-sqlite/driver.d.ts +7 -6
  63. package/bun-sqlite/driver.js +12 -8
  64. package/bun-sqlite/driver.js.map +1 -1
  65. package/bun-sqlite/migrator.cjs.map +1 -1
  66. package/bun-sqlite/migrator.d.cts +2 -1
  67. package/bun-sqlite/migrator.d.ts +2 -1
  68. package/bun-sqlite/migrator.js.map +1 -1
  69. package/bun-sqlite/session.cjs +49 -4
  70. package/bun-sqlite/session.cjs.map +1 -1
  71. package/bun-sqlite/session.d.cts +14 -8
  72. package/bun-sqlite/session.d.ts +14 -8
  73. package/bun-sqlite/session.js +49 -4
  74. package/bun-sqlite/session.js.map +1 -1
  75. package/d1/driver.cjs +22 -5
  76. package/d1/driver.cjs.map +1 -1
  77. package/d1/driver.d.cts +3 -2
  78. package/d1/driver.d.ts +3 -2
  79. package/d1/driver.js +12 -8
  80. package/d1/driver.js.map +1 -1
  81. package/d1/migrator.cjs.map +1 -1
  82. package/d1/migrator.d.cts +2 -1
  83. package/d1/migrator.d.ts +2 -1
  84. package/d1/migrator.js.map +1 -1
  85. package/d1/session.cjs +50 -8
  86. package/d1/session.cjs.map +1 -1
  87. package/d1/session.d.cts +15 -8
  88. package/d1/session.d.ts +15 -8
  89. package/d1/session.js +50 -8
  90. package/d1/session.js.map +1 -1
  91. package/durable-sqlite/driver.cjs +16 -5
  92. package/durable-sqlite/driver.cjs.map +1 -1
  93. package/durable-sqlite/driver.d.cts +3 -2
  94. package/durable-sqlite/driver.d.ts +3 -2
  95. package/durable-sqlite/driver.js +6 -8
  96. package/durable-sqlite/driver.js.map +1 -1
  97. package/durable-sqlite/migrator.cjs.map +1 -1
  98. package/durable-sqlite/migrator.d.cts +2 -1
  99. package/durable-sqlite/migrator.d.ts +2 -1
  100. package/durable-sqlite/migrator.js.map +1 -1
  101. package/durable-sqlite/session.cjs +46 -4
  102. package/durable-sqlite/session.cjs.map +1 -1
  103. package/durable-sqlite/session.d.cts +14 -8
  104. package/durable-sqlite/session.d.ts +14 -8
  105. package/durable-sqlite/session.js +46 -4
  106. package/durable-sqlite/session.js.map +1 -1
  107. package/expo-sqlite/driver.cjs +22 -5
  108. package/expo-sqlite/driver.cjs.map +1 -1
  109. package/expo-sqlite/driver.d.cts +3 -2
  110. package/expo-sqlite/driver.d.ts +3 -2
  111. package/expo-sqlite/driver.js +12 -8
  112. package/expo-sqlite/driver.js.map +1 -1
  113. package/expo-sqlite/migrator.cjs.map +1 -1
  114. package/expo-sqlite/migrator.d.cts +3 -2
  115. package/expo-sqlite/migrator.d.ts +3 -2
  116. package/expo-sqlite/migrator.js.map +1 -1
  117. package/expo-sqlite/query.cjs +13 -2
  118. package/expo-sqlite/query.cjs.map +1 -1
  119. package/expo-sqlite/query.d.cts +2 -1
  120. package/expo-sqlite/query.d.ts +2 -1
  121. package/expo-sqlite/query.js +3 -2
  122. package/expo-sqlite/query.js.map +1 -1
  123. package/expo-sqlite/session.cjs +47 -4
  124. package/expo-sqlite/session.cjs.map +1 -1
  125. package/expo-sqlite/session.d.cts +14 -8
  126. package/expo-sqlite/session.d.ts +14 -8
  127. package/expo-sqlite/session.js +47 -4
  128. package/expo-sqlite/session.js.map +1 -1
  129. package/libsql/driver-core.cjs +22 -5
  130. package/libsql/driver-core.cjs.map +1 -1
  131. package/libsql/driver-core.d.cts +2 -1
  132. package/libsql/driver-core.d.ts +2 -1
  133. package/libsql/driver-core.js +12 -8
  134. package/libsql/driver-core.js.map +1 -1
  135. package/libsql/driver.cjs.map +1 -1
  136. package/libsql/driver.d.cts +6 -5
  137. package/libsql/driver.d.ts +6 -5
  138. package/libsql/driver.js.map +1 -1
  139. package/libsql/http/index.cjs.map +1 -1
  140. package/libsql/http/index.d.cts +6 -5
  141. package/libsql/http/index.d.ts +6 -5
  142. package/libsql/http/index.js.map +1 -1
  143. package/libsql/migrator.cjs.map +1 -1
  144. package/libsql/migrator.d.cts +2 -1
  145. package/libsql/migrator.d.ts +2 -1
  146. package/libsql/migrator.js.map +1 -1
  147. package/libsql/node/index.cjs.map +1 -1
  148. package/libsql/node/index.d.cts +6 -5
  149. package/libsql/node/index.d.ts +6 -5
  150. package/libsql/node/index.js.map +1 -1
  151. package/libsql/session.cjs +56 -4
  152. package/libsql/session.cjs.map +1 -1
  153. package/libsql/session.d.cts +15 -9
  154. package/libsql/session.d.ts +15 -9
  155. package/libsql/session.js +56 -4
  156. package/libsql/session.js.map +1 -1
  157. package/libsql/sqlite3/index.cjs.map +1 -1
  158. package/libsql/sqlite3/index.d.cts +6 -5
  159. package/libsql/sqlite3/index.d.ts +6 -5
  160. package/libsql/sqlite3/index.js.map +1 -1
  161. package/libsql/wasm/index.cjs.map +1 -1
  162. package/libsql/wasm/index.d.cts +6 -5
  163. package/libsql/wasm/index.d.ts +6 -5
  164. package/libsql/wasm/index.js.map +1 -1
  165. package/libsql/web/index.cjs.map +1 -1
  166. package/libsql/web/index.d.cts +6 -5
  167. package/libsql/web/index.d.ts +6 -5
  168. package/libsql/web/index.js.map +1 -1
  169. package/libsql/ws/index.cjs.map +1 -1
  170. package/libsql/ws/index.d.cts +6 -5
  171. package/libsql/ws/index.d.ts +6 -5
  172. package/libsql/ws/index.js.map +1 -1
  173. package/mysql-core/db.cjs +30 -6
  174. package/mysql-core/db.cjs.map +1 -1
  175. package/mysql-core/db.d.cts +15 -8
  176. package/mysql-core/db.d.ts +15 -8
  177. package/mysql-core/db.js +29 -5
  178. package/mysql-core/db.js.map +1 -1
  179. package/mysql-core/dialect.cjs +197 -15
  180. package/mysql-core/dialect.cjs.map +1 -1
  181. package/mysql-core/dialect.d.cts +36 -13
  182. package/mysql-core/dialect.d.ts +36 -13
  183. package/mysql-core/dialect.js +196 -22
  184. package/mysql-core/dialect.js.map +1 -1
  185. package/mysql-core/query-builders/_query.cjs +149 -0
  186. package/mysql-core/query-builders/_query.cjs.map +1 -0
  187. package/mysql-core/query-builders/_query.d.cts +44 -0
  188. package/mysql-core/query-builders/_query.d.ts +44 -0
  189. package/mysql-core/query-builders/_query.js +114 -0
  190. package/mysql-core/query-builders/_query.js.map +1 -0
  191. package/mysql-core/query-builders/count.cjs.map +1 -1
  192. package/mysql-core/query-builders/count.d.cts +1 -1
  193. package/mysql-core/query-builders/count.d.ts +1 -1
  194. package/mysql-core/query-builders/count.js.map +1 -1
  195. package/mysql-core/query-builders/query.cjs +18 -31
  196. package/mysql-core/query-builders/query.cjs.map +1 -1
  197. package/mysql-core/query-builders/query.d.cts +8 -10
  198. package/mysql-core/query-builders/query.d.ts +8 -10
  199. package/mysql-core/query-builders/query.js +18 -31
  200. package/mysql-core/query-builders/query.js.map +1 -1
  201. package/mysql-core/session.cjs +3 -2
  202. package/mysql-core/session.cjs.map +1 -1
  203. package/mysql-core/session.d.cts +10 -7
  204. package/mysql-core/session.d.ts +10 -7
  205. package/mysql-core/session.js +3 -2
  206. package/mysql-core/session.js.map +1 -1
  207. package/mysql-proxy/driver.cjs +22 -5
  208. package/mysql-proxy/driver.cjs.map +1 -1
  209. package/mysql-proxy/driver.d.cts +3 -2
  210. package/mysql-proxy/driver.d.ts +3 -2
  211. package/mysql-proxy/driver.js +12 -8
  212. package/mysql-proxy/driver.js.map +1 -1
  213. package/mysql-proxy/migrator.cjs.map +1 -1
  214. package/mysql-proxy/migrator.d.cts +2 -1
  215. package/mysql-proxy/migrator.d.ts +2 -1
  216. package/mysql-proxy/migrator.js.map +1 -1
  217. package/mysql-proxy/session.cjs +27 -2
  218. package/mysql-proxy/session.cjs.map +1 -1
  219. package/mysql-proxy/session.d.cts +13 -8
  220. package/mysql-proxy/session.d.ts +13 -8
  221. package/mysql-proxy/session.js +27 -2
  222. package/mysql-proxy/session.js.map +1 -1
  223. package/mysql2/driver.cjs +24 -7
  224. package/mysql2/driver.cjs.map +1 -1
  225. package/mysql2/driver.d.cts +10 -9
  226. package/mysql2/driver.d.ts +10 -9
  227. package/mysql2/driver.js +14 -10
  228. package/mysql2/driver.js.map +1 -1
  229. package/mysql2/migrator.cjs.map +1 -1
  230. package/mysql2/migrator.d.cts +2 -1
  231. package/mysql2/migrator.d.ts +2 -1
  232. package/mysql2/migrator.js.map +1 -1
  233. package/mysql2/session.cjs +30 -2
  234. package/mysql2/session.cjs.map +1 -1
  235. package/mysql2/session.d.cts +13 -8
  236. package/mysql2/session.d.ts +13 -8
  237. package/mysql2/session.js +30 -2
  238. package/mysql2/session.js.map +1 -1
  239. package/neon-http/driver.cjs +21 -14
  240. package/neon-http/driver.cjs.map +1 -1
  241. package/neon-http/driver.d.cts +10 -11
  242. package/neon-http/driver.d.ts +10 -11
  243. package/neon-http/driver.js +11 -14
  244. package/neon-http/driver.js.map +1 -1
  245. package/neon-http/migrator.cjs.map +1 -1
  246. package/neon-http/migrator.d.cts +2 -1
  247. package/neon-http/migrator.d.ts +2 -1
  248. package/neon-http/migrator.js.map +1 -1
  249. package/neon-http/session.cjs +46 -26
  250. package/neon-http/session.cjs.map +1 -1
  251. package/neon-http/session.d.cts +15 -19
  252. package/neon-http/session.d.ts +15 -19
  253. package/neon-http/session.js +46 -26
  254. package/neon-http/session.js.map +1 -1
  255. package/neon-serverless/driver.cjs +19 -15
  256. package/neon-serverless/driver.cjs.map +1 -1
  257. package/neon-serverless/driver.d.cts +9 -10
  258. package/neon-serverless/driver.d.ts +9 -10
  259. package/neon-serverless/driver.js +9 -18
  260. package/neon-serverless/driver.js.map +1 -1
  261. package/neon-serverless/migrator.cjs.map +1 -1
  262. package/neon-serverless/migrator.d.cts +2 -1
  263. package/neon-serverless/migrator.d.ts +2 -1
  264. package/neon-serverless/migrator.js.map +1 -1
  265. package/neon-serverless/session.cjs +46 -25
  266. package/neon-serverless/session.cjs.map +1 -1
  267. package/neon-serverless/session.d.cts +15 -19
  268. package/neon-serverless/session.d.ts +15 -19
  269. package/neon-serverless/session.js +46 -25
  270. package/neon-serverless/session.js.map +1 -1
  271. package/node-postgres/driver.cjs +14 -15
  272. package/node-postgres/driver.cjs.map +1 -1
  273. package/node-postgres/driver.d.cts +9 -10
  274. package/node-postgres/driver.d.ts +9 -10
  275. package/node-postgres/driver.js +14 -18
  276. package/node-postgres/driver.js.map +1 -1
  277. package/node-postgres/migrator.cjs.map +1 -1
  278. package/node-postgres/migrator.d.cts +2 -1
  279. package/node-postgres/migrator.d.ts +2 -1
  280. package/node-postgres/migrator.js.map +1 -1
  281. package/node-postgres/session.cjs +50 -22
  282. package/node-postgres/session.cjs.map +1 -1
  283. package/node-postgres/session.d.cts +15 -20
  284. package/node-postgres/session.d.ts +15 -20
  285. package/node-postgres/session.js +50 -22
  286. package/node-postgres/session.js.map +1 -1
  287. package/op-sqlite/driver.cjs +22 -5
  288. package/op-sqlite/driver.cjs.map +1 -1
  289. package/op-sqlite/driver.d.cts +3 -2
  290. package/op-sqlite/driver.d.ts +3 -2
  291. package/op-sqlite/driver.js +12 -8
  292. package/op-sqlite/driver.js.map +1 -1
  293. package/op-sqlite/migrator.cjs.map +1 -1
  294. package/op-sqlite/migrator.d.cts +3 -2
  295. package/op-sqlite/migrator.d.ts +3 -2
  296. package/op-sqlite/migrator.js.map +1 -1
  297. package/op-sqlite/session.cjs +47 -4
  298. package/op-sqlite/session.cjs.map +1 -1
  299. package/op-sqlite/session.d.cts +14 -8
  300. package/op-sqlite/session.d.ts +14 -8
  301. package/op-sqlite/session.js +47 -4
  302. package/op-sqlite/session.js.map +1 -1
  303. package/package.json +100 -113
  304. package/pg-core/db.cjs +32 -6
  305. package/pg-core/db.cjs.map +1 -1
  306. package/pg-core/db.d.cts +16 -13
  307. package/pg-core/db.d.ts +16 -13
  308. package/pg-core/db.js +31 -5
  309. package/pg-core/db.js.map +1 -1
  310. package/pg-core/dialect.cjs +173 -488
  311. package/pg-core/dialect.cjs.map +1 -1
  312. package/pg-core/dialect.d.cts +27 -8
  313. package/pg-core/dialect.d.ts +27 -8
  314. package/pg-core/dialect.js +172 -495
  315. package/pg-core/dialect.js.map +1 -1
  316. package/pg-core/query-builders/_query.cjs +155 -0
  317. package/pg-core/query-builders/_query.cjs.map +1 -0
  318. package/pg-core/query-builders/_query.d.cts +47 -0
  319. package/pg-core/query-builders/_query.d.ts +47 -0
  320. package/pg-core/query-builders/_query.js +120 -0
  321. package/pg-core/query-builders/_query.js.map +1 -0
  322. package/pg-core/query-builders/count.cjs.map +1 -1
  323. package/pg-core/query-builders/count.d.cts +1 -1
  324. package/pg-core/query-builders/count.d.ts +1 -1
  325. package/pg-core/query-builders/count.js.map +1 -1
  326. package/pg-core/query-builders/delete.cjs +1 -6
  327. package/pg-core/query-builders/delete.cjs.map +1 -1
  328. package/pg-core/query-builders/delete.d.cts +1 -2
  329. package/pg-core/query-builders/delete.d.ts +1 -2
  330. package/pg-core/query-builders/delete.js +1 -6
  331. package/pg-core/query-builders/delete.js.map +1 -1
  332. package/pg-core/query-builders/insert.cjs +1 -6
  333. package/pg-core/query-builders/insert.cjs.map +1 -1
  334. package/pg-core/query-builders/insert.d.cts +1 -2
  335. package/pg-core/query-builders/insert.d.ts +1 -2
  336. package/pg-core/query-builders/insert.js +1 -6
  337. package/pg-core/query-builders/insert.js.map +1 -1
  338. package/pg-core/query-builders/query.cjs +15 -18
  339. package/pg-core/query-builders/query.cjs.map +1 -1
  340. package/pg-core/query-builders/query.d.cts +6 -6
  341. package/pg-core/query-builders/query.d.ts +6 -6
  342. package/pg-core/query-builders/query.js +15 -18
  343. package/pg-core/query-builders/query.js.map +1 -1
  344. package/pg-core/query-builders/select.cjs +5 -31
  345. package/pg-core/query-builders/select.cjs.map +1 -1
  346. package/pg-core/query-builders/select.d.cts +2 -11
  347. package/pg-core/query-builders/select.d.ts +2 -11
  348. package/pg-core/query-builders/select.js +5 -31
  349. package/pg-core/query-builders/select.js.map +1 -1
  350. package/pg-core/query-builders/select.types.cjs.map +1 -1
  351. package/pg-core/query-builders/select.types.d.cts +0 -7
  352. package/pg-core/query-builders/select.types.d.ts +0 -7
  353. package/pg-core/query-builders/update.cjs +1 -6
  354. package/pg-core/query-builders/update.cjs.map +1 -1
  355. package/pg-core/query-builders/update.d.cts +3 -4
  356. package/pg-core/query-builders/update.d.ts +3 -4
  357. package/pg-core/query-builders/update.js +1 -6
  358. package/pg-core/query-builders/update.js.map +1 -1
  359. package/pg-core/session.cjs +4 -55
  360. package/pg-core/session.cjs.map +1 -1
  361. package/pg-core/session.d.cts +12 -20
  362. package/pg-core/session.d.ts +12 -20
  363. package/pg-core/session.js +5 -56
  364. package/pg-core/session.js.map +1 -1
  365. package/pg-core/utils.cjs +0 -16
  366. package/pg-core/utils.cjs.map +1 -1
  367. package/pg-core/utils.d.cts +4 -8
  368. package/pg-core/utils.d.ts +4 -8
  369. package/pg-core/utils.js +1 -16
  370. package/pg-core/utils.js.map +1 -1
  371. package/pg-proxy/driver.cjs +21 -10
  372. package/pg-proxy/driver.cjs.map +1 -1
  373. package/pg-proxy/driver.d.cts +3 -2
  374. package/pg-proxy/driver.d.ts +3 -2
  375. package/pg-proxy/driver.js +11 -13
  376. package/pg-proxy/driver.js.map +1 -1
  377. package/pg-proxy/migrator.cjs.map +1 -1
  378. package/pg-proxy/migrator.d.cts +2 -1
  379. package/pg-proxy/migrator.d.ts +2 -1
  380. package/pg-proxy/migrator.js.map +1 -1
  381. package/pg-proxy/session.cjs +41 -16
  382. package/pg-proxy/session.cjs.map +1 -1
  383. package/pg-proxy/session.d.cts +15 -19
  384. package/pg-proxy/session.d.ts +15 -19
  385. package/pg-proxy/session.js +41 -16
  386. package/pg-proxy/session.js.map +1 -1
  387. package/pglite/driver.cjs +24 -15
  388. package/pglite/driver.cjs.map +1 -1
  389. package/pglite/driver.d.cts +9 -10
  390. package/pglite/driver.d.ts +9 -10
  391. package/pglite/driver.js +14 -18
  392. package/pglite/driver.js.map +1 -1
  393. package/pglite/migrator.cjs.map +1 -1
  394. package/pglite/migrator.d.cts +2 -1
  395. package/pglite/migrator.d.ts +2 -1
  396. package/pglite/migrator.js.map +1 -1
  397. package/pglite/session.cjs +40 -21
  398. package/pglite/session.cjs.map +1 -1
  399. package/pglite/session.d.cts +15 -19
  400. package/pglite/session.d.ts +15 -19
  401. package/pglite/session.js +40 -21
  402. package/pglite/session.js.map +1 -1
  403. package/planetscale-serverless/driver.cjs +22 -5
  404. package/planetscale-serverless/driver.cjs.map +1 -1
  405. package/planetscale-serverless/driver.d.cts +7 -6
  406. package/planetscale-serverless/driver.d.ts +7 -6
  407. package/planetscale-serverless/driver.js +12 -8
  408. package/planetscale-serverless/driver.js.map +1 -1
  409. package/planetscale-serverless/migrator.cjs.map +1 -1
  410. package/planetscale-serverless/migrator.d.cts +2 -1
  411. package/planetscale-serverless/migrator.d.ts +2 -1
  412. package/planetscale-serverless/migrator.js.map +1 -1
  413. package/planetscale-serverless/session.cjs +45 -5
  414. package/planetscale-serverless/session.cjs.map +1 -1
  415. package/planetscale-serverless/session.d.cts +14 -9
  416. package/planetscale-serverless/session.d.ts +14 -9
  417. package/planetscale-serverless/session.js +45 -5
  418. package/planetscale-serverless/session.js.map +1 -1
  419. package/postgres-js/driver.cjs +6 -9
  420. package/postgres-js/driver.cjs.map +1 -1
  421. package/postgres-js/driver.d.cts +7 -6
  422. package/postgres-js/driver.d.ts +7 -6
  423. package/postgres-js/driver.js +6 -12
  424. package/postgres-js/driver.js.map +1 -1
  425. package/postgres-js/migrator.cjs.map +1 -1
  426. package/postgres-js/migrator.d.cts +2 -1
  427. package/postgres-js/migrator.d.ts +2 -1
  428. package/postgres-js/migrator.js.map +1 -1
  429. package/postgres-js/session.cjs +56 -23
  430. package/postgres-js/session.cjs.map +1 -1
  431. package/postgres-js/session.d.cts +17 -20
  432. package/postgres-js/session.d.ts +17 -20
  433. package/postgres-js/session.js +56 -23
  434. package/postgres-js/session.js.map +1 -1
  435. package/prisma/mysql/driver.cjs +1 -1
  436. package/prisma/mysql/driver.cjs.map +1 -1
  437. package/prisma/mysql/driver.js +1 -1
  438. package/prisma/mysql/driver.js.map +1 -1
  439. package/prisma/mysql/session.cjs +3 -0
  440. package/prisma/mysql/session.cjs.map +1 -1
  441. package/prisma/mysql/session.d.cts +3 -1
  442. package/prisma/mysql/session.d.ts +3 -1
  443. package/prisma/mysql/session.js +3 -0
  444. package/prisma/mysql/session.js.map +1 -1
  445. package/prisma/pg/driver.cjs +1 -1
  446. package/prisma/pg/driver.cjs.map +1 -1
  447. package/prisma/pg/driver.js +1 -1
  448. package/prisma/pg/driver.js.map +1 -1
  449. package/prisma/pg/session.cjs +4 -1
  450. package/prisma/pg/session.cjs.map +1 -1
  451. package/prisma/pg/session.d.cts +3 -1
  452. package/prisma/pg/session.d.ts +3 -1
  453. package/prisma/pg/session.js +4 -1
  454. package/prisma/pg/session.js.map +1 -1
  455. package/prisma/sqlite/driver.cjs +1 -1
  456. package/prisma/sqlite/driver.cjs.map +1 -1
  457. package/prisma/sqlite/driver.js +1 -1
  458. package/prisma/sqlite/driver.js.map +1 -1
  459. package/prisma/sqlite/session.cjs +3 -0
  460. package/prisma/sqlite/session.cjs.map +1 -1
  461. package/prisma/sqlite/session.d.cts +4 -2
  462. package/prisma/sqlite/session.d.ts +4 -2
  463. package/prisma/sqlite/session.js +3 -0
  464. package/prisma/sqlite/session.js.map +1 -1
  465. package/query-builders/query-builder.cjs.map +1 -1
  466. package/query-builders/query-builder.d.cts +1 -2
  467. package/query-builders/query-builder.d.ts +1 -2
  468. package/query-builders/query-builder.js.map +1 -1
  469. package/relations.cjs +596 -245
  470. package/relations.cjs.map +1 -1
  471. package/relations.d.cts +292 -140
  472. package/relations.d.ts +292 -140
  473. package/relations.js +589 -240
  474. package/relations.js.map +1 -1
  475. package/singlestore/driver.cjs +1 -1
  476. package/singlestore/driver.cjs.map +1 -1
  477. package/singlestore/driver.d.cts +1 -1
  478. package/singlestore/driver.d.ts +1 -1
  479. package/singlestore/driver.js +3 -3
  480. package/singlestore/driver.js.map +1 -1
  481. package/singlestore/session.cjs.map +1 -1
  482. package/singlestore/session.d.cts +4 -4
  483. package/singlestore/session.d.ts +4 -4
  484. package/singlestore/session.js.map +1 -1
  485. package/singlestore-core/db.cjs.map +1 -1
  486. package/singlestore-core/db.d.cts +3 -3
  487. package/singlestore-core/db.d.ts +3 -3
  488. package/singlestore-core/db.js.map +1 -1
  489. package/singlestore-core/dialect.cjs +16 -6
  490. package/singlestore-core/dialect.cjs.map +1 -1
  491. package/singlestore-core/dialect.d.cts +6 -6
  492. package/singlestore-core/dialect.d.ts +6 -6
  493. package/singlestore-core/dialect.js +6 -12
  494. package/singlestore-core/dialect.js.map +1 -1
  495. package/singlestore-core/query-builders/query.cjs +12 -2
  496. package/singlestore-core/query-builders/query.cjs.map +1 -1
  497. package/singlestore-core/query-builders/query.d.cts +6 -6
  498. package/singlestore-core/query-builders/query.d.ts +6 -6
  499. package/singlestore-core/query-builders/query.js +2 -4
  500. package/singlestore-core/query-builders/query.js.map +1 -1
  501. package/singlestore-core/session.cjs.map +1 -1
  502. package/singlestore-core/session.d.cts +5 -5
  503. package/singlestore-core/session.d.ts +5 -5
  504. package/singlestore-core/session.js.map +1 -1
  505. package/singlestore-proxy/driver.cjs +1 -1
  506. package/singlestore-proxy/driver.cjs.map +1 -1
  507. package/singlestore-proxy/driver.js +3 -3
  508. package/singlestore-proxy/driver.js.map +1 -1
  509. package/singlestore-proxy/session.cjs.map +1 -1
  510. package/singlestore-proxy/session.d.cts +4 -4
  511. package/singlestore-proxy/session.d.ts +4 -4
  512. package/singlestore-proxy/session.js.map +1 -1
  513. package/sql/expressions/conditions.cjs.map +1 -1
  514. package/sql/expressions/conditions.d.cts +4 -4
  515. package/sql/expressions/conditions.d.ts +4 -4
  516. package/sql/expressions/conditions.js.map +1 -1
  517. package/sql/sql.cjs +21 -7
  518. package/sql/sql.cjs.map +1 -1
  519. package/sql/sql.d.cts +8 -8
  520. package/sql/sql.d.ts +8 -8
  521. package/sql/sql.js +22 -8
  522. package/sql/sql.js.map +1 -1
  523. package/sql-js/driver.cjs +16 -5
  524. package/sql-js/driver.cjs.map +1 -1
  525. package/sql-js/driver.d.cts +3 -2
  526. package/sql-js/driver.d.ts +3 -2
  527. package/sql-js/driver.js +6 -8
  528. package/sql-js/driver.js.map +1 -1
  529. package/sql-js/migrator.cjs.map +1 -1
  530. package/sql-js/migrator.d.cts +2 -1
  531. package/sql-js/migrator.d.ts +2 -1
  532. package/sql-js/migrator.js.map +1 -1
  533. package/sql-js/session.cjs +71 -36
  534. package/sql-js/session.cjs.map +1 -1
  535. package/sql-js/session.d.cts +16 -13
  536. package/sql-js/session.d.ts +16 -13
  537. package/sql-js/session.js +71 -36
  538. package/sql-js/session.js.map +1 -1
  539. package/sqlite-core/db.cjs +39 -12
  540. package/sqlite-core/db.cjs.map +1 -1
  541. package/sqlite-core/db.d.cts +16 -8
  542. package/sqlite-core/db.d.ts +16 -8
  543. package/sqlite-core/db.js +38 -11
  544. package/sqlite-core/db.js.map +1 -1
  545. package/sqlite-core/dialect.cjs +186 -7
  546. package/sqlite-core/dialect.cjs.map +1 -1
  547. package/sqlite-core/dialect.d.cts +31 -9
  548. package/sqlite-core/dialect.d.ts +31 -9
  549. package/sqlite-core/dialect.js +185 -14
  550. package/sqlite-core/dialect.js.map +1 -1
  551. package/sqlite-core/query-builders/_query.cjs +187 -0
  552. package/sqlite-core/query-builders/_query.cjs.map +1 -0
  553. package/sqlite-core/query-builders/_query.d.cts +55 -0
  554. package/sqlite-core/query-builders/_query.d.ts +55 -0
  555. package/sqlite-core/query-builders/_query.js +151 -0
  556. package/sqlite-core/query-builders/_query.js.map +1 -0
  557. package/sqlite-core/query-builders/count.cjs.map +1 -1
  558. package/sqlite-core/query-builders/count.d.cts +1 -1
  559. package/sqlite-core/query-builders/count.d.ts +1 -1
  560. package/sqlite-core/query-builders/count.js.map +1 -1
  561. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  562. package/sqlite-core/query-builders/delete.d.cts +1 -1
  563. package/sqlite-core/query-builders/delete.d.ts +1 -1
  564. package/sqlite-core/query-builders/delete.js.map +1 -1
  565. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  566. package/sqlite-core/query-builders/insert.d.cts +3 -3
  567. package/sqlite-core/query-builders/insert.d.ts +3 -3
  568. package/sqlite-core/query-builders/insert.js.map +1 -1
  569. package/sqlite-core/query-builders/query.cjs +56 -35
  570. package/sqlite-core/query-builders/query.cjs.map +1 -1
  571. package/sqlite-core/query-builders/query.d.cts +18 -17
  572. package/sqlite-core/query-builders/query.d.ts +18 -17
  573. package/sqlite-core/query-builders/query.js +56 -35
  574. package/sqlite-core/query-builders/query.js.map +1 -1
  575. package/sqlite-core/query-builders/select.cjs.map +1 -1
  576. package/sqlite-core/query-builders/select.d.cts +3 -3
  577. package/sqlite-core/query-builders/select.d.ts +3 -3
  578. package/sqlite-core/query-builders/select.js.map +1 -1
  579. package/sqlite-core/query-builders/update.cjs.map +1 -1
  580. package/sqlite-core/query-builders/update.d.cts +3 -3
  581. package/sqlite-core/query-builders/update.d.ts +3 -3
  582. package/sqlite-core/query-builders/update.js.map +1 -1
  583. package/sqlite-core/session.cjs +6 -2
  584. package/sqlite-core/session.cjs.map +1 -1
  585. package/sqlite-core/session.d.cts +15 -7
  586. package/sqlite-core/session.d.ts +15 -7
  587. package/sqlite-core/session.js +6 -2
  588. package/sqlite-core/session.js.map +1 -1
  589. package/sqlite-proxy/driver.cjs +23 -5
  590. package/sqlite-proxy/driver.cjs.map +1 -1
  591. package/sqlite-proxy/driver.d.cts +4 -3
  592. package/sqlite-proxy/driver.d.ts +4 -3
  593. package/sqlite-proxy/driver.js +13 -5
  594. package/sqlite-proxy/driver.js.map +1 -1
  595. package/sqlite-proxy/migrator.cjs.map +1 -1
  596. package/sqlite-proxy/migrator.d.cts +2 -1
  597. package/sqlite-proxy/migrator.d.ts +2 -1
  598. package/sqlite-proxy/migrator.js.map +1 -1
  599. package/sqlite-proxy/session.cjs +50 -6
  600. package/sqlite-proxy/session.cjs.map +1 -1
  601. package/sqlite-proxy/session.d.cts +14 -8
  602. package/sqlite-proxy/session.d.ts +14 -8
  603. package/sqlite-proxy/session.js +50 -6
  604. package/sqlite-proxy/session.js.map +1 -1
  605. package/subquery.cjs +3 -4
  606. package/subquery.cjs.map +1 -1
  607. package/subquery.d.cts +1 -2
  608. package/subquery.d.ts +1 -2
  609. package/subquery.js +3 -4
  610. package/subquery.js.map +1 -1
  611. package/table.cjs.map +1 -1
  612. package/table.d.cts +2 -2
  613. package/table.d.ts +2 -2
  614. package/table.js.map +1 -1
  615. package/tidb-serverless/driver.cjs +22 -5
  616. package/tidb-serverless/driver.cjs.map +1 -1
  617. package/tidb-serverless/driver.d.cts +7 -6
  618. package/tidb-serverless/driver.d.ts +7 -6
  619. package/tidb-serverless/driver.js +12 -8
  620. package/tidb-serverless/driver.js.map +1 -1
  621. package/tidb-serverless/migrator.cjs.map +1 -1
  622. package/tidb-serverless/migrator.d.cts +2 -1
  623. package/tidb-serverless/migrator.d.ts +2 -1
  624. package/tidb-serverless/migrator.js.map +1 -1
  625. package/tidb-serverless/session.cjs +62 -5
  626. package/tidb-serverless/session.cjs.map +1 -1
  627. package/tidb-serverless/session.d.cts +14 -9
  628. package/tidb-serverless/session.d.ts +14 -9
  629. package/tidb-serverless/session.js +62 -5
  630. package/tidb-serverless/session.js.map +1 -1
  631. package/utils.cjs +2 -2
  632. package/utils.cjs.map +1 -1
  633. package/utils.d.cts +3 -3
  634. package/utils.d.ts +3 -3
  635. package/utils.js +2 -2
  636. package/utils.js.map +1 -1
  637. package/vercel-postgres/driver.cjs +24 -15
  638. package/vercel-postgres/driver.cjs.map +1 -1
  639. package/vercel-postgres/driver.d.cts +9 -10
  640. package/vercel-postgres/driver.d.ts +9 -10
  641. package/vercel-postgres/driver.js +14 -18
  642. package/vercel-postgres/driver.js.map +1 -1
  643. package/vercel-postgres/migrator.cjs.map +1 -1
  644. package/vercel-postgres/migrator.d.cts +2 -1
  645. package/vercel-postgres/migrator.d.ts +2 -1
  646. package/vercel-postgres/migrator.js.map +1 -1
  647. package/vercel-postgres/session.cjs +40 -24
  648. package/vercel-postgres/session.cjs.map +1 -1
  649. package/vercel-postgres/session.d.cts +15 -19
  650. package/vercel-postgres/session.d.ts +15 -19
  651. package/vercel-postgres/session.js +40 -24
  652. package/vercel-postgres/session.js.map +1 -1
  653. package/version.cjs +1 -1
  654. package/version.d.cts +1 -1
  655. package/version.d.ts +1 -1
  656. package/version.js +1 -1
  657. package/xata-http/driver.cjs +19 -12
  658. package/xata-http/driver.cjs.map +1 -1
  659. package/xata-http/driver.d.cts +5 -6
  660. package/xata-http/driver.d.ts +5 -6
  661. package/xata-http/driver.js +9 -12
  662. package/xata-http/driver.js.map +1 -1
  663. package/xata-http/migrator.cjs.map +1 -1
  664. package/xata-http/migrator.d.cts +2 -1
  665. package/xata-http/migrator.d.ts +2 -1
  666. package/xata-http/migrator.js.map +1 -1
  667. package/xata-http/session.cjs +36 -22
  668. package/xata-http/session.cjs.map +1 -1
  669. package/xata-http/session.d.cts +15 -19
  670. package/xata-http/session.d.ts +15 -19
  671. package/xata-http/session.js +36 -22
  672. package/xata-http/session.js.map +1 -1
  673. package/cache/core/cache.cjs +0 -47
  674. package/cache/core/cache.cjs.map +0 -1
  675. package/cache/core/cache.d.cts +0 -35
  676. package/cache/core/cache.d.ts +0 -35
  677. package/cache/core/cache.js +0 -22
  678. package/cache/core/cache.js.map +0 -1
  679. package/cache/core/index.cjs +0 -23
  680. package/cache/core/index.cjs.map +0 -1
  681. package/cache/core/index.d.cts +0 -1
  682. package/cache/core/index.d.ts +0 -1
  683. package/cache/core/index.js +0 -2
  684. package/cache/core/index.js.map +0 -1
  685. package/cache/core/types.cjs +0 -17
  686. package/cache/core/types.cjs.map +0 -1
  687. package/cache/core/types.d.cts +0 -22
  688. package/cache/core/types.d.ts +0 -22
  689. package/cache/core/types.js +0 -1
  690. package/cache/core/types.js.map +0 -1
  691. package/cache/upstash/cache.cjs +0 -98
  692. package/cache/upstash/cache.cjs.map +0 -1
  693. package/cache/upstash/cache.d.cts +0 -23
  694. package/cache/upstash/cache.d.ts +0 -23
  695. package/cache/upstash/cache.js +0 -73
  696. package/cache/upstash/cache.js.map +0 -1
  697. package/cache/upstash/index.cjs +0 -23
  698. package/cache/upstash/index.cjs.map +0 -1
  699. package/cache/upstash/index.d.cts +0 -1
  700. package/cache/upstash/index.d.ts +0 -1
  701. package/cache/upstash/index.js +0 -2
  702. package/cache/upstash/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pglite/session.ts"],"sourcesContent":["import type { PGlite, QueryOptions, Results, Row, Transaction } from '@electric-sql/pglite';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered, WithCacheConfig } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nimport { types } from '@electric-sql/pglite';\nimport { type Cache, NoopCache } from '~/cache/core/cache.ts';\n\nexport type PgliteClient = PGlite;\n\nexport class PglitePreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'PglitePreparedQuery';\n\n\tprivate rawQueryConfig: QueryOptions;\n\tprivate queryConfig: QueryOptions;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params }, cache, queryMetadata, cacheConfig);\n\t\tthis.rawQueryConfig = {\n\t\t\trowMode: 'object',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\trowMode: 'array',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst { fields, client, queryConfig, joinsNotNullableMap, customResultMapper, queryString, rawQueryConfig } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn this.queryWithCache(queryString, params, async () => {\n\t\t\t\treturn await client.query<any[]>(queryString, params, rawQueryConfig);\n\t\t\t});\n\t\t}\n\n\t\tconst result = await this.queryWithCache(queryString, params, async () => {\n\t\t\treturn await client.query<any[]>(queryString, params, queryConfig);\n\t\t});\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows)\n\t\t\t: result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.queryString, params);\n\t\treturn this.queryWithCache(this.queryString, params, async () => {\n\t\t\treturn await this.client.query<any[]>(this.queryString, params, this.rawQueryConfig);\n\t\t}).then((result) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface PgliteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport class PgliteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PgliteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): PgPreparedQuery<T> {\n\t\treturn new PglitePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\treturn (this.client as PgliteClient).transaction(async (client) => {\n\t\t\tconst session = new PgliteSession<TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new PgliteTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class PgliteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<PgliteQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteTransaction';\n\n\toverride async transaction<T>(transaction: (tx: PgliteTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PgliteTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface PgliteQueryResultHKT extends PgQueryResultHKT {\n\ttype: Results<Assume<this['row'], Row>>;\n}\n"],"mappings":"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","names":["sql"]}
1
+ {"version":3,"sources":["../../src/pglite/session.ts"],"sourcesContent":["import type { PGlite, QueryOptions, Results, Row, Transaction } from '@electric-sql/pglite';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { type Logger, NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nimport { types } from '@electric-sql/pglite';\nimport type { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\n\nexport type PgliteClient = PGlite;\n\nexport class PglitePreparedQuery<T extends PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PgPreparedQuery<T>\n{\n\tstatic override readonly [entityKind]: string = 'PglitePreparedQuery';\n\n\tprivate rawQueryConfig: QueryOptions;\n\tprivate queryConfig: QueryOptions;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => T['execute'],\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQueryConfig = {\n\t\t\trowMode: 'object',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t\tthis.queryConfig = {\n\t\t\trowMode: 'array',\n\t\t\tparsers: {\n\t\t\t\t[types.TIMESTAMP]: (value) => value,\n\t\t\t\t[types.TIMESTAMPTZ]: (value) => value,\n\t\t\t\t[types.INTERVAL]: (value) => value,\n\t\t\t\t[types.DATE]: (value) => value,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tif (this.isRqbV2Query) return this.executeRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst { fields, rawQueryConfig, client, queryConfig, joinsNotNullableMap, customResultMapper, queryString } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn client.query<any[]>(queryString, params, rawQueryConfig);\n\t\t}\n\n\t\tconst result = await client.query<any[]>(queryString, params, queryConfig);\n\n\t\treturn customResultMapper\n\t\t\t? (customResultMapper as (rows: unknown[][]) => T['execute'])(result.rows)\n\t\t\t: result.rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate async executeRqbV2(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst { rawQueryConfig, client, customResultMapper, queryString } = this;\n\n\t\tconst result = await client.query<Record<string, unknown>>(queryString, params, rawQueryConfig);\n\n\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => T['execute'])(result.rows);\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\tthis.logger.logQuery(this.queryString, params);\n\t\treturn this.client.query(this.queryString, params, this.rawQueryConfig).then((result) => result.rows);\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface PgliteSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class PgliteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgSession<PgliteQueryResultHKT, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: PgliteClient | Transaction,\n\t\tdialect: PgDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PgliteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new PglitePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new PglitePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tname,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PgliteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\treturn (this.client as PgliteClient).transaction(async (client) => {\n\t\t\tconst session = new PgliteSession<TFullSchema, TRelations, TTablesConfig, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new PgliteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n}\n\nexport class PgliteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends PgTransaction<PgliteQueryResultHKT, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PgliteTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PgliteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PgliteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface PgliteQueryResultHKT extends PgQueryResultHKT {\n\ttype: Results<Assume<this['row'], Row>>;\n}\n"],"mappings":"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","names":["sql"]}
@@ -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, {
@@ -23,11 +33,11 @@ __export(driver_exports, {
23
33
  });
24
34
  module.exports = __toCommonJS(driver_exports);
25
35
  var import_database = require("@planetscale/database");
36
+ var V1 = __toESM(require("../_relations.cjs"), 1);
26
37
  var import_entity = require("../entity.cjs");
27
38
  var import_logger = require("../logger.cjs");
28
39
  var import_db = require("../mysql-core/db.cjs");
29
40
  var import_dialect = require("../mysql-core/dialect.cjs");
30
- var import_relations = require("../relations.cjs");
31
41
  var import_utils = require("../utils.cjs");
32
42
  var import_session = require("./session.cjs");
33
43
  class PlanetScaleDatabase extends import_db.MySqlDatabase {
@@ -57,9 +67,9 @@ const db = drizzle(client);
57
67
  }
58
68
  let schema;
59
69
  if (config.schema) {
60
- const tablesConfig = (0, import_relations.extractTablesRelationalConfig)(
70
+ const tablesConfig = V1.extractTablesRelationalConfig(
61
71
  config.schema,
62
- import_relations.createTableRelationsHelpers
72
+ V1.createTableRelationsHelpers
63
73
  );
64
74
  schema = {
65
75
  fullSchema: config.schema,
@@ -67,8 +77,15 @@ const db = drizzle(client);
67
77
  tableNamesMap: tablesConfig.tableNamesMap
68
78
  };
69
79
  }
70
- const session = new import_session.PlanetscaleSession(client, dialect, void 0, schema, { logger });
71
- const db = new PlanetScaleDatabase(dialect, session, schema, "planetscale");
80
+ const relations = config.relations;
81
+ const session = new import_session.PlanetscaleSession(client, dialect, void 0, relations, schema, { logger });
82
+ const db = new PlanetScaleDatabase(
83
+ dialect,
84
+ session,
85
+ relations,
86
+ schema,
87
+ "planetscale"
88
+ );
72
89
  db.$client = client;
73
90
  return db;
74
91
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Config } from '@planetscale/database';\nimport { Client } from '@planetscale/database';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.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, isConfig } from '~/utils.ts';\nimport type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PlanetScaleDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// Client is not Drizzle Object, so we can ignore this rule here\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (!(client instanceof Client)) {\n\t\tthrow new Error(`Warning: You need to pass an instance of Client:\n\nimport { Client } from \"@planetscale/database\";\n\nconst client = new Client({\n host: process.env[\"DATABASE_HOST\"],\n username: process.env[\"DATABASE_USERNAME\"],\n password: process.env[\"DATABASE_PASSWORD\"],\n});\n\nconst db = drizzle(client);\n\t\t`);\n\t}\n\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 PlanetscaleSession(client, dialect, undefined, schema, { logger });\n\tconst db = new PlanetScaleDatabase(dialect, session, schema as any, 'planetscale') as PlanetScaleDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema>\n\t\t\t& ({\n\t\t\t\tconnection: string | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Client({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config | string; client?: TClient }\n\t\t\t& DrizzleConfig;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Client({\n\t\t\t\turl: connection,\n\t\t\t})\n\t\t\t: new Client(\n\t\t\t\tconnection!,\n\t\t\t);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema>,\n\t): PlanetScaleDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAuB;AACvB,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA8B;AAC9B,qBAA6B;AAC7B,uBAKO;AACP,mBAA6C;AAE7C,qBAAmC;AAM5B,MAAM,4BAEH,wBAA+E;AAAA,EACxF,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AAGD,MAAI,EAAE,kBAAkB,yBAAS;AAChC,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWf;AAAA,EACF;AAEA,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,QAAQ,SAAS,QAAW,QAAQ,EAAE,OAAO,CAAC;AACrF,QAAM,KAAK,IAAI,oBAAoB,SAAS,SAAS,QAAe,aAAa;AACjF,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,uBAAO;AAAA,MAC3B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,uBAAO;AAAA,MACZ,KAAK;AAAA,IACN,CAAC,IACC,IAAI;AAAA,MACL;AAAA,IACD;AAED,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AACvF;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
1
+ {"version":3,"sources":["../../src/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Config } from '@planetscale/database';\nimport { Client } from '@planetscale/database';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.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, isConfig } from '~/utils.ts';\nimport type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PlanetScaleDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Client = Client,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): PlanetScaleDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\t// Client is not Drizzle Object, so we can ignore this rule here\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (!(client instanceof Client)) {\n\t\tthrow new Error(`Warning: You need to pass an instance of Client:\n\nimport { Client } from \"@planetscale/database\";\n\nconst client = new Client({\n host: process.env[\"DATABASE_HOST\"],\n username: process.env[\"DATABASE_USERNAME\"],\n password: process.env[\"DATABASE_PASSWORD\"],\n});\n\nconst db = drizzle(client);\n\t\t`);\n\t}\n\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 PlanetscaleSession(client, dialect, undefined, relations, schema, { logger });\n\tconst db = new PlanetScaleDatabase(\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t\t'planetscale',\n\t) as PlanetScaleDatabase<TSchema, TRelations>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Client = Client,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema, TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): PlanetScaleDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Client({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config | string; client?: TClient }\n\t\t\t& DrizzleConfig;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Client({\n\t\t\t\turl: connection,\n\t\t\t})\n\t\t\t: new Client(\n\t\t\t\tconnection!,\n\t\t\t);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): PlanetScaleDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAuB;AACvB,SAAoB;AACpB,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA8B;AAC9B,qBAA6B;AAE7B,mBAA6C;AAE7C,qBAAmC;AAM5B,MAAM,4BAGH,wBAA2F;AAAA,EACpG,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UAKR,QACA,SAA6C,CAAC,GAG7C;AAGD,MAAI,EAAE,kBAAkB,yBAAS;AAChC,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWf;AAAA,EACF;AAEA,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,QAAQ,SAAS,QAAW,WAAW,QAAQ,EAAE,OAAO,CAAC;AAChG,QAAM,KAAK,IAAI;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAKZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,uBAAO;AAAA,MAC3B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,uBAAO;AAAA,MACZ,KAAK;AAAA,IACN,CAAC,IACC,IAAI;AAAA,MACL;AAAA,IACD;AAED,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAmD;AACnG;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
@@ -3,30 +3,31 @@ import { Client } from '@planetscale/database';
3
3
  import { entityKind } from "../entity.cjs";
4
4
  import type { Logger } from "../logger.cjs";
5
5
  import { MySqlDatabase } from "../mysql-core/db.cjs";
6
+ import type { AnyRelations, EmptyRelations } from "../relations.cjs";
6
7
  import { type DrizzleConfig } from "../utils.cjs";
7
8
  import type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from "./session.cjs";
8
9
  export interface PlanetscaleSDriverOptions {
9
10
  logger?: Logger;
10
11
  }
11
- export declare class PlanetScaleDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {
12
+ export declare class PlanetScaleDatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema, TRelations> {
12
13
  static readonly [entityKind]: string;
13
14
  }
14
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends Client = Client>(...params: [
15
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TClient extends Client = Client>(...params: [
15
16
  TClient | string
16
17
  ] | [
17
18
  TClient | string,
18
- DrizzleConfig<TSchema>
19
+ DrizzleConfig<TSchema, TRelations>
19
20
  ] | [
20
- (DrizzleConfig<TSchema> & ({
21
+ (DrizzleConfig<TSchema, TRelations> & ({
21
22
  connection: string | Config;
22
23
  } | {
23
24
  client: TClient;
24
25
  }))
25
- ]): PlanetScaleDatabase<TSchema> & {
26
+ ]): PlanetScaleDatabase<TSchema, TRelations> & {
26
27
  $client: TClient;
27
28
  };
28
29
  export declare namespace drizzle {
29
- function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): PlanetScaleDatabase<TSchema> & {
30
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(config?: DrizzleConfig<TSchema, TRelations>): PlanetScaleDatabase<TSchema, TRelations> & {
30
31
  $client: '$client is not available on drizzle.mock()';
31
32
  };
32
33
  }
@@ -3,30 +3,31 @@ import { Client } from '@planetscale/database';
3
3
  import { entityKind } from "../entity.js";
4
4
  import type { Logger } from "../logger.js";
5
5
  import { MySqlDatabase } from "../mysql-core/db.js";
6
+ import type { AnyRelations, EmptyRelations } from "../relations.js";
6
7
  import { type DrizzleConfig } from "../utils.js";
7
8
  import type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from "./session.js";
8
9
  export interface PlanetscaleSDriverOptions {
9
10
  logger?: Logger;
10
11
  }
11
- export declare class PlanetScaleDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {
12
+ export declare class PlanetScaleDatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema, TRelations> {
12
13
  static readonly [entityKind]: string;
13
14
  }
14
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends Client = Client>(...params: [
15
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TClient extends Client = Client>(...params: [
15
16
  TClient | string
16
17
  ] | [
17
18
  TClient | string,
18
- DrizzleConfig<TSchema>
19
+ DrizzleConfig<TSchema, TRelations>
19
20
  ] | [
20
- (DrizzleConfig<TSchema> & ({
21
+ (DrizzleConfig<TSchema, TRelations> & ({
21
22
  connection: string | Config;
22
23
  } | {
23
24
  client: TClient;
24
25
  }))
25
- ]): PlanetScaleDatabase<TSchema> & {
26
+ ]): PlanetScaleDatabase<TSchema, TRelations> & {
26
27
  $client: TClient;
27
28
  };
28
29
  export declare namespace drizzle {
29
- function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): PlanetScaleDatabase<TSchema> & {
30
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(config?: DrizzleConfig<TSchema, TRelations>): PlanetScaleDatabase<TSchema, TRelations> & {
30
31
  $client: '$client is not available on drizzle.mock()';
31
32
  };
32
33
  }
@@ -1,12 +1,9 @@
1
1
  import { Client } from "@planetscale/database";
2
+ import * as V1 from "../_relations.js";
2
3
  import { entityKind } from "../entity.js";
3
4
  import { DefaultLogger } from "../logger.js";
4
5
  import { MySqlDatabase } from "../mysql-core/db.js";
5
6
  import { MySqlDialect } from "../mysql-core/dialect.js";
6
- import {
7
- createTableRelationsHelpers,
8
- extractTablesRelationalConfig
9
- } from "../relations.js";
10
7
  import { isConfig } from "../utils.js";
11
8
  import { PlanetscaleSession } from "./session.js";
12
9
  class PlanetScaleDatabase extends MySqlDatabase {
@@ -36,9 +33,9 @@ const db = drizzle(client);
36
33
  }
37
34
  let schema;
38
35
  if (config.schema) {
39
- const tablesConfig = extractTablesRelationalConfig(
36
+ const tablesConfig = V1.extractTablesRelationalConfig(
40
37
  config.schema,
41
- createTableRelationsHelpers
38
+ V1.createTableRelationsHelpers
42
39
  );
43
40
  schema = {
44
41
  fullSchema: config.schema,
@@ -46,8 +43,15 @@ const db = drizzle(client);
46
43
  tableNamesMap: tablesConfig.tableNamesMap
47
44
  };
48
45
  }
49
- const session = new PlanetscaleSession(client, dialect, void 0, schema, { logger });
50
- const db = new PlanetScaleDatabase(dialect, session, schema, "planetscale");
46
+ const relations = config.relations;
47
+ const session = new PlanetscaleSession(client, dialect, void 0, relations, schema, { logger });
48
+ const db = new PlanetScaleDatabase(
49
+ dialect,
50
+ session,
51
+ relations,
52
+ schema,
53
+ "planetscale"
54
+ );
51
55
  db.$client = client;
52
56
  return db;
53
57
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Config } from '@planetscale/database';\nimport { Client } from '@planetscale/database';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.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, isConfig } from '~/utils.ts';\nimport type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PlanetScaleDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// Client is not Drizzle Object, so we can ignore this rule here\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (!(client instanceof Client)) {\n\t\tthrow new Error(`Warning: You need to pass an instance of Client:\n\nimport { Client } from \"@planetscale/database\";\n\nconst client = new Client({\n host: process.env[\"DATABASE_HOST\"],\n username: process.env[\"DATABASE_USERNAME\"],\n password: process.env[\"DATABASE_PASSWORD\"],\n});\n\nconst db = drizzle(client);\n\t\t`);\n\t}\n\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 PlanetscaleSession(client, dialect, undefined, schema, { logger });\n\tconst db = new PlanetScaleDatabase(dialect, session, schema as any, 'planetscale') as PlanetScaleDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends Client = Client,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema>\n\t\t\t& ({\n\t\t\t\tconnection: string | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): PlanetScaleDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Client({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config | string; client?: TClient }\n\t\t\t& DrizzleConfig;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Client({\n\t\t\t\turl: connection,\n\t\t\t})\n\t\t\t: new Client(\n\t\t\t\tconnection!,\n\t\t\t);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema>,\n\t): PlanetScaleDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"AACA,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAA6B,gBAAgB;AAE7C,SAAS,0BAA0B;AAM5B,MAAM,4BAEH,cAA+E;AAAA,EACxF,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AAGD,MAAI,EAAE,kBAAkB,SAAS;AAChC,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWf;AAAA,EACF;AAEA,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,QAAQ,SAAS,QAAW,QAAQ,EAAE,OAAO,CAAC;AACrF,QAAM,KAAK,IAAI,oBAAoB,SAAS,SAAS,QAAe,aAAa;AACjF,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,OAAO;AAAA,MAC3B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,OAAO;AAAA,MACZ,KAAK;AAAA,IACN,CAAC,IACC,IAAI;AAAA,MACL;AAAA,IACD;AAED,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AACvF;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
1
+ {"version":3,"sources":["../../src/planetscale-serverless/driver.ts"],"sourcesContent":["import type { Config } from '@planetscale/database';\nimport { Client } from '@planetscale/database';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.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, isConfig } from '~/utils.ts';\nimport type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from './session.ts';\nimport { PlanetscaleSession } from './session.ts';\n\nexport interface PlanetscaleSDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class PlanetScaleDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends MySqlDatabase<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Client = Client,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): PlanetScaleDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\t// Client is not Drizzle Object, so we can ignore this rule here\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (!(client instanceof Client)) {\n\t\tthrow new Error(`Warning: You need to pass an instance of Client:\n\nimport { Client } from \"@planetscale/database\";\n\nconst client = new Client({\n host: process.env[\"DATABASE_HOST\"],\n username: process.env[\"DATABASE_USERNAME\"],\n password: process.env[\"DATABASE_PASSWORD\"],\n});\n\nconst db = drizzle(client);\n\t\t`);\n\t}\n\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 PlanetscaleSession(client, dialect, undefined, relations, schema, { logger });\n\tconst db = new PlanetScaleDatabase(\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t\t'planetscale',\n\t) as PlanetScaleDatabase<TSchema, TRelations>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Client = Client,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema, TRelations>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t& ({\n\t\t\t\tconnection: string | Config;\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): PlanetScaleDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new Client({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& { connection?: Config | string; client?: TClient }\n\t\t\t& DrizzleConfig;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Client({\n\t\t\t\turl: connection,\n\t\t\t})\n\t\t\t: new Client(\n\t\t\t\tconnection!,\n\t\t\t);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): PlanetScaleDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"AACA,SAAS,cAAc;AACvB,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAE7B,SAA6B,gBAAgB;AAE7C,SAAS,0BAA0B;AAM5B,MAAM,4BAGH,cAA2F;AAAA,EACpG,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UAKR,QACA,SAA6C,CAAC,GAG7C;AAGD,MAAI,EAAE,kBAAkB,SAAS;AAChC,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWf;AAAA,EACF;AAEA,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,QAAQ,SAAS,QAAW,WAAW,QAAQ,EAAE,OAAO,CAAC;AAChG,QAAM,KAAK,IAAI;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAKZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,OAAO;AAAA,MAC3B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAM,WAAW,OAAO,eAAe,WACpC,IAAI,OAAO;AAAA,MACZ,KAAK;AAAA,IACN,CAAC,IACC,IAAI;AAAA,MACL;AAAA,IACD;AAED,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAmD;AACnG;AAAA,CAEO,CAAUA,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["drizzle"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { PlanetScaleDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: PlanetScaleDatabase<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tawait db.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AAGnC,eAAsB,QACrB,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAE5C,QAAM,GAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AACxD;","names":[]}
1
+ {"version":3,"sources":["../../src/planetscale-serverless/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport type { PlanetScaleDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: PlanetScaleDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tawait db.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AAInC,eAAsB,QACrB,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAE5C,QAAM,GAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AACxD;","names":[]}
@@ -1,3 +1,4 @@
1
1
  import type { MigrationConfig } from "../migrator.cjs";
2
+ import type { AnyRelations } from "../relations.cjs";
2
3
  import type { PlanetScaleDatabase } from "./driver.cjs";
3
- export declare function migrate<TSchema extends Record<string, unknown>>(db: PlanetScaleDatabase<TSchema>, config: MigrationConfig): Promise<void>;
4
+ export declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: PlanetScaleDatabase<TSchema, TRelations>, config: MigrationConfig): Promise<void>;
@@ -1,3 +1,4 @@
1
1
  import type { MigrationConfig } from "../migrator.js";
2
+ import type { AnyRelations } from "../relations.js";
2
3
  import type { PlanetScaleDatabase } from "./driver.js";
3
- export declare function migrate<TSchema extends Record<string, unknown>>(db: PlanetScaleDatabase<TSchema>, config: MigrationConfig): Promise<void>;
4
+ export declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: PlanetScaleDatabase<TSchema, TRelations>, config: MigrationConfig): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { PlanetScaleDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: PlanetScaleDatabase<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tawait db.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AAGnC,eAAsB,QACrB,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAE5C,QAAM,GAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AACxD;","names":[]}
1
+ {"version":3,"sources":["../../src/planetscale-serverless/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport type { PlanetScaleDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: PlanetScaleDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\n\tawait db.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AAInC,eAAsB,QACrB,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAE5C,QAAM,GAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AACxD;","names":[]}
@@ -30,7 +30,7 @@ var import_session = require("../mysql-core/session.cjs");
30
30
  var import_sql = require("../sql/sql.cjs");
31
31
  var import_utils = require("../utils.cjs");
32
32
  class PlanetScalePreparedQuery extends import_session.MySqlPreparedQuery {
33
- constructor(client, queryString, params, logger, fields, customResultMapper, generatedIds, returningIds) {
33
+ constructor(client, queryString, params, logger, fields, customResultMapper, generatedIds, returningIds, isRqbV2Query) {
34
34
  super();
35
35
  this.client = client;
36
36
  this.queryString = queryString;
@@ -40,11 +40,14 @@ class PlanetScalePreparedQuery extends import_session.MySqlPreparedQuery {
40
40
  this.customResultMapper = customResultMapper;
41
41
  this.generatedIds = generatedIds;
42
42
  this.returningIds = returningIds;
43
+ this.isRqbV2Query = isRqbV2Query;
43
44
  }
44
45
  static [import_entity.entityKind] = "PlanetScalePreparedQuery";
45
46
  rawQuery = { as: "object" };
46
47
  query = { as: "array" };
47
48
  async execute(placeholderValues = {}) {
49
+ if (this.isRqbV2Query)
50
+ return this.executeRqbV2(placeholderValues);
48
51
  const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
49
52
  this.logger.logQuery(this.queryString, params);
50
53
  const {
@@ -89,14 +92,29 @@ class PlanetScalePreparedQuery extends import_session.MySqlPreparedQuery {
89
92
  }
90
93
  return rows.map((row) => (0, import_utils.mapResultRow)(fields, row, joinsNotNullableMap));
91
94
  }
95
+ async executeRqbV2(placeholderValues = {}) {
96
+ const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
97
+ this.logger.logQuery(this.queryString, params);
98
+ const {
99
+ client,
100
+ queryString,
101
+ rawQuery,
102
+ customResultMapper
103
+ } = this;
104
+ const res = await client.execute(queryString, params, rawQuery);
105
+ return customResultMapper(
106
+ res.rows
107
+ );
108
+ }
92
109
  iterator(_placeholderValues) {
93
110
  throw new Error("Streaming is not supported by the PlanetScale Serverless driver");
94
111
  }
95
112
  }
96
113
  class PlanetscaleSession extends import_session.MySqlSession {
97
- constructor(baseClient, dialect, tx, schema, options = {}) {
114
+ constructor(baseClient, dialect, tx, relations, schema, options = {}) {
98
115
  super(dialect);
99
116
  this.baseClient = baseClient;
117
+ this.relations = relations;
100
118
  this.schema = schema;
101
119
  this.options = options;
102
120
  this.client = tx ?? baseClient;
@@ -117,6 +135,19 @@ class PlanetscaleSession extends import_session.MySqlSession {
117
135
  returningIds
118
136
  );
119
137
  }
138
+ prepareRelationalQuery(query, fields, customResultMapper, generatedIds, returningIds) {
139
+ return new PlanetScalePreparedQuery(
140
+ this.client,
141
+ query.sql,
142
+ query.params,
143
+ this.logger,
144
+ fields,
145
+ customResultMapper,
146
+ generatedIds,
147
+ returningIds,
148
+ true
149
+ );
150
+ }
120
151
  async query(query, params) {
121
152
  this.logger.logQuery(query, params);
122
153
  return await this.client.execute(query, params, { as: "array" });
@@ -137,10 +168,18 @@ class PlanetscaleSession extends import_session.MySqlSession {
137
168
  }
138
169
  transaction(transaction) {
139
170
  return this.baseClient.transaction((pstx) => {
140
- const session = new PlanetscaleSession(this.baseClient, this.dialect, pstx, this.schema, this.options);
171
+ const session = new PlanetscaleSession(
172
+ this.baseClient,
173
+ this.dialect,
174
+ pstx,
175
+ this.relations,
176
+ this.schema,
177
+ this.options
178
+ );
141
179
  const tx = new PlanetScaleTransaction(
142
180
  this.dialect,
143
181
  session,
182
+ this.relations,
144
183
  this.schema
145
184
  );
146
185
  return transaction(tx);
@@ -149,14 +188,15 @@ class PlanetscaleSession extends import_session.MySqlSession {
149
188
  }
150
189
  class PlanetScaleTransaction extends import_session.MySqlTransaction {
151
190
  static [import_entity.entityKind] = "PlanetScaleTransaction";
152
- constructor(dialect, session, schema, nestedIndex = 0) {
153
- super(dialect, session, schema, nestedIndex, "planetscale");
191
+ constructor(dialect, session, relations, schema, nestedIndex = 0) {
192
+ super(dialect, session, relations, schema, nestedIndex, "planetscale");
154
193
  }
155
194
  async transaction(transaction) {
156
195
  const savepointName = `sp${this.nestedIndex + 1}`;
157
196
  const tx = new PlanetScaleTransaction(
158
197
  this.dialect,
159
198
  this.session,
199
+ this.relations,
160
200
  this.schema,
161
201
  this.nestedIndex + 1
162
202
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/planetscale-serverless/session.ts"],"sourcesContent":["import type { Client, Connection, ExecutedQuery, Transaction } from '@planetscale/database';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type { SelectedFieldsOrdered } from '~/mysql-core/query-builders/select.types.ts';\nimport {\n\tMySqlPreparedQuery,\n\ttype MySqlPreparedQueryConfig,\n\ttype MySqlPreparedQueryHKT,\n\ttype MySqlQueryResultHKT,\n\tMySqlSession,\n\tMySqlTransaction,\n} from '~/mysql-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig> extends MySqlPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'PlanetScalePreparedQuery';\n\n\tprivate rawQuery = { as: 'object' } as const;\n\tprivate query = { as: 'array' } as const;\n\n\tconstructor(\n\t\tprivate client: Client | Transaction | Connection,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\t// Keys that were used in $default and the value that was generated for them\n\t\tprivate generatedIds?: Record<string, unknown>[],\n\t\t// Keys that should be returned, it has the column with all properries + key from object\n\t\tprivate returningIds?: SelectedFieldsOrdered,\n\t) {\n\t\tsuper();\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst {\n\t\t\tfields,\n\t\t\tclient,\n\t\t\tqueryString,\n\t\t\trawQuery,\n\t\t\tquery,\n\t\t\tjoinsNotNullableMap,\n\t\t\tcustomResultMapper,\n\t\t\treturningIds,\n\t\t\tgeneratedIds,\n\t\t} = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst res = await client.execute(queryString, params, rawQuery);\n\n\t\t\tconst insertId = Number.parseFloat(res.insertId);\n\t\t\tconst affectedRows = res.rowsAffected;\n\n\t\t\t// for each row, I need to check keys from\n\t\t\tif (returningIds) {\n\t\t\t\tconst returningResponse = [];\n\t\t\t\tlet j = 0;\n\t\t\t\tfor (let i = insertId; i < insertId + affectedRows; i++) {\n\t\t\t\t\tfor (const column of returningIds) {\n\t\t\t\t\t\tconst key = returningIds[0]!.path[0]!;\n\t\t\t\t\t\tif (is(column.field, Column)) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tif (column.field.primary && column.field.autoIncrement) {\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: i });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (column.field.defaultFn && generatedIds) {\n\t\t\t\t\t\t\t\t// generatedIds[rowIdx][key]\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: generatedIds[j]![key] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn returningResponse;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tconst { rows } = await client.execute(queryString, params, query);\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows as unknown[][]);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n\t}\n\n\toverride iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']> {\n\t\tthrow new Error('Streaming is not supported by the PlanetScale Serverless driver');\n\t}\n}\n\nexport interface PlanetscaleSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class PlanetscaleSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlSession<MySqlQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetscaleSession';\n\n\tprivate logger: Logger;\n\tprivate client: Client | Transaction | Connection;\n\n\tconstructor(\n\t\tprivate baseClient: Client | Connection,\n\t\tdialect: MySqlDialect,\n\t\ttx: Transaction | undefined,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PlanetscaleSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.client = tx ?? baseClient;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(\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): MySqlPreparedQuery<T> {\n\t\treturn new PlanetScalePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tcustomResultMapper,\n\t\t\tgeneratedIds,\n\t\t\treturningIds,\n\t\t);\n\t}\n\n\tasync query(query: string, params: unknown[]): Promise<ExecutedQuery> {\n\t\tthis.logger.logQuery(query, params);\n\n\t\treturn await this.client.execute(query, params, { as: 'array' });\n\t}\n\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<ExecutedQuery> {\n\t\treturn this.client.execute(query, params, { as: 'object' });\n\t}\n\n\toverride all<T = unknown>(query: SQL): Promise<T[]> {\n\t\tconst querySql = this.dialect.sqlToQuery(query);\n\t\tthis.logger.logQuery(querySql.sql, querySql.params);\n\n\t\treturn this.client.execute(querySql.sql, querySql.params, { as: 'object' }).then((\n\t\t\teQuery,\n\t\t) => eQuery.rows as T[]);\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn this.baseClient.transaction((pstx) => {\n\t\t\tconst session = new PlanetscaleSession(this.baseClient, this.dialect, pstx, this.schema, this.options);\n\t\t\tconst tx = new PlanetScaleTransaction<TFullSchema, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession as MySqlSession<any, any, any, any>,\n\t\t\t\tthis.schema,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t});\n\t}\n}\n\nexport class PlanetScaleTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends MySqlTransaction<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\tschema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, schema, nestedIndex, 'planetscale');\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PlanetScaleTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface PlanetscaleQueryResultHKT extends MySqlQueryResultHKT {\n\ttype: ExecutedQuery;\n}\n\nexport interface PlanetScalePreparedQueryHKT extends MySqlPreparedQueryHKT {\n\ttype: PlanetScalePreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":"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","names":["sql"]}
1
+ {"version":3,"sources":["../../src/planetscale-serverless/session.ts"],"sourcesContent":["import type { Client, Connection, ExecutedQuery, Transaction } from '@planetscale/database';\nimport type * as V1 from '~/_relations.ts';\nimport { Column } from '~/column.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { MySqlDialect } from '~/mysql-core/dialect.ts';\nimport type { SelectedFieldsOrdered } from '~/mysql-core/query-builders/select.types.ts';\nimport {\n\tMySqlPreparedQuery,\n\ttype MySqlPreparedQueryConfig,\n\ttype MySqlPreparedQueryHKT,\n\ttype MySqlQueryResultHKT,\n\tMySqlSession,\n\tMySqlTransaction,\n} from '~/mysql-core/session.ts';\nimport type { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL, sql } from '~/sql/sql.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends MySqlPreparedQuery<T>\n{\n\tstatic override readonly [entityKind]: string = 'PlanetScalePreparedQuery';\n\n\tprivate rawQuery = { as: 'object' } as const;\n\tprivate query = { as: 'array' } as const;\n\n\tconstructor(\n\t\tprivate client: Client | Transaction | Connection,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => T['execute'],\n\t\t// Keys that were used in $default and the value that was generated for them\n\t\tprivate generatedIds?: Record<string, unknown>[],\n\t\t// Keys that should be returned, it has the column with all properries + key from object\n\t\tprivate returningIds?: SelectedFieldsOrdered,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper();\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tif (this.isRqbV2Query) return this.executeRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst {\n\t\t\tfields,\n\t\t\tclient,\n\t\t\tqueryString,\n\t\t\trawQuery,\n\t\t\tquery,\n\t\t\tjoinsNotNullableMap,\n\t\t\tcustomResultMapper,\n\t\t\treturningIds,\n\t\t\tgeneratedIds,\n\t\t} = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst res = await client.execute(queryString, params, rawQuery);\n\n\t\t\tconst insertId = Number.parseFloat(res.insertId);\n\t\t\tconst affectedRows = res.rowsAffected;\n\n\t\t\t// for each row, I need to check keys from\n\t\t\tif (returningIds) {\n\t\t\t\tconst returningResponse = [];\n\t\t\t\tlet j = 0;\n\t\t\t\tfor (let i = insertId; i < insertId + affectedRows; i++) {\n\t\t\t\t\tfor (const column of returningIds) {\n\t\t\t\t\t\tconst key = returningIds[0]!.path[0]!;\n\t\t\t\t\t\tif (is(column.field, Column)) {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tif (column.field.primary && column.field.autoIncrement) {\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: i });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (column.field.defaultFn && generatedIds) {\n\t\t\t\t\t\t\t\t// generatedIds[rowIdx][key]\n\t\t\t\t\t\t\t\treturningResponse.push({ [key]: generatedIds[j]![key] });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\treturn returningResponse;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t\tconst { rows } = await client.execute(queryString, params, query);\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => T['execute'])(rows as unknown[][]);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow<T['execute']>(fields!, row as unknown[], joinsNotNullableMap));\n\t}\n\n\tprivate async executeRqbV2(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\tconst {\n\t\t\tclient,\n\t\t\tqueryString,\n\t\t\trawQuery,\n\t\t\tcustomResultMapper,\n\t\t} = this;\n\n\t\tconst res = await client.execute(queryString, params, rawQuery);\n\n\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => T['execute'])(\n\t\t\tres.rows as any as Record<string, unknown>[],\n\t\t);\n\t}\n\n\toverride iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']> {\n\t\tthrow new Error('Streaming is not supported by the PlanetScale Serverless driver');\n\t}\n}\n\nexport interface PlanetscaleSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class PlanetscaleSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends MySqlSession<\n\tMySqlQueryResultHKT,\n\tPlanetScalePreparedQueryHKT,\n\tTFullSchema,\n\tTRelations,\n\tTTablesConfig,\n\tTSchema\n> {\n\tstatic override readonly [entityKind]: string = 'PlanetscaleSession';\n\n\tprivate logger: Logger;\n\tprivate client: Client | Transaction | Connection;\n\n\tconstructor(\n\t\tprivate baseClient: Client | Connection,\n\t\tdialect: MySqlDialect,\n\t\ttx: Transaction | undefined,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: PlanetscaleSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.client = tx ?? baseClient;\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(\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): MySqlPreparedQuery<T> {\n\t\treturn new PlanetScalePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tcustomResultMapper,\n\t\t\tgeneratedIds,\n\t\t\treturningIds,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(\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): MySqlPreparedQuery<T> {\n\t\treturn new PlanetScalePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tcustomResultMapper,\n\t\t\tgeneratedIds,\n\t\t\treturningIds,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\tasync query(query: string, params: unknown[]): Promise<ExecutedQuery> {\n\t\tthis.logger.logQuery(query, params);\n\n\t\treturn await this.client.execute(query, params, { as: 'array' });\n\t}\n\n\tasync queryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<ExecutedQuery> {\n\t\treturn this.client.execute(query, params, { as: 'object' });\n\t}\n\n\toverride all<T = unknown>(query: SQL): Promise<T[]> {\n\t\tconst querySql = this.dialect.sqlToQuery(query);\n\t\tthis.logger.logQuery(querySql.sql, querySql.params);\n\n\t\treturn this.client.execute(querySql.sql, querySql.params, { as: 'object' }).then((\n\t\t\teQuery,\n\t\t) => eQuery.rows as T[]);\n\t}\n\n\toverride async count(sql: SQL): Promise<number> {\n\t\tconst res = await this.execute<{ rows: [{ count: string }] }>(sql);\n\n\t\treturn Number(\n\t\t\tres['rows'][0]['count'],\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn this.baseClient.transaction((pstx) => {\n\t\t\tconst session = new PlanetscaleSession(\n\t\t\t\tthis.baseClient,\n\t\t\t\tthis.dialect,\n\t\t\t\tpstx,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new PlanetScaleTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>(\n\t\t\t\tthis.dialect,\n\t\t\t\tsession as MySqlSession<any, any, any, any, any, any>,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t);\n\t\t\treturn transaction(tx);\n\t\t});\n\t}\n}\n\nexport class PlanetScaleTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends MySqlTransaction<\n\tPlanetscaleQueryResultHKT,\n\tPlanetScalePreparedQueryHKT,\n\tTFullSchema,\n\tTRelations,\n\tTTablesConfig,\n\tTSchema\n> {\n\tstatic override readonly [entityKind]: string = 'PlanetScaleTransaction';\n\n\tconstructor(\n\t\tdialect: MySqlDialect,\n\t\tsession: MySqlSession,\n\t\trelations: AnyRelations | undefined,\n\t\tschema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, relations, schema, nestedIndex, 'planetscale');\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: PlanetScaleTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new PlanetScaleTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.relations,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait tx.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait tx.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tawait tx.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport interface PlanetscaleQueryResultHKT extends MySqlQueryResultHKT {\n\ttype: ExecutedQuery;\n}\n\nexport interface PlanetScalePreparedQueryHKT extends MySqlPreparedQueryHKT {\n\ttype: PlanetScalePreparedQuery<Assume<this['config'], MySqlPreparedQueryConfig>>;\n}\n"],"mappings":"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","names":["sql"]}
@@ -1,13 +1,14 @@
1
1
  import type { Client, Connection, ExecutedQuery, Transaction } from '@planetscale/database';
2
+ import type * as V1 from "../_relations.cjs";
2
3
  import { entityKind } from "../entity.cjs";
3
4
  import type { Logger } from "../logger.cjs";
4
5
  import type { MySqlDialect } from "../mysql-core/dialect.cjs";
5
6
  import type { SelectedFieldsOrdered } from "../mysql-core/query-builders/select.types.cjs";
6
7
  import { MySqlPreparedQuery, type MySqlPreparedQueryConfig, type MySqlPreparedQueryHKT, type MySqlQueryResultHKT, MySqlSession, MySqlTransaction } from "../mysql-core/session.cjs";
7
- import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
8
+ import type { AnyRelations, TablesRelationalConfig } from "../relations.cjs";
8
9
  import { type Query, type SQL } from "../sql/sql.cjs";
9
10
  import { type Assume } from "../utils.cjs";
10
- export declare class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig> extends MySqlPreparedQuery<T> {
11
+ export declare class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig, TIsRqbV2 extends boolean = false> extends MySqlPreparedQuery<T> {
11
12
  private client;
12
13
  private queryString;
13
14
  private params;
@@ -16,35 +17,39 @@ export declare class PlanetScalePreparedQuery<T extends MySqlPreparedQueryConfig
16
17
  private customResultMapper?;
17
18
  private generatedIds?;
18
19
  private returningIds?;
20
+ private isRqbV2Query?;
19
21
  static readonly [entityKind]: string;
20
22
  private rawQuery;
21
23
  private query;
22
- constructor(client: Client | Transaction | Connection, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined, generatedIds?: Record<string, unknown>[] | undefined, returningIds?: SelectedFieldsOrdered | undefined);
24
+ constructor(client: Client | Transaction | Connection, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => T["execute"]) | undefined, generatedIds?: Record<string, unknown>[] | undefined, returningIds?: SelectedFieldsOrdered | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
23
25
  execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
26
+ private executeRqbV2;
24
27
  iterator(_placeholderValues?: Record<string, unknown>): AsyncGenerator<T['iterator']>;
25
28
  }
26
29
  export interface PlanetscaleSessionOptions {
27
30
  logger?: Logger;
28
31
  }
29
- export declare class PlanetscaleSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MySqlSession<MySqlQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {
32
+ export declare class PlanetscaleSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends MySqlSession<MySqlQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema> {
30
33
  private baseClient;
34
+ private relations;
31
35
  private schema;
32
36
  private options;
33
37
  static readonly [entityKind]: string;
34
38
  private logger;
35
39
  private client;
36
- constructor(baseClient: Client | Connection, dialect: MySqlDialect, tx: Transaction | undefined, schema: RelationalSchemaConfig<TSchema> | undefined, options?: PlanetscaleSessionOptions);
40
+ constructor(baseClient: Client | Connection, dialect: MySqlDialect, tx: Transaction | undefined, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options?: PlanetscaleSessionOptions);
37
41
  prepareQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper?: (rows: unknown[][]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): MySqlPreparedQuery<T>;
42
+ prepareRelationalQuery<T extends MySqlPreparedQueryConfig = MySqlPreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, customResultMapper: (rows: Record<string, unknown>[]) => T['execute'], generatedIds?: Record<string, unknown>[], returningIds?: SelectedFieldsOrdered): MySqlPreparedQuery<T>;
38
43
  query(query: string, params: unknown[]): Promise<ExecutedQuery>;
39
44
  queryObjects(query: string, params: unknown[]): Promise<ExecutedQuery>;
40
45
  all<T = unknown>(query: SQL): Promise<T[]>;
41
46
  count(sql: SQL): Promise<number>;
42
- transaction<T>(transaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
47
+ transaction<T>(transaction: (tx: PlanetScaleTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>): Promise<T>;
43
48
  }
44
- export declare class PlanetScaleTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends MySqlTransaction<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TSchema> {
49
+ export declare class PlanetScaleTransaction<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends MySqlTransaction<PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, TFullSchema, TRelations, TTablesConfig, TSchema> {
45
50
  static readonly [entityKind]: string;
46
- constructor(dialect: MySqlDialect, session: MySqlSession, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number);
47
- transaction<T>(transaction: (tx: PlanetScaleTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
51
+ constructor(dialect: MySqlDialect, session: MySqlSession, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number);
52
+ transaction<T>(transaction: (tx: PlanetScaleTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => Promise<T>): Promise<T>;
48
53
  }
49
54
  export interface PlanetscaleQueryResultHKT extends MySqlQueryResultHKT {
50
55
  type: ExecutedQuery;