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
@@ -0,0 +1,123 @@
1
+ import { Redis } from "@upstash/redis";
2
+ import { Cache } from "../core/index.js";
3
+ import { entityKind, is } from "../../entity.js";
4
+ import { OriginalName, Table } from "../../index.js";
5
+ const getByTagScript = `
6
+ local tagsMapKey = KEYS[1] -- tags map key
7
+ local tag = ARGV[1] -- tag
8
+
9
+ local compositeTableName = redis.call('HGET', tagsMapKey, tag)
10
+ if not compositeTableName then
11
+ return nil
12
+ end
13
+
14
+ local value = redis.call('HGET', compositeTableName, tag)
15
+ return value
16
+ `;
17
+ const onMutateScript = `
18
+ local tagsMapKey = KEYS[1] -- tags map key
19
+ local tables = {} -- initialize tables array
20
+ local tags = ARGV -- tags array
21
+
22
+ for i = 2, #KEYS do
23
+ tables[#tables + 1] = KEYS[i] -- add all keys except the first one to tables
24
+ end
25
+
26
+ if #tags > 0 then
27
+ for _, tag in ipairs(tags) do
28
+ if tag ~= nil and tag ~= '' then
29
+ local compositeTableName = redis.call('HGET', tagsMapKey, tag)
30
+ if compositeTableName then
31
+ redis.call('HDEL', compositeTableName, tag)
32
+ end
33
+ end
34
+ end
35
+ redis.call('HDEL', tagsMapKey, unpack(tags))
36
+ end
37
+
38
+ local keysToDelete = {}
39
+
40
+ if #tables > 0 then
41
+ local compositeTableNames = redis.call('SUNION', unpack(tables))
42
+ for _, compositeTableName in ipairs(compositeTableNames) do
43
+ keysToDelete[#keysToDelete + 1] = compositeTableName
44
+ end
45
+ for _, table in ipairs(tables) do
46
+ keysToDelete[#keysToDelete + 1] = table
47
+ end
48
+ redis.call('DEL', unpack(keysToDelete))
49
+ end
50
+ `;
51
+ class UpstashCache extends Cache {
52
+ constructor(redis, config, useGlobally) {
53
+ super();
54
+ this.redis = redis;
55
+ this.useGlobally = useGlobally;
56
+ this.internalConfig = this.toInternalConfig(config);
57
+ this.luaScripts = {
58
+ getByTagScript: this.redis.createScript(getByTagScript, { readonly: true }),
59
+ onMutateScript: this.redis.createScript(onMutateScript)
60
+ };
61
+ }
62
+ static [entityKind] = "UpstashCache";
63
+ static compositeTableSetPrefix = "__ct__";
64
+ static tagsMapKey = "__tagsMap__";
65
+ globalTtl = 1;
66
+ luaScripts;
67
+ internalConfig;
68
+ strategy() {
69
+ return this.useGlobally ? "all" : "explicit";
70
+ }
71
+ toInternalConfig(config) {
72
+ return config ? {
73
+ seconds: config.ex,
74
+ hexOptions: config.hexOptions
75
+ } : void 0;
76
+ }
77
+ async get(key, tables, isTag = false) {
78
+ if (isTag) {
79
+ const result2 = await this.luaScripts.getByTagScript.exec([UpstashCache.tagsMapKey], [key]);
80
+ return result2 === null ? void 0 : result2;
81
+ }
82
+ const compositeKey = this.getCompositeKey(tables);
83
+ const result = (await this.redis.hget(compositeKey, key)) ?? void 0;
84
+ return result === null ? void 0 : result;
85
+ }
86
+ async put(key, response, tables, isTag = false, config) {
87
+ const pipeline = this.redis.pipeline();
88
+ const compositeKey = this.getCompositeKey(tables);
89
+ const ttlSeconds = config && config.ex ? config.ex : this.globalTtl;
90
+ const hexOptions = config && config.hexOptions ? config.hexOptions : this.internalConfig?.hexOptions;
91
+ pipeline.hset(compositeKey, { [key]: response });
92
+ pipeline.hexpire(compositeKey, key, ttlSeconds, hexOptions);
93
+ if (isTag) {
94
+ pipeline.hset(UpstashCache.tagsMapKey, { [key]: compositeKey });
95
+ pipeline.hexpire(UpstashCache.tagsMapKey, key, ttlSeconds, hexOptions);
96
+ }
97
+ for (const table of tables) {
98
+ pipeline.sadd(this.addTablePrefix(table), compositeKey);
99
+ }
100
+ await pipeline.exec();
101
+ }
102
+ async onMutate(params) {
103
+ const tags = Array.isArray(params.tags) ? params.tags : params.tags ? [params.tags] : [];
104
+ const tables = Array.isArray(params.tables) ? params.tables : params.tables ? [params.tables] : [];
105
+ const tableNames = tables.map((table) => is(table, Table) ? table[OriginalName] : table);
106
+ const compositeTableSets = tableNames.map((table) => this.addTablePrefix(table));
107
+ await this.luaScripts.onMutateScript.exec([UpstashCache.tagsMapKey, ...compositeTableSets], tags);
108
+ }
109
+ addTablePrefix = (table) => `${UpstashCache.compositeTableSetPrefix}${table}`;
110
+ getCompositeKey = (tables) => tables.sort().join(",");
111
+ }
112
+ function upstashCache({ url, token, config, global = false }) {
113
+ const redis = new Redis({
114
+ url,
115
+ token
116
+ });
117
+ return new UpstashCache(redis, config, global);
118
+ }
119
+ export {
120
+ UpstashCache,
121
+ upstashCache
122
+ };
123
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cache/upstash/cache.ts"],"sourcesContent":["import { Redis } from '@upstash/redis';\nimport type { MutationOption } from '~/cache/core/index.ts';\nimport { Cache } from '~/cache/core/index.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { OriginalName, Table } from '~/index.ts';\nimport type { CacheConfig } from '../core/types.ts';\n\nconst getByTagScript = `\nlocal tagsMapKey = KEYS[1] -- tags map key\nlocal tag = ARGV[1] -- tag\n\nlocal compositeTableName = redis.call('HGET', tagsMapKey, tag)\nif not compositeTableName then\n return nil\nend\n\nlocal value = redis.call('HGET', compositeTableName, tag)\nreturn value\n`;\n\nconst onMutateScript = `\nlocal tagsMapKey = KEYS[1] -- tags map key\nlocal tables = {} -- initialize tables array\nlocal tags = ARGV -- tags array\n\nfor i = 2, #KEYS do\n tables[#tables + 1] = KEYS[i] -- add all keys except the first one to tables\nend\n\nif #tags > 0 then\n for _, tag in ipairs(tags) do\n if tag ~= nil and tag ~= '' then\n local compositeTableName = redis.call('HGET', tagsMapKey, tag)\n if compositeTableName then\n redis.call('HDEL', compositeTableName, tag)\n end\n end\n end\n redis.call('HDEL', tagsMapKey, unpack(tags))\nend\n\nlocal keysToDelete = {}\n\nif #tables > 0 then\n local compositeTableNames = redis.call('SUNION', unpack(tables))\n for _, compositeTableName in ipairs(compositeTableNames) do\n keysToDelete[#keysToDelete + 1] = compositeTableName\n end\n for _, table in ipairs(tables) do\n keysToDelete[#keysToDelete + 1] = table\n end\n redis.call('DEL', unpack(keysToDelete))\nend\n`;\n\ntype Script = ReturnType<Redis['createScript']>;\n\ntype ExpireOptions = 'NX' | 'nx' | 'XX' | 'xx' | 'GT' | 'gt' | 'LT' | 'lt';\n\nexport class UpstashCache extends Cache {\n\tstatic override readonly [entityKind]: string = 'UpstashCache';\n\tprivate static compositeTableSetPrefix = '__ct__';\n\tprivate static tagsMapKey = '__tagsMap__';\n\n\tprivate globalTtl: number = 1;\n\n\tprivate luaScripts: {\n\t\tgetByTagScript: Script;\n\t\tonMutateScript: Script;\n\t};\n\n\tprivate internalConfig?: { seconds: number; hexOptions: ExpireOptions };\n\n\tconstructor(public redis: Redis, config?: CacheConfig, protected useGlobally?: boolean) {\n\t\tsuper();\n\t\tthis.internalConfig = this.toInternalConfig(config);\n\t\tthis.luaScripts = {\n\t\t\tgetByTagScript: this.redis.createScript(getByTagScript, { readonly: true }),\n\t\t\tonMutateScript: this.redis.createScript(onMutateScript),\n\t\t};\n\t}\n\n\tpublic strategy() {\n\t\treturn this.useGlobally ? 'all' : 'explicit';\n\t}\n\n\tprivate toInternalConfig(config?: CacheConfig) {\n\t\treturn config\n\t\t\t? {\n\t\t\t\tseconds: config.ex,\n\t\t\t\thexOptions: config.hexOptions,\n\t\t\t} as { seconds: number; hexOptions: ExpireOptions }\n\t\t\t: undefined;\n\t}\n\n\toverride async get(key: string, tables: string[], isTag: boolean = false): Promise<any[] | undefined> {\n\t\tif (isTag) {\n\t\t\tconst result = await this.luaScripts.getByTagScript.exec([UpstashCache.tagsMapKey], [key]);\n\t\t\treturn result === null ? undefined : result as any[];\n\t\t}\n\n\t\t// Normal cache lookup for the composite key\n\t\tconst compositeKey = this.getCompositeKey(tables);\n\t\tconst result = await this.redis.hget(compositeKey, key) ?? undefined; // Retrieve result for normal query\n\t\treturn result === null ? undefined : result as any[];\n\t}\n\n\toverride async put(\n\t\tkey: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean = false,\n\t\tconfig?: CacheConfig,\n\t): Promise<void> {\n\t\tconst pipeline = this.redis.pipeline();\n\t\tconst compositeKey = this.getCompositeKey(tables);\n\t\tconst ttlSeconds = config && config.ex ? config.ex : this.globalTtl;\n\t\tconst hexOptions = config && config.hexOptions ? config.hexOptions : this.internalConfig?.hexOptions;\n\n\t\tpipeline.hset(compositeKey, { [key]: response }); // Store the result with the tag under the composite key\n\t\tpipeline.hexpire(compositeKey, key, ttlSeconds, hexOptions); // Set expiration for the composite key\n\n\t\tif (isTag) {\n\t\t\tpipeline.hset(UpstashCache.tagsMapKey, { [key]: compositeKey }); // Store the tag and its composite key in the map\n\t\t\tpipeline.hexpire(UpstashCache.tagsMapKey, key, ttlSeconds, hexOptions); // Set expiration for the tag\n\t\t}\n\n\t\tfor (const table of tables) {\n\t\t\tpipeline.sadd(this.addTablePrefix(table), compositeKey);\n\t\t}\n\n\t\tawait pipeline.exec();\n\t}\n\n\toverride async onMutate(params: MutationOption) {\n\t\tconst tags = Array.isArray(params.tags) ? params.tags : params.tags ? [params.tags] : [];\n\t\tconst tables = Array.isArray(params.tables) ? params.tables : params.tables ? [params.tables] : [];\n\t\tconst tableNames: string[] = tables.map((table) => is(table, Table) ? table[OriginalName] : table as string);\n\n\t\tconst compositeTableSets = tableNames.map((table) => this.addTablePrefix(table));\n\t\tawait this.luaScripts.onMutateScript.exec([UpstashCache.tagsMapKey, ...compositeTableSets], tags);\n\t}\n\n\tprivate addTablePrefix = (table: string) => `${UpstashCache.compositeTableSetPrefix}${table}`;\n\tprivate getCompositeKey = (tables: string[]) => tables.sort().join(',');\n}\n\nexport function upstashCache(\n\t{ url, token, config, global = false }: { url: string; token: string; config?: CacheConfig; global?: boolean },\n): UpstashCache {\n\tconst redis = new Redis({\n\t\turl,\n\t\ttoken,\n\t});\n\n\treturn new UpstashCache(redis, config, global);\n}\n"],"mappings":"AAAA,SAAS,aAAa;AAEtB,SAAS,aAAa;AACtB,SAAS,YAAY,UAAU;AAC/B,SAAS,cAAc,aAAa;AAGpC,MAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAavB,MAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuChB,MAAM,qBAAqB,MAAM;AAAA,EAcvC,YAAmB,OAAc,QAAgC,aAAuB;AACvF,UAAM;AADY;AAA8C;AAEhE,SAAK,iBAAiB,KAAK,iBAAiB,MAAM;AAClD,SAAK,aAAa;AAAA,MACjB,gBAAgB,KAAK,MAAM,aAAa,gBAAgB,EAAE,UAAU,KAAK,CAAC;AAAA,MAC1E,gBAAgB,KAAK,MAAM,aAAa,cAAc;AAAA,IACvD;AAAA,EACD;AAAA,EApBA,QAA0B,UAAU,IAAY;AAAA,EAChD,OAAe,0BAA0B;AAAA,EACzC,OAAe,aAAa;AAAA,EAEpB,YAAoB;AAAA,EAEpB;AAAA,EAKA;AAAA,EAWD,WAAW;AACjB,WAAO,KAAK,cAAc,QAAQ;AAAA,EACnC;AAAA,EAEQ,iBAAiB,QAAsB;AAC9C,WAAO,SACJ;AAAA,MACD,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,IACpB,IACE;AAAA,EACJ;AAAA,EAEA,MAAe,IAAI,KAAa,QAAkB,QAAiB,OAAmC;AACrG,QAAI,OAAO;AACV,YAAMA,UAAS,MAAM,KAAK,WAAW,eAAe,KAAK,CAAC,aAAa,UAAU,GAAG,CAAC,GAAG,CAAC;AACzF,aAAOA,YAAW,OAAO,SAAYA;AAAA,IACtC;AAGA,UAAM,eAAe,KAAK,gBAAgB,MAAM;AAChD,UAAM,SAAS,MAAM,KAAK,MAAM,KAAK,cAAc,GAAG,KAAK;AAC3D,WAAO,WAAW,OAAO,SAAY;AAAA,EACtC;AAAA,EAEA,MAAe,IACd,KACA,UACA,QACA,QAAiB,OACjB,QACgB;AAChB,UAAM,WAAW,KAAK,MAAM,SAAS;AACrC,UAAM,eAAe,KAAK,gBAAgB,MAAM;AAChD,UAAM,aAAa,UAAU,OAAO,KAAK,OAAO,KAAK,KAAK;AAC1D,UAAM,aAAa,UAAU,OAAO,aAAa,OAAO,aAAa,KAAK,gBAAgB;AAE1F,aAAS,KAAK,cAAc,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC;AAC/C,aAAS,QAAQ,cAAc,KAAK,YAAY,UAAU;AAE1D,QAAI,OAAO;AACV,eAAS,KAAK,aAAa,YAAY,EAAE,CAAC,GAAG,GAAG,aAAa,CAAC;AAC9D,eAAS,QAAQ,aAAa,YAAY,KAAK,YAAY,UAAU;AAAA,IACtE;AAEA,eAAW,SAAS,QAAQ;AAC3B,eAAS,KAAK,KAAK,eAAe,KAAK,GAAG,YAAY;AAAA,IACvD;AAEA,UAAM,SAAS,KAAK;AAAA,EACrB;AAAA,EAEA,MAAe,SAAS,QAAwB;AAC/C,UAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,IAAI,OAAO,OAAO,OAAO,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;AACvF,UAAM,SAAS,MAAM,QAAQ,OAAO,MAAM,IAAI,OAAO,SAAS,OAAO,SAAS,CAAC,OAAO,MAAM,IAAI,CAAC;AACjG,UAAM,aAAuB,OAAO,IAAI,CAAC,UAAU,GAAG,OAAO,KAAK,IAAI,MAAM,YAAY,IAAI,KAAe;AAE3G,UAAM,qBAAqB,WAAW,IAAI,CAAC,UAAU,KAAK,eAAe,KAAK,CAAC;AAC/E,UAAM,KAAK,WAAW,eAAe,KAAK,CAAC,aAAa,YAAY,GAAG,kBAAkB,GAAG,IAAI;AAAA,EACjG;AAAA,EAEQ,iBAAiB,CAAC,UAAkB,GAAG,aAAa,uBAAuB,GAAG,KAAK;AAAA,EACnF,kBAAkB,CAAC,WAAqB,OAAO,KAAK,EAAE,KAAK,GAAG;AACvE;AAEO,SAAS,aACf,EAAE,KAAK,OAAO,QAAQ,SAAS,MAAM,GACtB;AACf,QAAM,QAAQ,IAAI,MAAM;AAAA,IACvB;AAAA,IACA;AAAA,EACD,CAAC;AAED,SAAO,IAAI,aAAa,OAAO,QAAQ,MAAM;AAC9C;","names":["result"]}
@@ -3,10 +3,6 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
6
  var __copyProps = (to, from, except, desc) => {
11
7
  if (from && typeof from === "object" || typeof from === "function") {
12
8
  for (let key of __getOwnPropNames(from))
@@ -15,15 +11,13 @@ var __copyProps = (to, from, except, desc) => {
15
11
  }
16
12
  return to;
17
13
  };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
15
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var view_common_exports = {};
20
- __export(view_common_exports, {
21
- MsSqlViewConfig: () => MsSqlViewConfig
22
- });
23
- module.exports = __toCommonJS(view_common_exports);
24
- const MsSqlViewConfig = Symbol.for("drizzle:MsSqlViewConfig");
16
+ var upstash_exports = {};
17
+ module.exports = __toCommonJS(upstash_exports);
18
+ __reExport(upstash_exports, require("./cache.cjs"), module.exports);
25
19
  // Annotate the CommonJS export names for ESM import in node:
26
20
  0 && (module.exports = {
27
- MsSqlViewConfig
21
+ ...require("./cache.cjs")
28
22
  });
29
- //# sourceMappingURL=view-common.cjs.map
23
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cache/upstash/index.ts"],"sourcesContent":["export * from './cache.ts';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,uBAAd;","names":[]}
@@ -0,0 +1 @@
1
+ export * from "./cache.cjs";
@@ -0,0 +1 @@
1
+ export * from "./cache.js";
@@ -0,0 +1,2 @@
1
+ export * from "./cache.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cache/upstash/index.ts"],"sourcesContent":["export * from './cache.ts';\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/column-builder.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Column } from './column.ts';\nimport type { GelColumn, GelExtraConfigColumn } from './gel-core/index.ts';\nimport type { MsSqlColumn } from './mssql-core/index.ts';\nimport type { MySqlColumn } from './mysql-core/index.ts';\nimport type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from './pg-core/index.ts';\nimport type { SingleStoreColumn } from './singlestore-core/index.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { SQLiteColumn } from './sqlite-core/index.ts';\nimport type { Assume, Simplify } from './utils.ts';\n\nexport type ColumnDataType =\n\t| 'string'\n\t| 'number'\n\t| 'boolean'\n\t| 'array'\n\t| 'json'\n\t| 'date'\n\t| 'bigint'\n\t| 'custom'\n\t| 'buffer'\n\t| 'dateDuration'\n\t| 'duration'\n\t| 'relDuration'\n\t| 'localTime'\n\t| 'localDate'\n\t| 'localDateTime';\n\nexport type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'mssql' | 'common' | 'gel';\n\nexport type GeneratedStorageMode = 'virtual' | 'stored';\n\nexport type GeneratedType = 'always' | 'byDefault';\n\nexport type GeneratedColumnConfig<TDataType> = {\n\tas: TDataType | SQL | (() => SQL);\n\ttype?: GeneratedType;\n\tmode?: GeneratedStorageMode;\n};\n\nexport type GeneratedIdentityConfig = {\n\tsequenceName?: string;\n\tsequenceOptions?: PgSequenceOptions;\n\ttype: 'always' | 'byDefault';\n};\n\nexport interface ColumnBuilderBaseConfig<TDataType extends ColumnDataType, TColumnType extends string> {\n\tname: string;\n\tdataType: TDataType;\n\tcolumnType: TColumnType;\n\tdata: unknown;\n\tdriverParam: unknown;\n\tenumValues: string[] | undefined;\n}\n\nexport type MakeColumnConfig<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTableName extends string,\n\tTData = T extends { $type: infer U } ? U : T['data'],\n> = {\n\tname: T['name'];\n\ttableName: TTableName;\n\tdataType: T['dataType'];\n\tcolumnType: T['columnType'];\n\tdata: TData;\n\tdriverParam: T['driverParam'];\n\tnotNull: T extends { notNull: true } ? true : false;\n\thasDefault: T extends { hasDefault: true } ? true : false;\n\tisPrimaryKey: T extends { isPrimaryKey: true } ? true : false;\n\tisAutoincrement: T extends { isAutoincrement: true } ? true : false;\n\thasRuntimeDefault: T extends { hasRuntimeDefault: true } ? true : false;\n\tenumValues: T['enumValues'];\n\tbaseColumn: T extends { baseBuilder: infer U extends ColumnBuilderBase } ? BuildColumn<TTableName, U, 'common'>\n\t\t: never;\n\tidentity: T extends { identity: 'always' } ? 'always' : T extends { identity: 'byDefault' } ? 'byDefault' : undefined;\n\tgenerated: T extends { generated: infer G } ? unknown extends G ? undefined\n\t\t: G extends undefined ? undefined\n\t\t: G\n\t\t: undefined;\n} & {};\n\nexport type ColumnBuilderTypeConfig<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> = Simplify<\n\t& {\n\t\tbrand: 'ColumnBuilder';\n\t\tname: T['name'];\n\t\tdataType: T['dataType'];\n\t\tcolumnType: T['columnType'];\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverParam'];\n\t\tnotNull: T extends { notNull: infer U } ? U : boolean;\n\t\thasDefault: T extends { hasDefault: infer U } ? U : boolean;\n\t\tenumValues: T['enumValues'];\n\t\tidentity: T extends { identity: infer U } ? U : unknown;\n\t\tgenerated: T extends { generated: infer G } ? G extends undefined ? unknown : G : unknown;\n\t}\n\t& TTypeConfig\n>;\n\nexport type ColumnBuilderRuntimeConfig<TData, TRuntimeConfig extends object = object> = {\n\tname: string;\n\tkeyAsName: boolean;\n\tnotNull: boolean;\n\tdefault: TData | SQL | undefined;\n\tdefaultFn: (() => TData | SQL) | undefined;\n\tonUpdateFn: (() => TData | SQL) | undefined;\n\thasDefault: boolean;\n\tprimaryKey: boolean;\n\tisUnique: boolean;\n\tuniqueName: string | undefined;\n\tuniqueType: string | undefined;\n\tdataType: string;\n\tcolumnType: string;\n\tgenerated: GeneratedColumnConfig<TData> | undefined;\n\tgeneratedIdentity: GeneratedIdentityConfig | undefined;\n} & TRuntimeConfig;\n\nexport interface ColumnBuilderExtraConfig {\n\tprimaryKeyHasDefault?: boolean;\n}\n\nexport type NotNull<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tnotNull: true;\n\t};\n};\n\nexport type HasDefault<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\thasDefault: true;\n\t};\n};\n\nexport type IsPrimaryKey<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tisPrimaryKey: true;\n\t};\n};\n\nexport type IsAutoincrement<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tisAutoincrement: true;\n\t};\n};\n\nexport type HasRuntimeDefault<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\thasRuntimeDefault: true;\n\t};\n};\n\nexport type $Type<T extends ColumnBuilderBase, TType> = T & {\n\t_: {\n\t\t$type: TType;\n\t};\n};\n\nexport type HasGenerated<T extends ColumnBuilderBase, TGenerated extends {} = {}> = T & {\n\t_: {\n\t\thasDefault: true;\n\t\tgenerated: TGenerated;\n\t};\n};\n\nexport type IsIdentity<\n\tT extends ColumnBuilderBase,\n\tTType extends 'always' | 'byDefault',\n> = T & {\n\t_: {\n\t\tnotNull: true;\n\t\thasDefault: true;\n\t\tidentity: TType;\n\t};\n};\nexport interface ColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> {\n\t_: ColumnBuilderTypeConfig<T, TTypeConfig>;\n}\n\n// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.\nexport abstract class ColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> implements ColumnBuilderBase<T, TTypeConfig> {\n\tstatic readonly [entityKind]: string = 'ColumnBuilder';\n\n\tdeclare _: ColumnBuilderTypeConfig<T, TTypeConfig>;\n\n\tprotected config: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>;\n\n\tconstructor(name: T['name'], dataType: T['dataType'], columnType: T['columnType']) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tkeyAsName: name === '',\n\t\t\tnotNull: false,\n\t\t\tdefault: undefined,\n\t\t\thasDefault: false,\n\t\t\tprimaryKey: false,\n\t\t\tisUnique: false,\n\t\t\tuniqueName: undefined,\n\t\t\tuniqueType: undefined,\n\t\t\tdataType,\n\t\t\tcolumnType,\n\t\t\tgenerated: undefined,\n\t\t} as ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>;\n\t}\n\n\t/**\n\t * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n\t *\n\t * @example\n\t * ```ts\n\t * const users = pgTable('users', {\n\t * \tid: integer('id').$type<UserId>().primaryKey(),\n\t * \tdetails: json('details').$type<UserDetails>().notNull(),\n\t * });\n\t * ```\n\t */\n\t$type<TType>(): $Type<this, TType> {\n\t\treturn this as $Type<this, TType>;\n\t}\n\n\t/**\n\t * Adds a `not null` clause to the column definition.\n\t *\n\t * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n\t */\n\tnotNull(): NotNull<this> {\n\t\tthis.config.notNull = true;\n\t\treturn this as NotNull<this>;\n\t}\n\n\t/**\n\t * Adds a `default <value>` clause to the column definition.\n\t *\n\t * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n\t *\n\t * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n\t */\n\tdefault(value: (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL): HasDefault<this> {\n\t\tthis.config.default = value;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Adds a dynamic default value to the column.\n\t * The function will be called when the row is inserted, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$defaultFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasRuntimeDefault<HasDefault<this>> {\n\t\tthis.config.defaultFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasRuntimeDefault<HasDefault<this>>;\n\t}\n\n\t/**\n\t * Alias for {@link $defaultFn}.\n\t */\n\t$default = this.$defaultFn;\n\n\t/**\n\t * Adds a dynamic update value to the column.\n\t * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided.\n\t * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$onUpdateFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasDefault<this> {\n\t\tthis.config.onUpdateFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Alias for {@link $onUpdateFn}.\n\t */\n\t$onUpdate = this.$onUpdateFn;\n\n\t/**\n\t * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n\t *\n\t * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n\t */\n\tprimaryKey(): TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<NotNull<this>>>\n\t\t: IsPrimaryKey<NotNull<this>>\n\t{\n\t\tthis.config.primaryKey = true;\n\t\tthis.config.notNull = true;\n\t\treturn this as TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<NotNull<this>>>\n\t\t\t: IsPrimaryKey<NotNull<this>>;\n\t}\n\n\tabstract generatedAlwaysAs(\n\t\tas: SQL | T['data'] | (() => SQL),\n\t\tconfig?: Partial<GeneratedColumnConfig<unknown>>,\n\t): HasGenerated<this, {\n\t\ttype: 'always';\n\t}>;\n\n\t/** @internal Sets the name of the column to the key within the table definition if a name was not given. */\n\tsetName(name: string) {\n\t\tif (this.config.name !== '') return;\n\t\tthis.config.name = name;\n\t}\n}\n\nexport type BuildColumn<\n\tTTableName extends string,\n\tTBuilder extends ColumnBuilderBase,\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? PgColumn<\n\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t{},\n\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t>\n\t: TDialect extends 'mysql' ? MySqlColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'mysqlColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'mssql' ? MsSqlColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'mssqlColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'sqlite' ? SQLiteColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: TDialect extends 'common' ? Column<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: TDialect extends 'singlestore' ? SingleStoreColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'singlestoreColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'gel' ? GelColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: never;\n\nexport type BuildIndexColumn<\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? ExtraConfigColumn\n\t: TDialect extends 'gel' ? GelExtraConfigColumn\n\t: never;\n\n// TODO\n// try to make sql as well + indexRaw\n\n// optional after everything will be working as expected\n// also try to leave only needed methods for extraConfig\n// make an error if I pass .asc() to fk and so on\n\nexport type BuildColumns<\n\tTTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildColumn<TTableName, {\n\t\t\t_:\n\t\t\t\t& Omit<TConfigMap[Key]['_'], 'name'>\n\t\t\t\t& { name: TConfigMap[Key]['_']['name'] extends '' ? Assume<Key, string> : TConfigMap[Key]['_']['name'] };\n\t\t}, TDialect>;\n\t}\n\t& {};\n\nexport type BuildExtraConfigColumns<\n\t_TTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;\n\t}\n\t& {};\n\nexport type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> =\n\tTDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'mssql' ? MsSqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: never;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAyLpB,MAAe,cAKyB;AAAA,EAC9C,QAAiB,wBAAU,IAAY;AAAA,EAI7B;AAAA,EAEV,YAAY,MAAiB,UAAyB,YAA6B;AAClF,SAAK,SAAS;AAAA,MACb;AAAA,MACA,WAAW,SAAS;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACZ;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,QAAmC;AAClC,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAyB;AACxB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QAAQ,OAA+F;AACtG,SAAK,OAAO,UAAU;AACtB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WACC,IACsC;AACtC,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAShB,YACC,IACmB;AACnB,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjB,aAEA;AACC,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EAER;AAAA;AAAA,EAUA,QAAQ,MAAc;AACrB,QAAI,KAAK,OAAO,SAAS;AAAI;AAC7B,SAAK,OAAO,OAAO;AAAA,EACpB;AACD;","names":[]}
1
+ {"version":3,"sources":["../src/column-builder.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Column } from './column.ts';\nimport type { GelColumn, GelExtraConfigColumn } from './gel-core/index.ts';\nimport type { MySqlColumn } from './mysql-core/index.ts';\nimport type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from './pg-core/index.ts';\nimport type { SingleStoreColumn } from './singlestore-core/index.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { SQLiteColumn } from './sqlite-core/index.ts';\nimport type { Assume, Simplify } from './utils.ts';\n\nexport type ColumnDataType =\n\t| 'string'\n\t| 'number'\n\t| 'boolean'\n\t| 'array'\n\t| 'json'\n\t| 'date'\n\t| 'bigint'\n\t| 'custom'\n\t| 'buffer'\n\t| 'dateDuration'\n\t| 'duration'\n\t| 'relDuration'\n\t| 'localTime'\n\t| 'localDate'\n\t| 'localDateTime';\n\nexport type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'common' | 'gel';\n\nexport type GeneratedStorageMode = 'virtual' | 'stored';\n\nexport type GeneratedType = 'always' | 'byDefault';\n\nexport type GeneratedColumnConfig<TDataType> = {\n\tas: TDataType | SQL | (() => SQL);\n\ttype?: GeneratedType;\n\tmode?: GeneratedStorageMode;\n};\n\nexport type GeneratedIdentityConfig = {\n\tsequenceName?: string;\n\tsequenceOptions?: PgSequenceOptions;\n\ttype: 'always' | 'byDefault';\n};\n\nexport interface ColumnBuilderBaseConfig<TDataType extends ColumnDataType, TColumnType extends string> {\n\tname: string;\n\tdataType: TDataType;\n\tcolumnType: TColumnType;\n\tdata: unknown;\n\tdriverParam: unknown;\n\tenumValues: string[] | undefined;\n}\n\nexport type MakeColumnConfig<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTableName extends string,\n\tTData = T extends { $type: infer U } ? U : T['data'],\n> = {\n\tname: T['name'];\n\ttableName: TTableName;\n\tdataType: T['dataType'];\n\tcolumnType: T['columnType'];\n\tdata: TData;\n\tdriverParam: T['driverParam'];\n\tnotNull: T extends { notNull: true } ? true : false;\n\thasDefault: T extends { hasDefault: true } ? true : false;\n\tisPrimaryKey: T extends { isPrimaryKey: true } ? true : false;\n\tisAutoincrement: T extends { isAutoincrement: true } ? true : false;\n\thasRuntimeDefault: T extends { hasRuntimeDefault: true } ? true : false;\n\tenumValues: T['enumValues'];\n\tbaseColumn: T extends { baseBuilder: infer U extends ColumnBuilderBase } ? BuildColumn<TTableName, U, 'common'>\n\t\t: never;\n\tidentity: T extends { identity: 'always' } ? 'always' : T extends { identity: 'byDefault' } ? 'byDefault' : undefined;\n\tgenerated: T extends { generated: infer G } ? unknown extends G ? undefined\n\t\t: G extends undefined ? undefined\n\t\t: G\n\t\t: undefined;\n} & {};\n\nexport type ColumnBuilderTypeConfig<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> = Simplify<\n\t& {\n\t\tbrand: 'ColumnBuilder';\n\t\tname: T['name'];\n\t\tdataType: T['dataType'];\n\t\tcolumnType: T['columnType'];\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverParam'];\n\t\tnotNull: T extends { notNull: infer U } ? U : boolean;\n\t\thasDefault: T extends { hasDefault: infer U } ? U : boolean;\n\t\tenumValues: T['enumValues'];\n\t\tidentity: T extends { identity: infer U } ? U : unknown;\n\t\tgenerated: T extends { generated: infer G } ? G extends undefined ? unknown : G : unknown;\n\t}\n\t& TTypeConfig\n>;\n\nexport type ColumnBuilderRuntimeConfig<TData, TRuntimeConfig extends object = object> = {\n\tname: string;\n\tkeyAsName: boolean;\n\tnotNull: boolean;\n\tdefault: TData | SQL | undefined;\n\tdefaultFn: (() => TData | SQL) | undefined;\n\tonUpdateFn: (() => TData | SQL) | undefined;\n\thasDefault: boolean;\n\tprimaryKey: boolean;\n\tisUnique: boolean;\n\tuniqueName: string | undefined;\n\tuniqueType: string | undefined;\n\tdataType: string;\n\tcolumnType: string;\n\tgenerated: GeneratedColumnConfig<TData> | undefined;\n\tgeneratedIdentity: GeneratedIdentityConfig | undefined;\n} & TRuntimeConfig;\n\nexport interface ColumnBuilderExtraConfig {\n\tprimaryKeyHasDefault?: boolean;\n}\n\nexport type NotNull<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tnotNull: true;\n\t};\n};\n\nexport type HasDefault<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\thasDefault: true;\n\t};\n};\n\nexport type IsPrimaryKey<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tisPrimaryKey: true;\n\t};\n};\n\nexport type IsAutoincrement<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tisAutoincrement: true;\n\t};\n};\n\nexport type HasRuntimeDefault<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\thasRuntimeDefault: true;\n\t};\n};\n\nexport type $Type<T extends ColumnBuilderBase, TType> = T & {\n\t_: {\n\t\t$type: TType;\n\t};\n};\n\nexport type HasGenerated<T extends ColumnBuilderBase, TGenerated extends {} = {}> = T & {\n\t_: {\n\t\thasDefault: true;\n\t\tgenerated: TGenerated;\n\t};\n};\n\nexport type IsIdentity<\n\tT extends ColumnBuilderBase,\n\tTType extends 'always' | 'byDefault',\n> = T & {\n\t_: {\n\t\tnotNull: true;\n\t\thasDefault: true;\n\t\tidentity: TType;\n\t};\n};\nexport interface ColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> {\n\t_: ColumnBuilderTypeConfig<T, TTypeConfig>;\n}\n\n// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.\nexport abstract class ColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> implements ColumnBuilderBase<T, TTypeConfig> {\n\tstatic readonly [entityKind]: string = 'ColumnBuilder';\n\n\tdeclare _: ColumnBuilderTypeConfig<T, TTypeConfig>;\n\n\tprotected config: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>;\n\n\tconstructor(name: T['name'], dataType: T['dataType'], columnType: T['columnType']) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tkeyAsName: name === '',\n\t\t\tnotNull: false,\n\t\t\tdefault: undefined,\n\t\t\thasDefault: false,\n\t\t\tprimaryKey: false,\n\t\t\tisUnique: false,\n\t\t\tuniqueName: undefined,\n\t\t\tuniqueType: undefined,\n\t\t\tdataType,\n\t\t\tcolumnType,\n\t\t\tgenerated: undefined,\n\t\t} as ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>;\n\t}\n\n\t/**\n\t * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n\t *\n\t * @example\n\t * ```ts\n\t * const users = pgTable('users', {\n\t * \tid: integer('id').$type<UserId>().primaryKey(),\n\t * \tdetails: json('details').$type<UserDetails>().notNull(),\n\t * });\n\t * ```\n\t */\n\t$type<TType>(): $Type<this, TType> {\n\t\treturn this as $Type<this, TType>;\n\t}\n\n\t/**\n\t * Adds a `not null` clause to the column definition.\n\t *\n\t * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n\t */\n\tnotNull(): NotNull<this> {\n\t\tthis.config.notNull = true;\n\t\treturn this as NotNull<this>;\n\t}\n\n\t/**\n\t * Adds a `default <value>` clause to the column definition.\n\t *\n\t * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n\t *\n\t * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n\t */\n\tdefault(value: (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL): HasDefault<this> {\n\t\tthis.config.default = value;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Adds a dynamic default value to the column.\n\t * The function will be called when the row is inserted, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$defaultFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasRuntimeDefault<HasDefault<this>> {\n\t\tthis.config.defaultFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasRuntimeDefault<HasDefault<this>>;\n\t}\n\n\t/**\n\t * Alias for {@link $defaultFn}.\n\t */\n\t$default = this.$defaultFn;\n\n\t/**\n\t * Adds a dynamic update value to the column.\n\t * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided.\n\t * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$onUpdateFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasDefault<this> {\n\t\tthis.config.onUpdateFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Alias for {@link $onUpdateFn}.\n\t */\n\t$onUpdate = this.$onUpdateFn;\n\n\t/**\n\t * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n\t *\n\t * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n\t */\n\tprimaryKey(): TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<NotNull<this>>>\n\t\t: IsPrimaryKey<NotNull<this>>\n\t{\n\t\tthis.config.primaryKey = true;\n\t\tthis.config.notNull = true;\n\t\treturn this as TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<NotNull<this>>>\n\t\t\t: IsPrimaryKey<NotNull<this>>;\n\t}\n\n\tabstract generatedAlwaysAs(\n\t\tas: SQL | T['data'] | (() => SQL),\n\t\tconfig?: Partial<GeneratedColumnConfig<unknown>>,\n\t): HasGenerated<this, {\n\t\ttype: 'always';\n\t}>;\n\n\t/** @internal Sets the name of the column to the key within the table definition if a name was not given. */\n\tsetName(name: string) {\n\t\tif (this.config.name !== '') return;\n\t\tthis.config.name = name;\n\t}\n}\n\nexport type BuildColumn<\n\tTTableName extends string,\n\tTBuilder extends ColumnBuilderBase,\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? PgColumn<\n\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t{},\n\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t>\n\t: TDialect extends 'mysql' ? MySqlColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'mysqlColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'sqlite' ? SQLiteColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: TDialect extends 'common' ? Column<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: TDialect extends 'singlestore' ? SingleStoreColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'singlestoreColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'gel' ? GelColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: never;\n\nexport type BuildIndexColumn<\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? ExtraConfigColumn\n\t: TDialect extends 'gel' ? GelExtraConfigColumn\n\t: never;\n\n// TODO\n// try to make sql as well + indexRaw\n\n// optional after everything will be working as expected\n// also try to leave only needed methods for extraConfig\n// make an error if I pass .asc() to fk and so on\n\nexport type BuildColumns<\n\tTTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildColumn<TTableName, {\n\t\t\t_:\n\t\t\t\t& Omit<TConfigMap[Key]['_'], 'name'>\n\t\t\t\t& { name: TConfigMap[Key]['_']['name'] extends '' ? Assume<Key, string> : TConfigMap[Key]['_']['name'] };\n\t\t}, TDialect>;\n\t}\n\t& {};\n\nexport type BuildExtraConfigColumns<\n\t_TTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;\n\t}\n\t& {};\n\nexport type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> =\n\tTDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: never;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAwLpB,MAAe,cAKyB;AAAA,EAC9C,QAAiB,wBAAU,IAAY;AAAA,EAI7B;AAAA,EAEV,YAAY,MAAiB,UAAyB,YAA6B;AAClF,SAAK,SAAS;AAAA,MACb;AAAA,MACA,WAAW,SAAS;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACZ;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,QAAmC;AAClC,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAyB;AACxB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QAAQ,OAA+F;AACtG,SAAK,OAAO,UAAU;AACtB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WACC,IACsC;AACtC,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAShB,YACC,IACmB;AACnB,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjB,aAEA;AACC,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EAER;AAAA;AAAA,EAUA,QAAQ,MAAc;AACrB,QAAI,KAAK,OAAO,SAAS;AAAI;AAC7B,SAAK,OAAO,OAAO;AAAA,EACpB;AACD;","names":[]}
@@ -1,7 +1,6 @@
1
1
  import { entityKind } from "./entity.cjs";
2
2
  import type { Column } from "./column.cjs";
3
3
  import type { GelColumn, GelExtraConfigColumn } from "./gel-core/index.cjs";
4
- import type { MsSqlColumn } from "./mssql-core/index.cjs";
5
4
  import type { MySqlColumn } from "./mysql-core/index.cjs";
6
5
  import type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from "./pg-core/index.cjs";
7
6
  import type { SingleStoreColumn } from "./singlestore-core/index.cjs";
@@ -9,7 +8,7 @@ import type { SQL } from "./sql/sql.cjs";
9
8
  import type { SQLiteColumn } from "./sqlite-core/index.cjs";
10
9
  import type { Assume, Simplify } from "./utils.cjs";
11
10
  export type ColumnDataType = 'string' | 'number' | 'boolean' | 'array' | 'json' | 'date' | 'bigint' | 'custom' | 'buffer' | 'dateDuration' | 'duration' | 'relDuration' | 'localTime' | 'localDate' | 'localDateTime';
12
- export type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'mssql' | 'common' | 'gel';
11
+ export type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'common' | 'gel';
13
12
  export type GeneratedStorageMode = 'virtual' | 'stored';
14
13
  export type GeneratedType = 'always' | 'byDefault';
15
14
  export type GeneratedColumnConfig<TDataType> = {
@@ -228,7 +227,7 @@ export declare abstract class ColumnBuilder<T extends ColumnBuilderBaseConfig<Co
228
227
  type: 'always';
229
228
  }>;
230
229
  }
231
- export type BuildColumn<TTableName extends string, TBuilder extends ColumnBuilderBase, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'mysqlColumnBuilderBrand'>>> : TDialect extends 'mssql' ? MsSqlColumn<MakeColumnConfig<TBuilder['_'], TTableName>, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'mssqlColumnBuilderBrand'>>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'common' ? Column<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'singlestoreColumnBuilderBrand'>>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : never;
230
+ export type BuildColumn<TTableName extends string, TBuilder extends ColumnBuilderBase, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'mysqlColumnBuilderBrand'>>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'common' ? Column<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'singlestoreColumnBuilderBrand'>>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : never;
232
231
  export type BuildIndexColumn<TDialect extends Dialect> = TDialect extends 'pg' ? ExtraConfigColumn : TDialect extends 'gel' ? GelExtraConfigColumn : never;
233
232
  export type BuildColumns<TTableName extends string, TConfigMap extends Record<string, ColumnBuilderBase>, TDialect extends Dialect> = {
234
233
  [Key in keyof TConfigMap]: BuildColumn<TTableName, {
@@ -240,4 +239,4 @@ export type BuildColumns<TTableName extends string, TConfigMap extends Record<st
240
239
  export type BuildExtraConfigColumns<_TTableName extends string, TConfigMap extends Record<string, ColumnBuilderBase>, TDialect extends Dialect> = {
241
240
  [Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;
242
241
  } & {};
243
- export type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'mssql' ? MsSqlColumn<MakeColumnConfig<TColumn['_'], TAlias>> : never;
242
+ export type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>> : never;
@@ -1,7 +1,6 @@
1
1
  import { entityKind } from "./entity.js";
2
2
  import type { Column } from "./column.js";
3
3
  import type { GelColumn, GelExtraConfigColumn } from "./gel-core/index.js";
4
- import type { MsSqlColumn } from "./mssql-core/index.js";
5
4
  import type { MySqlColumn } from "./mysql-core/index.js";
6
5
  import type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from "./pg-core/index.js";
7
6
  import type { SingleStoreColumn } from "./singlestore-core/index.js";
@@ -9,7 +8,7 @@ import type { SQL } from "./sql/sql.js";
9
8
  import type { SQLiteColumn } from "./sqlite-core/index.js";
10
9
  import type { Assume, Simplify } from "./utils.js";
11
10
  export type ColumnDataType = 'string' | 'number' | 'boolean' | 'array' | 'json' | 'date' | 'bigint' | 'custom' | 'buffer' | 'dateDuration' | 'duration' | 'relDuration' | 'localTime' | 'localDate' | 'localDateTime';
12
- export type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'mssql' | 'common' | 'gel';
11
+ export type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'common' | 'gel';
13
12
  export type GeneratedStorageMode = 'virtual' | 'stored';
14
13
  export type GeneratedType = 'always' | 'byDefault';
15
14
  export type GeneratedColumnConfig<TDataType> = {
@@ -228,7 +227,7 @@ export declare abstract class ColumnBuilder<T extends ColumnBuilderBaseConfig<Co
228
227
  type: 'always';
229
228
  }>;
230
229
  }
231
- export type BuildColumn<TTableName extends string, TBuilder extends ColumnBuilderBase, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'mysqlColumnBuilderBrand'>>> : TDialect extends 'mssql' ? MsSqlColumn<MakeColumnConfig<TBuilder['_'], TTableName>, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'mssqlColumnBuilderBrand'>>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'common' ? Column<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'singlestoreColumnBuilderBrand'>>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : never;
230
+ export type BuildColumn<TTableName extends string, TBuilder extends ColumnBuilderBase, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'mysqlColumnBuilderBrand'>>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'common' ? Column<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect' | 'primaryKeyHasDefault' | 'singlestoreColumnBuilderBrand'>>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TBuilder['_'], TTableName>, {}, Simplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>> : never;
232
231
  export type BuildIndexColumn<TDialect extends Dialect> = TDialect extends 'pg' ? ExtraConfigColumn : TDialect extends 'gel' ? GelExtraConfigColumn : never;
233
232
  export type BuildColumns<TTableName extends string, TConfigMap extends Record<string, ColumnBuilderBase>, TDialect extends Dialect> = {
234
233
  [Key in keyof TConfigMap]: BuildColumn<TTableName, {
@@ -240,4 +239,4 @@ export type BuildColumns<TTableName extends string, TConfigMap extends Record<st
240
239
  export type BuildExtraConfigColumns<_TTableName extends string, TConfigMap extends Record<string, ColumnBuilderBase>, TDialect extends Dialect> = {
241
240
  [Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;
242
241
  } & {};
243
- export type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'mssql' ? MsSqlColumn<MakeColumnConfig<TColumn['_'], TAlias>> : never;
242
+ export type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>> : never;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/column-builder.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Column } from './column.ts';\nimport type { GelColumn, GelExtraConfigColumn } from './gel-core/index.ts';\nimport type { MsSqlColumn } from './mssql-core/index.ts';\nimport type { MySqlColumn } from './mysql-core/index.ts';\nimport type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from './pg-core/index.ts';\nimport type { SingleStoreColumn } from './singlestore-core/index.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { SQLiteColumn } from './sqlite-core/index.ts';\nimport type { Assume, Simplify } from './utils.ts';\n\nexport type ColumnDataType =\n\t| 'string'\n\t| 'number'\n\t| 'boolean'\n\t| 'array'\n\t| 'json'\n\t| 'date'\n\t| 'bigint'\n\t| 'custom'\n\t| 'buffer'\n\t| 'dateDuration'\n\t| 'duration'\n\t| 'relDuration'\n\t| 'localTime'\n\t| 'localDate'\n\t| 'localDateTime';\n\nexport type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'mssql' | 'common' | 'gel';\n\nexport type GeneratedStorageMode = 'virtual' | 'stored';\n\nexport type GeneratedType = 'always' | 'byDefault';\n\nexport type GeneratedColumnConfig<TDataType> = {\n\tas: TDataType | SQL | (() => SQL);\n\ttype?: GeneratedType;\n\tmode?: GeneratedStorageMode;\n};\n\nexport type GeneratedIdentityConfig = {\n\tsequenceName?: string;\n\tsequenceOptions?: PgSequenceOptions;\n\ttype: 'always' | 'byDefault';\n};\n\nexport interface ColumnBuilderBaseConfig<TDataType extends ColumnDataType, TColumnType extends string> {\n\tname: string;\n\tdataType: TDataType;\n\tcolumnType: TColumnType;\n\tdata: unknown;\n\tdriverParam: unknown;\n\tenumValues: string[] | undefined;\n}\n\nexport type MakeColumnConfig<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTableName extends string,\n\tTData = T extends { $type: infer U } ? U : T['data'],\n> = {\n\tname: T['name'];\n\ttableName: TTableName;\n\tdataType: T['dataType'];\n\tcolumnType: T['columnType'];\n\tdata: TData;\n\tdriverParam: T['driverParam'];\n\tnotNull: T extends { notNull: true } ? true : false;\n\thasDefault: T extends { hasDefault: true } ? true : false;\n\tisPrimaryKey: T extends { isPrimaryKey: true } ? true : false;\n\tisAutoincrement: T extends { isAutoincrement: true } ? true : false;\n\thasRuntimeDefault: T extends { hasRuntimeDefault: true } ? true : false;\n\tenumValues: T['enumValues'];\n\tbaseColumn: T extends { baseBuilder: infer U extends ColumnBuilderBase } ? BuildColumn<TTableName, U, 'common'>\n\t\t: never;\n\tidentity: T extends { identity: 'always' } ? 'always' : T extends { identity: 'byDefault' } ? 'byDefault' : undefined;\n\tgenerated: T extends { generated: infer G } ? unknown extends G ? undefined\n\t\t: G extends undefined ? undefined\n\t\t: G\n\t\t: undefined;\n} & {};\n\nexport type ColumnBuilderTypeConfig<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> = Simplify<\n\t& {\n\t\tbrand: 'ColumnBuilder';\n\t\tname: T['name'];\n\t\tdataType: T['dataType'];\n\t\tcolumnType: T['columnType'];\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverParam'];\n\t\tnotNull: T extends { notNull: infer U } ? U : boolean;\n\t\thasDefault: T extends { hasDefault: infer U } ? U : boolean;\n\t\tenumValues: T['enumValues'];\n\t\tidentity: T extends { identity: infer U } ? U : unknown;\n\t\tgenerated: T extends { generated: infer G } ? G extends undefined ? unknown : G : unknown;\n\t}\n\t& TTypeConfig\n>;\n\nexport type ColumnBuilderRuntimeConfig<TData, TRuntimeConfig extends object = object> = {\n\tname: string;\n\tkeyAsName: boolean;\n\tnotNull: boolean;\n\tdefault: TData | SQL | undefined;\n\tdefaultFn: (() => TData | SQL) | undefined;\n\tonUpdateFn: (() => TData | SQL) | undefined;\n\thasDefault: boolean;\n\tprimaryKey: boolean;\n\tisUnique: boolean;\n\tuniqueName: string | undefined;\n\tuniqueType: string | undefined;\n\tdataType: string;\n\tcolumnType: string;\n\tgenerated: GeneratedColumnConfig<TData> | undefined;\n\tgeneratedIdentity: GeneratedIdentityConfig | undefined;\n} & TRuntimeConfig;\n\nexport interface ColumnBuilderExtraConfig {\n\tprimaryKeyHasDefault?: boolean;\n}\n\nexport type NotNull<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tnotNull: true;\n\t};\n};\n\nexport type HasDefault<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\thasDefault: true;\n\t};\n};\n\nexport type IsPrimaryKey<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tisPrimaryKey: true;\n\t};\n};\n\nexport type IsAutoincrement<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tisAutoincrement: true;\n\t};\n};\n\nexport type HasRuntimeDefault<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\thasRuntimeDefault: true;\n\t};\n};\n\nexport type $Type<T extends ColumnBuilderBase, TType> = T & {\n\t_: {\n\t\t$type: TType;\n\t};\n};\n\nexport type HasGenerated<T extends ColumnBuilderBase, TGenerated extends {} = {}> = T & {\n\t_: {\n\t\thasDefault: true;\n\t\tgenerated: TGenerated;\n\t};\n};\n\nexport type IsIdentity<\n\tT extends ColumnBuilderBase,\n\tTType extends 'always' | 'byDefault',\n> = T & {\n\t_: {\n\t\tnotNull: true;\n\t\thasDefault: true;\n\t\tidentity: TType;\n\t};\n};\nexport interface ColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> {\n\t_: ColumnBuilderTypeConfig<T, TTypeConfig>;\n}\n\n// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.\nexport abstract class ColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> implements ColumnBuilderBase<T, TTypeConfig> {\n\tstatic readonly [entityKind]: string = 'ColumnBuilder';\n\n\tdeclare _: ColumnBuilderTypeConfig<T, TTypeConfig>;\n\n\tprotected config: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>;\n\n\tconstructor(name: T['name'], dataType: T['dataType'], columnType: T['columnType']) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tkeyAsName: name === '',\n\t\t\tnotNull: false,\n\t\t\tdefault: undefined,\n\t\t\thasDefault: false,\n\t\t\tprimaryKey: false,\n\t\t\tisUnique: false,\n\t\t\tuniqueName: undefined,\n\t\t\tuniqueType: undefined,\n\t\t\tdataType,\n\t\t\tcolumnType,\n\t\t\tgenerated: undefined,\n\t\t} as ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>;\n\t}\n\n\t/**\n\t * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n\t *\n\t * @example\n\t * ```ts\n\t * const users = pgTable('users', {\n\t * \tid: integer('id').$type<UserId>().primaryKey(),\n\t * \tdetails: json('details').$type<UserDetails>().notNull(),\n\t * });\n\t * ```\n\t */\n\t$type<TType>(): $Type<this, TType> {\n\t\treturn this as $Type<this, TType>;\n\t}\n\n\t/**\n\t * Adds a `not null` clause to the column definition.\n\t *\n\t * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n\t */\n\tnotNull(): NotNull<this> {\n\t\tthis.config.notNull = true;\n\t\treturn this as NotNull<this>;\n\t}\n\n\t/**\n\t * Adds a `default <value>` clause to the column definition.\n\t *\n\t * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n\t *\n\t * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n\t */\n\tdefault(value: (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL): HasDefault<this> {\n\t\tthis.config.default = value;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Adds a dynamic default value to the column.\n\t * The function will be called when the row is inserted, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$defaultFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasRuntimeDefault<HasDefault<this>> {\n\t\tthis.config.defaultFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasRuntimeDefault<HasDefault<this>>;\n\t}\n\n\t/**\n\t * Alias for {@link $defaultFn}.\n\t */\n\t$default = this.$defaultFn;\n\n\t/**\n\t * Adds a dynamic update value to the column.\n\t * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided.\n\t * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$onUpdateFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasDefault<this> {\n\t\tthis.config.onUpdateFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Alias for {@link $onUpdateFn}.\n\t */\n\t$onUpdate = this.$onUpdateFn;\n\n\t/**\n\t * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n\t *\n\t * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n\t */\n\tprimaryKey(): TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<NotNull<this>>>\n\t\t: IsPrimaryKey<NotNull<this>>\n\t{\n\t\tthis.config.primaryKey = true;\n\t\tthis.config.notNull = true;\n\t\treturn this as TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<NotNull<this>>>\n\t\t\t: IsPrimaryKey<NotNull<this>>;\n\t}\n\n\tabstract generatedAlwaysAs(\n\t\tas: SQL | T['data'] | (() => SQL),\n\t\tconfig?: Partial<GeneratedColumnConfig<unknown>>,\n\t): HasGenerated<this, {\n\t\ttype: 'always';\n\t}>;\n\n\t/** @internal Sets the name of the column to the key within the table definition if a name was not given. */\n\tsetName(name: string) {\n\t\tif (this.config.name !== '') return;\n\t\tthis.config.name = name;\n\t}\n}\n\nexport type BuildColumn<\n\tTTableName extends string,\n\tTBuilder extends ColumnBuilderBase,\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? PgColumn<\n\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t{},\n\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t>\n\t: TDialect extends 'mysql' ? MySqlColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'mysqlColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'mssql' ? MsSqlColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'mssqlColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'sqlite' ? SQLiteColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: TDialect extends 'common' ? Column<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: TDialect extends 'singlestore' ? SingleStoreColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'singlestoreColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'gel' ? GelColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: never;\n\nexport type BuildIndexColumn<\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? ExtraConfigColumn\n\t: TDialect extends 'gel' ? GelExtraConfigColumn\n\t: never;\n\n// TODO\n// try to make sql as well + indexRaw\n\n// optional after everything will be working as expected\n// also try to leave only needed methods for extraConfig\n// make an error if I pass .asc() to fk and so on\n\nexport type BuildColumns<\n\tTTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildColumn<TTableName, {\n\t\t\t_:\n\t\t\t\t& Omit<TConfigMap[Key]['_'], 'name'>\n\t\t\t\t& { name: TConfigMap[Key]['_']['name'] extends '' ? Assume<Key, string> : TConfigMap[Key]['_']['name'] };\n\t\t}, TDialect>;\n\t}\n\t& {};\n\nexport type BuildExtraConfigColumns<\n\t_TTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;\n\t}\n\t& {};\n\nexport type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> =\n\tTDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'mssql' ? MsSqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: never;\n"],"mappings":"AAAA,SAAS,kBAAkB;AAyLpB,MAAe,cAKyB;AAAA,EAC9C,QAAiB,UAAU,IAAY;AAAA,EAI7B;AAAA,EAEV,YAAY,MAAiB,UAAyB,YAA6B;AAClF,SAAK,SAAS;AAAA,MACb;AAAA,MACA,WAAW,SAAS;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACZ;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,QAAmC;AAClC,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAyB;AACxB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QAAQ,OAA+F;AACtG,SAAK,OAAO,UAAU;AACtB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WACC,IACsC;AACtC,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAShB,YACC,IACmB;AACnB,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjB,aAEA;AACC,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EAER;AAAA;AAAA,EAUA,QAAQ,MAAc;AACrB,QAAI,KAAK,OAAO,SAAS;AAAI;AAC7B,SAAK,OAAO,OAAO;AAAA,EACpB;AACD;","names":[]}
1
+ {"version":3,"sources":["../src/column-builder.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Column } from './column.ts';\nimport type { GelColumn, GelExtraConfigColumn } from './gel-core/index.ts';\nimport type { MySqlColumn } from './mysql-core/index.ts';\nimport type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from './pg-core/index.ts';\nimport type { SingleStoreColumn } from './singlestore-core/index.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { SQLiteColumn } from './sqlite-core/index.ts';\nimport type { Assume, Simplify } from './utils.ts';\n\nexport type ColumnDataType =\n\t| 'string'\n\t| 'number'\n\t| 'boolean'\n\t| 'array'\n\t| 'json'\n\t| 'date'\n\t| 'bigint'\n\t| 'custom'\n\t| 'buffer'\n\t| 'dateDuration'\n\t| 'duration'\n\t| 'relDuration'\n\t| 'localTime'\n\t| 'localDate'\n\t| 'localDateTime';\n\nexport type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'common' | 'gel';\n\nexport type GeneratedStorageMode = 'virtual' | 'stored';\n\nexport type GeneratedType = 'always' | 'byDefault';\n\nexport type GeneratedColumnConfig<TDataType> = {\n\tas: TDataType | SQL | (() => SQL);\n\ttype?: GeneratedType;\n\tmode?: GeneratedStorageMode;\n};\n\nexport type GeneratedIdentityConfig = {\n\tsequenceName?: string;\n\tsequenceOptions?: PgSequenceOptions;\n\ttype: 'always' | 'byDefault';\n};\n\nexport interface ColumnBuilderBaseConfig<TDataType extends ColumnDataType, TColumnType extends string> {\n\tname: string;\n\tdataType: TDataType;\n\tcolumnType: TColumnType;\n\tdata: unknown;\n\tdriverParam: unknown;\n\tenumValues: string[] | undefined;\n}\n\nexport type MakeColumnConfig<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTableName extends string,\n\tTData = T extends { $type: infer U } ? U : T['data'],\n> = {\n\tname: T['name'];\n\ttableName: TTableName;\n\tdataType: T['dataType'];\n\tcolumnType: T['columnType'];\n\tdata: TData;\n\tdriverParam: T['driverParam'];\n\tnotNull: T extends { notNull: true } ? true : false;\n\thasDefault: T extends { hasDefault: true } ? true : false;\n\tisPrimaryKey: T extends { isPrimaryKey: true } ? true : false;\n\tisAutoincrement: T extends { isAutoincrement: true } ? true : false;\n\thasRuntimeDefault: T extends { hasRuntimeDefault: true } ? true : false;\n\tenumValues: T['enumValues'];\n\tbaseColumn: T extends { baseBuilder: infer U extends ColumnBuilderBase } ? BuildColumn<TTableName, U, 'common'>\n\t\t: never;\n\tidentity: T extends { identity: 'always' } ? 'always' : T extends { identity: 'byDefault' } ? 'byDefault' : undefined;\n\tgenerated: T extends { generated: infer G } ? unknown extends G ? undefined\n\t\t: G extends undefined ? undefined\n\t\t: G\n\t\t: undefined;\n} & {};\n\nexport type ColumnBuilderTypeConfig<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> = Simplify<\n\t& {\n\t\tbrand: 'ColumnBuilder';\n\t\tname: T['name'];\n\t\tdataType: T['dataType'];\n\t\tcolumnType: T['columnType'];\n\t\tdata: T['data'];\n\t\tdriverParam: T['driverParam'];\n\t\tnotNull: T extends { notNull: infer U } ? U : boolean;\n\t\thasDefault: T extends { hasDefault: infer U } ? U : boolean;\n\t\tenumValues: T['enumValues'];\n\t\tidentity: T extends { identity: infer U } ? U : unknown;\n\t\tgenerated: T extends { generated: infer G } ? G extends undefined ? unknown : G : unknown;\n\t}\n\t& TTypeConfig\n>;\n\nexport type ColumnBuilderRuntimeConfig<TData, TRuntimeConfig extends object = object> = {\n\tname: string;\n\tkeyAsName: boolean;\n\tnotNull: boolean;\n\tdefault: TData | SQL | undefined;\n\tdefaultFn: (() => TData | SQL) | undefined;\n\tonUpdateFn: (() => TData | SQL) | undefined;\n\thasDefault: boolean;\n\tprimaryKey: boolean;\n\tisUnique: boolean;\n\tuniqueName: string | undefined;\n\tuniqueType: string | undefined;\n\tdataType: string;\n\tcolumnType: string;\n\tgenerated: GeneratedColumnConfig<TData> | undefined;\n\tgeneratedIdentity: GeneratedIdentityConfig | undefined;\n} & TRuntimeConfig;\n\nexport interface ColumnBuilderExtraConfig {\n\tprimaryKeyHasDefault?: boolean;\n}\n\nexport type NotNull<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tnotNull: true;\n\t};\n};\n\nexport type HasDefault<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\thasDefault: true;\n\t};\n};\n\nexport type IsPrimaryKey<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tisPrimaryKey: true;\n\t};\n};\n\nexport type IsAutoincrement<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\tisAutoincrement: true;\n\t};\n};\n\nexport type HasRuntimeDefault<T extends ColumnBuilderBase> = T & {\n\t_: {\n\t\thasRuntimeDefault: true;\n\t};\n};\n\nexport type $Type<T extends ColumnBuilderBase, TType> = T & {\n\t_: {\n\t\t$type: TType;\n\t};\n};\n\nexport type HasGenerated<T extends ColumnBuilderBase, TGenerated extends {} = {}> = T & {\n\t_: {\n\t\thasDefault: true;\n\t\tgenerated: TGenerated;\n\t};\n};\n\nexport type IsIdentity<\n\tT extends ColumnBuilderBase,\n\tTType extends 'always' | 'byDefault',\n> = T & {\n\t_: {\n\t\tnotNull: true;\n\t\thasDefault: true;\n\t\tidentity: TType;\n\t};\n};\nexport interface ColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTTypeConfig extends object = object,\n> {\n\t_: ColumnBuilderTypeConfig<T, TTypeConfig>;\n}\n\n// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.\nexport abstract class ColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnDataType, string> = ColumnBuilderBaseConfig<ColumnDataType, string>,\n\tTRuntimeConfig extends object = object,\n\tTTypeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> implements ColumnBuilderBase<T, TTypeConfig> {\n\tstatic readonly [entityKind]: string = 'ColumnBuilder';\n\n\tdeclare _: ColumnBuilderTypeConfig<T, TTypeConfig>;\n\n\tprotected config: ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>;\n\n\tconstructor(name: T['name'], dataType: T['dataType'], columnType: T['columnType']) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tkeyAsName: name === '',\n\t\t\tnotNull: false,\n\t\t\tdefault: undefined,\n\t\t\thasDefault: false,\n\t\t\tprimaryKey: false,\n\t\t\tisUnique: false,\n\t\t\tuniqueName: undefined,\n\t\t\tuniqueType: undefined,\n\t\t\tdataType,\n\t\t\tcolumnType,\n\t\t\tgenerated: undefined,\n\t\t} as ColumnBuilderRuntimeConfig<T['data'], TRuntimeConfig>;\n\t}\n\n\t/**\n\t * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n\t *\n\t * @example\n\t * ```ts\n\t * const users = pgTable('users', {\n\t * \tid: integer('id').$type<UserId>().primaryKey(),\n\t * \tdetails: json('details').$type<UserDetails>().notNull(),\n\t * });\n\t * ```\n\t */\n\t$type<TType>(): $Type<this, TType> {\n\t\treturn this as $Type<this, TType>;\n\t}\n\n\t/**\n\t * Adds a `not null` clause to the column definition.\n\t *\n\t * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n\t */\n\tnotNull(): NotNull<this> {\n\t\tthis.config.notNull = true;\n\t\treturn this as NotNull<this>;\n\t}\n\n\t/**\n\t * Adds a `default <value>` clause to the column definition.\n\t *\n\t * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n\t *\n\t * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n\t */\n\tdefault(value: (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL): HasDefault<this> {\n\t\tthis.config.default = value;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Adds a dynamic default value to the column.\n\t * The function will be called when the row is inserted, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$defaultFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasRuntimeDefault<HasDefault<this>> {\n\t\tthis.config.defaultFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasRuntimeDefault<HasDefault<this>>;\n\t}\n\n\t/**\n\t * Alias for {@link $defaultFn}.\n\t */\n\t$default = this.$defaultFn;\n\n\t/**\n\t * Adds a dynamic update value to the column.\n\t * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided.\n\t * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$onUpdateFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasDefault<this> {\n\t\tthis.config.onUpdateFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Alias for {@link $onUpdateFn}.\n\t */\n\t$onUpdate = this.$onUpdateFn;\n\n\t/**\n\t * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n\t *\n\t * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n\t */\n\tprimaryKey(): TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<NotNull<this>>>\n\t\t: IsPrimaryKey<NotNull<this>>\n\t{\n\t\tthis.config.primaryKey = true;\n\t\tthis.config.notNull = true;\n\t\treturn this as TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<NotNull<this>>>\n\t\t\t: IsPrimaryKey<NotNull<this>>;\n\t}\n\n\tabstract generatedAlwaysAs(\n\t\tas: SQL | T['data'] | (() => SQL),\n\t\tconfig?: Partial<GeneratedColumnConfig<unknown>>,\n\t): HasGenerated<this, {\n\t\ttype: 'always';\n\t}>;\n\n\t/** @internal Sets the name of the column to the key within the table definition if a name was not given. */\n\tsetName(name: string) {\n\t\tif (this.config.name !== '') return;\n\t\tthis.config.name = name;\n\t}\n}\n\nexport type BuildColumn<\n\tTTableName extends string,\n\tTBuilder extends ColumnBuilderBase,\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? PgColumn<\n\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t{},\n\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t>\n\t: TDialect extends 'mysql' ? MySqlColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'mysqlColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'sqlite' ? SQLiteColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: TDialect extends 'common' ? Column<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: TDialect extends 'singlestore' ? SingleStoreColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\tTBuilder['_'],\n\t\t\t\t\t| keyof MakeColumnConfig<TBuilder['_'], TTableName>\n\t\t\t\t\t| 'brand'\n\t\t\t\t\t| 'dialect'\n\t\t\t\t\t| 'primaryKeyHasDefault'\n\t\t\t\t\t| 'singlestoreColumnBuilderBrand'\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t: TDialect extends 'gel' ? GelColumn<\n\t\t\tMakeColumnConfig<TBuilder['_'], TTableName>,\n\t\t\t{},\n\t\t\tSimplify<Omit<TBuilder['_'], keyof MakeColumnConfig<TBuilder['_'], TTableName> | 'brand' | 'dialect'>>\n\t\t>\n\t: never;\n\nexport type BuildIndexColumn<\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? ExtraConfigColumn\n\t: TDialect extends 'gel' ? GelExtraConfigColumn\n\t: never;\n\n// TODO\n// try to make sql as well + indexRaw\n\n// optional after everything will be working as expected\n// also try to leave only needed methods for extraConfig\n// make an error if I pass .asc() to fk and so on\n\nexport type BuildColumns<\n\tTTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildColumn<TTableName, {\n\t\t\t_:\n\t\t\t\t& Omit<TConfigMap[Key]['_'], 'name'>\n\t\t\t\t& { name: TConfigMap[Key]['_']['name'] extends '' ? Assume<Key, string> : TConfigMap[Key]['_']['name'] };\n\t\t}, TDialect>;\n\t}\n\t& {};\n\nexport type BuildExtraConfigColumns<\n\t_TTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;\n\t}\n\t& {};\n\nexport type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> =\n\tTDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t\t: never;\n"],"mappings":"AAAA,SAAS,kBAAkB;AAwLpB,MAAe,cAKyB;AAAA,EAC9C,QAAiB,UAAU,IAAY;AAAA,EAI7B;AAAA,EAEV,YAAY,MAAiB,UAAyB,YAA6B;AAClF,SAAK,SAAS;AAAA,MACb;AAAA,MACA,WAAW,SAAS;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACZ;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,QAAmC;AAClC,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAyB;AACxB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QAAQ,OAA+F;AACtG,SAAK,OAAO,UAAU;AACtB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WACC,IACsC;AACtC,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAShB,YACC,IACmB;AACnB,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjB,aAEA;AACC,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EAER;AAAA;AAAA,EAUA,QAAQ,MAAc;AACrB,QAAI,KAAK,OAAO,SAAS;AAAI;AAC7B,SAAK,OAAO,OAAO;AAAA,EACpB;AACD;","names":[]}
package/d1/driver.cjs CHANGED
@@ -54,9 +54,13 @@ function drizzle(client, config = {}) {
54
54
  tableNamesMap: tablesConfig.tableNamesMap
55
55
  };
56
56
  }
57
- const session = new import_session.SQLiteD1Session(client, dialect, schema, { logger });
57
+ const session = new import_session.SQLiteD1Session(client, dialect, schema, { logger, cache: config.cache });
58
58
  const db = new DrizzleD1Database("async", dialect, session, schema);
59
59
  db.$client = client;
60
+ db.$cache = config.cache;
61
+ if (db.$cache) {
62
+ db.$cache["invalidate"] = config.cache?.onMutate;
63
+ }
60
64
  return db;
61
65
  }
62
66
  // Annotate the CommonJS export names for ESM import in node:
package/d1/driver.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/d1/driver.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\nimport type { D1Database as MiniflareD1Database } from '@miniflare/d1';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig, IfNotImported } from '~/utils.ts';\nimport { SQLiteD1Session } from './session.ts';\n\nexport type AnyD1Database = IfNotImported<\n\tD1Database,\n\tMiniflareD1Database,\n\tD1Database | IfNotImported<MiniflareD1Database, never, MiniflareD1Database>\n>;\n\nexport class DrizzleD1Database<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', D1Result, TSchema> {\n\tstatic override readonly [entityKind]: string = 'D1Database';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteD1Session<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends AnyD1Database = AnyD1Database,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): DrizzleD1Database<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new SQLiteAsyncDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new SQLiteD1Session(client as D1Database, dialect, schema, { logger });\n\tconst db = new DrizzleD1Database('async', dialect, session, schema) as DrizzleD1Database<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAA2B;AAC3B,oBAA8B;AAC9B,uBAMO;AACP,gBAAmC;AACnC,qBAAmC;AAEnC,qBAAgC;AAQzB,MAAM,0BAEH,6BAA+C;AAAA,EACxD,QAA0B,wBAAU,IAAY;AAAA,EAKhD,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAIf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,kCAAmB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAChE,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,+BAAgB,QAAsB,SAAS,QAAQ,EAAE,OAAO,CAAC;AACrF,QAAM,KAAK,IAAI,kBAAkB,SAAS,SAAS,SAAS,MAAM;AAClE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/d1/driver.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\nimport type { D1Database as MiniflareD1Database } from '@miniflare/d1';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig, IfNotImported } from '~/utils.ts';\nimport { SQLiteD1Session } from './session.ts';\n\nexport type AnyD1Database = IfNotImported<\n\tD1Database,\n\tMiniflareD1Database,\n\tD1Database | IfNotImported<MiniflareD1Database, never, MiniflareD1Database>\n>;\n\nexport class DrizzleD1Database<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', D1Result, TSchema> {\n\tstatic override readonly [entityKind]: string = 'D1Database';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteD1Session<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends AnyD1Database = AnyD1Database,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): DrizzleD1Database<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new SQLiteAsyncDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new SQLiteD1Session(client as D1Database, dialect, schema, { logger, cache: config.cache });\n\tconst db = new DrizzleD1Database('async', dialect, session, schema) as DrizzleD1Database<TSchema>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAA2B;AAC3B,oBAA8B;AAC9B,uBAMO;AACP,gBAAmC;AACnC,qBAAmC;AAEnC,qBAAgC;AAQzB,MAAM,0BAEH,6BAA+C;AAAA,EACxD,QAA0B,wBAAU,IAAY;AAAA,EAKhD,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAIf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,kCAAmB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAChE,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,+BAAgB,QAAsB,SAAS,QAAQ,EAAE,QAAQ,OAAO,OAAO,MAAM,CAAC;AAC1G,QAAM,KAAK,IAAI,kBAAkB,SAAS,SAAS,SAAS,MAAM;AAClE,EAAO,GAAI,UAAU;AACrB,EAAO,GAAI,SAAS,OAAO;AAC3B,MAAW,GAAI,QAAQ;AACtB,IAAO,GAAI,OAAO,YAAY,IAAI,OAAO,OAAO;AAAA,EACjD;AAEA,SAAO;AACR;","names":[]}
package/d1/driver.js CHANGED
@@ -33,9 +33,13 @@ function drizzle(client, config = {}) {
33
33
  tableNamesMap: tablesConfig.tableNamesMap
34
34
  };
35
35
  }
36
- const session = new SQLiteD1Session(client, dialect, schema, { logger });
36
+ const session = new SQLiteD1Session(client, dialect, schema, { logger, cache: config.cache });
37
37
  const db = new DrizzleD1Database("async", dialect, session, schema);
38
38
  db.$client = client;
39
+ db.$cache = config.cache;
40
+ if (db.$cache) {
41
+ db.$cache["invalidate"] = config.cache?.onMutate;
42
+ }
39
43
  return db;
40
44
  }
41
45
  export {
package/d1/driver.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/d1/driver.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\nimport type { D1Database as MiniflareD1Database } from '@miniflare/d1';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig, IfNotImported } from '~/utils.ts';\nimport { SQLiteD1Session } from './session.ts';\n\nexport type AnyD1Database = IfNotImported<\n\tD1Database,\n\tMiniflareD1Database,\n\tD1Database | IfNotImported<MiniflareD1Database, never, MiniflareD1Database>\n>;\n\nexport class DrizzleD1Database<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', D1Result, TSchema> {\n\tstatic override readonly [entityKind]: string = 'D1Database';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteD1Session<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends AnyD1Database = AnyD1Database,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): DrizzleD1Database<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new SQLiteAsyncDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new SQLiteD1Session(client as D1Database, dialect, schema, { logger });\n\tconst db = new DrizzleD1Database('async', dialect, session, schema) as DrizzleD1Database<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":"AAGA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAIM;AACP,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AAEnC,SAAS,uBAAuB;AAQzB,MAAM,0BAEH,mBAA+C;AAAA,EACxD,QAA0B,UAAU,IAAY;AAAA,EAKhD,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAIf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,mBAAmB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAChE,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,gBAAgB,QAAsB,SAAS,QAAQ,EAAE,OAAO,CAAC;AACrF,QAAM,KAAK,IAAI,kBAAkB,SAAS,SAAS,SAAS,MAAM;AAClE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/d1/driver.ts"],"sourcesContent":["/// <reference types=\"@cloudflare/workers-types\" />\nimport type { D1Database as MiniflareD1Database } from '@miniflare/d1';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig, IfNotImported } from '~/utils.ts';\nimport { SQLiteD1Session } from './session.ts';\n\nexport type AnyD1Database = IfNotImported<\n\tD1Database,\n\tMiniflareD1Database,\n\tD1Database | IfNotImported<MiniflareD1Database, never, MiniflareD1Database>\n>;\n\nexport class DrizzleD1Database<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', D1Result, TSchema> {\n\tstatic override readonly [entityKind]: string = 'D1Database';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteD1Session<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends AnyD1Database = AnyD1Database,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): DrizzleD1Database<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new SQLiteAsyncDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new SQLiteD1Session(client as D1Database, dialect, schema, { logger, cache: config.cache });\n\tconst db = new DrizzleD1Database('async', dialect, session, schema) as DrizzleD1Database<TSchema>;\n\t(<any> db).$client = client;\n\t(<any> db).$cache = config.cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t}\n\n\treturn db as any;\n}\n"],"mappings":"AAGA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAIM;AACP,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AAEnC,SAAS,uBAAuB;AAQzB,MAAM,0BAEH,mBAA+C;AAAA,EACxD,QAA0B,UAAU,IAAY;AAAA,EAKhD,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAIf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,mBAAmB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAChE,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,gBAAgB,QAAsB,SAAS,QAAQ,EAAE,QAAQ,OAAO,OAAO,MAAM,CAAC;AAC1G,QAAM,KAAK,IAAI,kBAAkB,SAAS,SAAS,SAAS,MAAM;AAClE,EAAO,GAAI,UAAU;AACrB,EAAO,GAAI,SAAS,OAAO;AAC3B,MAAW,GAAI,QAAQ;AACtB,IAAO,GAAI,OAAO,YAAY,IAAI,OAAO,OAAO;AAAA,EACjD;AAEA,SAAO;AACR;","names":[]}
package/d1/session.cjs CHANGED
@@ -23,6 +23,7 @@ __export(session_exports, {
23
23
  SQLiteD1Session: () => SQLiteD1Session
24
24
  });
25
25
  module.exports = __toCommonJS(session_exports);
26
+ var import_core = require("../cache/core/index.cjs");
26
27
  var import_entity = require("../entity.cjs");
27
28
  var import_logger = require("../logger.cjs");
28
29
  var import_sql = require("../sql/sql.cjs");
@@ -36,15 +37,20 @@ class SQLiteD1Session extends import_session.SQLiteSession {
36
37
  this.schema = schema;
37
38
  this.options = options;
38
39
  this.logger = options.logger ?? new import_logger.NoopLogger();
40
+ this.cache = options.cache ?? new import_core.NoopCache();
39
41
  }
40
42
  static [import_entity.entityKind] = "SQLiteD1Session";
41
43
  logger;
42
- prepareQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper) {
44
+ cache;
45
+ prepareQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
43
46
  const stmt = this.client.prepare(query.sql);
44
47
  return new D1PreparedQuery(
45
48
  stmt,
46
49
  query,
47
50
  this.logger,
51
+ this.cache,
52
+ queryMetadata,
53
+ cacheConfig,
48
54
  fields,
49
55
  executeMethod,
50
56
  isResponseInArrayMode,
@@ -117,8 +123,8 @@ function d1ToRawMapping(results) {
117
123
  return rows;
118
124
  }
119
125
  class D1PreparedQuery extends import_session.SQLitePreparedQuery {
120
- constructor(stmt, query, logger, fields, executeMethod, _isResponseInArrayMode, customResultMapper) {
121
- super("async", executeMethod, query);
126
+ constructor(stmt, query, logger, cache, queryMetadata, cacheConfig, fields, executeMethod, _isResponseInArrayMode, customResultMapper) {
127
+ super("async", executeMethod, query, cache, queryMetadata, cacheConfig);
122
128
  this.logger = logger;
123
129
  this._isResponseInArrayMode = _isResponseInArrayMode;
124
130
  this.customResultMapper = customResultMapper;
@@ -132,17 +138,21 @@ class D1PreparedQuery extends import_session.SQLitePreparedQuery {
132
138
  fields;
133
139
  /** @internal */
134
140
  stmt;
135
- run(placeholderValues) {
141
+ async run(placeholderValues) {
136
142
  const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
137
143
  this.logger.logQuery(this.query.sql, params);
138
- return this.stmt.bind(...params).run();
144
+ return await this.queryWithCache(this.query.sql, params, async () => {
145
+ return this.stmt.bind(...params).run();
146
+ });
139
147
  }
140
148
  async all(placeholderValues) {
141
149
  const { fields, query, logger, stmt, customResultMapper } = this;
142
150
  if (!fields && !customResultMapper) {
143
151
  const params = (0, import_sql.fillPlaceholders)(query.params, placeholderValues ?? {});
144
152
  logger.logQuery(query.sql, params);
145
- return stmt.bind(...params).all().then(({ results }) => this.mapAllResult(results));
153
+ return await this.queryWithCache(query.sql, params, async () => {
154
+ return stmt.bind(...params).all().then(({ results }) => this.mapAllResult(results));
155
+ });
146
156
  }
147
157
  const rows = await this.values(placeholderValues);
148
158
  return this.mapAllResult(rows);
@@ -164,7 +174,9 @@ class D1PreparedQuery extends import_session.SQLitePreparedQuery {
164
174
  if (!fields && !customResultMapper) {
165
175
  const params = (0, import_sql.fillPlaceholders)(query.params, placeholderValues ?? {});
166
176
  logger.logQuery(query.sql, params);
167
- return stmt.bind(...params).all().then(({ results }) => results[0]);
177
+ return await this.queryWithCache(query.sql, params, async () => {
178
+ return stmt.bind(...params).all().then(({ results }) => results[0]);
179
+ });
168
180
  }
169
181
  const rows = await this.values(placeholderValues);
170
182
  if (!rows[0]) {
@@ -187,10 +199,12 @@ class D1PreparedQuery extends import_session.SQLitePreparedQuery {
187
199
  }
188
200
  return (0, import_utils.mapResultRow)(this.fields, result, this.joinsNotNullableMap);
189
201
  }
190
- values(placeholderValues) {
202
+ async values(placeholderValues) {
191
203
  const params = (0, import_sql.fillPlaceholders)(this.query.params, placeholderValues ?? {});
192
204
  this.logger.logQuery(this.query.sql, params);
193
- return this.stmt.bind(...params).raw();
205
+ return await this.queryWithCache(this.query.sql, params, async () => {
206
+ return this.stmt.bind(...params).raw();
207
+ });
194
208
  }
195
209
  /** @internal */
196
210
  isResponseInArrayMode() {