drizzle-orm 0.43.1-47c6ad4 → 0.43.1-5fb460b

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 (814) hide show
  1. package/aws-data-api/pg/driver.cjs +5 -1
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.d.cts +1 -0
  4. package/aws-data-api/pg/driver.d.ts +1 -0
  5. package/aws-data-api/pg/driver.js +5 -1
  6. package/aws-data-api/pg/driver.js.map +1 -1
  7. package/aws-data-api/pg/session.cjs +15 -4
  8. package/aws-data-api/pg/session.cjs.map +1 -1
  9. package/aws-data-api/pg/session.d.cts +13 -2
  10. package/aws-data-api/pg/session.d.ts +13 -2
  11. package/aws-data-api/pg/session.js +15 -4
  12. package/aws-data-api/pg/session.js.map +1 -1
  13. package/better-sqlite3/driver.cjs.map +1 -1
  14. package/better-sqlite3/driver.js.map +1 -1
  15. package/better-sqlite3/session.cjs +9 -3
  16. package/better-sqlite3/session.cjs.map +1 -1
  17. package/better-sqlite3/session.d.cts +12 -2
  18. package/better-sqlite3/session.d.ts +12 -2
  19. package/better-sqlite3/session.js +9 -3
  20. package/better-sqlite3/session.js.map +1 -1
  21. package/bun-sql/driver.cjs +5 -1
  22. package/bun-sql/driver.cjs.map +1 -1
  23. package/bun-sql/driver.js +5 -1
  24. package/bun-sql/driver.js.map +1 -1
  25. package/bun-sql/session.cjs +21 -9
  26. package/bun-sql/session.cjs.map +1 -1
  27. package/bun-sql/session.d.cts +12 -2
  28. package/bun-sql/session.d.ts +12 -2
  29. package/bun-sql/session.js +21 -9
  30. package/bun-sql/session.js.map +1 -1
  31. package/{mssql-core/columns/date.common.cjs → cache/core/cache.cjs} +22 -12
  32. package/cache/core/cache.cjs.map +1 -0
  33. package/cache/core/cache.d.cts +35 -0
  34. package/cache/core/cache.d.ts +35 -0
  35. package/cache/core/cache.js +22 -0
  36. package/cache/core/cache.js.map +1 -0
  37. package/{node-mssql → cache/core}/index.cjs +4 -6
  38. package/cache/core/index.cjs.map +1 -0
  39. package/cache/core/index.d.cts +1 -0
  40. package/cache/core/index.d.ts +1 -0
  41. package/cache/core/index.js +2 -0
  42. package/cache/core/index.js.map +1 -0
  43. package/{mssql-core/subquery.cjs → cache/core/types.cjs} +3 -3
  44. package/cache/core/types.cjs.map +1 -0
  45. package/cache/core/types.d.cts +33 -0
  46. package/cache/core/types.d.ts +33 -0
  47. package/cache/core/types.js +1 -0
  48. package/cache/upstash/cache.cjs +148 -0
  49. package/cache/upstash/cache.cjs.map +1 -0
  50. package/cache/upstash/cache.d.cts +29 -0
  51. package/cache/upstash/cache.d.ts +29 -0
  52. package/cache/upstash/cache.js +123 -0
  53. package/cache/upstash/cache.js.map +1 -0
  54. package/{mssql-core/view-common.cjs → cache/upstash/index.cjs} +6 -12
  55. package/cache/upstash/index.cjs.map +1 -0
  56. package/cache/upstash/index.d.cts +1 -0
  57. package/cache/upstash/index.d.ts +1 -0
  58. package/cache/upstash/index.js +2 -0
  59. package/cache/upstash/index.js.map +1 -0
  60. package/column-builder.cjs.map +1 -1
  61. package/column-builder.d.cts +3 -4
  62. package/column-builder.d.ts +3 -4
  63. package/column-builder.js.map +1 -1
  64. package/d1/driver.cjs +5 -1
  65. package/d1/driver.cjs.map +1 -1
  66. package/d1/driver.js +5 -1
  67. package/d1/driver.js.map +1 -1
  68. package/d1/session.cjs +23 -9
  69. package/d1/session.cjs.map +1 -1
  70. package/d1/session.d.cts +12 -2
  71. package/d1/session.d.ts +12 -2
  72. package/d1/session.js +23 -9
  73. package/d1/session.js.map +1 -1
  74. package/durable-sqlite/session.cjs +1 -1
  75. package/durable-sqlite/session.cjs.map +1 -1
  76. package/durable-sqlite/session.js +1 -1
  77. package/durable-sqlite/session.js.map +1 -1
  78. package/gel/driver.cjs +9 -2
  79. package/gel/driver.cjs.map +1 -1
  80. package/gel/driver.d.cts +2 -0
  81. package/gel/driver.d.ts +2 -0
  82. package/gel/driver.js +9 -2
  83. package/gel/driver.js.map +1 -1
  84. package/gel/session.cjs +25 -10
  85. package/gel/session.cjs.map +1 -1
  86. package/gel/session.d.cts +12 -2
  87. package/gel/session.d.ts +12 -2
  88. package/gel/session.js +25 -10
  89. package/gel/session.js.map +1 -1
  90. package/gel-core/db.cjs +3 -0
  91. package/gel-core/db.cjs.map +1 -1
  92. package/gel-core/db.d.cts +4 -0
  93. package/gel-core/db.d.ts +4 -0
  94. package/gel-core/db.js +3 -0
  95. package/gel-core/db.js.map +1 -1
  96. package/gel-core/query-builders/delete.cjs +5 -1
  97. package/gel-core/query-builders/delete.cjs.map +1 -1
  98. package/gel-core/query-builders/delete.js +5 -1
  99. package/gel-core/query-builders/delete.js.map +1 -1
  100. package/gel-core/query-builders/insert.cjs +5 -1
  101. package/gel-core/query-builders/insert.cjs.map +1 -1
  102. package/gel-core/query-builders/insert.js +5 -1
  103. package/gel-core/query-builders/insert.js.map +1 -1
  104. package/gel-core/query-builders/select.cjs +29 -4
  105. package/gel-core/query-builders/select.cjs.map +1 -1
  106. package/gel-core/query-builders/select.d.cts +9 -0
  107. package/gel-core/query-builders/select.d.ts +9 -0
  108. package/gel-core/query-builders/select.js +29 -4
  109. package/gel-core/query-builders/select.js.map +1 -1
  110. package/gel-core/query-builders/update.cjs +5 -1
  111. package/gel-core/query-builders/update.cjs.map +1 -1
  112. package/gel-core/query-builders/update.js +5 -1
  113. package/gel-core/query-builders/update.js.map +1 -1
  114. package/gel-core/session.cjs +53 -1
  115. package/gel-core/session.cjs.map +1 -1
  116. package/gel-core/session.d.cts +14 -3
  117. package/gel-core/session.d.ts +14 -3
  118. package/gel-core/session.js +54 -2
  119. package/gel-core/session.js.map +1 -1
  120. package/gel-core/utils.cjs +16 -0
  121. package/gel-core/utils.cjs.map +1 -1
  122. package/gel-core/utils.d.cts +8 -4
  123. package/gel-core/utils.d.ts +8 -4
  124. package/gel-core/utils.js +15 -0
  125. package/gel-core/utils.js.map +1 -1
  126. package/libsql/driver-core.cjs +5 -1
  127. package/libsql/driver-core.cjs.map +1 -1
  128. package/libsql/driver-core.js +5 -1
  129. package/libsql/driver-core.js.map +1 -1
  130. package/libsql/session.cjs +27 -13
  131. package/libsql/session.cjs.map +1 -1
  132. package/libsql/session.d.cts +12 -2
  133. package/libsql/session.d.ts +12 -2
  134. package/libsql/session.js +27 -13
  135. package/libsql/session.js.map +1 -1
  136. package/mysql-core/db.cjs +3 -0
  137. package/mysql-core/db.cjs.map +1 -1
  138. package/mysql-core/db.d.cts +4 -0
  139. package/mysql-core/db.d.ts +4 -0
  140. package/mysql-core/db.js +3 -0
  141. package/mysql-core/db.js.map +1 -1
  142. package/mysql-core/query-builders/delete.cjs +9 -1
  143. package/mysql-core/query-builders/delete.cjs.map +1 -1
  144. package/mysql-core/query-builders/delete.js +9 -1
  145. package/mysql-core/query-builders/delete.js.map +1 -1
  146. package/mysql-core/query-builders/insert.cjs +8 -1
  147. package/mysql-core/query-builders/insert.cjs.map +1 -1
  148. package/mysql-core/query-builders/insert.d.cts +2 -0
  149. package/mysql-core/query-builders/insert.d.ts +2 -0
  150. package/mysql-core/query-builders/insert.js +8 -1
  151. package/mysql-core/query-builders/insert.js.map +1 -1
  152. package/mysql-core/query-builders/select.cjs +27 -3
  153. package/mysql-core/query-builders/select.cjs.map +1 -1
  154. package/mysql-core/query-builders/select.d.cts +9 -0
  155. package/mysql-core/query-builders/select.d.ts +9 -0
  156. package/mysql-core/query-builders/select.js +28 -4
  157. package/mysql-core/query-builders/select.js.map +1 -1
  158. package/mysql-core/query-builders/update.cjs +11 -1
  159. package/mysql-core/query-builders/update.cjs.map +1 -1
  160. package/mysql-core/query-builders/update.d.cts +2 -0
  161. package/mysql-core/query-builders/update.d.ts +2 -0
  162. package/mysql-core/query-builders/update.js +11 -1
  163. package/mysql-core/query-builders/update.js.map +1 -1
  164. package/mysql-core/session.cjs +54 -0
  165. package/mysql-core/session.cjs.map +1 -1
  166. package/mysql-core/session.d.cts +15 -2
  167. package/mysql-core/session.d.ts +15 -2
  168. package/mysql-core/session.js +55 -1
  169. package/mysql-core/session.js.map +1 -1
  170. package/mysql-core/utils.cjs +16 -0
  171. package/mysql-core/utils.cjs.map +1 -1
  172. package/mysql-core/utils.d.cts +6 -2
  173. package/mysql-core/utils.d.ts +6 -2
  174. package/mysql-core/utils.js +15 -0
  175. package/mysql-core/utils.js.map +1 -1
  176. package/mysql-proxy/session.cjs +15 -5
  177. package/mysql-proxy/session.cjs.map +1 -1
  178. package/mysql-proxy/session.d.cts +12 -2
  179. package/mysql-proxy/session.d.ts +12 -2
  180. package/mysql-proxy/session.js +15 -5
  181. package/mysql-proxy/session.js.map +1 -1
  182. package/mysql2/driver.cjs +10 -2
  183. package/mysql2/driver.cjs.map +1 -1
  184. package/mysql2/driver.d.cts +2 -0
  185. package/mysql2/driver.d.ts +2 -0
  186. package/mysql2/driver.js +10 -2
  187. package/mysql2/driver.js.map +1 -1
  188. package/mysql2/session.cjs +15 -5
  189. package/mysql2/session.cjs.map +1 -1
  190. package/mysql2/session.d.cts +12 -2
  191. package/mysql2/session.d.ts +12 -2
  192. package/mysql2/session.js +15 -5
  193. package/mysql2/session.js.map +1 -1
  194. package/neon-http/driver.cjs +9 -2
  195. package/neon-http/driver.cjs.map +1 -1
  196. package/neon-http/driver.d.cts +2 -0
  197. package/neon-http/driver.d.ts +2 -0
  198. package/neon-http/driver.js +9 -2
  199. package/neon-http/driver.js.map +1 -1
  200. package/neon-http/session.cjs +25 -15
  201. package/neon-http/session.cjs.map +1 -1
  202. package/neon-http/session.d.cts +12 -2
  203. package/neon-http/session.d.ts +12 -2
  204. package/neon-http/session.js +25 -15
  205. package/neon-http/session.js.map +1 -1
  206. package/neon-serverless/driver.cjs +9 -2
  207. package/neon-serverless/driver.cjs.map +1 -1
  208. package/neon-serverless/driver.d.cts +2 -0
  209. package/neon-serverless/driver.d.ts +2 -0
  210. package/neon-serverless/driver.js +9 -2
  211. package/neon-serverless/driver.js.map +1 -1
  212. package/neon-serverless/session.cjs +21 -7
  213. package/neon-serverless/session.cjs.map +1 -1
  214. package/neon-serverless/session.d.cts +12 -2
  215. package/neon-serverless/session.d.ts +12 -2
  216. package/neon-serverless/session.js +21 -7
  217. package/neon-serverless/session.js.map +1 -1
  218. package/node-postgres/driver.cjs +9 -2
  219. package/node-postgres/driver.cjs.map +1 -1
  220. package/node-postgres/driver.d.cts +2 -0
  221. package/node-postgres/driver.d.ts +2 -0
  222. package/node-postgres/driver.js +9 -2
  223. package/node-postgres/driver.js.map +1 -1
  224. package/node-postgres/session.cjs +19 -6
  225. package/node-postgres/session.cjs.map +1 -1
  226. package/node-postgres/session.d.cts +13 -2
  227. package/node-postgres/session.d.ts +13 -2
  228. package/node-postgres/session.js +19 -6
  229. package/node-postgres/session.js.map +1 -1
  230. package/op-sqlite/driver.cjs +5 -1
  231. package/op-sqlite/driver.cjs.map +1 -1
  232. package/op-sqlite/driver.js +5 -1
  233. package/op-sqlite/driver.js.map +1 -1
  234. package/op-sqlite/session.cjs +23 -9
  235. package/op-sqlite/session.cjs.map +1 -1
  236. package/op-sqlite/session.d.cts +12 -2
  237. package/op-sqlite/session.d.ts +12 -2
  238. package/op-sqlite/session.js +23 -9
  239. package/op-sqlite/session.js.map +1 -1
  240. package/package.json +69 -656
  241. package/pg-core/db.cjs +3 -0
  242. package/pg-core/db.cjs.map +1 -1
  243. package/pg-core/db.d.cts +4 -0
  244. package/pg-core/db.d.ts +4 -0
  245. package/pg-core/db.js +3 -0
  246. package/pg-core/db.js.map +1 -1
  247. package/pg-core/query-builders/delete.cjs +6 -1
  248. package/pg-core/query-builders/delete.cjs.map +1 -1
  249. package/pg-core/query-builders/delete.d.cts +3 -1
  250. package/pg-core/query-builders/delete.d.ts +3 -1
  251. package/pg-core/query-builders/delete.js +6 -1
  252. package/pg-core/query-builders/delete.js.map +1 -1
  253. package/pg-core/query-builders/insert.cjs +6 -1
  254. package/pg-core/query-builders/insert.cjs.map +1 -1
  255. package/pg-core/query-builders/insert.d.cts +2 -0
  256. package/pg-core/query-builders/insert.d.ts +2 -0
  257. package/pg-core/query-builders/insert.js +6 -1
  258. package/pg-core/query-builders/insert.js.map +1 -1
  259. package/pg-core/query-builders/select.cjs +31 -5
  260. package/pg-core/query-builders/select.cjs.map +1 -1
  261. package/pg-core/query-builders/select.d.cts +15 -6
  262. package/pg-core/query-builders/select.d.ts +15 -6
  263. package/pg-core/query-builders/select.js +31 -5
  264. package/pg-core/query-builders/select.js.map +1 -1
  265. package/pg-core/query-builders/update.cjs +6 -1
  266. package/pg-core/query-builders/update.cjs.map +1 -1
  267. package/pg-core/query-builders/update.d.cts +4 -2
  268. package/pg-core/query-builders/update.d.ts +4 -2
  269. package/pg-core/query-builders/update.js +6 -1
  270. package/pg-core/query-builders/update.js.map +1 -1
  271. package/pg-core/session.cjs +53 -1
  272. package/pg-core/session.cjs.map +1 -1
  273. package/pg-core/session.d.cts +14 -3
  274. package/pg-core/session.d.ts +14 -3
  275. package/pg-core/session.js +54 -2
  276. package/pg-core/session.js.map +1 -1
  277. package/pg-core/utils.cjs +16 -0
  278. package/pg-core/utils.cjs.map +1 -1
  279. package/pg-core/utils.d.cts +8 -4
  280. package/pg-core/utils.d.ts +8 -4
  281. package/pg-core/utils.js +16 -1
  282. package/pg-core/utils.js.map +1 -1
  283. package/pg-proxy/driver.cjs +7 -2
  284. package/pg-proxy/driver.cjs.map +1 -1
  285. package/pg-proxy/driver.js +7 -2
  286. package/pg-proxy/driver.js.map +1 -1
  287. package/pg-proxy/session.cjs +15 -5
  288. package/pg-proxy/session.cjs.map +1 -1
  289. package/pg-proxy/session.d.cts +12 -2
  290. package/pg-proxy/session.d.ts +12 -2
  291. package/pg-proxy/session.js +15 -5
  292. package/pg-proxy/session.js.map +1 -1
  293. package/pglite/driver.cjs +9 -2
  294. package/pglite/driver.cjs.map +1 -1
  295. package/pglite/driver.d.cts +2 -0
  296. package/pglite/driver.d.ts +2 -0
  297. package/pglite/driver.js +9 -2
  298. package/pglite/driver.js.map +1 -1
  299. package/pglite/session.cjs +19 -7
  300. package/pglite/session.cjs.map +1 -1
  301. package/pglite/session.d.cts +12 -2
  302. package/pglite/session.d.ts +12 -2
  303. package/pglite/session.js +19 -7
  304. package/pglite/session.js.map +1 -1
  305. package/planetscale-serverless/driver.cjs +5 -1
  306. package/planetscale-serverless/driver.cjs.map +1 -1
  307. package/planetscale-serverless/driver.d.cts +1 -0
  308. package/planetscale-serverless/driver.d.ts +1 -0
  309. package/planetscale-serverless/driver.js +5 -1
  310. package/planetscale-serverless/driver.js.map +1 -1
  311. package/planetscale-serverless/session.cjs +15 -5
  312. package/planetscale-serverless/session.cjs.map +1 -1
  313. package/planetscale-serverless/session.d.cts +12 -2
  314. package/planetscale-serverless/session.d.ts +12 -2
  315. package/planetscale-serverless/session.js +15 -5
  316. package/planetscale-serverless/session.js.map +1 -1
  317. package/postgres-js/driver.cjs +5 -1
  318. package/postgres-js/driver.cjs.map +1 -1
  319. package/postgres-js/driver.js +5 -1
  320. package/postgres-js/driver.js.map +1 -1
  321. package/postgres-js/session.cjs +18 -6
  322. package/postgres-js/session.cjs.map +1 -1
  323. package/postgres-js/session.d.cts +12 -2
  324. package/postgres-js/session.d.ts +12 -2
  325. package/postgres-js/session.js +18 -6
  326. package/postgres-js/session.js.map +1 -1
  327. package/prisma/mysql/session.cjs +1 -1
  328. package/prisma/mysql/session.cjs.map +1 -1
  329. package/prisma/mysql/session.js +1 -1
  330. package/prisma/mysql/session.js.map +1 -1
  331. package/prisma/pg/session.cjs +1 -1
  332. package/prisma/pg/session.cjs.map +1 -1
  333. package/prisma/pg/session.js +1 -1
  334. package/prisma/pg/session.js.map +1 -1
  335. package/query-builders/query-builder.cjs.map +1 -1
  336. package/query-builders/query-builder.d.cts +2 -1
  337. package/query-builders/query-builder.d.ts +2 -1
  338. package/query-builders/query-builder.js.map +1 -1
  339. package/relations.cjs +0 -48
  340. package/relations.cjs.map +1 -1
  341. package/relations.d.cts +0 -1
  342. package/relations.d.ts +0 -1
  343. package/relations.js +0 -47
  344. package/relations.js.map +1 -1
  345. package/singlestore/driver.cjs +12 -2
  346. package/singlestore/driver.cjs.map +1 -1
  347. package/singlestore/driver.d.cts +2 -0
  348. package/singlestore/driver.d.ts +2 -0
  349. package/singlestore/driver.js +12 -2
  350. package/singlestore/driver.js.map +1 -1
  351. package/singlestore/session.cjs +15 -5
  352. package/singlestore/session.cjs.map +1 -1
  353. package/singlestore/session.d.cts +12 -2
  354. package/singlestore/session.d.ts +12 -2
  355. package/singlestore/session.js +15 -5
  356. package/singlestore/session.js.map +1 -1
  357. package/singlestore-core/db.cjs +3 -0
  358. package/singlestore-core/db.cjs.map +1 -1
  359. package/singlestore-core/db.d.cts +4 -0
  360. package/singlestore-core/db.d.ts +4 -0
  361. package/singlestore-core/db.js +3 -0
  362. package/singlestore-core/db.js.map +1 -1
  363. package/singlestore-core/query-builders/delete.cjs +9 -1
  364. package/singlestore-core/query-builders/delete.cjs.map +1 -1
  365. package/singlestore-core/query-builders/delete.js +9 -1
  366. package/singlestore-core/query-builders/delete.js.map +1 -1
  367. package/singlestore-core/query-builders/insert.cjs +6 -1
  368. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  369. package/singlestore-core/query-builders/insert.js +6 -1
  370. package/singlestore-core/query-builders/insert.js.map +1 -1
  371. package/singlestore-core/query-builders/select.cjs +28 -3
  372. package/singlestore-core/query-builders/select.cjs.map +1 -1
  373. package/singlestore-core/query-builders/select.d.cts +9 -0
  374. package/singlestore-core/query-builders/select.d.ts +9 -0
  375. package/singlestore-core/query-builders/select.js +28 -3
  376. package/singlestore-core/query-builders/select.js.map +1 -1
  377. package/singlestore-core/query-builders/update.cjs +9 -1
  378. package/singlestore-core/query-builders/update.cjs.map +1 -1
  379. package/singlestore-core/query-builders/update.js +9 -1
  380. package/singlestore-core/query-builders/update.js.map +1 -1
  381. package/singlestore-core/session.cjs +54 -0
  382. package/singlestore-core/session.cjs.map +1 -1
  383. package/singlestore-core/session.d.cts +14 -2
  384. package/singlestore-core/session.d.ts +14 -2
  385. package/singlestore-core/session.js +55 -1
  386. package/singlestore-core/session.js.map +1 -1
  387. package/singlestore-core/utils.cjs +16 -0
  388. package/singlestore-core/utils.cjs.map +1 -1
  389. package/singlestore-core/utils.d.cts +3 -0
  390. package/singlestore-core/utils.d.ts +3 -0
  391. package/singlestore-core/utils.js +15 -0
  392. package/singlestore-core/utils.js.map +1 -1
  393. package/sql/sql.cjs +10 -0
  394. package/sql/sql.cjs.map +1 -1
  395. package/sql/sql.js +10 -0
  396. package/sql/sql.js.map +1 -1
  397. package/sqlite-core/db.cjs +3 -0
  398. package/sqlite-core/db.cjs.map +1 -1
  399. package/sqlite-core/db.d.cts +4 -0
  400. package/sqlite-core/db.d.ts +4 -0
  401. package/sqlite-core/db.js +3 -0
  402. package/sqlite-core/db.js.map +1 -1
  403. package/sqlite-core/query-builders/delete.cjs +7 -1
  404. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  405. package/sqlite-core/query-builders/delete.js +7 -1
  406. package/sqlite-core/query-builders/delete.js.map +1 -1
  407. package/sqlite-core/query-builders/insert.cjs +7 -1
  408. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  409. package/sqlite-core/query-builders/insert.js +7 -1
  410. package/sqlite-core/query-builders/insert.js.map +1 -1
  411. package/sqlite-core/query-builders/select.cjs +31 -3
  412. package/sqlite-core/query-builders/select.cjs.map +1 -1
  413. package/sqlite-core/query-builders/select.d.cts +9 -0
  414. package/sqlite-core/query-builders/select.d.ts +9 -0
  415. package/sqlite-core/query-builders/select.js +31 -3
  416. package/sqlite-core/query-builders/select.js.map +1 -1
  417. package/sqlite-core/query-builders/update.cjs +7 -1
  418. package/sqlite-core/query-builders/update.cjs.map +1 -1
  419. package/sqlite-core/query-builders/update.js +7 -1
  420. package/sqlite-core/query-builders/update.js.map +1 -1
  421. package/sqlite-core/session.cjs +63 -3
  422. package/sqlite-core/session.cjs.map +1 -1
  423. package/sqlite-core/session.d.cts +18 -4
  424. package/sqlite-core/session.d.ts +18 -4
  425. package/sqlite-core/session.js +64 -4
  426. package/sqlite-core/session.js.map +1 -1
  427. package/sqlite-core/utils.cjs +16 -0
  428. package/sqlite-core/utils.cjs.map +1 -1
  429. package/sqlite-core/utils.d.cts +6 -2
  430. package/sqlite-core/utils.d.ts +6 -2
  431. package/sqlite-core/utils.js +15 -0
  432. package/sqlite-core/utils.js.map +1 -1
  433. package/sqlite-proxy/driver.cjs +9 -2
  434. package/sqlite-proxy/driver.cjs.map +1 -1
  435. package/sqlite-proxy/driver.js +9 -2
  436. package/sqlite-proxy/driver.js.map +1 -1
  437. package/sqlite-proxy/session.cjs +22 -8
  438. package/sqlite-proxy/session.cjs.map +1 -1
  439. package/sqlite-proxy/session.d.cts +12 -2
  440. package/sqlite-proxy/session.d.ts +12 -2
  441. package/sqlite-proxy/session.js +22 -8
  442. package/sqlite-proxy/session.js.map +1 -1
  443. package/subquery.cjs +4 -3
  444. package/subquery.cjs.map +1 -1
  445. package/subquery.d.cts +2 -1
  446. package/subquery.d.ts +2 -1
  447. package/subquery.js +4 -3
  448. package/subquery.js.map +1 -1
  449. package/tidb-serverless/driver.cjs +5 -1
  450. package/tidb-serverless/driver.cjs.map +1 -1
  451. package/tidb-serverless/driver.d.cts +1 -0
  452. package/tidb-serverless/driver.d.ts +1 -0
  453. package/tidb-serverless/driver.js +5 -1
  454. package/tidb-serverless/driver.js.map +1 -1
  455. package/tidb-serverless/session.cjs +15 -5
  456. package/tidb-serverless/session.cjs.map +1 -1
  457. package/tidb-serverless/session.d.cts +12 -2
  458. package/tidb-serverless/session.d.ts +12 -2
  459. package/tidb-serverless/session.js +15 -5
  460. package/tidb-serverless/session.js.map +1 -1
  461. package/utils.cjs +22 -0
  462. package/utils.cjs.map +1 -1
  463. package/utils.d.cts +3 -0
  464. package/utils.d.ts +3 -0
  465. package/utils.js +11 -0
  466. package/utils.js.map +1 -1
  467. package/vercel-postgres/driver.cjs +9 -2
  468. package/vercel-postgres/driver.cjs.map +1 -1
  469. package/vercel-postgres/driver.d.cts +2 -0
  470. package/vercel-postgres/driver.d.ts +2 -0
  471. package/vercel-postgres/driver.js +9 -2
  472. package/vercel-postgres/driver.js.map +1 -1
  473. package/vercel-postgres/session.cjs +21 -7
  474. package/vercel-postgres/session.cjs.map +1 -1
  475. package/vercel-postgres/session.d.cts +12 -2
  476. package/vercel-postgres/session.d.ts +12 -2
  477. package/vercel-postgres/session.js +21 -7
  478. package/vercel-postgres/session.js.map +1 -1
  479. package/version.cjs +1 -1
  480. package/version.d.cts +1 -1
  481. package/version.d.ts +1 -1
  482. package/version.js +1 -1
  483. package/xata-http/driver.cjs +7 -2
  484. package/xata-http/driver.cjs.map +1 -1
  485. package/xata-http/driver.d.cts +2 -0
  486. package/xata-http/driver.d.ts +2 -0
  487. package/xata-http/driver.js +7 -2
  488. package/xata-http/driver.js.map +1 -1
  489. package/xata-http/session.cjs +21 -7
  490. package/xata-http/session.cjs.map +1 -1
  491. package/xata-http/session.d.cts +12 -2
  492. package/xata-http/session.d.ts +12 -2
  493. package/xata-http/session.js +21 -7
  494. package/xata-http/session.js.map +1 -1
  495. package/mssql-core/alias.cjs +0 -32
  496. package/mssql-core/alias.cjs.map +0 -1
  497. package/mssql-core/alias.d.cts +0 -4
  498. package/mssql-core/alias.d.ts +0 -4
  499. package/mssql-core/alias.js +0 -8
  500. package/mssql-core/alias.js.map +0 -1
  501. package/mssql-core/checks.cjs +0 -58
  502. package/mssql-core/checks.cjs.map +0 -1
  503. package/mssql-core/checks.d.cts +0 -18
  504. package/mssql-core/checks.d.ts +0 -18
  505. package/mssql-core/checks.js +0 -32
  506. package/mssql-core/checks.js.map +0 -1
  507. package/mssql-core/columns/all.cjs +0 -72
  508. package/mssql-core/columns/all.cjs.map +0 -1
  509. package/mssql-core/columns/all.d.cts +0 -43
  510. package/mssql-core/columns/all.d.ts +0 -43
  511. package/mssql-core/columns/all.js +0 -48
  512. package/mssql-core/columns/all.js.map +0 -1
  513. package/mssql-core/columns/bigint.cjs +0 -67
  514. package/mssql-core/columns/bigint.cjs.map +0 -1
  515. package/mssql-core/columns/bigint.d.cts +0 -33
  516. package/mssql-core/columns/bigint.d.ts +0 -33
  517. package/mssql-core/columns/bigint.js +0 -41
  518. package/mssql-core/columns/bigint.js.map +0 -1
  519. package/mssql-core/columns/binary.cjs +0 -57
  520. package/mssql-core/columns/binary.cjs.map +0 -1
  521. package/mssql-core/columns/binary.d.cts +0 -28
  522. package/mssql-core/columns/binary.d.ts +0 -28
  523. package/mssql-core/columns/binary.js +0 -31
  524. package/mssql-core/columns/binary.js.map +0 -1
  525. package/mssql-core/columns/bit.cjs +0 -54
  526. package/mssql-core/columns/bit.cjs.map +0 -1
  527. package/mssql-core/columns/bit.d.cts +0 -24
  528. package/mssql-core/columns/bit.d.ts +0 -24
  529. package/mssql-core/columns/bit.js +0 -28
  530. package/mssql-core/columns/bit.js.map +0 -1
  531. package/mssql-core/columns/char.cjs +0 -74
  532. package/mssql-core/columns/char.cjs.map +0 -1
  533. package/mssql-core/columns/char.d.cts +0 -37
  534. package/mssql-core/columns/char.d.ts +0 -37
  535. package/mssql-core/columns/char.js +0 -47
  536. package/mssql-core/columns/char.js.map +0 -1
  537. package/mssql-core/columns/common.cjs +0 -117
  538. package/mssql-core/columns/common.cjs.map +0 -1
  539. package/mssql-core/columns/common.d.cts +0 -67
  540. package/mssql-core/columns/common.d.ts +0 -67
  541. package/mssql-core/columns/common.js +0 -90
  542. package/mssql-core/columns/common.js.map +0 -1
  543. package/mssql-core/columns/custom.cjs +0 -75
  544. package/mssql-core/columns/custom.cjs.map +0 -1
  545. package/mssql-core/columns/custom.d.cts +0 -149
  546. package/mssql-core/columns/custom.d.ts +0 -149
  547. package/mssql-core/columns/custom.js +0 -49
  548. package/mssql-core/columns/custom.js.map +0 -1
  549. package/mssql-core/columns/date.cjs +0 -94
  550. package/mssql-core/columns/date.cjs.map +0 -1
  551. package/mssql-core/columns/date.common.cjs.map +0 -1
  552. package/mssql-core/columns/date.common.d.cts +0 -12
  553. package/mssql-core/columns/date.common.d.ts +0 -12
  554. package/mssql-core/columns/date.common.js +0 -13
  555. package/mssql-core/columns/date.common.js.map +0 -1
  556. package/mssql-core/columns/date.d.cts +0 -55
  557. package/mssql-core/columns/date.d.ts +0 -55
  558. package/mssql-core/columns/date.js +0 -66
  559. package/mssql-core/columns/date.js.map +0 -1
  560. package/mssql-core/columns/datetime.cjs +0 -94
  561. package/mssql-core/columns/datetime.cjs.map +0 -1
  562. package/mssql-core/columns/datetime.d.cts +0 -54
  563. package/mssql-core/columns/datetime.d.ts +0 -54
  564. package/mssql-core/columns/datetime.js +0 -66
  565. package/mssql-core/columns/datetime.js.map +0 -1
  566. package/mssql-core/columns/datetime2.cjs +0 -102
  567. package/mssql-core/columns/datetime2.cjs.map +0 -1
  568. package/mssql-core/columns/datetime2.d.cts +0 -54
  569. package/mssql-core/columns/datetime2.d.ts +0 -54
  570. package/mssql-core/columns/datetime2.js +0 -74
  571. package/mssql-core/columns/datetime2.js.map +0 -1
  572. package/mssql-core/columns/datetimeoffset.cjs +0 -102
  573. package/mssql-core/columns/datetimeoffset.cjs.map +0 -1
  574. package/mssql-core/columns/datetimeoffset.d.cts +0 -54
  575. package/mssql-core/columns/datetimeoffset.d.ts +0 -54
  576. package/mssql-core/columns/datetimeoffset.js +0 -74
  577. package/mssql-core/columns/datetimeoffset.js.map +0 -1
  578. package/mssql-core/columns/decimal.cjs +0 -68
  579. package/mssql-core/columns/decimal.cjs.map +0 -1
  580. package/mssql-core/columns/decimal.d.cts +0 -30
  581. package/mssql-core/columns/decimal.d.ts +0 -30
  582. package/mssql-core/columns/decimal.js +0 -42
  583. package/mssql-core/columns/decimal.js.map +0 -1
  584. package/mssql-core/columns/float.cjs +0 -58
  585. package/mssql-core/columns/float.cjs.map +0 -1
  586. package/mssql-core/columns/float.d.cts +0 -28
  587. package/mssql-core/columns/float.d.ts +0 -28
  588. package/mssql-core/columns/float.js +0 -32
  589. package/mssql-core/columns/float.js.map +0 -1
  590. package/mssql-core/columns/index.cjs +0 -63
  591. package/mssql-core/columns/index.cjs.map +0 -1
  592. package/mssql-core/columns/index.d.cts +0 -21
  593. package/mssql-core/columns/index.d.ts +0 -21
  594. package/mssql-core/columns/index.js +0 -22
  595. package/mssql-core/columns/index.js.map +0 -1
  596. package/mssql-core/columns/int.cjs +0 -53
  597. package/mssql-core/columns/int.cjs.map +0 -1
  598. package/mssql-core/columns/int.d.cts +0 -23
  599. package/mssql-core/columns/int.d.ts +0 -23
  600. package/mssql-core/columns/int.js +0 -27
  601. package/mssql-core/columns/int.js.map +0 -1
  602. package/mssql-core/columns/numeric.cjs +0 -68
  603. package/mssql-core/columns/numeric.cjs.map +0 -1
  604. package/mssql-core/columns/numeric.d.cts +0 -27
  605. package/mssql-core/columns/numeric.d.ts +0 -27
  606. package/mssql-core/columns/numeric.js +0 -42
  607. package/mssql-core/columns/numeric.js.map +0 -1
  608. package/mssql-core/columns/real.cjs +0 -53
  609. package/mssql-core/columns/real.cjs.map +0 -1
  610. package/mssql-core/columns/real.d.cts +0 -23
  611. package/mssql-core/columns/real.d.ts +0 -23
  612. package/mssql-core/columns/real.js +0 -27
  613. package/mssql-core/columns/real.js.map +0 -1
  614. package/mssql-core/columns/smallint.cjs +0 -62
  615. package/mssql-core/columns/smallint.cjs.map +0 -1
  616. package/mssql-core/columns/smallint.d.cts +0 -24
  617. package/mssql-core/columns/smallint.d.ts +0 -24
  618. package/mssql-core/columns/smallint.js +0 -36
  619. package/mssql-core/columns/smallint.js.map +0 -1
  620. package/mssql-core/columns/text.cjs +0 -68
  621. package/mssql-core/columns/text.cjs.map +0 -1
  622. package/mssql-core/columns/text.d.cts +0 -45
  623. package/mssql-core/columns/text.d.ts +0 -45
  624. package/mssql-core/columns/text.js +0 -41
  625. package/mssql-core/columns/text.js.map +0 -1
  626. package/mssql-core/columns/time.cjs +0 -90
  627. package/mssql-core/columns/time.cjs.map +0 -1
  628. package/mssql-core/columns/time.d.cts +0 -49
  629. package/mssql-core/columns/time.d.ts +0 -49
  630. package/mssql-core/columns/time.js +0 -62
  631. package/mssql-core/columns/time.js.map +0 -1
  632. package/mssql-core/columns/tinyint.cjs +0 -62
  633. package/mssql-core/columns/tinyint.cjs.map +0 -1
  634. package/mssql-core/columns/tinyint.d.cts +0 -24
  635. package/mssql-core/columns/tinyint.d.ts +0 -24
  636. package/mssql-core/columns/tinyint.js +0 -36
  637. package/mssql-core/columns/tinyint.js.map +0 -1
  638. package/mssql-core/columns/varbinary.cjs +0 -61
  639. package/mssql-core/columns/varbinary.cjs.map +0 -1
  640. package/mssql-core/columns/varbinary.d.cts +0 -27
  641. package/mssql-core/columns/varbinary.d.ts +0 -27
  642. package/mssql-core/columns/varbinary.js +0 -35
  643. package/mssql-core/columns/varbinary.js.map +0 -1
  644. package/mssql-core/columns/varchar.cjs +0 -117
  645. package/mssql-core/columns/varchar.cjs.map +0 -1
  646. package/mssql-core/columns/varchar.d.cts +0 -66
  647. package/mssql-core/columns/varchar.d.ts +0 -66
  648. package/mssql-core/columns/varchar.js +0 -88
  649. package/mssql-core/columns/varchar.js.map +0 -1
  650. package/mssql-core/db.cjs +0 -254
  651. package/mssql-core/db.cjs.map +0 -1
  652. package/mssql-core/db.d.cts +0 -228
  653. package/mssql-core/db.d.ts +0 -228
  654. package/mssql-core/db.js +0 -235
  655. package/mssql-core/db.js.map +0 -1
  656. package/mssql-core/dialect.cjs +0 -568
  657. package/mssql-core/dialect.cjs.map +0 -1
  658. package/mssql-core/dialect.d.cts +0 -57
  659. package/mssql-core/dialect.d.ts +0 -57
  660. package/mssql-core/dialect.js +0 -550
  661. package/mssql-core/dialect.js.map +0 -1
  662. package/mssql-core/expressions.cjs +0 -49
  663. package/mssql-core/expressions.cjs.map +0 -1
  664. package/mssql-core/expressions.d.cts +0 -8
  665. package/mssql-core/expressions.d.ts +0 -8
  666. package/mssql-core/expressions.js +0 -22
  667. package/mssql-core/expressions.js.map +0 -1
  668. package/mssql-core/foreign-keys.cjs +0 -91
  669. package/mssql-core/foreign-keys.cjs.map +0 -1
  670. package/mssql-core/foreign-keys.d.cts +0 -51
  671. package/mssql-core/foreign-keys.d.ts +0 -51
  672. package/mssql-core/foreign-keys.js +0 -65
  673. package/mssql-core/foreign-keys.js.map +0 -1
  674. package/mssql-core/index.cjs +0 -55
  675. package/mssql-core/index.cjs.map +0 -1
  676. package/mssql-core/index.d.cts +0 -17
  677. package/mssql-core/index.d.ts +0 -17
  678. package/mssql-core/index.js +0 -18
  679. package/mssql-core/index.js.map +0 -1
  680. package/mssql-core/indexes.cjs +0 -80
  681. package/mssql-core/indexes.cjs.map +0 -1
  682. package/mssql-core/indexes.d.cts +0 -49
  683. package/mssql-core/indexes.d.ts +0 -49
  684. package/mssql-core/indexes.js +0 -52
  685. package/mssql-core/indexes.js.map +0 -1
  686. package/mssql-core/primary-keys.cjs +0 -64
  687. package/mssql-core/primary-keys.cjs.map +0 -1
  688. package/mssql-core/primary-keys.d.cts +0 -23
  689. package/mssql-core/primary-keys.d.ts +0 -23
  690. package/mssql-core/primary-keys.js +0 -38
  691. package/mssql-core/primary-keys.js.map +0 -1
  692. package/mssql-core/query-builders/delete.cjs +0 -101
  693. package/mssql-core/query-builders/delete.cjs.map +0 -1
  694. package/mssql-core/query-builders/delete.d.cts +0 -74
  695. package/mssql-core/query-builders/delete.d.ts +0 -74
  696. package/mssql-core/query-builders/delete.js +0 -77
  697. package/mssql-core/query-builders/delete.js.map +0 -1
  698. package/mssql-core/query-builders/index.cjs +0 -33
  699. package/mssql-core/query-builders/index.cjs.map +0 -1
  700. package/mssql-core/query-builders/index.d.cts +0 -6
  701. package/mssql-core/query-builders/index.d.ts +0 -6
  702. package/mssql-core/query-builders/index.js +0 -7
  703. package/mssql-core/query-builders/index.js.map +0 -1
  704. package/mssql-core/query-builders/insert.cjs +0 -95
  705. package/mssql-core/query-builders/insert.cjs.map +0 -1
  706. package/mssql-core/query-builders/insert.d.cts +0 -54
  707. package/mssql-core/query-builders/insert.d.ts +0 -54
  708. package/mssql-core/query-builders/insert.js +0 -70
  709. package/mssql-core/query-builders/insert.js.map +0 -1
  710. package/mssql-core/query-builders/query-builder.cjs +0 -95
  711. package/mssql-core/query-builders/query-builder.cjs.map +0 -1
  712. package/mssql-core/query-builders/query-builder.d.cts +0 -32
  713. package/mssql-core/query-builders/query-builder.d.ts +0 -32
  714. package/mssql-core/query-builders/query-builder.js +0 -71
  715. package/mssql-core/query-builders/query-builder.js.map +0 -1
  716. package/mssql-core/query-builders/query.cjs +0 -126
  717. package/mssql-core/query-builders/query.cjs.map +0 -1
  718. package/mssql-core/query-builders/query.d.cts +0 -42
  719. package/mssql-core/query-builders/query.d.ts +0 -42
  720. package/mssql-core/query-builders/query.js +0 -103
  721. package/mssql-core/query-builders/query.js.map +0 -1
  722. package/mssql-core/query-builders/select.cjs +0 -679
  723. package/mssql-core/query-builders/select.cjs.map +0 -1
  724. package/mssql-core/query-builders/select.d.cts +0 -549
  725. package/mssql-core/query-builders/select.d.ts +0 -549
  726. package/mssql-core/query-builders/select.js +0 -649
  727. package/mssql-core/query-builders/select.js.map +0 -1
  728. package/mssql-core/query-builders/select.types.cjs +0 -17
  729. package/mssql-core/query-builders/select.types.cjs.map +0 -1
  730. package/mssql-core/query-builders/select.types.d.cts +0 -138
  731. package/mssql-core/query-builders/select.types.d.ts +0 -138
  732. package/mssql-core/query-builders/select.types.js +0 -1
  733. package/mssql-core/query-builders/update.cjs +0 -118
  734. package/mssql-core/query-builders/update.cjs.map +0 -1
  735. package/mssql-core/query-builders/update.d.cts +0 -93
  736. package/mssql-core/query-builders/update.d.ts +0 -93
  737. package/mssql-core/query-builders/update.js +0 -93
  738. package/mssql-core/query-builders/update.js.map +0 -1
  739. package/mssql-core/schema.cjs +0 -51
  740. package/mssql-core/schema.cjs.map +0 -1
  741. package/mssql-core/schema.d.cts +0 -22
  742. package/mssql-core/schema.d.ts +0 -22
  743. package/mssql-core/schema.js +0 -25
  744. package/mssql-core/schema.js.map +0 -1
  745. package/mssql-core/session.cjs +0 -74
  746. package/mssql-core/session.cjs.map +0 -1
  747. package/mssql-core/session.d.cts +0 -63
  748. package/mssql-core/session.d.ts +0 -63
  749. package/mssql-core/session.js +0 -48
  750. package/mssql-core/session.js.map +0 -1
  751. package/mssql-core/subquery.cjs.map +0 -1
  752. package/mssql-core/subquery.d.cts +0 -18
  753. package/mssql-core/subquery.d.ts +0 -18
  754. package/mssql-core/subquery.js +0 -1
  755. package/mssql-core/subquery.js.map +0 -1
  756. package/mssql-core/table.cjs +0 -81
  757. package/mssql-core/table.cjs.map +0 -1
  758. package/mssql-core/table.d.cts +0 -43
  759. package/mssql-core/table.d.ts +0 -43
  760. package/mssql-core/table.js +0 -53
  761. package/mssql-core/table.js.map +0 -1
  762. package/mssql-core/unique-constraint.cjs +0 -76
  763. package/mssql-core/unique-constraint.cjs.map +0 -1
  764. package/mssql-core/unique-constraint.d.cts +0 -23
  765. package/mssql-core/unique-constraint.d.ts +0 -23
  766. package/mssql-core/unique-constraint.js +0 -49
  767. package/mssql-core/unique-constraint.js.map +0 -1
  768. package/mssql-core/utils.cjs +0 -85
  769. package/mssql-core/utils.cjs.map +0 -1
  770. package/mssql-core/utils.d.cts +0 -31
  771. package/mssql-core/utils.d.ts +0 -31
  772. package/mssql-core/utils.js +0 -60
  773. package/mssql-core/utils.js.map +0 -1
  774. package/mssql-core/view-base.cjs +0 -33
  775. package/mssql-core/view-base.cjs.map +0 -1
  776. package/mssql-core/view-base.d.cts +0 -9
  777. package/mssql-core/view-base.d.ts +0 -9
  778. package/mssql-core/view-base.js +0 -9
  779. package/mssql-core/view-base.js.map +0 -1
  780. package/mssql-core/view-common.cjs.map +0 -1
  781. package/mssql-core/view-common.d.cts +0 -1
  782. package/mssql-core/view-common.d.ts +0 -1
  783. package/mssql-core/view-common.js +0 -5
  784. package/mssql-core/view-common.js.map +0 -1
  785. package/mssql-core/view.cjs +0 -154
  786. package/mssql-core/view.cjs.map +0 -1
  787. package/mssql-core/view.d.cts +0 -64
  788. package/mssql-core/view.d.ts +0 -64
  789. package/mssql-core/view.js +0 -125
  790. package/mssql-core/view.js.map +0 -1
  791. package/node-mssql/driver.cjs +0 -86
  792. package/node-mssql/driver.cjs.map +0 -1
  793. package/node-mssql/driver.d.cts +0 -32
  794. package/node-mssql/driver.d.ts +0 -32
  795. package/node-mssql/driver.js +0 -63
  796. package/node-mssql/driver.js.map +0 -1
  797. package/node-mssql/index.cjs.map +0 -1
  798. package/node-mssql/index.d.cts +0 -2
  799. package/node-mssql/index.d.ts +0 -2
  800. package/node-mssql/index.js +0 -3
  801. package/node-mssql/index.js.map +0 -1
  802. package/node-mssql/migrator.cjs +0 -33
  803. package/node-mssql/migrator.cjs.map +0 -1
  804. package/node-mssql/migrator.d.cts +0 -3
  805. package/node-mssql/migrator.d.ts +0 -3
  806. package/node-mssql/migrator.js +0 -9
  807. package/node-mssql/migrator.js.map +0 -1
  808. package/node-mssql/session.cjs +0 -243
  809. package/node-mssql/session.cjs.map +0 -1
  810. package/node-mssql/session.d.cts +0 -47
  811. package/node-mssql/session.d.ts +0 -47
  812. package/node-mssql/session.js +0 -211
  813. package/node-mssql/session.js.map +0 -1
  814. /package/{mssql-core/query-builders/select.types.js.map → cache/core/types.js.map} +0 -0
@@ -24,9 +24,11 @@ __export(session_exports, {
24
24
  SQLiteTransaction: () => SQLiteTransaction
25
25
  });
26
26
  module.exports = __toCommonJS(session_exports);
27
+ var import_cache = require("../cache/core/cache.cjs");
27
28
  var import_entity = require("../entity.cjs");
28
29
  var import_errors = require("../errors.cjs");
29
30
  var import_query_promise = require("../query-promise.cjs");
31
+ var import_utils = require("../utils.cjs");
30
32
  var import_db = require("./db.cjs");
31
33
  class ExecuteResultSync extends import_query_promise.QueryPromise {
32
34
  constructor(resultCb) {
@@ -42,14 +44,64 @@ class ExecuteResultSync extends import_query_promise.QueryPromise {
42
44
  }
43
45
  }
44
46
  class SQLitePreparedQuery {
45
- constructor(mode, executeMethod, query) {
47
+ constructor(mode, executeMethod, query, cache, queryMetadata, cacheConfig) {
46
48
  this.mode = mode;
47
49
  this.executeMethod = executeMethod;
48
50
  this.query = query;
51
+ this.cache = cache;
52
+ this.queryMetadata = queryMetadata;
53
+ this.cacheConfig = cacheConfig;
54
+ if (cache && cache.strategy() === "all" && cacheConfig === void 0) {
55
+ this.cacheConfig = { enable: true, autoInvalidate: true };
56
+ }
57
+ if (!this.cacheConfig?.enable) {
58
+ this.cacheConfig = void 0;
59
+ }
49
60
  }
50
61
  static [import_entity.entityKind] = "PreparedQuery";
51
62
  /** @internal */
52
63
  joinsNotNullableMap;
64
+ /** @internal */
65
+ async queryWithCache(queryString, params, query) {
66
+ if (this.cache === void 0 || (0, import_entity.is)(this.cache, import_cache.NoopCache) || this.queryMetadata === void 0) {
67
+ return await query();
68
+ }
69
+ if (this.cacheConfig && !this.cacheConfig.enable) {
70
+ return await query();
71
+ }
72
+ if ((this.queryMetadata.type === "insert" || this.queryMetadata.type === "update" || this.queryMetadata.type === "delete") && this.queryMetadata.tables.length > 0) {
73
+ const [res] = await Promise.all([
74
+ query(),
75
+ this.cache.onMutate({ tables: this.queryMetadata.tables })
76
+ ]);
77
+ return res;
78
+ }
79
+ if (!this.cacheConfig) {
80
+ return await query();
81
+ }
82
+ if (this.queryMetadata.type === "select") {
83
+ const fromCache = await this.cache.get(
84
+ this.cacheConfig.tag ?? (await (0, import_utils.hashQuery)(queryString, params)),
85
+ this.queryMetadata.tables,
86
+ this.cacheConfig.tag !== void 0,
87
+ this.cacheConfig.autoInvalidate
88
+ );
89
+ if (fromCache === void 0) {
90
+ const result = await query();
91
+ await this.cache.put(
92
+ this.cacheConfig.tag ?? (await (0, import_utils.hashQuery)(queryString, params)),
93
+ result,
94
+ // make sure we send tables that were used in a query only if user wants to invalidate it on each write
95
+ this.cacheConfig.autoInvalidate ? this.queryMetadata.tables : [],
96
+ this.cacheConfig.tag !== void 0,
97
+ this.cacheConfig.config
98
+ );
99
+ return result;
100
+ }
101
+ return fromCache;
102
+ }
103
+ return await query();
104
+ }
53
105
  getQuery() {
54
106
  return this.query;
55
107
  }
@@ -87,8 +139,16 @@ class SQLiteSession {
87
139
  this.dialect = dialect;
88
140
  }
89
141
  static [import_entity.entityKind] = "SQLiteSession";
90
- prepareOneTimeQuery(query, fields, executeMethod, isResponseInArrayMode) {
91
- return this.prepareQuery(query, fields, executeMethod, isResponseInArrayMode);
142
+ prepareOneTimeQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
143
+ return this.prepareQuery(
144
+ query,
145
+ fields,
146
+ executeMethod,
147
+ isResponseInArrayMode,
148
+ customResultMapper,
149
+ queryMetadata,
150
+ cacheConfig
151
+ );
92
152
  }
93
153
  run(query) {
94
154
  const staticQuery = this.dialect.sqlToQuery(query);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sqlite-core/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DrizzleError, TransactionRollbackError } from '~/errors.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { Query, SQL } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect, SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\n// import { QueryPromise } from '../index.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport { BaseSQLiteDatabase } from './db.ts';\nimport type { SQLiteRaw } from './query-builders/raw.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\ttype: 'sync' | 'async';\n\trun: unknown;\n\tall: unknown;\n\tget: unknown;\n\tvalues: unknown;\n\texecute: unknown;\n}\n\nexport class ExecuteResultSync<T> extends QueryPromise<T> {\n\tstatic override readonly [entityKind]: string = 'ExecuteResultSync';\n\n\tconstructor(private resultCb: () => T) {\n\t\tsuper();\n\t}\n\n\toverride async execute(): Promise<T> {\n\t\treturn this.resultCb();\n\t}\n\n\tsync(): T {\n\t\treturn this.resultCb();\n\t}\n}\n\nexport type ExecuteResult<TType extends 'sync' | 'async', TResult> = TType extends 'async' ? Promise<TResult>\n\t: ExecuteResultSync<TResult>;\n\nexport abstract class SQLitePreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {\n\tstatic readonly [entityKind]: string = 'PreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tconstructor(\n\t\tprivate mode: 'sync' | 'async',\n\t\tprivate executeMethod: SQLiteExecuteMethod,\n\t\tprotected query: Query,\n\t) {}\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tabstract run(placeholderValues?: Record<string, unknown>): Result<T['type'], T['run']>;\n\n\tmapRunResult(result: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn result;\n\t}\n\n\tabstract all(placeholderValues?: Record<string, unknown>): Result<T['type'], T['all']>;\n\n\tmapAllResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract get(placeholderValues?: Record<string, unknown>): Result<T['type'], T['get']>;\n\n\tmapGetResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract values(placeholderValues?: Record<string, unknown>): Result<T['type'], T['values']>;\n\n\texecute(placeholderValues?: Record<string, unknown>): ExecuteResult<T['type'], T['execute']> {\n\t\tif (this.mode === 'async') {\n\t\t\treturn this[this.executeMethod](placeholderValues) as ExecuteResult<T['type'], T['execute']>;\n\t\t}\n\t\treturn new ExecuteResultSync(() => this[this.executeMethod](placeholderValues));\n\t}\n\n\tmapResult(response: unknown, isFromBatch?: boolean) {\n\t\tswitch (this.executeMethod) {\n\t\t\tcase 'run': {\n\t\t\t\treturn this.mapRunResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'all': {\n\t\t\t\treturn this.mapAllResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'get': {\n\t\t\t\treturn this.mapGetResult(response, isFromBatch);\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @internal */\n\tabstract isResponseInArrayMode(): boolean;\n}\n\nexport interface SQLiteTransactionConfig {\n\tbehavior?: 'deferred' | 'immediate' | 'exclusive';\n}\n\nexport type SQLiteExecuteMethod = 'run' | 'all' | 'get';\n\nexport abstract class SQLiteSession<\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteSession';\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly dialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultKind],\n\t) {}\n\n\tabstract prepareQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }>;\n\n\tprepareOneTimeQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }> {\n\t\treturn this.prepareQuery(query, fields, executeMethod, isResponseInArrayMode);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: SQLiteTransaction<TResultKind, TRunResult, TFullSchema, TSchema>) => Result<TResultKind, T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Result<TResultKind, T>;\n\n\trun(query: SQL): Result<TResultKind, TRunResult> {\n\t\tconst staticQuery = this.dialect.sqlToQuery(query);\n\t\ttry {\n\t\t\treturn this.prepareOneTimeQuery(staticQuery, undefined, 'run', false).run() as Result<TResultKind, TRunResult>;\n\t\t} catch (err) {\n\t\t\tthrow new DrizzleError({ cause: err, message: `Failed to run the query '${staticQuery.sql}'` });\n\t\t}\n\t}\n\n\t/** @internal */\n\textractRawRunValueFromBatchResult(result: unknown) {\n\t\treturn result;\n\t}\n\n\tall<T = unknown>(query: SQL): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).all() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawAllValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tget<T = unknown>(query: SQL): Result<TResultKind, T> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).get() as Result<\n\t\t\tTResultKind,\n\t\t\tT\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawGetValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tvalues<T extends any[] = unknown[]>(\n\t\tquery: SQL,\n\t): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).values() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\tasync count(sql: SQL) {\n\t\tconst result = await this.values(sql) as [[number]];\n\n\t\treturn result[0][0];\n\t}\n\n\t/** @internal */\n\textractRawValuesValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n}\n\nexport type Result<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: Promise<TResult> }[TKind];\n\nexport type DBResult<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: SQLiteRaw<TResult> }[TKind];\n\nexport abstract class SQLiteTransaction<\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends BaseSQLiteDatabase<TResultType, TRunResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTransaction';\n\n\tconstructor(\n\t\tresultType: TResultType,\n\t\tdialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultType],\n\t\tsession: SQLiteSession<TResultType, TRunResult, TFullSchema, TSchema>,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record<string, unknown>;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record<string, string>;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t) {\n\t\tsuper(resultType, dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAC3B,oBAAuD;AAMvD,2BAA6B;AAC7B,gBAAmC;AAa5B,MAAM,0BAA6B,kCAAgB;AAAA,EAGzD,YAAoB,UAAmB;AACtC,UAAM;AADa;AAAA,EAEpB;AAAA,EAJA,QAA0B,wBAAU,IAAY;AAAA,EAMhD,MAAe,UAAsB;AACpC,WAAO,KAAK,SAAS;AAAA,EACtB;AAAA,EAEA,OAAU;AACT,WAAO,KAAK,SAAS;AAAA,EACtB;AACD;AAKO,MAAe,oBAA4E;AAAA,EAMjG,YACS,MACA,eACE,OACT;AAHO;AACA;AACE;AAAA,EACR;AAAA,EATH,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAGvC;AAAA,EAQA,WAAkB;AACjB,WAAO,KAAK;AAAA,EACb;AAAA,EAIA,aAAa,QAAiB,cAAiC;AAC9D,WAAO;AAAA,EACR;AAAA,EAIA,aAAa,SAAkB,cAAiC;AAC/D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAIA,aAAa,SAAkB,cAAiC;AAC/D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAIA,QAAQ,mBAAqF;AAC5F,QAAI,KAAK,SAAS,SAAS;AAC1B,aAAO,KAAK,KAAK,aAAa,EAAE,iBAAiB;AAAA,IAClD;AACA,WAAO,IAAI,kBAAkB,MAAM,KAAK,KAAK,aAAa,EAAE,iBAAiB,CAAC;AAAA,EAC/E;AAAA,EAEA,UAAU,UAAmB,aAAuB;AACnD,YAAQ,KAAK,eAAe;AAAA,MAC3B,KAAK,OAAO;AACX,eAAO,KAAK,aAAa,UAAU,WAAW;AAAA,MAC/C;AAAA,MACA,KAAK,OAAO;AACX,eAAO,KAAK,aAAa,UAAU,WAAW;AAAA,MAC/C;AAAA,MACA,KAAK,OAAO;AACX,eAAO,KAAK,aAAa,UAAU,WAAW;AAAA,MAC/C;AAAA,IACD;AAAA,EACD;AAID;AAQO,MAAe,cAKpB;AAAA,EAGD,YAEU,SACR;AADQ;AAAA,EACP;AAAA,EALH,QAAiB,wBAAU,IAAY;AAAA,EAevC,oBACC,OACA,QACA,eACA,uBACmE;AACnE,WAAO,KAAK,aAAa,OAAO,QAAQ,eAAe,qBAAqB;AAAA,EAC7E;AAAA,EAOA,IAAI,OAA6C;AAChD,UAAM,cAAc,KAAK,QAAQ,WAAW,KAAK;AACjD,QAAI;AACH,aAAO,KAAK,oBAAoB,aAAa,QAAW,OAAO,KAAK,EAAE,IAAI;AAAA,IAC3E,SAAS,KAAK;AACb,YAAM,IAAI,2BAAa,EAAE,OAAO,KAAK,SAAS,4BAA4B,YAAY,GAAG,IAAI,CAAC;AAAA,IAC/F;AAAA,EACD;AAAA;AAAA,EAGA,kCAAkC,QAAiB;AAClD,WAAO;AAAA,EACR;AAAA,EAEA,IAAiB,OAAsC;AACtD,WAAO,KAAK,oBAAoB,KAAK,QAAQ,WAAW,KAAK,GAAG,QAAW,OAAO,KAAK,EAAE,IAAI;AAAA,EAI9F;AAAA;AAAA,EAGA,kCAAkC,SAA2B;AAC5D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAEA,IAAiB,OAAoC;AACpD,WAAO,KAAK,oBAAoB,KAAK,QAAQ,WAAW,KAAK,GAAG,QAAW,OAAO,KAAK,EAAE,IAAI;AAAA,EAI9F;AAAA;AAAA,EAGA,kCAAkC,SAA2B;AAC5D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAEA,OACC,OAC2B;AAC3B,WAAO,KAAK,oBAAoB,KAAK,QAAQ,WAAW,KAAK,GAAG,QAAW,OAAO,KAAK,EAAE,OAAO;AAAA,EAIjG;AAAA,EAEA,MAAM,MAAM,KAAU;AACrB,UAAM,SAAS,MAAM,KAAK,OAAO,GAAG;AAEpC,WAAO,OAAO,CAAC,EAAE,CAAC;AAAA,EACnB;AAAA;AAAA,EAGA,qCAAqC,SAA2B;AAC/D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AACD;AAMO,MAAe,0BAKZ,6BAAkE;AAAA,EAG3E,YACC,YACA,SACA,SACU,QAKS,cAAc,GAChC;AACD,UAAM,YAAY,SAAS,SAAS,MAAM;AAPhC;AAKS;AAAA,EAGpB;AAAA,EAdA,QAA0B,wBAAU,IAAY;AAAA,EAgBhD,WAAkB;AACjB,UAAM,IAAI,uCAAyB;AAAA,EACpC;AACD;","names":[]}
1
+ {"version":3,"sources":["../../src/sqlite-core/session.ts"],"sourcesContent":["import { type Cache, NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { DrizzleError, TransactionRollbackError } from '~/errors.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { Query, SQL } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect, SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { hashQuery } from '~/utils.ts';\nimport { BaseSQLiteDatabase } from './db.ts';\nimport type { SQLiteRaw } from './query-builders/raw.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\ttype: 'sync' | 'async';\n\trun: unknown;\n\tall: unknown;\n\tget: unknown;\n\tvalues: unknown;\n\texecute: unknown;\n}\n\nexport class ExecuteResultSync<T> extends QueryPromise<T> {\n\tstatic override readonly [entityKind]: string = 'ExecuteResultSync';\n\n\tconstructor(private resultCb: () => T) {\n\t\tsuper();\n\t}\n\n\toverride async execute(): Promise<T> {\n\t\treturn this.resultCb();\n\t}\n\n\tsync(): T {\n\t\treturn this.resultCb();\n\t}\n}\n\nexport type ExecuteResult<TType extends 'sync' | 'async', TResult> = TType extends 'async' ? Promise<TResult>\n\t: ExecuteResultSync<TResult>;\n\nexport abstract class SQLitePreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {\n\tstatic readonly [entityKind]: string = 'PreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tconstructor(\n\t\tprivate mode: 'sync' | 'async',\n\t\tprivate executeMethod: SQLiteExecuteMethod,\n\t\tprotected query: Query,\n\t\tprivate cache?: Cache,\n\t\t// per query related metadata\n\t\tprivate queryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\t// config that was passed through $withCache\n\t\tprivate cacheConfig?: WithCacheConfig,\n\t) {\n\t\t// it means that no $withCache options were passed and it should be just enabled\n\t\tif (cache && cache.strategy() === 'all' && cacheConfig === undefined) {\n\t\t\tthis.cacheConfig = { enable: true, autoInvalidate: true };\n\t\t}\n\t\tif (!this.cacheConfig?.enable) {\n\t\t\tthis.cacheConfig = undefined;\n\t\t}\n\t}\n\n\t/** @internal */\n\tprotected async queryWithCache<T>(\n\t\tqueryString: string,\n\t\tparams: any[],\n\t\tquery: () => Promise<T>,\n\t): Promise<T> {\n\t\tif (this.cache === undefined || is(this.cache, NoopCache) || this.queryMetadata === undefined) {\n\t\t\treturn await query();\n\t\t}\n\n\t\t// don't do any mutations, if globally is false\n\t\tif (this.cacheConfig && !this.cacheConfig.enable) {\n\t\t\treturn await query();\n\t\t}\n\n\t\t// For mutate queries, we should query the database, wait for a response, and then perform invalidation\n\t\tif (\n\t\t\t(\n\t\t\t\tthis.queryMetadata.type === 'insert' || this.queryMetadata.type === 'update'\n\t\t\t\t|| this.queryMetadata.type === 'delete'\n\t\t\t) && this.queryMetadata.tables.length > 0\n\t\t) {\n\t\t\tconst [res] = await Promise.all([\n\t\t\t\tquery(),\n\t\t\t\tthis.cache.onMutate({ tables: this.queryMetadata.tables }),\n\t\t\t]);\n\t\t\treturn res;\n\t\t}\n\n\t\t// don't do any reads if globally disabled\n\t\tif (!this.cacheConfig) {\n\t\t\treturn await query();\n\t\t}\n\n\t\tif (this.queryMetadata.type === 'select') {\n\t\t\tconst fromCache = await this.cache.get(\n\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\tthis.queryMetadata.tables,\n\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\tthis.cacheConfig.autoInvalidate,\n\t\t\t);\n\t\t\tif (fromCache === undefined) {\n\t\t\t\tconst result = await query();\n\t\t\t\t// put actual key\n\t\t\t\tawait this.cache.put(\n\t\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\t\tresult,\n\t\t\t\t\t// make sure we send tables that were used in a query only if user wants to invalidate it on each write\n\t\t\t\t\tthis.cacheConfig.autoInvalidate ? this.queryMetadata.tables : [],\n\t\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\t\tthis.cacheConfig.config,\n\t\t\t\t);\n\t\t\t\t// put flag if we should invalidate or not\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn fromCache as unknown as T;\n\t\t}\n\t\treturn await query();\n\t}\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tabstract run(placeholderValues?: Record<string, unknown>): Result<T['type'], T['run']>;\n\n\tmapRunResult(result: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn result;\n\t}\n\n\tabstract all(placeholderValues?: Record<string, unknown>): Result<T['type'], T['all']>;\n\n\tmapAllResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract get(placeholderValues?: Record<string, unknown>): Result<T['type'], T['get']>;\n\n\tmapGetResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract values(placeholderValues?: Record<string, unknown>): Result<T['type'], T['values']>;\n\n\texecute(placeholderValues?: Record<string, unknown>): ExecuteResult<T['type'], T['execute']> {\n\t\tif (this.mode === 'async') {\n\t\t\treturn this[this.executeMethod](placeholderValues) as ExecuteResult<T['type'], T['execute']>;\n\t\t}\n\t\treturn new ExecuteResultSync(() => this[this.executeMethod](placeholderValues));\n\t}\n\n\tmapResult(response: unknown, isFromBatch?: boolean) {\n\t\tswitch (this.executeMethod) {\n\t\t\tcase 'run': {\n\t\t\t\treturn this.mapRunResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'all': {\n\t\t\t\treturn this.mapAllResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'get': {\n\t\t\t\treturn this.mapGetResult(response, isFromBatch);\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @internal */\n\tabstract isResponseInArrayMode(): boolean;\n}\n\nexport interface SQLiteTransactionConfig {\n\tbehavior?: 'deferred' | 'immediate' | 'exclusive';\n}\n\nexport type SQLiteExecuteMethod = 'run' | 'all' | 'get';\n\nexport abstract class SQLiteSession<\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteSession';\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly dialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultKind],\n\t) {}\n\n\tabstract prepareQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }>;\n\n\tprepareOneTimeQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }> {\n\t\treturn this.prepareQuery(\n\t\t\tquery,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: SQLiteTransaction<TResultKind, TRunResult, TFullSchema, TSchema>) => Result<TResultKind, T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Result<TResultKind, T>;\n\n\trun(query: SQL): Result<TResultKind, TRunResult> {\n\t\tconst staticQuery = this.dialect.sqlToQuery(query);\n\t\ttry {\n\t\t\treturn this.prepareOneTimeQuery(staticQuery, undefined, 'run', false).run() as Result<TResultKind, TRunResult>;\n\t\t} catch (err) {\n\t\t\tthrow new DrizzleError({ cause: err, message: `Failed to run the query '${staticQuery.sql}'` });\n\t\t}\n\t}\n\n\t/** @internal */\n\textractRawRunValueFromBatchResult(result: unknown) {\n\t\treturn result;\n\t}\n\n\tall<T = unknown>(query: SQL): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).all() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawAllValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tget<T = unknown>(query: SQL): Result<TResultKind, T> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).get() as Result<\n\t\t\tTResultKind,\n\t\t\tT\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawGetValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tvalues<T extends any[] = unknown[]>(\n\t\tquery: SQL,\n\t): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).values() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\tasync count(sql: SQL) {\n\t\tconst result = await this.values(sql) as [[number]];\n\n\t\treturn result[0][0];\n\t}\n\n\t/** @internal */\n\textractRawValuesValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n}\n\nexport type Result<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: Promise<TResult> }[TKind];\n\nexport type DBResult<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: SQLiteRaw<TResult> }[TKind];\n\nexport abstract class SQLiteTransaction<\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends BaseSQLiteDatabase<TResultType, TRunResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTransaction';\n\n\tconstructor(\n\t\tresultType: TResultType,\n\t\tdialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultType],\n\t\tsession: SQLiteSession<TResultType, TRunResult, TFullSchema, TSchema>,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record<string, unknown>;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record<string, string>;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t) {\n\t\tsuper(resultType, dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,11 @@
1
+ import { type Cache } from "../cache/core/cache.cjs";
2
+ import type { WithCacheConfig } from "../cache/core/types.cjs";
1
3
  import { entityKind } from "../entity.cjs";
4
+ import { QueryPromise } from "../query-promise.cjs";
2
5
  import type { TablesRelationalConfig } from "../relations.cjs";
3
6
  import type { PreparedQuery } from "../session.cjs";
4
7
  import type { Query, SQL } from "../sql/sql.cjs";
5
8
  import type { SQLiteAsyncDialect, SQLiteSyncDialect } from "./dialect.cjs";
6
- import { QueryPromise } from "../query-promise.cjs";
7
9
  import { BaseSQLiteDatabase } from "./db.cjs";
8
10
  import type { SQLiteRaw } from "./query-builders/raw.cjs";
9
11
  import type { SelectedFieldsOrdered } from "./query-builders/select.types.cjs";
@@ -27,8 +29,14 @@ export declare abstract class SQLitePreparedQuery<T extends PreparedQueryConfig>
27
29
  private mode;
28
30
  private executeMethod;
29
31
  protected query: Query;
32
+ private cache?;
33
+ private queryMetadata?;
34
+ private cacheConfig?;
30
35
  static readonly [entityKind]: string;
31
- constructor(mode: 'sync' | 'async', executeMethod: SQLiteExecuteMethod, query: Query);
36
+ constructor(mode: 'sync' | 'async', executeMethod: SQLiteExecuteMethod, query: Query, cache?: Cache | undefined, queryMetadata?: {
37
+ type: 'select' | 'update' | 'delete' | 'insert';
38
+ tables: string[];
39
+ } | undefined, cacheConfig?: WithCacheConfig | undefined);
32
40
  getQuery(): Query;
33
41
  abstract run(placeholderValues?: Record<string, unknown>): Result<T['type'], T['run']>;
34
42
  mapRunResult(result: unknown, _isFromBatch?: boolean): unknown;
@@ -52,10 +60,16 @@ export declare abstract class SQLiteSession<TResultKind extends 'sync' | 'async'
52
60
  sync: SQLiteSyncDialect;
53
61
  async: SQLiteAsyncDialect;
54
62
  }[TResultKind]);
55
- abstract prepareQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown): SQLitePreparedQuery<PreparedQueryConfig & {
63
+ abstract prepareQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown, queryMetadata?: {
64
+ type: 'select' | 'update' | 'delete' | 'insert';
65
+ tables: string[];
66
+ }, cacheConfig?: WithCacheConfig): SQLitePreparedQuery<PreparedQueryConfig & {
56
67
  type: TResultKind;
57
68
  }>;
58
- prepareOneTimeQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean): SQLitePreparedQuery<PreparedQueryConfig & {
69
+ prepareOneTimeQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown, queryMetadata?: {
70
+ type: 'select' | 'update' | 'delete' | 'insert';
71
+ tables: string[];
72
+ }, cacheConfig?: WithCacheConfig): SQLitePreparedQuery<PreparedQueryConfig & {
59
73
  type: TResultKind;
60
74
  }>;
61
75
  abstract transaction<T>(transaction: (tx: SQLiteTransaction<TResultKind, TRunResult, TFullSchema, TSchema>) => Result<TResultKind, T>, config?: SQLiteTransactionConfig): Result<TResultKind, T>;
@@ -1,9 +1,11 @@
1
+ import { type Cache } from "../cache/core/cache.js";
2
+ import type { WithCacheConfig } from "../cache/core/types.js";
1
3
  import { entityKind } from "../entity.js";
4
+ import { QueryPromise } from "../query-promise.js";
2
5
  import type { TablesRelationalConfig } from "../relations.js";
3
6
  import type { PreparedQuery } from "../session.js";
4
7
  import type { Query, SQL } from "../sql/sql.js";
5
8
  import type { SQLiteAsyncDialect, SQLiteSyncDialect } from "./dialect.js";
6
- import { QueryPromise } from "../query-promise.js";
7
9
  import { BaseSQLiteDatabase } from "./db.js";
8
10
  import type { SQLiteRaw } from "./query-builders/raw.js";
9
11
  import type { SelectedFieldsOrdered } from "./query-builders/select.types.js";
@@ -27,8 +29,14 @@ export declare abstract class SQLitePreparedQuery<T extends PreparedQueryConfig>
27
29
  private mode;
28
30
  private executeMethod;
29
31
  protected query: Query;
32
+ private cache?;
33
+ private queryMetadata?;
34
+ private cacheConfig?;
30
35
  static readonly [entityKind]: string;
31
- constructor(mode: 'sync' | 'async', executeMethod: SQLiteExecuteMethod, query: Query);
36
+ constructor(mode: 'sync' | 'async', executeMethod: SQLiteExecuteMethod, query: Query, cache?: Cache | undefined, queryMetadata?: {
37
+ type: 'select' | 'update' | 'delete' | 'insert';
38
+ tables: string[];
39
+ } | undefined, cacheConfig?: WithCacheConfig | undefined);
32
40
  getQuery(): Query;
33
41
  abstract run(placeholderValues?: Record<string, unknown>): Result<T['type'], T['run']>;
34
42
  mapRunResult(result: unknown, _isFromBatch?: boolean): unknown;
@@ -52,10 +60,16 @@ export declare abstract class SQLiteSession<TResultKind extends 'sync' | 'async'
52
60
  sync: SQLiteSyncDialect;
53
61
  async: SQLiteAsyncDialect;
54
62
  }[TResultKind]);
55
- abstract prepareQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown): SQLitePreparedQuery<PreparedQueryConfig & {
63
+ abstract prepareQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown, queryMetadata?: {
64
+ type: 'select' | 'update' | 'delete' | 'insert';
65
+ tables: string[];
66
+ }, cacheConfig?: WithCacheConfig): SQLitePreparedQuery<PreparedQueryConfig & {
56
67
  type: TResultKind;
57
68
  }>;
58
- prepareOneTimeQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean): SQLitePreparedQuery<PreparedQueryConfig & {
69
+ prepareOneTimeQuery(query: Query, fields: SelectedFieldsOrdered | undefined, executeMethod: SQLiteExecuteMethod, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown, queryMetadata?: {
70
+ type: 'select' | 'update' | 'delete' | 'insert';
71
+ tables: string[];
72
+ }, cacheConfig?: WithCacheConfig): SQLitePreparedQuery<PreparedQueryConfig & {
59
73
  type: TResultKind;
60
74
  }>;
61
75
  abstract transaction<T>(transaction: (tx: SQLiteTransaction<TResultKind, TRunResult, TFullSchema, TSchema>) => Result<TResultKind, T>, config?: SQLiteTransactionConfig): Result<TResultKind, T>;
@@ -1,6 +1,8 @@
1
- import { entityKind } from "../entity.js";
1
+ import { NoopCache } from "../cache/core/cache.js";
2
+ import { entityKind, is } from "../entity.js";
2
3
  import { DrizzleError, TransactionRollbackError } from "../errors.js";
3
4
  import { QueryPromise } from "../query-promise.js";
5
+ import { hashQuery } from "../utils.js";
4
6
  import { BaseSQLiteDatabase } from "./db.js";
5
7
  class ExecuteResultSync extends QueryPromise {
6
8
  constructor(resultCb) {
@@ -16,14 +18,64 @@ class ExecuteResultSync extends QueryPromise {
16
18
  }
17
19
  }
18
20
  class SQLitePreparedQuery {
19
- constructor(mode, executeMethod, query) {
21
+ constructor(mode, executeMethod, query, cache, queryMetadata, cacheConfig) {
20
22
  this.mode = mode;
21
23
  this.executeMethod = executeMethod;
22
24
  this.query = query;
25
+ this.cache = cache;
26
+ this.queryMetadata = queryMetadata;
27
+ this.cacheConfig = cacheConfig;
28
+ if (cache && cache.strategy() === "all" && cacheConfig === void 0) {
29
+ this.cacheConfig = { enable: true, autoInvalidate: true };
30
+ }
31
+ if (!this.cacheConfig?.enable) {
32
+ this.cacheConfig = void 0;
33
+ }
23
34
  }
24
35
  static [entityKind] = "PreparedQuery";
25
36
  /** @internal */
26
37
  joinsNotNullableMap;
38
+ /** @internal */
39
+ async queryWithCache(queryString, params, query) {
40
+ if (this.cache === void 0 || is(this.cache, NoopCache) || this.queryMetadata === void 0) {
41
+ return await query();
42
+ }
43
+ if (this.cacheConfig && !this.cacheConfig.enable) {
44
+ return await query();
45
+ }
46
+ if ((this.queryMetadata.type === "insert" || this.queryMetadata.type === "update" || this.queryMetadata.type === "delete") && this.queryMetadata.tables.length > 0) {
47
+ const [res] = await Promise.all([
48
+ query(),
49
+ this.cache.onMutate({ tables: this.queryMetadata.tables })
50
+ ]);
51
+ return res;
52
+ }
53
+ if (!this.cacheConfig) {
54
+ return await query();
55
+ }
56
+ if (this.queryMetadata.type === "select") {
57
+ const fromCache = await this.cache.get(
58
+ this.cacheConfig.tag ?? (await hashQuery(queryString, params)),
59
+ this.queryMetadata.tables,
60
+ this.cacheConfig.tag !== void 0,
61
+ this.cacheConfig.autoInvalidate
62
+ );
63
+ if (fromCache === void 0) {
64
+ const result = await query();
65
+ await this.cache.put(
66
+ this.cacheConfig.tag ?? (await hashQuery(queryString, params)),
67
+ result,
68
+ // make sure we send tables that were used in a query only if user wants to invalidate it on each write
69
+ this.cacheConfig.autoInvalidate ? this.queryMetadata.tables : [],
70
+ this.cacheConfig.tag !== void 0,
71
+ this.cacheConfig.config
72
+ );
73
+ return result;
74
+ }
75
+ return fromCache;
76
+ }
77
+ return await query();
78
+ }
27
79
  getQuery() {
28
80
  return this.query;
29
81
  }
@@ -61,8 +113,16 @@ class SQLiteSession {
61
113
  this.dialect = dialect;
62
114
  }
63
115
  static [entityKind] = "SQLiteSession";
64
- prepareOneTimeQuery(query, fields, executeMethod, isResponseInArrayMode) {
65
- return this.prepareQuery(query, fields, executeMethod, isResponseInArrayMode);
116
+ prepareOneTimeQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
117
+ return this.prepareQuery(
118
+ query,
119
+ fields,
120
+ executeMethod,
121
+ isResponseInArrayMode,
122
+ customResultMapper,
123
+ queryMetadata,
124
+ cacheConfig
125
+ );
66
126
  }
67
127
  run(query) {
68
128
  const staticQuery = this.dialect.sqlToQuery(query);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sqlite-core/session.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport { DrizzleError, TransactionRollbackError } from '~/errors.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { Query, SQL } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect, SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\n// import { QueryPromise } from '../index.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport { BaseSQLiteDatabase } from './db.ts';\nimport type { SQLiteRaw } from './query-builders/raw.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\ttype: 'sync' | 'async';\n\trun: unknown;\n\tall: unknown;\n\tget: unknown;\n\tvalues: unknown;\n\texecute: unknown;\n}\n\nexport class ExecuteResultSync<T> extends QueryPromise<T> {\n\tstatic override readonly [entityKind]: string = 'ExecuteResultSync';\n\n\tconstructor(private resultCb: () => T) {\n\t\tsuper();\n\t}\n\n\toverride async execute(): Promise<T> {\n\t\treturn this.resultCb();\n\t}\n\n\tsync(): T {\n\t\treturn this.resultCb();\n\t}\n}\n\nexport type ExecuteResult<TType extends 'sync' | 'async', TResult> = TType extends 'async' ? Promise<TResult>\n\t: ExecuteResultSync<TResult>;\n\nexport abstract class SQLitePreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {\n\tstatic readonly [entityKind]: string = 'PreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tconstructor(\n\t\tprivate mode: 'sync' | 'async',\n\t\tprivate executeMethod: SQLiteExecuteMethod,\n\t\tprotected query: Query,\n\t) {}\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tabstract run(placeholderValues?: Record<string, unknown>): Result<T['type'], T['run']>;\n\n\tmapRunResult(result: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn result;\n\t}\n\n\tabstract all(placeholderValues?: Record<string, unknown>): Result<T['type'], T['all']>;\n\n\tmapAllResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract get(placeholderValues?: Record<string, unknown>): Result<T['type'], T['get']>;\n\n\tmapGetResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract values(placeholderValues?: Record<string, unknown>): Result<T['type'], T['values']>;\n\n\texecute(placeholderValues?: Record<string, unknown>): ExecuteResult<T['type'], T['execute']> {\n\t\tif (this.mode === 'async') {\n\t\t\treturn this[this.executeMethod](placeholderValues) as ExecuteResult<T['type'], T['execute']>;\n\t\t}\n\t\treturn new ExecuteResultSync(() => this[this.executeMethod](placeholderValues));\n\t}\n\n\tmapResult(response: unknown, isFromBatch?: boolean) {\n\t\tswitch (this.executeMethod) {\n\t\t\tcase 'run': {\n\t\t\t\treturn this.mapRunResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'all': {\n\t\t\t\treturn this.mapAllResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'get': {\n\t\t\t\treturn this.mapGetResult(response, isFromBatch);\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @internal */\n\tabstract isResponseInArrayMode(): boolean;\n}\n\nexport interface SQLiteTransactionConfig {\n\tbehavior?: 'deferred' | 'immediate' | 'exclusive';\n}\n\nexport type SQLiteExecuteMethod = 'run' | 'all' | 'get';\n\nexport abstract class SQLiteSession<\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteSession';\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly dialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultKind],\n\t) {}\n\n\tabstract prepareQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }>;\n\n\tprepareOneTimeQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }> {\n\t\treturn this.prepareQuery(query, fields, executeMethod, isResponseInArrayMode);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: SQLiteTransaction<TResultKind, TRunResult, TFullSchema, TSchema>) => Result<TResultKind, T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Result<TResultKind, T>;\n\n\trun(query: SQL): Result<TResultKind, TRunResult> {\n\t\tconst staticQuery = this.dialect.sqlToQuery(query);\n\t\ttry {\n\t\t\treturn this.prepareOneTimeQuery(staticQuery, undefined, 'run', false).run() as Result<TResultKind, TRunResult>;\n\t\t} catch (err) {\n\t\t\tthrow new DrizzleError({ cause: err, message: `Failed to run the query '${staticQuery.sql}'` });\n\t\t}\n\t}\n\n\t/** @internal */\n\textractRawRunValueFromBatchResult(result: unknown) {\n\t\treturn result;\n\t}\n\n\tall<T = unknown>(query: SQL): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).all() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawAllValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tget<T = unknown>(query: SQL): Result<TResultKind, T> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).get() as Result<\n\t\t\tTResultKind,\n\t\t\tT\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawGetValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tvalues<T extends any[] = unknown[]>(\n\t\tquery: SQL,\n\t): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).values() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\tasync count(sql: SQL) {\n\t\tconst result = await this.values(sql) as [[number]];\n\n\t\treturn result[0][0];\n\t}\n\n\t/** @internal */\n\textractRawValuesValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n}\n\nexport type Result<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: Promise<TResult> }[TKind];\n\nexport type DBResult<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: SQLiteRaw<TResult> }[TKind];\n\nexport abstract class SQLiteTransaction<\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends BaseSQLiteDatabase<TResultType, TRunResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTransaction';\n\n\tconstructor(\n\t\tresultType: TResultType,\n\t\tdialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultType],\n\t\tsession: SQLiteSession<TResultType, TRunResult, TFullSchema, TSchema>,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record<string, unknown>;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record<string, string>;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t) {\n\t\tsuper(resultType, dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/sqlite-core/session.ts"],"sourcesContent":["import { type Cache, NoopCache } from '~/cache/core/cache.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { DrizzleError, TransactionRollbackError } from '~/errors.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { TablesRelationalConfig } from '~/relations.ts';\nimport type { PreparedQuery } from '~/session.ts';\nimport type { Query, SQL } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect, SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { hashQuery } from '~/utils.ts';\nimport { BaseSQLiteDatabase } from './db.ts';\nimport type { SQLiteRaw } from './query-builders/raw.ts';\nimport type { SelectedFieldsOrdered } from './query-builders/select.types.ts';\n\nexport interface PreparedQueryConfig {\n\ttype: 'sync' | 'async';\n\trun: unknown;\n\tall: unknown;\n\tget: unknown;\n\tvalues: unknown;\n\texecute: unknown;\n}\n\nexport class ExecuteResultSync<T> extends QueryPromise<T> {\n\tstatic override readonly [entityKind]: string = 'ExecuteResultSync';\n\n\tconstructor(private resultCb: () => T) {\n\t\tsuper();\n\t}\n\n\toverride async execute(): Promise<T> {\n\t\treturn this.resultCb();\n\t}\n\n\tsync(): T {\n\t\treturn this.resultCb();\n\t}\n}\n\nexport type ExecuteResult<TType extends 'sync' | 'async', TResult> = TType extends 'async' ? Promise<TResult>\n\t: ExecuteResultSync<TResult>;\n\nexport abstract class SQLitePreparedQuery<T extends PreparedQueryConfig> implements PreparedQuery {\n\tstatic readonly [entityKind]: string = 'PreparedQuery';\n\n\t/** @internal */\n\tjoinsNotNullableMap?: Record<string, boolean>;\n\n\tconstructor(\n\t\tprivate mode: 'sync' | 'async',\n\t\tprivate executeMethod: SQLiteExecuteMethod,\n\t\tprotected query: Query,\n\t\tprivate cache?: Cache,\n\t\t// per query related metadata\n\t\tprivate queryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\t// config that was passed through $withCache\n\t\tprivate cacheConfig?: WithCacheConfig,\n\t) {\n\t\t// it means that no $withCache options were passed and it should be just enabled\n\t\tif (cache && cache.strategy() === 'all' && cacheConfig === undefined) {\n\t\t\tthis.cacheConfig = { enable: true, autoInvalidate: true };\n\t\t}\n\t\tif (!this.cacheConfig?.enable) {\n\t\t\tthis.cacheConfig = undefined;\n\t\t}\n\t}\n\n\t/** @internal */\n\tprotected async queryWithCache<T>(\n\t\tqueryString: string,\n\t\tparams: any[],\n\t\tquery: () => Promise<T>,\n\t): Promise<T> {\n\t\tif (this.cache === undefined || is(this.cache, NoopCache) || this.queryMetadata === undefined) {\n\t\t\treturn await query();\n\t\t}\n\n\t\t// don't do any mutations, if globally is false\n\t\tif (this.cacheConfig && !this.cacheConfig.enable) {\n\t\t\treturn await query();\n\t\t}\n\n\t\t// For mutate queries, we should query the database, wait for a response, and then perform invalidation\n\t\tif (\n\t\t\t(\n\t\t\t\tthis.queryMetadata.type === 'insert' || this.queryMetadata.type === 'update'\n\t\t\t\t|| this.queryMetadata.type === 'delete'\n\t\t\t) && this.queryMetadata.tables.length > 0\n\t\t) {\n\t\t\tconst [res] = await Promise.all([\n\t\t\t\tquery(),\n\t\t\t\tthis.cache.onMutate({ tables: this.queryMetadata.tables }),\n\t\t\t]);\n\t\t\treturn res;\n\t\t}\n\n\t\t// don't do any reads if globally disabled\n\t\tif (!this.cacheConfig) {\n\t\t\treturn await query();\n\t\t}\n\n\t\tif (this.queryMetadata.type === 'select') {\n\t\t\tconst fromCache = await this.cache.get(\n\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\tthis.queryMetadata.tables,\n\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\tthis.cacheConfig.autoInvalidate,\n\t\t\t);\n\t\t\tif (fromCache === undefined) {\n\t\t\t\tconst result = await query();\n\t\t\t\t// put actual key\n\t\t\t\tawait this.cache.put(\n\t\t\t\t\tthis.cacheConfig.tag ?? await hashQuery(queryString, params),\n\t\t\t\t\tresult,\n\t\t\t\t\t// make sure we send tables that were used in a query only if user wants to invalidate it on each write\n\t\t\t\t\tthis.cacheConfig.autoInvalidate ? this.queryMetadata.tables : [],\n\t\t\t\t\tthis.cacheConfig.tag !== undefined,\n\t\t\t\t\tthis.cacheConfig.config,\n\t\t\t\t);\n\t\t\t\t// put flag if we should invalidate or not\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\treturn fromCache as unknown as T;\n\t\t}\n\t\treturn await query();\n\t}\n\n\tgetQuery(): Query {\n\t\treturn this.query;\n\t}\n\n\tabstract run(placeholderValues?: Record<string, unknown>): Result<T['type'], T['run']>;\n\n\tmapRunResult(result: unknown, _isFromBatch?: boolean): unknown {\n\t\treturn result;\n\t}\n\n\tabstract all(placeholderValues?: Record<string, unknown>): Result<T['type'], T['all']>;\n\n\tmapAllResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract get(placeholderValues?: Record<string, unknown>): Result<T['type'], T['get']>;\n\n\tmapGetResult(_result: unknown, _isFromBatch?: boolean): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tabstract values(placeholderValues?: Record<string, unknown>): Result<T['type'], T['values']>;\n\n\texecute(placeholderValues?: Record<string, unknown>): ExecuteResult<T['type'], T['execute']> {\n\t\tif (this.mode === 'async') {\n\t\t\treturn this[this.executeMethod](placeholderValues) as ExecuteResult<T['type'], T['execute']>;\n\t\t}\n\t\treturn new ExecuteResultSync(() => this[this.executeMethod](placeholderValues));\n\t}\n\n\tmapResult(response: unknown, isFromBatch?: boolean) {\n\t\tswitch (this.executeMethod) {\n\t\t\tcase 'run': {\n\t\t\t\treturn this.mapRunResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'all': {\n\t\t\t\treturn this.mapAllResult(response, isFromBatch);\n\t\t\t}\n\t\t\tcase 'get': {\n\t\t\t\treturn this.mapGetResult(response, isFromBatch);\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @internal */\n\tabstract isResponseInArrayMode(): boolean;\n}\n\nexport interface SQLiteTransactionConfig {\n\tbehavior?: 'deferred' | 'immediate' | 'exclusive';\n}\n\nexport type SQLiteExecuteMethod = 'run' | 'all' | 'get';\n\nexport abstract class SQLiteSession<\n\tTResultKind extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> {\n\tstatic readonly [entityKind]: string = 'SQLiteSession';\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly dialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultKind],\n\t) {}\n\n\tabstract prepareQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }>;\n\n\tprepareOneTimeQuery(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][], mapColumnValue?: (value: unknown) => unknown) => unknown,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): SQLitePreparedQuery<PreparedQueryConfig & { type: TResultKind }> {\n\t\treturn this.prepareQuery(\n\t\t\tquery,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t);\n\t}\n\n\tabstract transaction<T>(\n\t\ttransaction: (tx: SQLiteTransaction<TResultKind, TRunResult, TFullSchema, TSchema>) => Result<TResultKind, T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Result<TResultKind, T>;\n\n\trun(query: SQL): Result<TResultKind, TRunResult> {\n\t\tconst staticQuery = this.dialect.sqlToQuery(query);\n\t\ttry {\n\t\t\treturn this.prepareOneTimeQuery(staticQuery, undefined, 'run', false).run() as Result<TResultKind, TRunResult>;\n\t\t} catch (err) {\n\t\t\tthrow new DrizzleError({ cause: err, message: `Failed to run the query '${staticQuery.sql}'` });\n\t\t}\n\t}\n\n\t/** @internal */\n\textractRawRunValueFromBatchResult(result: unknown) {\n\t\treturn result;\n\t}\n\n\tall<T = unknown>(query: SQL): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).all() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawAllValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tget<T = unknown>(query: SQL): Result<TResultKind, T> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).get() as Result<\n\t\t\tTResultKind,\n\t\t\tT\n\t\t>;\n\t}\n\n\t/** @internal */\n\textractRawGetValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n\n\tvalues<T extends any[] = unknown[]>(\n\t\tquery: SQL,\n\t): Result<TResultKind, T[]> {\n\t\treturn this.prepareOneTimeQuery(this.dialect.sqlToQuery(query), undefined, 'run', false).values() as Result<\n\t\t\tTResultKind,\n\t\t\tT[]\n\t\t>;\n\t}\n\n\tasync count(sql: SQL) {\n\t\tconst result = await this.values(sql) as [[number]];\n\n\t\treturn result[0][0];\n\t}\n\n\t/** @internal */\n\textractRawValuesValueFromBatchResult(_result: unknown): unknown {\n\t\tthrow new Error('Not implemented');\n\t}\n}\n\nexport type Result<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: Promise<TResult> }[TKind];\n\nexport type DBResult<TKind extends 'sync' | 'async', TResult> = { sync: TResult; async: SQLiteRaw<TResult> }[TKind];\n\nexport abstract class SQLiteTransaction<\n\tTResultType extends 'sync' | 'async',\n\tTRunResult,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends BaseSQLiteDatabase<TResultType, TRunResult, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'SQLiteTransaction';\n\n\tconstructor(\n\t\tresultType: TResultType,\n\t\tdialect: { sync: SQLiteSyncDialect; async: SQLiteAsyncDialect }[TResultType],\n\t\tsession: SQLiteSession<TResultType, TRunResult, TFullSchema, TSchema>,\n\t\tprotected schema: {\n\t\t\tfullSchema: Record<string, unknown>;\n\t\t\tschema: TSchema;\n\t\t\ttableNamesMap: Record<string, string>;\n\t\t} | undefined,\n\t\tprotected readonly nestedIndex = 0,\n\t) {\n\t\tsuper(resultType, dialect, session, schema);\n\t}\n\n\trollback(): never {\n\t\tthrow new TransactionRollbackError();\n\t}\n}\n"],"mappings":"AAAA,SAAqB,iBAAiB;AAEtC,SAAS,YAAY,UAAU;AAC/B,SAAS,cAAc,gCAAgC;AACvD,SAAS,oBAAoB;AAK7B,SAAS,iBAAiB;AAC1B,SAAS,0BAA0B;AAa5B,MAAM,0BAA6B,aAAgB;AAAA,EAGzD,YAAoB,UAAmB;AACtC,UAAM;AADa;AAAA,EAEpB;AAAA,EAJA,QAA0B,UAAU,IAAY;AAAA,EAMhD,MAAe,UAAsB;AACpC,WAAO,KAAK,SAAS;AAAA,EACtB;AAAA,EAEA,OAAU;AACT,WAAO,KAAK,SAAS;AAAA,EACtB;AACD;AAKO,MAAe,oBAA4E;AAAA,EAMjG,YACS,MACA,eACE,OACF,OAEA,eAKA,aACP;AAXO;AACA;AACE;AACF;AAEA;AAKA;AAGR,QAAI,SAAS,MAAM,SAAS,MAAM,SAAS,gBAAgB,QAAW;AACrE,WAAK,cAAc,EAAE,QAAQ,MAAM,gBAAgB,KAAK;AAAA,IACzD;AACA,QAAI,CAAC,KAAK,aAAa,QAAQ;AAC9B,WAAK,cAAc;AAAA,IACpB;AAAA,EACD;AAAA,EAzBA,QAAiB,UAAU,IAAY;AAAA;AAAA,EAGvC;AAAA;AAAA,EAyBA,MAAgB,eACf,aACA,QACA,OACa;AACb,QAAI,KAAK,UAAU,UAAa,GAAG,KAAK,OAAO,SAAS,KAAK,KAAK,kBAAkB,QAAW;AAC9F,aAAO,MAAM,MAAM;AAAA,IACpB;AAGA,QAAI,KAAK,eAAe,CAAC,KAAK,YAAY,QAAQ;AACjD,aAAO,MAAM,MAAM;AAAA,IACpB;AAGA,SAEE,KAAK,cAAc,SAAS,YAAY,KAAK,cAAc,SAAS,YACjE,KAAK,cAAc,SAAS,aAC3B,KAAK,cAAc,OAAO,SAAS,GACvC;AACD,YAAM,CAAC,GAAG,IAAI,MAAM,QAAQ,IAAI;AAAA,QAC/B,MAAM;AAAA,QACN,KAAK,MAAM,SAAS,EAAE,QAAQ,KAAK,cAAc,OAAO,CAAC;AAAA,MAC1D,CAAC;AACD,aAAO;AAAA,IACR;AAGA,QAAI,CAAC,KAAK,aAAa;AACtB,aAAO,MAAM,MAAM;AAAA,IACpB;AAEA,QAAI,KAAK,cAAc,SAAS,UAAU;AACzC,YAAM,YAAY,MAAM,KAAK,MAAM;AAAA,QAClC,KAAK,YAAY,OAAO,MAAM,UAAU,aAAa,MAAM;AAAA,QAC3D,KAAK,cAAc;AAAA,QACnB,KAAK,YAAY,QAAQ;AAAA,QACzB,KAAK,YAAY;AAAA,MAClB;AACA,UAAI,cAAc,QAAW;AAC5B,cAAM,SAAS,MAAM,MAAM;AAE3B,cAAM,KAAK,MAAM;AAAA,UAChB,KAAK,YAAY,OAAO,MAAM,UAAU,aAAa,MAAM;AAAA,UAC3D;AAAA;AAAA,UAEA,KAAK,YAAY,iBAAiB,KAAK,cAAc,SAAS,CAAC;AAAA,UAC/D,KAAK,YAAY,QAAQ;AAAA,UACzB,KAAK,YAAY;AAAA,QAClB;AAEA,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AACA,WAAO,MAAM,MAAM;AAAA,EACpB;AAAA,EAEA,WAAkB;AACjB,WAAO,KAAK;AAAA,EACb;AAAA,EAIA,aAAa,QAAiB,cAAiC;AAC9D,WAAO;AAAA,EACR;AAAA,EAIA,aAAa,SAAkB,cAAiC;AAC/D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAIA,aAAa,SAAkB,cAAiC;AAC/D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAIA,QAAQ,mBAAqF;AAC5F,QAAI,KAAK,SAAS,SAAS;AAC1B,aAAO,KAAK,KAAK,aAAa,EAAE,iBAAiB;AAAA,IAClD;AACA,WAAO,IAAI,kBAAkB,MAAM,KAAK,KAAK,aAAa,EAAE,iBAAiB,CAAC;AAAA,EAC/E;AAAA,EAEA,UAAU,UAAmB,aAAuB;AACnD,YAAQ,KAAK,eAAe;AAAA,MAC3B,KAAK,OAAO;AACX,eAAO,KAAK,aAAa,UAAU,WAAW;AAAA,MAC/C;AAAA,MACA,KAAK,OAAO;AACX,eAAO,KAAK,aAAa,UAAU,WAAW;AAAA,MAC/C;AAAA,MACA,KAAK,OAAO;AACX,eAAO,KAAK,aAAa,UAAU,WAAW;AAAA,MAC/C;AAAA,IACD;AAAA,EACD;AAID;AAQO,MAAe,cAKpB;AAAA,EAGD,YAEU,SACR;AADQ;AAAA,EACP;AAAA,EALH,QAAiB,UAAU,IAAY;AAAA,EAoBvC,oBACC,OACA,QACA,eACA,uBACA,oBACA,eAIA,aACmE;AACnE,WAAO,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAOA,IAAI,OAA6C;AAChD,UAAM,cAAc,KAAK,QAAQ,WAAW,KAAK;AACjD,QAAI;AACH,aAAO,KAAK,oBAAoB,aAAa,QAAW,OAAO,KAAK,EAAE,IAAI;AAAA,IAC3E,SAAS,KAAK;AACb,YAAM,IAAI,aAAa,EAAE,OAAO,KAAK,SAAS,4BAA4B,YAAY,GAAG,IAAI,CAAC;AAAA,IAC/F;AAAA,EACD;AAAA;AAAA,EAGA,kCAAkC,QAAiB;AAClD,WAAO;AAAA,EACR;AAAA,EAEA,IAAiB,OAAsC;AACtD,WAAO,KAAK,oBAAoB,KAAK,QAAQ,WAAW,KAAK,GAAG,QAAW,OAAO,KAAK,EAAE,IAAI;AAAA,EAI9F;AAAA;AAAA,EAGA,kCAAkC,SAA2B;AAC5D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAEA,IAAiB,OAAoC;AACpD,WAAO,KAAK,oBAAoB,KAAK,QAAQ,WAAW,KAAK,GAAG,QAAW,OAAO,KAAK,EAAE,IAAI;AAAA,EAI9F;AAAA;AAAA,EAGA,kCAAkC,SAA2B;AAC5D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AAAA,EAEA,OACC,OAC2B;AAC3B,WAAO,KAAK,oBAAoB,KAAK,QAAQ,WAAW,KAAK,GAAG,QAAW,OAAO,KAAK,EAAE,OAAO;AAAA,EAIjG;AAAA,EAEA,MAAM,MAAM,KAAU;AACrB,UAAM,SAAS,MAAM,KAAK,OAAO,GAAG;AAEpC,WAAO,OAAO,CAAC,EAAE,CAAC;AAAA,EACnB;AAAA;AAAA,EAGA,qCAAqC,SAA2B;AAC/D,UAAM,IAAI,MAAM,iBAAiB;AAAA,EAClC;AACD;AAMO,MAAe,0BAKZ,mBAAkE;AAAA,EAG3E,YACC,YACA,SACA,SACU,QAKS,cAAc,GAChC;AACD,UAAM,YAAY,SAAS,SAAS,MAAM;AAPhC;AAKS;AAAA,EAGpB;AAAA,EAdA,QAA0B,UAAU,IAAY;AAAA,EAgBhD,WAAkB;AACjB,UAAM,IAAI,yBAAyB;AAAA,EACpC;AACD;","names":[]}
@@ -18,11 +18,14 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var utils_exports = {};
20
20
  __export(utils_exports, {
21
+ extractUsedTable: () => extractUsedTable,
21
22
  getTableConfig: () => getTableConfig,
22
23
  getViewConfig: () => getViewConfig
23
24
  });
24
25
  module.exports = __toCommonJS(utils_exports);
25
26
  var import_entity = require("../entity.cjs");
27
+ var import_sql = require("../sql/sql.cjs");
28
+ var import_subquery = require("../subquery.cjs");
26
29
  var import_table = require("../table.cjs");
27
30
  var import_view_common = require("../view-common.cjs");
28
31
  var import_checks = require("./checks.cjs");
@@ -67,6 +70,18 @@ function getTableConfig(table) {
67
70
  name
68
71
  };
69
72
  }
73
+ function extractUsedTable(table) {
74
+ if ((0, import_entity.is)(table, import_table2.SQLiteTable)) {
75
+ return [`${table[import_table.Table.Symbol.BaseName]}`];
76
+ }
77
+ if ((0, import_entity.is)(table, import_subquery.Subquery)) {
78
+ return table._.usedTables ?? [];
79
+ }
80
+ if ((0, import_entity.is)(table, import_sql.SQL)) {
81
+ return table.usedTables ?? [];
82
+ }
83
+ return [];
84
+ }
70
85
  function getViewConfig(view) {
71
86
  return {
72
87
  ...view[import_view_common.ViewBaseConfig]
@@ -75,6 +90,7 @@ function getViewConfig(view) {
75
90
  }
76
91
  // Annotate the CommonJS export names for ESM import in node:
77
92
  0 && (module.exports = {
93
+ extractUsedTable,
78
94
  getTableConfig,
79
95
  getViewConfig
80
96
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sqlite-core/utils.ts"],"sourcesContent":["import { is } from '~/entity.ts';\nimport { Table } from '~/table.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { Check } from './checks.ts';\nimport { CheckBuilder } from './checks.ts';\nimport type { ForeignKey } from './foreign-keys.ts';\nimport { ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKey } from './primary-keys.ts';\nimport { PrimaryKeyBuilder } from './primary-keys.ts';\nimport { SQLiteTable } from './table.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\nimport type { SQLiteView } from './view.ts';\n\nexport function getTableConfig<TTable extends SQLiteTable>(table: TTable) {\n\tconst columns = Object.values(table[SQLiteTable.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst checks: Check[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst foreignKeys: ForeignKey[] = Object.values(table[SQLiteTable.Symbol.InlineForeignKeys]);\n\tconst name = table[Table.Symbol.Name];\n\n\tconst extraConfigBuilder = table[SQLiteTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[SQLiteTable.Symbol.Columns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of Object.values(extraValues)) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, CheckBuilder)) {\n\t\t\t\tchecks.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t} else if (is(builder, ForeignKeyBuilder)) {\n\t\t\t\tforeignKeys.push(builder.build(table));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tforeignKeys,\n\t\tchecks,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t};\n}\n\nexport type OnConflict = 'rollback' | 'abort' | 'fail' | 'ignore' | 'replace';\n\nexport function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: SQLiteView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t// ...view[SQLiteViewConfig],\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,mBAAsB;AACtB,yBAA+B;AAE/B,oBAA6B;AAE7B,0BAAkC;AAElC,qBAA6B;AAE7B,0BAAkC;AAClC,IAAAA,gBAA4B;AAC5B,+BAA+D;AAGxD,SAAS,eAA2C,OAAe;AACzE,QAAM,UAAU,OAAO,OAAO,MAAM,0BAAY,OAAO,OAAO,CAAC;AAC/D,QAAM,UAAmB,CAAC;AAC1B,QAAM,SAAkB,CAAC;AACzB,QAAM,cAA4B,CAAC;AACnC,QAAM,oBAAwC,CAAC;AAC/C,QAAM,cAA4B,OAAO,OAAO,MAAM,0BAAY,OAAO,iBAAiB,CAAC;AAC3F,QAAM,OAAO,MAAM,mBAAM,OAAO,IAAI;AAEpC,QAAM,qBAAqB,MAAM,0BAAY,OAAO,kBAAkB;AAEtE,MAAI,uBAAuB,QAAW;AACrC,UAAM,cAAc,mBAAmB,MAAM,0BAAY,OAAO,OAAO,CAAC;AACxE,UAAM,cAAc,MAAM,QAAQ,WAAW,IAAI,YAAY,KAAK,CAAC,IAAa,OAAO,OAAO,WAAW;AACzG,eAAW,WAAW,OAAO,OAAO,WAAW,GAAG;AACjD,cAAI,kBAAG,SAAS,2BAAY,GAAG;AAC9B,gBAAQ,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAClC,eAAW,kBAAG,SAAS,0BAAY,GAAG;AACrC,eAAO,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACjC,eAAW,kBAAG,SAAS,gDAAuB,GAAG;AAChD,0BAAkB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAC5C,eAAW,kBAAG,SAAS,qCAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC,eAAW,kBAAG,SAAS,qCAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAIO,SAAS,cAGd,MAAoC;AACrC,SAAO;AAAA,IACN,GAAG,KAAK,iCAAc;AAAA;AAAA,EAEvB;AACD;","names":["import_table"]}
1
+ {"version":3,"sources":["../../src/sqlite-core/utils.ts"],"sourcesContent":["import { is } from '~/entity.ts';\nimport { SQL } from '~/sql/sql.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { Check } from './checks.ts';\nimport { CheckBuilder } from './checks.ts';\nimport type { ForeignKey } from './foreign-keys.ts';\nimport { ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKey } from './primary-keys.ts';\nimport { PrimaryKeyBuilder } from './primary-keys.ts';\nimport { SQLiteTable } from './table.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\nimport type { SQLiteViewBase } from './view-base.ts';\nimport type { SQLiteView } from './view.ts';\n\nexport function getTableConfig<TTable extends SQLiteTable>(table: TTable) {\n\tconst columns = Object.values(table[SQLiteTable.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst checks: Check[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst foreignKeys: ForeignKey[] = Object.values(table[SQLiteTable.Symbol.InlineForeignKeys]);\n\tconst name = table[Table.Symbol.Name];\n\n\tconst extraConfigBuilder = table[SQLiteTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[SQLiteTable.Symbol.Columns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of Object.values(extraValues)) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, CheckBuilder)) {\n\t\t\t\tchecks.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t} else if (is(builder, ForeignKeyBuilder)) {\n\t\t\t\tforeignKeys.push(builder.build(table));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tforeignKeys,\n\t\tchecks,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t};\n}\n\nexport function extractUsedTable(table: SQLiteTable | Subquery | SQLiteViewBase | SQL): string[] {\n\tif (is(table, SQLiteTable)) {\n\t\treturn [`${table[Table.Symbol.BaseName]}`];\n\t}\n\tif (is(table, Subquery)) {\n\t\treturn table._.usedTables ?? [];\n\t}\n\tif (is(table, SQL)) {\n\t\treturn table.usedTables ?? [];\n\t}\n\treturn [];\n}\n\nexport type OnConflict = 'rollback' | 'abort' | 'fail' | 'ignore' | 'replace';\n\nexport function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: SQLiteView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t// ...view[SQLiteViewConfig],\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,iBAAoB;AACpB,sBAAyB;AACzB,mBAAsB;AACtB,yBAA+B;AAE/B,oBAA6B;AAE7B,0BAAkC;AAElC,qBAA6B;AAE7B,0BAAkC;AAClC,IAAAA,gBAA4B;AAC5B,+BAA+D;AAIxD,SAAS,eAA2C,OAAe;AACzE,QAAM,UAAU,OAAO,OAAO,MAAM,0BAAY,OAAO,OAAO,CAAC;AAC/D,QAAM,UAAmB,CAAC;AAC1B,QAAM,SAAkB,CAAC;AACzB,QAAM,cAA4B,CAAC;AACnC,QAAM,oBAAwC,CAAC;AAC/C,QAAM,cAA4B,OAAO,OAAO,MAAM,0BAAY,OAAO,iBAAiB,CAAC;AAC3F,QAAM,OAAO,MAAM,mBAAM,OAAO,IAAI;AAEpC,QAAM,qBAAqB,MAAM,0BAAY,OAAO,kBAAkB;AAEtE,MAAI,uBAAuB,QAAW;AACrC,UAAM,cAAc,mBAAmB,MAAM,0BAAY,OAAO,OAAO,CAAC;AACxE,UAAM,cAAc,MAAM,QAAQ,WAAW,IAAI,YAAY,KAAK,CAAC,IAAa,OAAO,OAAO,WAAW;AACzG,eAAW,WAAW,OAAO,OAAO,WAAW,GAAG;AACjD,cAAI,kBAAG,SAAS,2BAAY,GAAG;AAC9B,gBAAQ,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAClC,eAAW,kBAAG,SAAS,0BAAY,GAAG;AACrC,eAAO,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACjC,eAAW,kBAAG,SAAS,gDAAuB,GAAG;AAChD,0BAAkB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAC5C,eAAW,kBAAG,SAAS,qCAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC,eAAW,kBAAG,SAAS,qCAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,iBAAiB,OAAgE;AAChG,UAAI,kBAAG,OAAO,yBAAW,GAAG;AAC3B,WAAO,CAAC,GAAG,MAAM,mBAAM,OAAO,QAAQ,CAAC,EAAE;AAAA,EAC1C;AACA,UAAI,kBAAG,OAAO,wBAAQ,GAAG;AACxB,WAAO,MAAM,EAAE,cAAc,CAAC;AAAA,EAC/B;AACA,UAAI,kBAAG,OAAO,cAAG,GAAG;AACnB,WAAO,MAAM,cAAc,CAAC;AAAA,EAC7B;AACA,SAAO,CAAC;AACT;AAIO,SAAS,cAGd,MAAoC;AACrC,SAAO;AAAA,IACN,GAAG,KAAK,iCAAc;AAAA;AAAA,EAEvB;AACD;","names":["import_table"]}
@@ -1,9 +1,12 @@
1
+ import { SQL } from "../sql/sql.cjs";
2
+ import { Subquery } from "../subquery.cjs";
1
3
  import type { Check } from "./checks.cjs";
2
4
  import type { ForeignKey } from "./foreign-keys.cjs";
3
5
  import type { Index } from "./indexes.cjs";
4
6
  import type { PrimaryKey } from "./primary-keys.cjs";
5
7
  import { SQLiteTable } from "./table.cjs";
6
8
  import { type UniqueConstraint } from "./unique-constraint.cjs";
9
+ import type { SQLiteViewBase } from "./view-base.cjs";
7
10
  import type { SQLiteView } from "./view.cjs";
8
11
  export declare function getTableConfig<TTable extends SQLiteTable>(table: TTable): {
9
12
  columns: import("./index.ts").SQLiteColumn<any, {}, {}>[];
@@ -14,13 +17,14 @@ export declare function getTableConfig<TTable extends SQLiteTable>(table: TTable
14
17
  uniqueConstraints: UniqueConstraint[];
15
18
  name: string;
16
19
  };
20
+ export declare function extractUsedTable(table: SQLiteTable | Subquery | SQLiteViewBase | SQL): string[];
17
21
  export type OnConflict = 'rollback' | 'abort' | 'fail' | 'ignore' | 'replace';
18
22
  export declare function getViewConfig<TName extends string = string, TExisting extends boolean = boolean>(view: SQLiteView<TName, TExisting>): {
19
23
  name: TName;
20
24
  originalName: TName;
21
25
  schema: string | undefined;
22
- selectedFields: import("../index.ts").ColumnsSelection;
26
+ selectedFields: import("../sql/sql.ts").ColumnsSelection;
23
27
  isExisting: TExisting;
24
- query: TExisting extends true ? undefined : import("../index.ts").SQL<unknown>;
28
+ query: TExisting extends true ? undefined : SQL<unknown>;
25
29
  isAlias: boolean;
26
30
  };
@@ -1,9 +1,12 @@
1
+ import { SQL } from "../sql/sql.js";
2
+ import { Subquery } from "../subquery.js";
1
3
  import type { Check } from "./checks.js";
2
4
  import type { ForeignKey } from "./foreign-keys.js";
3
5
  import type { Index } from "./indexes.js";
4
6
  import type { PrimaryKey } from "./primary-keys.js";
5
7
  import { SQLiteTable } from "./table.js";
6
8
  import { type UniqueConstraint } from "./unique-constraint.js";
9
+ import type { SQLiteViewBase } from "./view-base.js";
7
10
  import type { SQLiteView } from "./view.js";
8
11
  export declare function getTableConfig<TTable extends SQLiteTable>(table: TTable): {
9
12
  columns: import("./index.js").SQLiteColumn<any, {}, {}>[];
@@ -14,13 +17,14 @@ export declare function getTableConfig<TTable extends SQLiteTable>(table: TTable
14
17
  uniqueConstraints: UniqueConstraint[];
15
18
  name: string;
16
19
  };
20
+ export declare function extractUsedTable(table: SQLiteTable | Subquery | SQLiteViewBase | SQL): string[];
17
21
  export type OnConflict = 'rollback' | 'abort' | 'fail' | 'ignore' | 'replace';
18
22
  export declare function getViewConfig<TName extends string = string, TExisting extends boolean = boolean>(view: SQLiteView<TName, TExisting>): {
19
23
  name: TName;
20
24
  originalName: TName;
21
25
  schema: string | undefined;
22
- selectedFields: import("../index.js").ColumnsSelection;
26
+ selectedFields: import("../sql/sql.js").ColumnsSelection;
23
27
  isExisting: TExisting;
24
- query: TExisting extends true ? undefined : import("../index.js").SQL<unknown>;
28
+ query: TExisting extends true ? undefined : SQL<unknown>;
25
29
  isAlias: boolean;
26
30
  };
@@ -1,4 +1,6 @@
1
1
  import { is } from "../entity.js";
2
+ import { SQL } from "../sql/sql.js";
3
+ import { Subquery } from "../subquery.js";
2
4
  import { Table } from "../table.js";
3
5
  import { ViewBaseConfig } from "../view-common.js";
4
6
  import { CheckBuilder } from "./checks.js";
@@ -43,6 +45,18 @@ function getTableConfig(table) {
43
45
  name
44
46
  };
45
47
  }
48
+ function extractUsedTable(table) {
49
+ if (is(table, SQLiteTable)) {
50
+ return [`${table[Table.Symbol.BaseName]}`];
51
+ }
52
+ if (is(table, Subquery)) {
53
+ return table._.usedTables ?? [];
54
+ }
55
+ if (is(table, SQL)) {
56
+ return table.usedTables ?? [];
57
+ }
58
+ return [];
59
+ }
46
60
  function getViewConfig(view) {
47
61
  return {
48
62
  ...view[ViewBaseConfig]
@@ -50,6 +64,7 @@ function getViewConfig(view) {
50
64
  };
51
65
  }
52
66
  export {
67
+ extractUsedTable,
53
68
  getTableConfig,
54
69
  getViewConfig
55
70
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sqlite-core/utils.ts"],"sourcesContent":["import { is } from '~/entity.ts';\nimport { Table } from '~/table.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { Check } from './checks.ts';\nimport { CheckBuilder } from './checks.ts';\nimport type { ForeignKey } from './foreign-keys.ts';\nimport { ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKey } from './primary-keys.ts';\nimport { PrimaryKeyBuilder } from './primary-keys.ts';\nimport { SQLiteTable } from './table.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\nimport type { SQLiteView } from './view.ts';\n\nexport function getTableConfig<TTable extends SQLiteTable>(table: TTable) {\n\tconst columns = Object.values(table[SQLiteTable.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst checks: Check[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst foreignKeys: ForeignKey[] = Object.values(table[SQLiteTable.Symbol.InlineForeignKeys]);\n\tconst name = table[Table.Symbol.Name];\n\n\tconst extraConfigBuilder = table[SQLiteTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[SQLiteTable.Symbol.Columns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of Object.values(extraValues)) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, CheckBuilder)) {\n\t\t\t\tchecks.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t} else if (is(builder, ForeignKeyBuilder)) {\n\t\t\t\tforeignKeys.push(builder.build(table));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tforeignKeys,\n\t\tchecks,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t};\n}\n\nexport type OnConflict = 'rollback' | 'abort' | 'fail' | 'ignore' | 'replace';\n\nexport function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: SQLiteView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t// ...view[SQLiteViewConfig],\n\t};\n}\n"],"mappings":"AAAA,SAAS,UAAU;AACnB,SAAS,aAAa;AACtB,SAAS,sBAAsB;AAE/B,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAElC,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAC5B,SAAgC,+BAA+B;AAGxD,SAAS,eAA2C,OAAe;AACzE,QAAM,UAAU,OAAO,OAAO,MAAM,YAAY,OAAO,OAAO,CAAC;AAC/D,QAAM,UAAmB,CAAC;AAC1B,QAAM,SAAkB,CAAC;AACzB,QAAM,cAA4B,CAAC;AACnC,QAAM,oBAAwC,CAAC;AAC/C,QAAM,cAA4B,OAAO,OAAO,MAAM,YAAY,OAAO,iBAAiB,CAAC;AAC3F,QAAM,OAAO,MAAM,MAAM,OAAO,IAAI;AAEpC,QAAM,qBAAqB,MAAM,YAAY,OAAO,kBAAkB;AAEtE,MAAI,uBAAuB,QAAW;AACrC,UAAM,cAAc,mBAAmB,MAAM,YAAY,OAAO,OAAO,CAAC;AACxE,UAAM,cAAc,MAAM,QAAQ,WAAW,IAAI,YAAY,KAAK,CAAC,IAAa,OAAO,OAAO,WAAW;AACzG,eAAW,WAAW,OAAO,OAAO,WAAW,GAAG;AACjD,UAAI,GAAG,SAAS,YAAY,GAAG;AAC9B,gBAAQ,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAClC,WAAW,GAAG,SAAS,YAAY,GAAG;AACrC,eAAO,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACjC,WAAW,GAAG,SAAS,uBAAuB,GAAG;AAChD,0BAAkB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAC5C,WAAW,GAAG,SAAS,iBAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC,WAAW,GAAG,SAAS,iBAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAIO,SAAS,cAGd,MAAoC;AACrC,SAAO;AAAA,IACN,GAAG,KAAK,cAAc;AAAA;AAAA,EAEvB;AACD;","names":[]}
1
+ {"version":3,"sources":["../../src/sqlite-core/utils.ts"],"sourcesContent":["import { is } from '~/entity.ts';\nimport { SQL } from '~/sql/sql.ts';\nimport { Subquery } from '~/subquery.ts';\nimport { Table } from '~/table.ts';\nimport { ViewBaseConfig } from '~/view-common.ts';\nimport type { Check } from './checks.ts';\nimport { CheckBuilder } from './checks.ts';\nimport type { ForeignKey } from './foreign-keys.ts';\nimport { ForeignKeyBuilder } from './foreign-keys.ts';\nimport type { Index } from './indexes.ts';\nimport { IndexBuilder } from './indexes.ts';\nimport type { PrimaryKey } from './primary-keys.ts';\nimport { PrimaryKeyBuilder } from './primary-keys.ts';\nimport { SQLiteTable } from './table.ts';\nimport { type UniqueConstraint, UniqueConstraintBuilder } from './unique-constraint.ts';\nimport type { SQLiteViewBase } from './view-base.ts';\nimport type { SQLiteView } from './view.ts';\n\nexport function getTableConfig<TTable extends SQLiteTable>(table: TTable) {\n\tconst columns = Object.values(table[SQLiteTable.Symbol.Columns]);\n\tconst indexes: Index[] = [];\n\tconst checks: Check[] = [];\n\tconst primaryKeys: PrimaryKey[] = [];\n\tconst uniqueConstraints: UniqueConstraint[] = [];\n\tconst foreignKeys: ForeignKey[] = Object.values(table[SQLiteTable.Symbol.InlineForeignKeys]);\n\tconst name = table[Table.Symbol.Name];\n\n\tconst extraConfigBuilder = table[SQLiteTable.Symbol.ExtraConfigBuilder];\n\n\tif (extraConfigBuilder !== undefined) {\n\t\tconst extraConfig = extraConfigBuilder(table[SQLiteTable.Symbol.Columns]);\n\t\tconst extraValues = Array.isArray(extraConfig) ? extraConfig.flat(1) as any[] : Object.values(extraConfig);\n\t\tfor (const builder of Object.values(extraValues)) {\n\t\t\tif (is(builder, IndexBuilder)) {\n\t\t\t\tindexes.push(builder.build(table));\n\t\t\t} else if (is(builder, CheckBuilder)) {\n\t\t\t\tchecks.push(builder.build(table));\n\t\t\t} else if (is(builder, UniqueConstraintBuilder)) {\n\t\t\t\tuniqueConstraints.push(builder.build(table));\n\t\t\t} else if (is(builder, PrimaryKeyBuilder)) {\n\t\t\t\tprimaryKeys.push(builder.build(table));\n\t\t\t} else if (is(builder, ForeignKeyBuilder)) {\n\t\t\t\tforeignKeys.push(builder.build(table));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tcolumns,\n\t\tindexes,\n\t\tforeignKeys,\n\t\tchecks,\n\t\tprimaryKeys,\n\t\tuniqueConstraints,\n\t\tname,\n\t};\n}\n\nexport function extractUsedTable(table: SQLiteTable | Subquery | SQLiteViewBase | SQL): string[] {\n\tif (is(table, SQLiteTable)) {\n\t\treturn [`${table[Table.Symbol.BaseName]}`];\n\t}\n\tif (is(table, Subquery)) {\n\t\treturn table._.usedTables ?? [];\n\t}\n\tif (is(table, SQL)) {\n\t\treturn table.usedTables ?? [];\n\t}\n\treturn [];\n}\n\nexport type OnConflict = 'rollback' | 'abort' | 'fail' | 'ignore' | 'replace';\n\nexport function getViewConfig<\n\tTName extends string = string,\n\tTExisting extends boolean = boolean,\n>(view: SQLiteView<TName, TExisting>) {\n\treturn {\n\t\t...view[ViewBaseConfig],\n\t\t// ...view[SQLiteViewConfig],\n\t};\n}\n"],"mappings":"AAAA,SAAS,UAAU;AACnB,SAAS,WAAW;AACpB,SAAS,gBAAgB;AACzB,SAAS,aAAa;AACtB,SAAS,sBAAsB;AAE/B,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAElC,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAC5B,SAAgC,+BAA+B;AAIxD,SAAS,eAA2C,OAAe;AACzE,QAAM,UAAU,OAAO,OAAO,MAAM,YAAY,OAAO,OAAO,CAAC;AAC/D,QAAM,UAAmB,CAAC;AAC1B,QAAM,SAAkB,CAAC;AACzB,QAAM,cAA4B,CAAC;AACnC,QAAM,oBAAwC,CAAC;AAC/C,QAAM,cAA4B,OAAO,OAAO,MAAM,YAAY,OAAO,iBAAiB,CAAC;AAC3F,QAAM,OAAO,MAAM,MAAM,OAAO,IAAI;AAEpC,QAAM,qBAAqB,MAAM,YAAY,OAAO,kBAAkB;AAEtE,MAAI,uBAAuB,QAAW;AACrC,UAAM,cAAc,mBAAmB,MAAM,YAAY,OAAO,OAAO,CAAC;AACxE,UAAM,cAAc,MAAM,QAAQ,WAAW,IAAI,YAAY,KAAK,CAAC,IAAa,OAAO,OAAO,WAAW;AACzG,eAAW,WAAW,OAAO,OAAO,WAAW,GAAG;AACjD,UAAI,GAAG,SAAS,YAAY,GAAG;AAC9B,gBAAQ,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAClC,WAAW,GAAG,SAAS,YAAY,GAAG;AACrC,eAAO,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACjC,WAAW,GAAG,SAAS,uBAAuB,GAAG;AAChD,0BAAkB,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MAC5C,WAAW,GAAG,SAAS,iBAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC,WAAW,GAAG,SAAS,iBAAiB,GAAG;AAC1C,oBAAY,KAAK,QAAQ,MAAM,KAAK,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,iBAAiB,OAAgE;AAChG,MAAI,GAAG,OAAO,WAAW,GAAG;AAC3B,WAAO,CAAC,GAAG,MAAM,MAAM,OAAO,QAAQ,CAAC,EAAE;AAAA,EAC1C;AACA,MAAI,GAAG,OAAO,QAAQ,GAAG;AACxB,WAAO,MAAM,EAAE,cAAc,CAAC;AAAA,EAC/B;AACA,MAAI,GAAG,OAAO,GAAG,GAAG;AACnB,WAAO,MAAM,cAAc,CAAC;AAAA,EAC7B;AACA,SAAO,CAAC;AACT;AAIO,SAAS,cAGd,MAAoC;AACrC,SAAO;AAAA,IACN,GAAG,KAAK,cAAc;AAAA;AAAA,EAEvB;AACD;","names":[]}
@@ -37,6 +37,7 @@ class SqliteRemoteDatabase extends import_db.BaseSQLiteDatabase {
37
37
  function drizzle(callback, batchCallback, config) {
38
38
  const dialect = new import_dialect.SQLiteAsyncDialect({ casing: config?.casing });
39
39
  let logger;
40
+ let cache;
40
41
  let _batchCallback;
41
42
  let _config = {};
42
43
  if (batchCallback) {
@@ -51,6 +52,7 @@ function drizzle(callback, batchCallback, config) {
51
52
  logger = new import_logger.DefaultLogger();
52
53
  } else if (_config.logger !== false) {
53
54
  logger = _config.logger;
55
+ cache = _config.cache;
54
56
  }
55
57
  }
56
58
  let schema;
@@ -65,8 +67,13 @@ function drizzle(callback, batchCallback, config) {
65
67
  tableNamesMap: tablesConfig.tableNamesMap
66
68
  };
67
69
  }
68
- const session = new import_session.SQLiteRemoteSession(callback, dialect, schema, _batchCallback, { logger });
69
- return new SqliteRemoteDatabase("async", dialect, session, schema);
70
+ const session = new import_session.SQLiteRemoteSession(callback, dialect, schema, _batchCallback, { logger, cache });
71
+ const db = new SqliteRemoteDatabase("async", dialect, session, schema);
72
+ db.$cache = cache;
73
+ if (db.$cache) {
74
+ db.$cache["invalidate"] = cache?.onMutate;
75
+ }
76
+ return db;
70
77
  }
71
78
  // Annotate the CommonJS export names for ESM import in node:
72
79
  0 && (module.exports = {