drizzle-orm 0.39.2-1177ad8 → 0.39.2-65ced5e

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 +187 -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 +185 -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 +52 -65
  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 +162 -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 +160 -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 +626 -245
  470. package/relations.cjs.map +1 -1
  471. package/relations.d.cts +305 -140
  472. package/relations.d.ts +305 -140
  473. package/relations.js +619 -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 +176 -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 +174 -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,29 +1,30 @@
1
1
  import { type Database, type Options, type RunResult } from 'better-sqlite3';
2
2
  import { entityKind } from "../entity.js";
3
+ import type { AnyRelations, EmptyRelations } from "../relations.js";
3
4
  import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
4
5
  import { type DrizzleConfig } from "../utils.js";
5
6
  export type DrizzleBetterSQLite3DatabaseConfig = ({
6
7
  source?: string | Buffer;
7
8
  } & Options) | string | undefined;
8
- export declare class BetterSQLite3Database<TSchema extends Record<string, unknown> = Record<string, never>> extends BaseSQLiteDatabase<'sync', RunResult, TSchema> {
9
+ export declare class BetterSQLite3Database<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends BaseSQLiteDatabase<'sync', RunResult, TSchema, TRelations> {
9
10
  static readonly [entityKind]: string;
10
11
  }
11
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(...params: [] | [
12
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(...params: [] | [
12
13
  Database | string
13
14
  ] | [
14
15
  Database | string,
15
- DrizzleConfig<TSchema>
16
+ DrizzleConfig<TSchema, TRelations>
16
17
  ] | [
17
- (DrizzleConfig<TSchema> & ({
18
+ (DrizzleConfig<TSchema, TRelations> & ({
18
19
  connection?: DrizzleBetterSQLite3DatabaseConfig;
19
20
  } | {
20
21
  client: Database;
21
22
  }))
22
- ]): BetterSQLite3Database<TSchema> & {
23
+ ]): BetterSQLite3Database<TSchema, TRelations> & {
23
24
  $client: Database;
24
25
  };
25
26
  export declare namespace drizzle {
26
- function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): BetterSQLite3Database<TSchema> & {
27
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(config?: DrizzleConfig<TSchema, TRelations>): BetterSQLite3Database<TSchema, TRelations> & {
27
28
  $client: '$client is not available on drizzle.mock()';
28
29
  };
29
30
  }
@@ -1,10 +1,7 @@
1
1
  import Client from "better-sqlite3";
2
+ import * as V1 from "../_relations.js";
2
3
  import { entityKind } from "../entity.js";
3
4
  import { DefaultLogger } from "../logger.js";
4
- import {
5
- createTableRelationsHelpers,
6
- extractTablesRelationalConfig
7
- } from "../relations.js";
8
5
  import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
9
6
  import { SQLiteSyncDialect } from "../sqlite-core/dialect.js";
10
7
  import { isConfig } from "../utils.js";
@@ -22,9 +19,9 @@ function construct(client, config = {}) {
22
19
  }
23
20
  let schema;
24
21
  if (config.schema) {
25
- const tablesConfig = extractTablesRelationalConfig(
22
+ const tablesConfig = V1.extractTablesRelationalConfig(
26
23
  config.schema,
27
- createTableRelationsHelpers
24
+ V1.createTableRelationsHelpers
28
25
  );
29
26
  schema = {
30
27
  fullSchema: config.schema,
@@ -32,8 +29,15 @@ function construct(client, config = {}) {
32
29
  tableNamesMap: tablesConfig.tableNamesMap
33
30
  };
34
31
  }
35
- const session = new BetterSQLiteSession(client, dialect, schema, { logger });
36
- const db = new BetterSQLite3Database("sync", dialect, session, schema);
32
+ const relations = config.relations;
33
+ const session = new BetterSQLiteSession(client, dialect, relations, schema, { logger });
34
+ const db = new BetterSQLite3Database(
35
+ "sync",
36
+ dialect,
37
+ session,
38
+ relations,
39
+ schema
40
+ );
37
41
  db.$client = client;
38
42
  return db;
39
43
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/better-sqlite3/driver.ts"],"sourcesContent":["import Client, { type Database, type Options, type RunResult } from 'better-sqlite3';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { BetterSQLiteSession } from './session.ts';\n\nexport type DrizzleBetterSQLite3DatabaseConfig =\n\t| ({\n\t\tsource?:\n\t\t\t| string\n\t\t\t| Buffer;\n\t} & Options)\n\t| string\n\t| undefined;\n\nexport class BetterSQLite3Database<TSchema extends Record<string, unknown> = Record<string, never>>\n\textends BaseSQLiteDatabase<'sync', RunResult, TSchema>\n{\n\tstatic override readonly [entityKind]: string = 'BetterSQLite3Database';\n}\n\nfunction construct<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: Database,\n\tconfig: DrizzleConfig<TSchema> = {},\n): BetterSQLite3Database<TSchema> & {\n\t$client: Database;\n} {\n\tconst dialect = new SQLiteSyncDialect({ 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 BetterSQLiteSession(client, dialect, schema, { logger });\n\tconst db = new BetterSQLite3Database('sync', dialect, session, schema);\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>(\n\t...params:\n\t\t| []\n\t\t| [\n\t\t\tDatabase | string,\n\t\t]\n\t\t| [\n\t\t\tDatabase | string,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: DrizzleBetterSQLite3DatabaseConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: Database;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n): BetterSQLite3Database<TSchema> & {\n\t$client: Database;\n} {\n\tif (params[0] === undefined || typeof params[0] === 'string') {\n\t\tconst instance = params[0] === undefined ? new Client() : new Client(params[0]);\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& {\n\t\t\t\tconnection?: DrizzleBetterSQLite3DatabaseConfig;\n\t\t\t\tclient?: Database;\n\t\t\t}\n\t\t\t& DrizzleConfig<TSchema>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object') {\n\t\t\tconst { source, ...options } = connection;\n\n\t\t\tconst instance = new Client(source, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new Client(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as Database, 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): BetterSQLite3Database<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,OAAO,YAA6D;AACpE,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAA6B,gBAAgB;AAC7C,SAAS,2BAA2B;AAW7B,MAAM,8BACJ,mBACT;AAAA,EACC,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UACR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,kBAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,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,oBAAoB,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AAC3E,QAAM,KAAK,IAAI,sBAAsB,QAAQ,SAAS,SAAS,MAAM;AACrE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAGZ,QAqBF;AACD,MAAI,OAAO,CAAC,MAAM,UAAa,OAAO,OAAO,CAAC,MAAM,UAAU;AAC7D,UAAM,WAAW,OAAO,CAAC,MAAM,SAAY,IAAI,OAAO,IAAI,IAAI,OAAO,OAAO,CAAC,CAAC;AAE9E,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;AAOzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,QAAQ,GAAG,QAAQ,IAAI;AAE/B,YAAMA,YAAW,IAAI,OAAO,QAAQ,OAAO;AAE3C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,WAAW,IAAI,OAAO,UAAU;AAEtC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAe,OAAO,CAAC,CAAuC;AACxF;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
1
+ {"version":3,"sources":["../../src/better-sqlite3/driver.ts"],"sourcesContent":["import Client, { type Database, type Options, type RunResult } from 'better-sqlite3';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations, ExtractTablesWithRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { BetterSQLiteSession } from './session.ts';\n\nexport type DrizzleBetterSQLite3DatabaseConfig =\n\t| ({\n\t\tsource?:\n\t\t\t| string\n\t\t\t| Buffer;\n\t} & Options)\n\t| string\n\t| undefined;\n\nexport class BetterSQLite3Database<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'sync', RunResult, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLite3Database';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: Database,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): BetterSQLite3Database<TSchema, TRelations> & {\n\t$client: Database;\n} {\n\tconst dialect = new SQLiteSyncDialect({ 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 BetterSQLiteSession<\n\t\tTSchema,\n\t\tTRelations,\n\t\tExtractTablesWithRelations<TRelations>,\n\t\tV1.ExtractTablesWithRelations<TSchema>\n\t>(client, dialect, relations, schema as V1.RelationalSchemaConfig<any>, { logger });\n\tconst db = new BetterSQLite3Database(\n\t\t'sync',\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t);\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>(\n\t...params:\n\t\t| []\n\t\t| [\n\t\t\tDatabase | string,\n\t\t]\n\t\t| [\n\t\t\tDatabase | string,\n\t\t\tDrizzleConfig<TSchema, TRelations>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: DrizzleBetterSQLite3DatabaseConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: Database;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n): BetterSQLite3Database<TSchema, TRelations> & {\n\t$client: Database;\n} {\n\tif (params[0] === undefined || typeof params[0] === 'string') {\n\t\tconst instance = params[0] === undefined ? new Client() : new Client(params[0]);\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& {\n\t\t\t\tconnection?: DrizzleBetterSQLite3DatabaseConfig;\n\t\t\t\tclient?: Database;\n\t\t\t}\n\t\t\t& DrizzleConfig<TSchema, TRelations>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object') {\n\t\t\tconst { source, ...options } = connection;\n\n\t\t\tconst instance = new Client(source, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new Client(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as Database, 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): BetterSQLite3Database<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,OAAO,YAA6D;AACpE,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAE9B,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAA6B,gBAAgB;AAC7C,SAAS,2BAA2B;AAW7B,MAAM,8BAGH,mBAA2D;AAAA,EACpE,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAA6C,CAAC,GAG7C;AACD,QAAM,UAAU,IAAI,kBAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,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,oBAKlB,QAAQ,SAAS,WAAW,QAA0C,EAAE,OAAO,CAAC;AAClF,QAAM,KAAK,IAAI;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAqBF;AACD,MAAI,OAAO,CAAC,MAAM,UAAa,OAAO,OAAO,CAAC,MAAM,UAAU;AAC7D,UAAM,WAAW,OAAO,CAAC,MAAM,SAAY,IAAI,OAAO,IAAI,IAAI,OAAO,OAAO,CAAC,CAAC;AAE9E,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;AAOzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,QAAQ,GAAG,QAAQ,IAAI;AAE/B,YAAMA,YAAW,IAAI,OAAO,QAAQ,OAAO;AAE3C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,WAAW,IAAI,OAAO,UAAU;AAEtC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAe,OAAO,CAAC,CAAmD;AACpG;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/better-sqlite3/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { BetterSQLite3Database } from './driver.ts';\n\nexport function migrate<TSchema extends Record<string, unknown>>(\n\tdb: BetterSQLite3Database<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tdb.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AAG5B,SAAS,QACf,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAC5C,KAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AAClD;","names":[]}
1
+ {"version":3,"sources":["../../src/better-sqlite3/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport type { BetterSQLite3Database } from './driver.ts';\n\nexport function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: BetterSQLite3Database<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tdb.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AAI5B,SAAS,QACf,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAC5C,KAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AAClD;","names":[]}
@@ -1,3 +1,4 @@
1
1
  import type { MigrationConfig } from "../migrator.cjs";
2
+ import type { AnyRelations } from "../relations.cjs";
2
3
  import type { BetterSQLite3Database } from "./driver.cjs";
3
- export declare function migrate<TSchema extends Record<string, unknown>>(db: BetterSQLite3Database<TSchema>, config: MigrationConfig): void;
4
+ export declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: BetterSQLite3Database<TSchema, TRelations>, config: MigrationConfig): void;
@@ -1,3 +1,4 @@
1
1
  import type { MigrationConfig } from "../migrator.js";
2
+ import type { AnyRelations } from "../relations.js";
2
3
  import type { BetterSQLite3Database } from "./driver.js";
3
- export declare function migrate<TSchema extends Record<string, unknown>>(db: BetterSQLite3Database<TSchema>, config: MigrationConfig): void;
4
+ export declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(db: BetterSQLite3Database<TSchema, TRelations>, config: MigrationConfig): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/better-sqlite3/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { BetterSQLite3Database } from './driver.ts';\n\nexport function migrate<TSchema extends Record<string, unknown>>(\n\tdb: BetterSQLite3Database<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tdb.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AAG5B,SAAS,QACf,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAC5C,KAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AAClD;","names":[]}
1
+ {"version":3,"sources":["../../src/better-sqlite3/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport type { BetterSQLite3Database } from './driver.ts';\n\nexport function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations>(\n\tdb: BetterSQLite3Database<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tdb.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AAI5B,SAAS,QACf,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAC5C,KAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AAClD;","names":[]}
@@ -30,9 +30,10 @@ var import_sqlite_core = require("../sqlite-core/index.cjs");
30
30
  var import_session = require("../sqlite-core/session.cjs");
31
31
  var import_utils = require("../utils.cjs");
32
32
  class BetterSQLiteSession extends import_session.SQLiteSession {
33
- constructor(client, dialect, schema, options = {}) {
33
+ constructor(client, dialect, relations, schema, options = {}) {
34
34
  super(dialect);
35
35
  this.client = client;
36
+ this.relations = relations;
36
37
  this.schema = schema;
37
38
  this.logger = options.logger ?? new import_logger.NoopLogger();
38
39
  }
@@ -50,8 +51,21 @@ class BetterSQLiteSession extends import_session.SQLiteSession {
50
51
  customResultMapper
51
52
  );
52
53
  }
54
+ prepareRelationalQuery(query, fields, executeMethod, customResultMapper) {
55
+ const stmt = this.client.prepare(query.sql);
56
+ return new PreparedQuery(
57
+ stmt,
58
+ query,
59
+ this.logger,
60
+ fields,
61
+ executeMethod,
62
+ false,
63
+ customResultMapper,
64
+ true
65
+ );
66
+ }
53
67
  transaction(transaction, config = {}) {
54
- const tx = new BetterSQLiteTransaction("sync", this.dialect, this, this.schema);
68
+ const tx = new BetterSQLiteTransaction("sync", this.dialect, this, this.relations, this.schema);
55
69
  const nativeTx = this.client.transaction(transaction);
56
70
  return nativeTx[config.behavior ?? "deferred"](tx);
57
71
  }
@@ -60,7 +74,14 @@ class BetterSQLiteTransaction extends import_sqlite_core.SQLiteTransaction {
60
74
  static [import_entity.entityKind] = "BetterSQLiteTransaction";
61
75
  transaction(transaction) {
62
76
  const savepointName = `sp${this.nestedIndex}`;
63
- const tx = new BetterSQLiteTransaction("sync", this.dialect, this.session, this.schema, this.nestedIndex + 1);
77
+ const tx = new BetterSQLiteTransaction(
78
+ "sync",
79
+ this.dialect,
80
+ this.session,
81
+ this.relations,
82
+ this.schema,
83
+ this.nestedIndex + 1
84
+ );
64
85
  this.session.run(import_sql.sql.raw(`savepoint ${savepointName}`));
65
86
  try {
66
87
  const result = transaction(tx);
@@ -73,13 +94,14 @@ class BetterSQLiteTransaction extends import_sqlite_core.SQLiteTransaction {
73
94
  }
74
95
  }
75
96
  class PreparedQuery extends import_session.SQLitePreparedQuery {
76
- constructor(stmt, query, logger, fields, executeMethod, _isResponseInArrayMode, customResultMapper) {
97
+ constructor(stmt, query, logger, fields, executeMethod, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
77
98
  super("sync", executeMethod, query);
78
99
  this.stmt = stmt;
79
100
  this.logger = logger;
80
101
  this.fields = fields;
81
102
  this._isResponseInArrayMode = _isResponseInArrayMode;
82
103
  this.customResultMapper = customResultMapper;
104
+ this.isRqbV2Query = isRqbV2Query;
83
105
  }
84
106
  static [import_entity.entityKind] = "BetterSQLitePreparedQuery";
85
107
  run(placeholderValues) {
@@ -88,6 +110,8 @@ class PreparedQuery extends import_session.SQLitePreparedQuery {
88
110
  return this.stmt.run(...params);
89
111
  }
90
112
  all(placeholderValues) {
113
+ if (this.isRqbV2Query)
114
+ return this.allRqbV2(placeholderValues);
91
115
  const { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;
92
116
  if (!fields && !customResultMapper) {
93
117
  const params = (0, import_sql.fillPlaceholders)(query.params, placeholderValues ?? {});
@@ -101,6 +125,8 @@ class PreparedQuery extends import_session.SQLitePreparedQuery {
101
125
  return rows.map((row) => (0, import_utils.mapResultRow)(fields, row, joinsNotNullableMap));
102
126
  }
103
127
  get(placeholderValues) {
128
+ if (this.isRqbV2Query)
129
+ return this.getRqbV2(placeholderValues);
104
130
  const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
105
131
  this.logger.logQuery(this.query.sql, params);
106
132
  const { fields, stmt, joinsNotNullableMap, customResultMapper } = this;
@@ -116,6 +142,25 @@ class PreparedQuery extends import_session.SQLitePreparedQuery {
116
142
  }
117
143
  return (0, import_utils.mapResultRow)(fields, row, joinsNotNullableMap);
118
144
  }
145
+ allRqbV2(placeholderValues) {
146
+ const { query, logger, stmt, customResultMapper } = this;
147
+ const params = (0, import_sql.fillPlaceholders)(query.params, placeholderValues ?? {});
148
+ logger.logQuery(query.sql, params);
149
+ return customResultMapper(
150
+ stmt.all(...params)
151
+ );
152
+ }
153
+ getRqbV2(placeholderValues) {
154
+ const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
155
+ this.logger.logQuery(this.query.sql, params);
156
+ const { stmt, customResultMapper } = this;
157
+ const row = stmt.get(...params);
158
+ if (row === void 0)
159
+ return row;
160
+ return customResultMapper(
161
+ [row]
162
+ );
163
+ }
119
164
  values(placeholderValues) {
120
165
  const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
121
166
  this.logger.logQuery(this.query.sql, params);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/better-sqlite3/session.ts"],"sourcesContent":["import type { Database, RunResult, Statement } from 'better-sqlite3';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery as PreparedQueryBase,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface BetterSQLiteSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class BetterSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'sync', RunResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: BetterSQLiteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this, this.schema);\n\t\tconst nativeTx = this.client.transaction(transaction);\n\t\treturn nativeTx[config.behavior ?? 'deferred'](tx);\n\t}\n}\n\nexport class BetterSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteTransaction';\n\n\toverride transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TSchema>) => T): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<\n\t{ type: 'sync'; run: RunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLitePreparedQuery';\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => unknown,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): RunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.run(...params);\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.all(...params);\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows) as T['all'];\n\t\t}\n\t\treturn rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.get(...params);\n\t\t}\n\n\t\tconst row = stmt.raw().get(...params) as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper([row]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.raw().all(...params) as T['values'];\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":["PreparedQueryBase"]}
1
+ {"version":3,"sources":["../../src/better-sqlite3/session.ts"],"sourcesContent":["import type { Database, RunResult, Statement } from 'better-sqlite3';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery as PreparedQueryBase,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface BetterSQLiteSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class BetterSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', RunResult, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: BetterSQLiteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): PreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tconst nativeTx = this.client.transaction(transaction);\n\t\treturn nativeTx[config.behavior ?? 'deferred'](tx);\n\t}\n}\n\nexport class BetterSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new BetterSQLiteTransaction(\n\t\t\t'sync',\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\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PreparedQueryBase<\n\t\t{ type: 'sync'; run: RunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'BetterSQLitePreparedQuery';\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): RunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.run(...params);\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.all(...params);\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\t\treturn rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.get(...params);\n\t\t}\n\n\t\tconst row = stmt.raw().get(...params) as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)([row]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\tstmt.all(...params) as Record<string, unknown>[],\n\t\t);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { stmt, customResultMapper } = this;\n\n\t\tconst row = stmt.get(...params) as Record<string, unknown>;\n\t\tif (row === undefined) return row;\n\n\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t[row],\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.raw().all(...params) as T['values'];\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":["PreparedQueryBase"]}
@@ -1,7 +1,8 @@
1
1
  import type { Database, RunResult, Statement } from 'better-sqlite3';
2
+ import type * as V1 from "../_relations.cjs";
2
3
  import { entityKind } from "../entity.cjs";
3
4
  import type { Logger } from "../logger.cjs";
4
- import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
5
+ import type { AnyRelations, TablesRelationalConfig } from "../relations.cjs";
5
6
  import { type Query } from "../sql/sql.cjs";
6
7
  import type { SQLiteSyncDialect } from "../sqlite-core/dialect.cjs";
7
8
  import { SQLiteTransaction } from "../sqlite-core/index.cjs";
@@ -11,20 +12,22 @@ export interface BetterSQLiteSessionOptions {
11
12
  logger?: Logger;
12
13
  }
13
14
  type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
14
- export declare class BetterSQLiteSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'sync', RunResult, TFullSchema, TSchema> {
15
+ export declare class BetterSQLiteSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'sync', RunResult, TFullSchema, TRelations, TTablesConfig, TSchema> {
15
16
  private client;
17
+ private relations;
16
18
  private schema;
17
19
  static readonly [entityKind]: string;
18
20
  private logger;
19
- constructor(client: Database, dialect: SQLiteSyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: BetterSQLiteSessionOptions);
21
+ constructor(client: Database, dialect: SQLiteSyncDialect, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options?: BetterSQLiteSessionOptions);
20
22
  prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): PreparedQuery<T>;
21
- transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TSchema>) => T, config?: SQLiteTransactionConfig): T;
23
+ prepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper: (rows: Record<string, unknown>[]) => unknown): PreparedQuery<T, true>;
24
+ transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T, config?: SQLiteTransactionConfig): T;
22
25
  }
23
- export declare class BetterSQLiteTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TSchema> {
26
+ export declare class BetterSQLiteTransaction<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TRelations, TTablesConfig, TSchema> {
24
27
  static readonly [entityKind]: string;
25
- transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TSchema>) => T): T;
28
+ transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T): T;
26
29
  }
27
- export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<{
30
+ export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false> extends PreparedQueryBase<{
28
31
  type: 'sync';
29
32
  run: RunResult;
30
33
  all: T['all'];
@@ -37,11 +40,14 @@ export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQuery
37
40
  private fields;
38
41
  private _isResponseInArrayMode;
39
42
  private customResultMapper?;
43
+ private isRqbV2Query?;
40
44
  static readonly [entityKind]: string;
41
- constructor(stmt: Statement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => unknown) | undefined);
45
+ constructor(stmt: Statement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
42
46
  run(placeholderValues?: Record<string, unknown>): RunResult;
43
47
  all(placeholderValues?: Record<string, unknown>): T['all'];
44
48
  get(placeholderValues?: Record<string, unknown>): T['get'];
49
+ private allRqbV2;
50
+ private getRqbV2;
45
51
  values(placeholderValues?: Record<string, unknown>): T['values'];
46
52
  }
47
53
  export {};
@@ -1,7 +1,8 @@
1
1
  import type { Database, RunResult, Statement } from 'better-sqlite3';
2
+ import type * as V1 from "../_relations.js";
2
3
  import { entityKind } from "../entity.js";
3
4
  import type { Logger } from "../logger.js";
4
- import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
5
+ import type { AnyRelations, TablesRelationalConfig } from "../relations.js";
5
6
  import { type Query } from "../sql/sql.js";
6
7
  import type { SQLiteSyncDialect } from "../sqlite-core/dialect.js";
7
8
  import { SQLiteTransaction } from "../sqlite-core/index.js";
@@ -11,20 +12,22 @@ export interface BetterSQLiteSessionOptions {
11
12
  logger?: Logger;
12
13
  }
13
14
  type PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;
14
- export declare class BetterSQLiteSession<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteSession<'sync', RunResult, TFullSchema, TSchema> {
15
+ export declare class BetterSQLiteSession<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteSession<'sync', RunResult, TFullSchema, TRelations, TTablesConfig, TSchema> {
15
16
  private client;
17
+ private relations;
16
18
  private schema;
17
19
  static readonly [entityKind]: string;
18
20
  private logger;
19
- constructor(client: Database, dialect: SQLiteSyncDialect, schema: RelationalSchemaConfig<TSchema> | undefined, options?: BetterSQLiteSessionOptions);
21
+ constructor(client: Database, dialect: SQLiteSyncDialect, relations: AnyRelations | undefined, schema: V1.RelationalSchemaConfig<TSchema> | undefined, options?: BetterSQLiteSessionOptions);
20
22
  prepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => unknown): PreparedQuery<T>;
21
- transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TSchema>) => T, config?: SQLiteTransactionConfig): T;
23
+ prepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, customResultMapper: (rows: Record<string, unknown>[]) => unknown): PreparedQuery<T, true>;
24
+ transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T, config?: SQLiteTransactionConfig): T;
22
25
  }
23
- export declare class BetterSQLiteTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TSchema> {
26
+ export declare class BetterSQLiteTransaction<TFullSchema extends Record<string, unknown>, TRelations extends AnyRelations, TTablesConfig extends TablesRelationalConfig, TSchema extends V1.TablesRelationalConfig> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TRelations, TTablesConfig, TSchema> {
24
27
  static readonly [entityKind]: string;
25
- transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TSchema>) => T): T;
28
+ transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T): T;
26
29
  }
27
- export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<{
30
+ export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false> extends PreparedQueryBase<{
28
31
  type: 'sync';
29
32
  run: RunResult;
30
33
  all: T['all'];
@@ -37,11 +40,14 @@ export declare class PreparedQuery<T extends PreparedQueryConfig = PreparedQuery
37
40
  private fields;
38
41
  private _isResponseInArrayMode;
39
42
  private customResultMapper?;
43
+ private isRqbV2Query?;
40
44
  static readonly [entityKind]: string;
41
- constructor(stmt: Statement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => unknown) | undefined);
45
+ constructor(stmt: Statement, query: Query, logger: Logger, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][]) => unknown) | undefined, isRqbV2Query?: TIsRqbV2 | undefined);
42
46
  run(placeholderValues?: Record<string, unknown>): RunResult;
43
47
  all(placeholderValues?: Record<string, unknown>): T['all'];
44
48
  get(placeholderValues?: Record<string, unknown>): T['get'];
49
+ private allRqbV2;
50
+ private getRqbV2;
45
51
  values(placeholderValues?: Record<string, unknown>): T['values'];
46
52
  }
47
53
  export {};
@@ -8,9 +8,10 @@ import {
8
8
  } from "../sqlite-core/session.js";
9
9
  import { mapResultRow } from "../utils.js";
10
10
  class BetterSQLiteSession extends SQLiteSession {
11
- constructor(client, dialect, schema, options = {}) {
11
+ constructor(client, dialect, relations, schema, options = {}) {
12
12
  super(dialect);
13
13
  this.client = client;
14
+ this.relations = relations;
14
15
  this.schema = schema;
15
16
  this.logger = options.logger ?? new NoopLogger();
16
17
  }
@@ -28,8 +29,21 @@ class BetterSQLiteSession extends SQLiteSession {
28
29
  customResultMapper
29
30
  );
30
31
  }
32
+ prepareRelationalQuery(query, fields, executeMethod, customResultMapper) {
33
+ const stmt = this.client.prepare(query.sql);
34
+ return new PreparedQuery(
35
+ stmt,
36
+ query,
37
+ this.logger,
38
+ fields,
39
+ executeMethod,
40
+ false,
41
+ customResultMapper,
42
+ true
43
+ );
44
+ }
31
45
  transaction(transaction, config = {}) {
32
- const tx = new BetterSQLiteTransaction("sync", this.dialect, this, this.schema);
46
+ const tx = new BetterSQLiteTransaction("sync", this.dialect, this, this.relations, this.schema);
33
47
  const nativeTx = this.client.transaction(transaction);
34
48
  return nativeTx[config.behavior ?? "deferred"](tx);
35
49
  }
@@ -38,7 +52,14 @@ class BetterSQLiteTransaction extends SQLiteTransaction {
38
52
  static [entityKind] = "BetterSQLiteTransaction";
39
53
  transaction(transaction) {
40
54
  const savepointName = `sp${this.nestedIndex}`;
41
- const tx = new BetterSQLiteTransaction("sync", this.dialect, this.session, this.schema, this.nestedIndex + 1);
55
+ const tx = new BetterSQLiteTransaction(
56
+ "sync",
57
+ this.dialect,
58
+ this.session,
59
+ this.relations,
60
+ this.schema,
61
+ this.nestedIndex + 1
62
+ );
42
63
  this.session.run(sql.raw(`savepoint ${savepointName}`));
43
64
  try {
44
65
  const result = transaction(tx);
@@ -51,13 +72,14 @@ class BetterSQLiteTransaction extends SQLiteTransaction {
51
72
  }
52
73
  }
53
74
  class PreparedQuery extends PreparedQueryBase {
54
- constructor(stmt, query, logger, fields, executeMethod, _isResponseInArrayMode, customResultMapper) {
75
+ constructor(stmt, query, logger, fields, executeMethod, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
55
76
  super("sync", executeMethod, query);
56
77
  this.stmt = stmt;
57
78
  this.logger = logger;
58
79
  this.fields = fields;
59
80
  this._isResponseInArrayMode = _isResponseInArrayMode;
60
81
  this.customResultMapper = customResultMapper;
82
+ this.isRqbV2Query = isRqbV2Query;
61
83
  }
62
84
  static [entityKind] = "BetterSQLitePreparedQuery";
63
85
  run(placeholderValues) {
@@ -66,6 +88,8 @@ class PreparedQuery extends PreparedQueryBase {
66
88
  return this.stmt.run(...params);
67
89
  }
68
90
  all(placeholderValues) {
91
+ if (this.isRqbV2Query)
92
+ return this.allRqbV2(placeholderValues);
69
93
  const { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;
70
94
  if (!fields && !customResultMapper) {
71
95
  const params = fillPlaceholders(query.params, placeholderValues ?? {});
@@ -79,6 +103,8 @@ class PreparedQuery extends PreparedQueryBase {
79
103
  return rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
80
104
  }
81
105
  get(placeholderValues) {
106
+ if (this.isRqbV2Query)
107
+ return this.getRqbV2(placeholderValues);
82
108
  const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
83
109
  this.logger.logQuery(this.query.sql, params);
84
110
  const { fields, stmt, joinsNotNullableMap, customResultMapper } = this;
@@ -94,6 +120,25 @@ class PreparedQuery extends PreparedQueryBase {
94
120
  }
95
121
  return mapResultRow(fields, row, joinsNotNullableMap);
96
122
  }
123
+ allRqbV2(placeholderValues) {
124
+ const { query, logger, stmt, customResultMapper } = this;
125
+ const params = fillPlaceholders(query.params, placeholderValues ?? {});
126
+ logger.logQuery(query.sql, params);
127
+ return customResultMapper(
128
+ stmt.all(...params)
129
+ );
130
+ }
131
+ getRqbV2(placeholderValues) {
132
+ const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
133
+ this.logger.logQuery(this.query.sql, params);
134
+ const { stmt, customResultMapper } = this;
135
+ const row = stmt.get(...params);
136
+ if (row === void 0)
137
+ return row;
138
+ return customResultMapper(
139
+ [row]
140
+ );
141
+ }
97
142
  values(placeholderValues) {
98
143
  const params = fillPlaceholders(this.query.params, placeholderValues ?? {});
99
144
  this.logger.logQuery(this.query.sql, params);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/better-sqlite3/session.ts"],"sourcesContent":["import type { Database, RunResult, Statement } from 'better-sqlite3';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery as PreparedQueryBase,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface BetterSQLiteSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class BetterSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteSession<'sync', RunResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: BetterSQLiteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this, this.schema);\n\t\tconst nativeTx = this.client.transaction(transaction);\n\t\treturn nativeTx[config.behavior ?? 'deferred'](tx);\n\t}\n}\n\nexport class BetterSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteTransaction';\n\n\toverride transaction<T>(transaction: (tx: BetterSQLiteTransaction<TFullSchema, TSchema>) => T): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this.session, this.schema, this.nestedIndex + 1);\n\t\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig> extends PreparedQueryBase<\n\t{ type: 'sync'; run: RunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLitePreparedQuery';\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => unknown,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): RunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.run(...params);\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.all(...params);\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper(rows) as T['all'];\n\t\t}\n\t\treturn rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.get(...params);\n\t\t}\n\n\t\tconst row = stmt.raw().get(...params) as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn customResultMapper([row]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.raw().all(...params) as T['values'];\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/better-sqlite3/session.ts"],"sourcesContent":["import type { Database, RunResult, Statement } from 'better-sqlite3';\nimport type * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query, sql } from '~/sql/sql.ts';\nimport type { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport {\n\ttype PreparedQueryConfig as PreparedQueryConfigBase,\n\ttype SQLiteExecuteMethod,\n\tSQLitePreparedQuery as PreparedQueryBase,\n\tSQLiteSession,\n\ttype SQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface BetterSQLiteSessionOptions {\n\tlogger?: Logger;\n}\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class BetterSQLiteSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'sync', RunResult, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteSession';\n\n\tprivate logger: Logger;\n\n\tconstructor(\n\t\tprivate client: Database,\n\t\tdialect: SQLiteSyncDialect,\n\t\tprivate relations: AnyRelations | undefined,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\toptions: BetterSQLiteSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t): PreparedQuery<T> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): PreparedQuery<T, true> {\n\t\tconst stmt = this.client.prepare(query.sql);\n\t\treturn new PreparedQuery(\n\t\t\tstmt,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T,\n\t\tconfig: SQLiteTransactionConfig = {},\n\t): T {\n\t\tconst tx = new BetterSQLiteTransaction('sync', this.dialect, this, this.relations, this.schema);\n\t\tconst nativeTx = this.client.transaction(transaction);\n\t\treturn nativeTx[config.behavior ?? 'deferred'](tx);\n\t}\n}\n\nexport class BetterSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTTablesConfig extends TablesRelationalConfig,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'sync', RunResult, TFullSchema, TRelations, TTablesConfig, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BetterSQLiteTransaction';\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BetterSQLiteTransaction<TFullSchema, TRelations, TTablesConfig, TSchema>) => T,\n\t): T {\n\t\tconst savepointName = `sp${this.nestedIndex}`;\n\t\tconst tx = new BetterSQLiteTransaction(\n\t\t\t'sync',\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\tthis.session.run(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = transaction(tx);\n\t\t\tthis.session.run(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\tthis.session.run(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nexport class PreparedQuery<T extends PreparedQueryConfig = PreparedQueryConfig, TIsRqbV2 extends boolean = false>\n\textends PreparedQueryBase<\n\t\t{ type: 'sync'; run: RunResult; all: T['all']; get: T['get']; values: T['values']; execute: T['execute'] }\n\t>\n{\n\tstatic override readonly [entityKind]: string = 'BetterSQLitePreparedQuery';\n\n\tconstructor(\n\t\tprivate stmt: Statement,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('sync', executeMethod, query);\n\t}\n\n\trun(placeholderValues?: Record<string, unknown>): RunResult {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.run(...params);\n\t}\n\n\tall(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\n\t\tconst { fields, joinsNotNullableMap, query, logger, stmt, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn stmt.all(...params);\n\t\t}\n\n\t\tconst rows = this.values(placeholderValues) as unknown[][];\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)(rows) as T['all'];\n\t\t}\n\t\treturn rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tget(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { fields, stmt, joinsNotNullableMap, customResultMapper } = this;\n\t\tif (!fields && !customResultMapper) {\n\t\t\treturn stmt.get(...params);\n\t\t}\n\n\t\tconst row = stmt.raw().get(...params) as unknown[];\n\n\t\tif (!row) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (rows: unknown[][]) => unknown)([row]) as T['get'];\n\t\t}\n\n\t\treturn mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate allRqbV2(placeholderValues?: Record<string, unknown>): T['all'] {\n\t\tconst { query, logger, stmt, customResultMapper } = this;\n\n\t\tconst params = fillPlaceholders(query.params, placeholderValues ?? {});\n\t\tlogger.logQuery(query.sql, params);\n\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\tstmt.all(...params) as Record<string, unknown>[],\n\t\t);\n\t}\n\n\tprivate getRqbV2(placeholderValues?: Record<string, unknown>): T['get'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\n\t\tconst { stmt, customResultMapper } = this;\n\n\t\tconst row = stmt.get(...params) as Record<string, unknown>;\n\t\tif (row === undefined) return row;\n\n\t\treturn (customResultMapper as (rows: Record<string, unknown>[]) => unknown)(\n\t\t\t[row],\n\t\t);\n\t}\n\n\tvalues(placeholderValues?: Record<string, unknown>): T['values'] {\n\t\tconst params = fillPlaceholders(this.query.params, placeholderValues ?? {});\n\t\tthis.logger.logQuery(this.query.sql, params);\n\t\treturn this.stmt.raw().all(...params) as T['values'];\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":[]}