drizzle-orm 0.36.4-6f7d345 → 0.36.4-7f37974

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 (553) hide show
  1. package/_relations.cjs +328 -0
  2. package/_relations.cjs.map +1 -0
  3. package/_relations.d.cts +215 -0
  4. package/_relations.d.ts +215 -0
  5. package/_relations.js +316 -0
  6. package/_relations.js.map +1 -0
  7. package/alias.cjs.map +1 -1
  8. package/alias.d.cts +3 -3
  9. package/alias.d.ts +3 -3
  10. package/alias.js.map +1 -1
  11. package/aws-data-api/pg/driver.cjs +19 -5
  12. package/aws-data-api/pg/driver.cjs.map +1 -1
  13. package/aws-data-api/pg/driver.d.cts +10 -11
  14. package/aws-data-api/pg/driver.d.ts +10 -11
  15. package/aws-data-api/pg/driver.js +9 -8
  16. package/aws-data-api/pg/driver.js.map +1 -1
  17. package/aws-data-api/pg/migrator.cjs.map +1 -1
  18. package/aws-data-api/pg/migrator.d.cts +2 -1
  19. package/aws-data-api/pg/migrator.d.ts +2 -1
  20. package/aws-data-api/pg/migrator.js.map +1 -1
  21. package/aws-data-api/pg/session.cjs +67 -4
  22. package/aws-data-api/pg/session.cjs.map +1 -1
  23. package/aws-data-api/pg/session.d.cts +13 -8
  24. package/aws-data-api/pg/session.d.ts +13 -8
  25. package/aws-data-api/pg/session.js +67 -4
  26. package/aws-data-api/pg/session.js.map +1 -1
  27. package/better-sqlite3/driver.cjs +12 -5
  28. package/better-sqlite3/driver.cjs.map +1 -1
  29. package/better-sqlite3/driver.d.cts +8 -9
  30. package/better-sqlite3/driver.d.ts +8 -9
  31. package/better-sqlite3/driver.js +12 -8
  32. package/better-sqlite3/driver.js.map +1 -1
  33. package/better-sqlite3/migrator.cjs.map +1 -1
  34. package/better-sqlite3/migrator.d.cts +2 -1
  35. package/better-sqlite3/migrator.d.ts +2 -1
  36. package/better-sqlite3/migrator.js.map +1 -1
  37. package/better-sqlite3/session.cjs +49 -4
  38. package/better-sqlite3/session.cjs.map +1 -1
  39. package/better-sqlite3/session.d.cts +14 -8
  40. package/better-sqlite3/session.d.ts +14 -8
  41. package/better-sqlite3/session.js +49 -4
  42. package/better-sqlite3/session.js.map +1 -1
  43. package/bun-sqlite/driver.cjs +22 -5
  44. package/bun-sqlite/driver.cjs.map +1 -1
  45. package/bun-sqlite/driver.d.cts +8 -9
  46. package/bun-sqlite/driver.d.ts +8 -9
  47. package/bun-sqlite/driver.js +12 -8
  48. package/bun-sqlite/driver.js.map +1 -1
  49. package/bun-sqlite/migrator.cjs.map +1 -1
  50. package/bun-sqlite/migrator.d.cts +2 -1
  51. package/bun-sqlite/migrator.d.ts +2 -1
  52. package/bun-sqlite/migrator.js.map +1 -1
  53. package/bun-sqlite/session.cjs +49 -4
  54. package/bun-sqlite/session.cjs.map +1 -1
  55. package/bun-sqlite/session.d.cts +14 -8
  56. package/bun-sqlite/session.d.ts +14 -8
  57. package/bun-sqlite/session.js +49 -4
  58. package/bun-sqlite/session.js.map +1 -1
  59. package/d1/driver.cjs +22 -5
  60. package/d1/driver.cjs.map +1 -1
  61. package/d1/driver.d.cts +3 -2
  62. package/d1/driver.d.ts +3 -2
  63. package/d1/driver.js +12 -8
  64. package/d1/driver.js.map +1 -1
  65. package/d1/migrator.cjs.map +1 -1
  66. package/d1/migrator.d.cts +2 -1
  67. package/d1/migrator.d.ts +2 -1
  68. package/d1/migrator.js.map +1 -1
  69. package/d1/session.cjs +48 -6
  70. package/d1/session.cjs.map +1 -1
  71. package/d1/session.d.cts +15 -8
  72. package/d1/session.d.ts +15 -8
  73. package/d1/session.js +48 -6
  74. package/d1/session.js.map +1 -1
  75. package/expo-sqlite/driver.cjs +22 -5
  76. package/expo-sqlite/driver.cjs.map +1 -1
  77. package/expo-sqlite/driver.d.cts +3 -2
  78. package/expo-sqlite/driver.d.ts +3 -2
  79. package/expo-sqlite/driver.js +12 -8
  80. package/expo-sqlite/driver.js.map +1 -1
  81. package/expo-sqlite/migrator.cjs.map +1 -1
  82. package/expo-sqlite/migrator.d.cts +3 -2
  83. package/expo-sqlite/migrator.d.ts +3 -2
  84. package/expo-sqlite/migrator.js.map +1 -1
  85. package/expo-sqlite/query.cjs +13 -2
  86. package/expo-sqlite/query.cjs.map +1 -1
  87. package/expo-sqlite/query.d.cts +2 -1
  88. package/expo-sqlite/query.d.ts +2 -1
  89. package/expo-sqlite/query.js +3 -2
  90. package/expo-sqlite/query.js.map +1 -1
  91. package/expo-sqlite/session.cjs +47 -4
  92. package/expo-sqlite/session.cjs.map +1 -1
  93. package/expo-sqlite/session.d.cts +14 -8
  94. package/expo-sqlite/session.d.ts +14 -8
  95. package/expo-sqlite/session.js +47 -4
  96. package/expo-sqlite/session.js.map +1 -1
  97. package/libsql/driver-core.cjs +22 -5
  98. package/libsql/driver-core.cjs.map +1 -1
  99. package/libsql/driver-core.d.cts +2 -1
  100. package/libsql/driver-core.d.ts +2 -1
  101. package/libsql/driver-core.js +12 -8
  102. package/libsql/driver-core.js.map +1 -1
  103. package/libsql/driver.cjs.map +1 -1
  104. package/libsql/driver.d.cts +7 -8
  105. package/libsql/driver.d.ts +7 -8
  106. package/libsql/driver.js.map +1 -1
  107. package/libsql/http/index.cjs.map +1 -1
  108. package/libsql/http/index.d.cts +7 -8
  109. package/libsql/http/index.d.ts +7 -8
  110. package/libsql/http/index.js.map +1 -1
  111. package/libsql/migrator.cjs.map +1 -1
  112. package/libsql/migrator.d.cts +2 -1
  113. package/libsql/migrator.d.ts +2 -1
  114. package/libsql/migrator.js.map +1 -1
  115. package/libsql/node/index.cjs.map +1 -1
  116. package/libsql/node/index.d.cts +7 -8
  117. package/libsql/node/index.d.ts +7 -8
  118. package/libsql/node/index.js.map +1 -1
  119. package/libsql/session.cjs +60 -4
  120. package/libsql/session.cjs.map +1 -1
  121. package/libsql/session.d.cts +15 -9
  122. package/libsql/session.d.ts +15 -9
  123. package/libsql/session.js +60 -4
  124. package/libsql/session.js.map +1 -1
  125. package/libsql/sqlite3/index.cjs.map +1 -1
  126. package/libsql/sqlite3/index.d.cts +7 -8
  127. package/libsql/sqlite3/index.d.ts +7 -8
  128. package/libsql/sqlite3/index.js.map +1 -1
  129. package/libsql/wasm/index.cjs.map +1 -1
  130. package/libsql/wasm/index.d.cts +7 -8
  131. package/libsql/wasm/index.d.ts +7 -8
  132. package/libsql/wasm/index.js.map +1 -1
  133. package/libsql/web/index.cjs.map +1 -1
  134. package/libsql/web/index.d.cts +7 -8
  135. package/libsql/web/index.d.ts +7 -8
  136. package/libsql/web/index.js.map +1 -1
  137. package/libsql/ws/index.cjs.map +1 -1
  138. package/libsql/ws/index.d.cts +7 -8
  139. package/libsql/ws/index.d.ts +7 -8
  140. package/libsql/ws/index.js.map +1 -1
  141. package/mysql-core/db.cjs +29 -8
  142. package/mysql-core/db.cjs.map +1 -1
  143. package/mysql-core/db.d.cts +15 -8
  144. package/mysql-core/db.d.ts +15 -8
  145. package/mysql-core/db.js +28 -7
  146. package/mysql-core/db.js.map +1 -1
  147. package/mysql-core/dialect.cjs +209 -15
  148. package/mysql-core/dialect.cjs.map +1 -1
  149. package/mysql-core/dialect.d.cts +30 -13
  150. package/mysql-core/dialect.d.ts +30 -13
  151. package/mysql-core/dialect.js +201 -23
  152. package/mysql-core/dialect.js.map +1 -1
  153. package/mysql-core/query-builders/_query.cjs +149 -0
  154. package/mysql-core/query-builders/_query.cjs.map +1 -0
  155. package/mysql-core/query-builders/_query.d.cts +44 -0
  156. package/mysql-core/query-builders/_query.d.ts +44 -0
  157. package/mysql-core/query-builders/_query.js +114 -0
  158. package/mysql-core/query-builders/_query.js.map +1 -0
  159. package/mysql-core/query-builders/count.cjs.map +1 -1
  160. package/mysql-core/query-builders/count.d.cts +1 -1
  161. package/mysql-core/query-builders/count.d.ts +1 -1
  162. package/mysql-core/query-builders/count.js.map +1 -1
  163. package/mysql-core/query-builders/query.cjs +18 -31
  164. package/mysql-core/query-builders/query.cjs.map +1 -1
  165. package/mysql-core/query-builders/query.d.cts +8 -10
  166. package/mysql-core/query-builders/query.d.ts +8 -10
  167. package/mysql-core/query-builders/query.js +18 -31
  168. package/mysql-core/query-builders/query.js.map +1 -1
  169. package/mysql-core/session.cjs +3 -2
  170. package/mysql-core/session.cjs.map +1 -1
  171. package/mysql-core/session.d.cts +10 -7
  172. package/mysql-core/session.d.ts +10 -7
  173. package/mysql-core/session.js +3 -2
  174. package/mysql-core/session.js.map +1 -1
  175. package/mysql-proxy/driver.cjs +22 -5
  176. package/mysql-proxy/driver.cjs.map +1 -1
  177. package/mysql-proxy/driver.d.cts +3 -2
  178. package/mysql-proxy/driver.d.ts +3 -2
  179. package/mysql-proxy/driver.js +12 -8
  180. package/mysql-proxy/driver.js.map +1 -1
  181. package/mysql-proxy/migrator.cjs.map +1 -1
  182. package/mysql-proxy/migrator.d.cts +2 -1
  183. package/mysql-proxy/migrator.d.ts +2 -1
  184. package/mysql-proxy/migrator.js.map +1 -1
  185. package/mysql-proxy/session.cjs +47 -2
  186. package/mysql-proxy/session.cjs.map +1 -1
  187. package/mysql-proxy/session.d.cts +13 -8
  188. package/mysql-proxy/session.d.ts +13 -8
  189. package/mysql-proxy/session.js +47 -2
  190. package/mysql-proxy/session.js.map +1 -1
  191. package/mysql2/driver.cjs +24 -7
  192. package/mysql2/driver.cjs.map +1 -1
  193. package/mysql2/driver.d.cts +11 -12
  194. package/mysql2/driver.d.ts +11 -12
  195. package/mysql2/driver.js +14 -10
  196. package/mysql2/driver.js.map +1 -1
  197. package/mysql2/migrator.cjs.map +1 -1
  198. package/mysql2/migrator.d.cts +2 -1
  199. package/mysql2/migrator.d.ts +2 -1
  200. package/mysql2/migrator.js.map +1 -1
  201. package/mysql2/session.cjs +51 -2
  202. package/mysql2/session.cjs.map +1 -1
  203. package/mysql2/session.d.cts +13 -8
  204. package/mysql2/session.d.ts +13 -8
  205. package/mysql2/session.js +51 -2
  206. package/mysql2/session.js.map +1 -1
  207. package/neon-http/driver.cjs +21 -7
  208. package/neon-http/driver.cjs.map +1 -1
  209. package/neon-http/driver.d.cts +11 -12
  210. package/neon-http/driver.d.ts +11 -12
  211. package/neon-http/driver.js +11 -7
  212. package/neon-http/driver.js.map +1 -1
  213. package/neon-http/migrator.cjs.map +1 -1
  214. package/neon-http/migrator.d.cts +2 -1
  215. package/neon-http/migrator.d.ts +2 -1
  216. package/neon-http/migrator.js.map +1 -1
  217. package/neon-http/session.cjs +32 -2
  218. package/neon-http/session.cjs.map +1 -1
  219. package/neon-http/session.d.cts +13 -8
  220. package/neon-http/session.d.ts +13 -8
  221. package/neon-http/session.js +32 -2
  222. package/neon-http/session.js.map +1 -1
  223. package/neon-serverless/driver.cjs +18 -7
  224. package/neon-serverless/driver.cjs.map +1 -1
  225. package/neon-serverless/driver.d.cts +10 -11
  226. package/neon-serverless/driver.d.ts +10 -11
  227. package/neon-serverless/driver.js +8 -10
  228. package/neon-serverless/driver.js.map +1 -1
  229. package/neon-serverless/migrator.cjs.map +1 -1
  230. package/neon-serverless/migrator.d.cts +2 -1
  231. package/neon-serverless/migrator.d.ts +2 -1
  232. package/neon-serverless/migrator.js.map +1 -1
  233. package/neon-serverless/session.cjs +40 -5
  234. package/neon-serverless/session.cjs.map +1 -1
  235. package/neon-serverless/session.d.cts +13 -8
  236. package/neon-serverless/session.d.ts +13 -8
  237. package/neon-serverless/session.js +40 -5
  238. package/neon-serverless/session.js.map +1 -1
  239. package/node-postgres/driver.cjs +13 -7
  240. package/node-postgres/driver.cjs.map +1 -1
  241. package/node-postgres/driver.d.cts +10 -11
  242. package/node-postgres/driver.d.ts +10 -11
  243. package/node-postgres/driver.js +13 -10
  244. package/node-postgres/driver.js.map +1 -1
  245. package/node-postgres/migrator.cjs.map +1 -1
  246. package/node-postgres/migrator.d.cts +2 -1
  247. package/node-postgres/migrator.d.ts +2 -1
  248. package/node-postgres/migrator.js.map +1 -1
  249. package/node-postgres/session.cjs +45 -4
  250. package/node-postgres/session.cjs.map +1 -1
  251. package/node-postgres/session.d.cts +13 -8
  252. package/node-postgres/session.d.ts +13 -8
  253. package/node-postgres/session.js +45 -4
  254. package/node-postgres/session.js.map +1 -1
  255. package/op-sqlite/driver.cjs +22 -5
  256. package/op-sqlite/driver.cjs.map +1 -1
  257. package/op-sqlite/driver.d.cts +3 -2
  258. package/op-sqlite/driver.d.ts +3 -2
  259. package/op-sqlite/driver.js +12 -8
  260. package/op-sqlite/driver.js.map +1 -1
  261. package/op-sqlite/migrator.cjs.map +1 -1
  262. package/op-sqlite/migrator.d.cts +3 -2
  263. package/op-sqlite/migrator.d.ts +3 -2
  264. package/op-sqlite/migrator.js.map +1 -1
  265. package/op-sqlite/session.cjs +47 -4
  266. package/op-sqlite/session.cjs.map +1 -1
  267. package/op-sqlite/session.d.cts +14 -8
  268. package/op-sqlite/session.d.ts +14 -8
  269. package/op-sqlite/session.js +47 -4
  270. package/op-sqlite/session.js.map +1 -1
  271. package/package.json +97 -49
  272. package/pg-core/db.cjs +31 -7
  273. package/pg-core/db.cjs.map +1 -1
  274. package/pg-core/db.d.cts +16 -9
  275. package/pg-core/db.d.ts +16 -9
  276. package/pg-core/db.js +30 -6
  277. package/pg-core/db.js.map +1 -1
  278. package/pg-core/dialect.cjs +143 -488
  279. package/pg-core/dialect.cjs.map +1 -1
  280. package/pg-core/dialect.d.cts +21 -7
  281. package/pg-core/dialect.d.ts +21 -7
  282. package/pg-core/dialect.js +139 -494
  283. package/pg-core/dialect.js.map +1 -1
  284. package/pg-core/query-builders/_query.cjs +155 -0
  285. package/pg-core/query-builders/_query.cjs.map +1 -0
  286. package/pg-core/query-builders/_query.d.cts +47 -0
  287. package/pg-core/query-builders/_query.d.ts +47 -0
  288. package/pg-core/query-builders/_query.js +120 -0
  289. package/pg-core/query-builders/_query.js.map +1 -0
  290. package/pg-core/query-builders/count.cjs.map +1 -1
  291. package/pg-core/query-builders/count.d.cts +1 -1
  292. package/pg-core/query-builders/count.d.ts +1 -1
  293. package/pg-core/query-builders/count.js.map +1 -1
  294. package/pg-core/query-builders/query.cjs +15 -18
  295. package/pg-core/query-builders/query.cjs.map +1 -1
  296. package/pg-core/query-builders/query.d.cts +6 -6
  297. package/pg-core/query-builders/query.d.ts +6 -6
  298. package/pg-core/query-builders/query.js +15 -18
  299. package/pg-core/query-builders/query.js.map +1 -1
  300. package/pg-core/session.cjs +3 -2
  301. package/pg-core/session.cjs.map +1 -1
  302. package/pg-core/session.d.cts +9 -6
  303. package/pg-core/session.d.ts +9 -6
  304. package/pg-core/session.js +3 -2
  305. package/pg-core/session.js.map +1 -1
  306. package/pg-proxy/driver.cjs +21 -5
  307. package/pg-proxy/driver.cjs.map +1 -1
  308. package/pg-proxy/driver.d.cts +3 -2
  309. package/pg-proxy/driver.d.ts +3 -2
  310. package/pg-proxy/driver.js +11 -8
  311. package/pg-proxy/driver.js.map +1 -1
  312. package/pg-proxy/migrator.cjs.map +1 -1
  313. package/pg-proxy/migrator.d.cts +2 -1
  314. package/pg-proxy/migrator.d.ts +2 -1
  315. package/pg-proxy/migrator.js.map +1 -1
  316. package/pg-proxy/session.cjs +37 -2
  317. package/pg-proxy/session.cjs.map +1 -1
  318. package/pg-proxy/session.d.cts +13 -8
  319. package/pg-proxy/session.d.ts +13 -8
  320. package/pg-proxy/session.js +37 -2
  321. package/pg-proxy/session.js.map +1 -1
  322. package/pglite/driver.cjs +23 -7
  323. package/pglite/driver.cjs.map +1 -1
  324. package/pglite/driver.d.cts +10 -11
  325. package/pglite/driver.d.ts +10 -11
  326. package/pglite/driver.js +13 -10
  327. package/pglite/driver.js.map +1 -1
  328. package/pglite/migrator.cjs.map +1 -1
  329. package/pglite/migrator.d.cts +2 -1
  330. package/pglite/migrator.d.ts +2 -1
  331. package/pglite/migrator.js.map +1 -1
  332. package/pglite/session.cjs +34 -3
  333. package/pglite/session.cjs.map +1 -1
  334. package/pglite/session.d.cts +13 -8
  335. package/pglite/session.d.ts +13 -8
  336. package/pglite/session.js +34 -3
  337. package/pglite/session.js.map +1 -1
  338. package/planetscale-serverless/driver.cjs +22 -5
  339. package/planetscale-serverless/driver.cjs.map +1 -1
  340. package/planetscale-serverless/driver.d.cts +8 -9
  341. package/planetscale-serverless/driver.d.ts +8 -9
  342. package/planetscale-serverless/driver.js +12 -8
  343. package/planetscale-serverless/driver.js.map +1 -1
  344. package/planetscale-serverless/migrator.cjs.map +1 -1
  345. package/planetscale-serverless/migrator.d.cts +2 -1
  346. package/planetscale-serverless/migrator.d.ts +2 -1
  347. package/planetscale-serverless/migrator.js.map +1 -1
  348. package/planetscale-serverless/session.cjs +68 -5
  349. package/planetscale-serverless/session.cjs.map +1 -1
  350. package/planetscale-serverless/session.d.cts +14 -9
  351. package/planetscale-serverless/session.d.ts +14 -9
  352. package/planetscale-serverless/session.js +68 -5
  353. package/planetscale-serverless/session.js.map +1 -1
  354. package/postgres-js/driver.cjs +12 -6
  355. package/postgres-js/driver.cjs.map +1 -1
  356. package/postgres-js/driver.d.cts +8 -9
  357. package/postgres-js/driver.d.ts +8 -9
  358. package/postgres-js/driver.js +12 -9
  359. package/postgres-js/driver.js.map +1 -1
  360. package/postgres-js/migrator.cjs.map +1 -1
  361. package/postgres-js/migrator.d.cts +2 -1
  362. package/postgres-js/migrator.d.ts +2 -1
  363. package/postgres-js/migrator.js.map +1 -1
  364. package/postgres-js/session.cjs +51 -6
  365. package/postgres-js/session.cjs.map +1 -1
  366. package/postgres-js/session.d.cts +15 -9
  367. package/postgres-js/session.d.ts +15 -9
  368. package/postgres-js/session.js +51 -6
  369. package/postgres-js/session.js.map +1 -1
  370. package/prisma/mysql/driver.cjs +1 -1
  371. package/prisma/mysql/driver.cjs.map +1 -1
  372. package/prisma/mysql/driver.js +1 -1
  373. package/prisma/mysql/driver.js.map +1 -1
  374. package/prisma/mysql/session.cjs +3 -0
  375. package/prisma/mysql/session.cjs.map +1 -1
  376. package/prisma/mysql/session.d.cts +3 -1
  377. package/prisma/mysql/session.d.ts +3 -1
  378. package/prisma/mysql/session.js +3 -0
  379. package/prisma/mysql/session.js.map +1 -1
  380. package/prisma/pg/driver.cjs +1 -1
  381. package/prisma/pg/driver.cjs.map +1 -1
  382. package/prisma/pg/driver.js +1 -1
  383. package/prisma/pg/driver.js.map +1 -1
  384. package/prisma/pg/session.cjs +3 -0
  385. package/prisma/pg/session.cjs.map +1 -1
  386. package/prisma/pg/session.d.cts +3 -1
  387. package/prisma/pg/session.d.ts +3 -1
  388. package/prisma/pg/session.js +3 -0
  389. package/prisma/pg/session.js.map +1 -1
  390. package/prisma/sqlite/driver.cjs +1 -1
  391. package/prisma/sqlite/driver.cjs.map +1 -1
  392. package/prisma/sqlite/driver.js +1 -1
  393. package/prisma/sqlite/driver.js.map +1 -1
  394. package/prisma/sqlite/session.cjs +3 -0
  395. package/prisma/sqlite/session.cjs.map +1 -1
  396. package/prisma/sqlite/session.d.cts +4 -2
  397. package/prisma/sqlite/session.d.ts +4 -2
  398. package/prisma/sqlite/session.js +3 -0
  399. package/prisma/sqlite/session.js.map +1 -1
  400. package/relations.cjs +466 -245
  401. package/relations.cjs.map +1 -1
  402. package/relations.d.cts +258 -124
  403. package/relations.d.ts +258 -124
  404. package/relations.js +453 -238
  405. package/relations.js.map +1 -1
  406. package/sql/sql.cjs.map +1 -1
  407. package/sql/sql.d.cts +4 -4
  408. package/sql/sql.d.ts +4 -4
  409. package/sql/sql.js.map +1 -1
  410. package/sql-js/driver.cjs +16 -5
  411. package/sql-js/driver.cjs.map +1 -1
  412. package/sql-js/driver.d.cts +3 -2
  413. package/sql-js/driver.d.ts +3 -2
  414. package/sql-js/driver.js +6 -8
  415. package/sql-js/driver.js.map +1 -1
  416. package/sql-js/migrator.cjs.map +1 -1
  417. package/sql-js/migrator.d.cts +2 -1
  418. package/sql-js/migrator.d.ts +2 -1
  419. package/sql-js/migrator.js.map +1 -1
  420. package/sql-js/session.cjs +58 -4
  421. package/sql-js/session.cjs.map +1 -1
  422. package/sql-js/session.d.cts +14 -8
  423. package/sql-js/session.d.ts +14 -8
  424. package/sql-js/session.js +58 -4
  425. package/sql-js/session.js.map +1 -1
  426. package/sqlite-core/db.cjs +35 -14
  427. package/sqlite-core/db.cjs.map +1 -1
  428. package/sqlite-core/db.d.cts +15 -8
  429. package/sqlite-core/db.d.ts +15 -8
  430. package/sqlite-core/db.js +34 -13
  431. package/sqlite-core/db.js.map +1 -1
  432. package/sqlite-core/dialect.cjs +209 -7
  433. package/sqlite-core/dialect.cjs.map +1 -1
  434. package/sqlite-core/dialect.d.cts +26 -9
  435. package/sqlite-core/dialect.d.ts +26 -9
  436. package/sqlite-core/dialect.js +205 -13
  437. package/sqlite-core/dialect.js.map +1 -1
  438. package/sqlite-core/query-builders/_query.cjs +187 -0
  439. package/sqlite-core/query-builders/_query.cjs.map +1 -0
  440. package/sqlite-core/query-builders/_query.d.cts +55 -0
  441. package/sqlite-core/query-builders/_query.d.ts +55 -0
  442. package/sqlite-core/query-builders/_query.js +151 -0
  443. package/sqlite-core/query-builders/_query.js.map +1 -0
  444. package/sqlite-core/query-builders/count.cjs.map +1 -1
  445. package/sqlite-core/query-builders/count.d.cts +1 -1
  446. package/sqlite-core/query-builders/count.d.ts +1 -1
  447. package/sqlite-core/query-builders/count.js.map +1 -1
  448. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  449. package/sqlite-core/query-builders/delete.d.cts +1 -1
  450. package/sqlite-core/query-builders/delete.d.ts +1 -1
  451. package/sqlite-core/query-builders/delete.js.map +1 -1
  452. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  453. package/sqlite-core/query-builders/insert.d.cts +3 -3
  454. package/sqlite-core/query-builders/insert.d.ts +3 -3
  455. package/sqlite-core/query-builders/insert.js.map +1 -1
  456. package/sqlite-core/query-builders/query.cjs +30 -48
  457. package/sqlite-core/query-builders/query.cjs.map +1 -1
  458. package/sqlite-core/query-builders/query.d.cts +14 -16
  459. package/sqlite-core/query-builders/query.d.ts +14 -16
  460. package/sqlite-core/query-builders/query.js +30 -48
  461. package/sqlite-core/query-builders/query.js.map +1 -1
  462. package/sqlite-core/query-builders/select.cjs.map +1 -1
  463. package/sqlite-core/query-builders/select.d.cts +3 -3
  464. package/sqlite-core/query-builders/select.d.ts +3 -3
  465. package/sqlite-core/query-builders/select.js.map +1 -1
  466. package/sqlite-core/query-builders/update.cjs.map +1 -1
  467. package/sqlite-core/query-builders/update.d.cts +3 -3
  468. package/sqlite-core/query-builders/update.d.ts +3 -3
  469. package/sqlite-core/query-builders/update.js.map +1 -1
  470. package/sqlite-core/session.cjs +6 -2
  471. package/sqlite-core/session.cjs.map +1 -1
  472. package/sqlite-core/session.d.cts +14 -6
  473. package/sqlite-core/session.d.ts +14 -6
  474. package/sqlite-core/session.js +6 -2
  475. package/sqlite-core/session.js.map +1 -1
  476. package/sqlite-proxy/driver.cjs +22 -5
  477. package/sqlite-proxy/driver.cjs.map +1 -1
  478. package/sqlite-proxy/driver.d.cts +4 -3
  479. package/sqlite-proxy/driver.d.ts +4 -3
  480. package/sqlite-proxy/driver.js +12 -5
  481. package/sqlite-proxy/driver.js.map +1 -1
  482. package/sqlite-proxy/migrator.cjs.map +1 -1
  483. package/sqlite-proxy/migrator.d.cts +2 -1
  484. package/sqlite-proxy/migrator.d.ts +2 -1
  485. package/sqlite-proxy/migrator.js.map +1 -1
  486. package/sqlite-proxy/session.cjs +47 -4
  487. package/sqlite-proxy/session.cjs.map +1 -1
  488. package/sqlite-proxy/session.d.cts +14 -8
  489. package/sqlite-proxy/session.d.ts +14 -8
  490. package/sqlite-proxy/session.js +47 -4
  491. package/sqlite-proxy/session.js.map +1 -1
  492. package/table.cjs.map +1 -1
  493. package/table.d.cts +1 -1
  494. package/table.d.ts +1 -1
  495. package/table.js.map +1 -1
  496. package/tidb-serverless/driver.cjs +22 -5
  497. package/tidb-serverless/driver.cjs.map +1 -1
  498. package/tidb-serverless/driver.d.cts +8 -9
  499. package/tidb-serverless/driver.d.ts +8 -9
  500. package/tidb-serverless/driver.js +12 -8
  501. package/tidb-serverless/driver.js.map +1 -1
  502. package/tidb-serverless/migrator.cjs.map +1 -1
  503. package/tidb-serverless/migrator.d.cts +2 -1
  504. package/tidb-serverless/migrator.d.ts +2 -1
  505. package/tidb-serverless/migrator.js.map +1 -1
  506. package/tidb-serverless/session.cjs +62 -5
  507. package/tidb-serverless/session.cjs.map +1 -1
  508. package/tidb-serverless/session.d.cts +14 -9
  509. package/tidb-serverless/session.d.ts +14 -9
  510. package/tidb-serverless/session.js +62 -5
  511. package/tidb-serverless/session.js.map +1 -1
  512. package/utils.cjs +2 -2
  513. package/utils.cjs.map +1 -1
  514. package/utils.d.cts +3 -1
  515. package/utils.d.ts +3 -1
  516. package/utils.js +2 -2
  517. package/utils.js.map +1 -1
  518. package/vercel-postgres/driver.cjs +23 -7
  519. package/vercel-postgres/driver.cjs.map +1 -1
  520. package/vercel-postgres/driver.d.cts +11 -13
  521. package/vercel-postgres/driver.d.ts +11 -13
  522. package/vercel-postgres/driver.js +13 -10
  523. package/vercel-postgres/driver.js.map +1 -1
  524. package/vercel-postgres/migrator.cjs.map +1 -1
  525. package/vercel-postgres/migrator.d.cts +2 -1
  526. package/vercel-postgres/migrator.d.ts +2 -1
  527. package/vercel-postgres/migrator.js.map +1 -1
  528. package/vercel-postgres/session.cjs +34 -4
  529. package/vercel-postgres/session.cjs.map +1 -1
  530. package/vercel-postgres/session.d.cts +13 -8
  531. package/vercel-postgres/session.d.ts +13 -8
  532. package/vercel-postgres/session.js +34 -4
  533. package/vercel-postgres/session.js.map +1 -1
  534. package/version.cjs +1 -1
  535. package/version.d.cts +1 -1
  536. package/version.d.ts +1 -1
  537. package/version.js +1 -1
  538. package/xata-http/driver.cjs +17 -5
  539. package/xata-http/driver.cjs.map +1 -1
  540. package/xata-http/driver.d.cts +5 -4
  541. package/xata-http/driver.d.ts +5 -4
  542. package/xata-http/driver.js +7 -5
  543. package/xata-http/driver.js.map +1 -1
  544. package/xata-http/migrator.cjs.map +1 -1
  545. package/xata-http/migrator.d.cts +2 -1
  546. package/xata-http/migrator.d.ts +2 -1
  547. package/xata-http/migrator.js.map +1 -1
  548. package/xata-http/session.cjs +30 -2
  549. package/xata-http/session.cjs.map +1 -1
  550. package/xata-http/session.d.cts +13 -8
  551. package/xata-http/session.d.ts +13 -8
  552. package/xata-http/session.js +30 -2
  553. package/xata-http/session.js.map +1 -1
package/relations.cjs CHANGED
@@ -18,311 +18,532 @@ var __copyProps = (to, from, except, desc2) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var relations_exports = {};
20
20
  __export(relations_exports, {
21
+ AggregatedField: () => AggregatedField,
22
+ Count: () => Count,
21
23
  Many: () => Many,
22
24
  One: () => One,
23
25
  Relation: () => Relation,
24
26
  Relations: () => Relations,
25
- createMany: () => createMany,
26
- createOne: () => createOne,
27
- createTableRelationsHelpers: () => createTableRelationsHelpers,
28
- extractTablesRelationalConfig: () => extractTablesRelationalConfig,
29
- getOperators: () => getOperators,
27
+ RelationsBuilderColumn: () => RelationsBuilderColumn,
28
+ RelationsBuilderTable: () => RelationsBuilderTable,
29
+ RelationsHelperStatic: () => RelationsHelperStatic,
30
+ createRelationsHelper: () => createRelationsHelper,
31
+ defineRelations: () => defineRelations,
30
32
  getOrderByOperators: () => getOrderByOperators,
31
33
  mapRelationalRow: () => mapRelationalRow,
32
- normalizeRelation: () => normalizeRelation,
33
- relations: () => relations
34
+ operators: () => operators,
35
+ orderByOperators: () => orderByOperators,
36
+ relationExtrasToSQL: () => relationExtrasToSQL,
37
+ relationFilterToSQL: () => relationFilterToSQL,
38
+ relationToSQL: () => relationToSQL,
39
+ relationsOrderToSQL: () => relationsOrderToSQL
34
40
  });
35
41
  module.exports = __toCommonJS(relations_exports);
36
42
  var import_table = require("./table.cjs");
43
+ var import_table2 = require("./table.cjs");
37
44
  var import_column = require("./column.cjs");
38
45
  var import_entity = require("./entity.cjs");
39
46
  var import_primary_keys = require("./pg-core/primary-keys.cjs");
40
47
  var import_expressions = require("./sql/expressions/index.cjs");
41
48
  var import_sql = require("./sql/sql.cjs");
49
+ var import_utils = require("./utils.cjs");
50
+ class Relations {
51
+ constructor(schema, tables, config) {
52
+ this.schema = schema;
53
+ this.tables = tables;
54
+ this.config = config;
55
+ for (const [tsName, table] of Object.entries(tables)) {
56
+ this.tableNamesMap[(0, import_table.getTableUniqueName)(table)] = tsName;
57
+ const tableConfig = this.tablesConfig[tsName] = {
58
+ table,
59
+ tsName,
60
+ dbName: table[import_table.Table.Symbol.Name],
61
+ schema: table[import_table.Table.Symbol.Schema],
62
+ columns: table[import_table.Table.Symbol.Columns],
63
+ relations: config[tsName] || {},
64
+ primaryKey: []
65
+ };
66
+ for (const column of Object.values(table[import_table.Table.Symbol.Columns])) {
67
+ if (column.primary) {
68
+ tableConfig.primaryKey.push(column);
69
+ }
70
+ }
71
+ const extraConfig = table[import_table.Table.Symbol.ExtraConfigBuilder]?.(table);
72
+ if (extraConfig) {
73
+ for (const configEntry of Object.values(extraConfig)) {
74
+ if ((0, import_entity.is)(configEntry, import_primary_keys.PrimaryKeyBuilder)) {
75
+ tableConfig.primaryKey.push(...configEntry.columns);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ for (const tableConfig of Object.values(this.tablesConfig)) {
81
+ for (const [relationFieldName, relation] of Object.entries(tableConfig.relations)) {
82
+ if (!(0, import_entity.is)(relation, Relation)) {
83
+ continue;
84
+ }
85
+ relation.sourceTable = tableConfig.table;
86
+ relation.fieldName = relationFieldName;
87
+ }
88
+ }
89
+ for (const tableConfig of Object.values(this.tablesConfig)) {
90
+ for (const [relationFieldName, relation] of Object.entries(tableConfig.relations)) {
91
+ const relationPrintName = `relations -> ${tableConfig.tsName}.${relationFieldName}`;
92
+ if (!(0, import_entity.is)(relation, Relation)) {
93
+ continue;
94
+ }
95
+ if (typeof relation.alias === "string" && !relation.alias) {
96
+ throw new Error(`${relationPrintName}: "alias" cannot be an empty string - omit it if you don't need it`);
97
+ }
98
+ if (relation.sourceColumns?.length === 0) {
99
+ throw new Error(`${relationPrintName}: "from" cannot be an empty array`);
100
+ }
101
+ if (relation.targetColumns?.length === 0) {
102
+ throw new Error(`${relationPrintName}: "to" cannot be an empty array`);
103
+ }
104
+ if (relation.sourceColumns && relation.targetColumns) {
105
+ if (relation.sourceColumns.length !== relation.targetColumns.length) {
106
+ throw new Error(
107
+ `${relationPrintName}: "from" and "to" arrays must have the same length`
108
+ );
109
+ }
110
+ continue;
111
+ }
112
+ if (relation.sourceColumns || relation.targetColumns) {
113
+ throw new Error(
114
+ `${relationPrintName}: relation must have either both "from" and "to" defined, or none of them`
115
+ );
116
+ }
117
+ let reverseRelation;
118
+ const targetTableTsName = this.tableNamesMap[(0, import_table.getTableUniqueName)(relation.targetTable)];
119
+ if (!targetTableTsName) {
120
+ throw new Error(
121
+ `Table "${(0, import_table.getTableUniqueName)(relation.targetTable)}" not found in provided TS schema`
122
+ );
123
+ }
124
+ const reverseTableConfig = this.tablesConfig[targetTableTsName];
125
+ if (!reverseTableConfig) {
126
+ throw new Error(
127
+ `${relationPrintName}: not enough data provided to build the relation - "from"/"to" are not defined, and no reverse relations of table "${targetTableTsName}" were found"`
128
+ );
129
+ }
130
+ if (relation.alias) {
131
+ const reverseRelations = Object.values(reverseTableConfig.relations).filter(
132
+ (it) => (0, import_entity.is)(it, Relation) && it.alias === relation.alias
133
+ );
134
+ if (reverseRelations.length > 1) {
135
+ throw new Error(
136
+ `${relationPrintName}: not enough data provided to build the relation - "from"/"to" are not defined, and multiple relations with alias "${relation.alias}" found in table "${targetTableTsName}": ${reverseRelations.map((it) => `"${it.fieldName}"`).join(", ")}`
137
+ );
138
+ }
139
+ reverseRelation = reverseRelations[0];
140
+ if (!reverseRelation) {
141
+ throw new Error(
142
+ `${relationPrintName}: not enough data provided to build the relation - "from"/"to" are not defined, and there is no reverse relation of table "${targetTableTsName}" with alias "${relation.alias}"`
143
+ );
144
+ }
145
+ } else {
146
+ const reverseRelations = Object.values(reverseTableConfig.relations).filter(
147
+ (it) => (0, import_entity.is)(it, Relation) && it.targetTable === relation.sourceTable && !it.alias
148
+ );
149
+ if (reverseRelations.length > 1) {
150
+ throw new Error(
151
+ `${relationPrintName}: not enough data provided to build the relation - "from"/"to" are not defined, and multiple relations between "${targetTableTsName}" and "${(0, import_table.getTableUniqueName)(relation.sourceTable)}" were found.
152
+ Hint: you can specify "alias" on both sides of the relation with the same value`
153
+ );
154
+ }
155
+ reverseRelation = reverseRelations[0];
156
+ if (!reverseRelation) {
157
+ throw new Error(
158
+ `${relationPrintName}: not enough data provided to build the relation - "from"/"to" are not defined, and no reverse relation of table "${targetTableTsName}" with target table "${(0, import_table.getTableUniqueName)(relation.sourceTable)}" was found`
159
+ );
160
+ }
161
+ }
162
+ if (!reverseRelation.sourceColumns || !reverseRelation.targetColumns) {
163
+ throw new Error(
164
+ `${relationPrintName}: not enough data provided to build the relation - "from"/"to" are not defined, and reverse relation "${targetTableTsName}.${reverseRelation.fieldName}" does not have "from"/"to" defined`
165
+ );
166
+ }
167
+ relation.sourceColumns = reverseRelation.targetColumns;
168
+ relation.targetColumns = reverseRelation.sourceColumns;
169
+ relation.where = reverseRelation.where;
170
+ }
171
+ }
172
+ }
173
+ static [import_entity.entityKind] = "RelationsV2";
174
+ /** table DB name -> schema table key */
175
+ tableNamesMap = {};
176
+ tablesConfig = {};
177
+ }
42
178
  class Relation {
43
- constructor(sourceTable, referencedTable, relationName) {
44
- this.sourceTable = sourceTable;
45
- this.referencedTable = referencedTable;
46
- this.relationName = relationName;
47
- this.referencedTableName = referencedTable[import_table.Table.Symbol.Name];
179
+ constructor(targetTable) {
180
+ this.targetTable = targetTable;
48
181
  }
49
182
  static [import_entity.entityKind] = "Relation";
50
- referencedTableName;
51
183
  fieldName;
52
- }
53
- class Relations {
54
- constructor(table, config) {
55
- this.table = table;
56
- this.config = config;
57
- }
58
- static [import_entity.entityKind] = "Relations";
184
+ sourceColumns;
185
+ targetColumns;
186
+ alias;
187
+ where;
188
+ sourceTable;
59
189
  }
60
190
  class One extends Relation {
61
- constructor(sourceTable, referencedTable, config, isNullable) {
62
- super(sourceTable, referencedTable, config?.relationName);
63
- this.config = config;
64
- this.isNullable = isNullable;
65
- }
66
191
  static [import_entity.entityKind] = "One";
67
- withFieldName(fieldName) {
68
- const relation = new One(
69
- this.sourceTable,
70
- this.referencedTable,
71
- this.config,
72
- this.isNullable
73
- );
74
- relation.fieldName = fieldName;
75
- return relation;
192
+ optional;
193
+ constructor(targetTable, config) {
194
+ super(targetTable);
195
+ this.alias = config?.alias;
196
+ this.where = config?.where;
197
+ if (config?.from) {
198
+ this.sourceColumns = Array.isArray(config.from) ? config.from.map((it) => it._.column) : [config.from._.column];
199
+ }
200
+ if (config?.to) {
201
+ this.targetColumns = Array.isArray(config.to) ? config.to.map((it) => it._.column) : [config.to._.column];
202
+ }
203
+ this.optional = config?.optional ?? false;
76
204
  }
77
205
  }
78
206
  class Many extends Relation {
79
- constructor(sourceTable, referencedTable, config) {
80
- super(sourceTable, referencedTable, config?.relationName);
207
+ constructor(targetTable, config) {
208
+ super(targetTable);
81
209
  this.config = config;
210
+ this.alias = config?.alias;
211
+ this.where = config?.where;
212
+ if (config?.from) {
213
+ this.sourceColumns = Array.isArray(config.from) ? config.from.map((it) => it._.column) : [config.from._.column];
214
+ }
215
+ if (config?.to) {
216
+ this.targetColumns = Array.isArray(config.to) ? config.to.map((it) => it._.column) : [config.to._.column];
217
+ }
82
218
  }
83
219
  static [import_entity.entityKind] = "Many";
84
- withFieldName(fieldName) {
85
- const relation = new Many(
86
- this.sourceTable,
87
- this.referencedTable,
88
- this.config
89
- );
90
- relation.fieldName = fieldName;
91
- return relation;
220
+ }
221
+ class AggregatedField {
222
+ static [import_entity.entityKind] = "AggregatedField";
223
+ table;
224
+ onTable(table) {
225
+ this.table = table;
226
+ return this;
92
227
  }
93
228
  }
94
- function getOperators() {
95
- return {
96
- and: import_expressions.and,
97
- between: import_expressions.between,
98
- eq: import_expressions.eq,
99
- exists: import_expressions.exists,
100
- gt: import_expressions.gt,
101
- gte: import_expressions.gte,
102
- ilike: import_expressions.ilike,
103
- inArray: import_expressions.inArray,
104
- isNull: import_expressions.isNull,
105
- isNotNull: import_expressions.isNotNull,
106
- like: import_expressions.like,
107
- lt: import_expressions.lt,
108
- lte: import_expressions.lte,
109
- ne: import_expressions.ne,
110
- not: import_expressions.not,
111
- notBetween: import_expressions.notBetween,
112
- notExists: import_expressions.notExists,
113
- notLike: import_expressions.notLike,
114
- notIlike: import_expressions.notIlike,
115
- notInArray: import_expressions.notInArray,
116
- or: import_expressions.or,
117
- sql: import_sql.sql
118
- };
229
+ class Count extends AggregatedField {
230
+ static [import_entity.entityKind] = "Count";
231
+ query;
232
+ getSQL() {
233
+ if (!this.query) {
234
+ if (!this.table)
235
+ throw new Error("Table must be set before building aggregate field");
236
+ this.query = import_sql.sql`select count(*) as ${import_sql.sql.identifier("count")} from ${this.table}`.mapWith(Number);
237
+ }
238
+ return this.query;
239
+ }
119
240
  }
241
+ const operators = {
242
+ and: import_expressions.and,
243
+ between: import_expressions.between,
244
+ eq: import_expressions.eq,
245
+ exists: import_expressions.exists,
246
+ gt: import_expressions.gt,
247
+ gte: import_expressions.gte,
248
+ ilike: import_expressions.ilike,
249
+ inArray: import_expressions.inArray,
250
+ isNull: import_expressions.isNull,
251
+ isNotNull: import_expressions.isNotNull,
252
+ like: import_expressions.like,
253
+ lt: import_expressions.lt,
254
+ lte: import_expressions.lte,
255
+ ne: import_expressions.ne,
256
+ not: import_expressions.not,
257
+ notBetween: import_expressions.notBetween,
258
+ notExists: import_expressions.notExists,
259
+ notLike: import_expressions.notLike,
260
+ notIlike: import_expressions.notIlike,
261
+ notInArray: import_expressions.notInArray,
262
+ or: import_expressions.or,
263
+ sql: import_sql.sql
264
+ };
265
+ const orderByOperators = {
266
+ sql: import_sql.sql,
267
+ asc: import_expressions.asc,
268
+ desc: import_expressions.desc
269
+ };
120
270
  function getOrderByOperators() {
121
- return {
122
- sql: import_sql.sql,
123
- asc: import_expressions.asc,
124
- desc: import_expressions.desc
125
- };
271
+ return orderByOperators;
126
272
  }
127
- function extractTablesRelationalConfig(schema, configHelpers) {
128
- if (Object.keys(schema).length === 1 && "default" in schema && !(0, import_entity.is)(schema["default"], import_table.Table)) {
129
- schema = schema["default"];
130
- }
131
- const tableNamesMap = {};
132
- const relationsBuffer = {};
133
- const tablesConfig = {};
134
- for (const [key, value] of Object.entries(schema)) {
135
- if ((0, import_entity.is)(value, import_table.Table)) {
136
- const dbName = (0, import_table.getTableUniqueName)(value);
137
- const bufferedRelations = relationsBuffer[dbName];
138
- tableNamesMap[dbName] = key;
139
- tablesConfig[key] = {
140
- tsName: key,
141
- dbName: value[import_table.Table.Symbol.Name],
142
- schema: value[import_table.Table.Symbol.Schema],
143
- columns: value[import_table.Table.Symbol.Columns],
144
- relations: bufferedRelations?.relations ?? {},
145
- primaryKey: bufferedRelations?.primaryKey ?? []
146
- };
147
- for (const column of Object.values(
148
- value[import_table.Table.Symbol.Columns]
149
- )) {
150
- if (column.primary) {
151
- tablesConfig[key].primaryKey.push(column);
273
+ function mapRelationalRow(row, buildQueryResultSelection, mapColumnValue = (value) => value) {
274
+ for (const selectionItem of buildQueryResultSelection) {
275
+ const field = selectionItem.field;
276
+ if ((0, import_entity.is)(field, import_table.Table)) {
277
+ if (row[selectionItem.key] === null)
278
+ continue;
279
+ if (selectionItem.isArray) {
280
+ for (const item of row[selectionItem.key]) {
281
+ mapRelationalRow(item, selectionItem.selection, mapColumnValue);
152
282
  }
283
+ continue;
153
284
  }
154
- const extraConfig = value[import_table.Table.Symbol.ExtraConfigBuilder]?.(value[import_table.Table.Symbol.ExtraConfigColumns]);
155
- if (extraConfig) {
156
- for (const configEntry of Object.values(extraConfig)) {
157
- if ((0, import_entity.is)(configEntry, import_primary_keys.PrimaryKeyBuilder)) {
158
- tablesConfig[key].primaryKey.push(...configEntry.columns);
159
- }
160
- }
161
- }
162
- } else if ((0, import_entity.is)(value, Relations)) {
163
- const dbName = (0, import_table.getTableUniqueName)(value.table);
164
- const tableName = tableNamesMap[dbName];
165
- const relations2 = value.config(
166
- configHelpers(value.table)
285
+ mapRelationalRow(
286
+ row[selectionItem.key],
287
+ selectionItem.selection,
288
+ mapColumnValue
167
289
  );
168
- let primaryKey;
169
- for (const [relationName, relation] of Object.entries(relations2)) {
170
- if (tableName) {
171
- const tableConfig = tablesConfig[tableName];
172
- tableConfig.relations[relationName] = relation;
173
- if (primaryKey) {
174
- tableConfig.primaryKey.push(...primaryKey);
175
- }
176
- } else {
177
- if (!(dbName in relationsBuffer)) {
178
- relationsBuffer[dbName] = {
179
- relations: {},
180
- primaryKey
181
- };
182
- }
183
- relationsBuffer[dbName].relations[relationName] = relation;
184
- }
185
- }
290
+ continue;
291
+ }
292
+ const value = mapColumnValue(row[selectionItem.key]);
293
+ if (value === null)
294
+ continue;
295
+ let decoder;
296
+ if ((0, import_entity.is)(field, import_column.Column)) {
297
+ decoder = field;
298
+ } else if ((0, import_entity.is)(field, import_sql.SQL)) {
299
+ decoder = field.decoder;
300
+ } else if ((0, import_entity.is)(field, import_sql.SQL.Aliased)) {
301
+ decoder = field.sql.decoder;
302
+ } else {
303
+ decoder = field.getSQL().decoder;
186
304
  }
305
+ row[selectionItem.key] = decoder.mapFromDriverValue(value);
187
306
  }
188
- return { tables: tablesConfig, tableNamesMap };
307
+ return row;
189
308
  }
190
- function relations(table, relations2) {
191
- return new Relations(
192
- table,
193
- (helpers) => Object.fromEntries(
194
- Object.entries(relations2(helpers)).map(([key, value]) => [
195
- key,
196
- value.withFieldName(key)
197
- ])
198
- )
199
- );
200
- }
201
- function createOne(sourceTable) {
202
- return function one(table, config) {
203
- return new One(
204
- sourceTable,
205
- table,
206
- config,
207
- config?.fields.reduce((res, f) => res && f.notNull, true) ?? false
208
- );
209
- };
210
- }
211
- function createMany(sourceTable) {
212
- return function many(referencedTable, config) {
213
- return new Many(sourceTable, referencedTable, config);
214
- };
215
- }
216
- function normalizeRelation(schema, tableNamesMap, relation) {
217
- if ((0, import_entity.is)(relation, One) && relation.config) {
218
- return {
219
- fields: relation.config.fields,
220
- references: relation.config.references
309
+ class RelationsBuilderTable {
310
+ static [import_entity.entityKind] = "RelationsBuilderTable";
311
+ _;
312
+ constructor(table) {
313
+ this._ = {
314
+ name: (0, import_table2.getTableName)(table),
315
+ table
221
316
  };
222
317
  }
223
- const referencedTableTsName = tableNamesMap[(0, import_table.getTableUniqueName)(relation.referencedTable)];
224
- if (!referencedTableTsName) {
225
- throw new Error(
226
- `Table "${relation.referencedTable[import_table.Table.Symbol.Name]}" not found in schema`
227
- );
318
+ getSQL() {
319
+ return this._.table.getSQL();
228
320
  }
229
- const referencedTableConfig = schema[referencedTableTsName];
230
- if (!referencedTableConfig) {
231
- throw new Error(`Table "${referencedTableTsName}" not found in schema`);
232
- }
233
- const sourceTable = relation.sourceTable;
234
- const sourceTableTsName = tableNamesMap[(0, import_table.getTableUniqueName)(sourceTable)];
235
- if (!sourceTableTsName) {
236
- throw new Error(
237
- `Table "${sourceTable[import_table.Table.Symbol.Name]}" not found in schema`
238
- );
321
+ }
322
+ class RelationsBuilderColumn {
323
+ static [import_entity.entityKind] = "RelationsBuilderColumn";
324
+ _;
325
+ constructor(column) {
326
+ this._ = {
327
+ tableName: (0, import_table2.getTableName)(column.table),
328
+ data: void 0,
329
+ column
330
+ };
239
331
  }
240
- const reverseRelations = [];
241
- for (const referencedTableRelation of Object.values(
242
- referencedTableConfig.relations
243
- )) {
244
- if (relation.relationName && relation !== referencedTableRelation && referencedTableRelation.relationName === relation.relationName || !relation.relationName && referencedTableRelation.referencedTable === relation.sourceTable) {
245
- reverseRelations.push(referencedTableRelation);
246
- }
332
+ through(column) {
333
+ this._.through = column;
334
+ return this;
247
335
  }
248
- if (reverseRelations.length > 1) {
249
- throw relation.relationName ? new Error(
250
- `There are multiple relations with name "${relation.relationName}" in table "${referencedTableTsName}"`
251
- ) : new Error(
252
- `There are multiple relations between "${referencedTableTsName}" and "${relation.sourceTable[import_table.Table.Symbol.Name]}". Please specify relation name`
253
- );
336
+ getSQL() {
337
+ return this._.column.getSQL();
254
338
  }
255
- if (reverseRelations[0] && (0, import_entity.is)(reverseRelations[0], One) && reverseRelations[0].config) {
256
- return {
257
- fields: reverseRelations[0].config.references,
258
- references: reverseRelations[0].config.fields
339
+ }
340
+ class RelationsHelperStatic {
341
+ static [import_entity.entityKind] = "RelationsHelperStatic";
342
+ _;
343
+ constructor(tables) {
344
+ this._ = {
345
+ tables
259
346
  };
347
+ const one = {};
348
+ const many = {};
349
+ for (const [tableName, table] of Object.entries(tables)) {
350
+ one[tableName] = (config) => {
351
+ return new One(table, config);
352
+ };
353
+ many[tableName] = (config) => {
354
+ return new Many(table, config);
355
+ };
356
+ }
357
+ this.one = one;
358
+ this.many = many;
260
359
  }
261
- throw new Error(
262
- `There is not enough information to infer relation "${sourceTableTsName}.${relation.fieldName}"`
263
- );
264
- }
265
- function createTableRelationsHelpers(sourceTable) {
266
- return {
267
- one: createOne(sourceTable),
268
- many: createMany(sourceTable)
360
+ one;
361
+ many;
362
+ aggs = {
363
+ count() {
364
+ return new Count();
365
+ }
269
366
  };
270
367
  }
271
- function mapRelationalRow(tablesConfig, tableConfig, row, buildQueryResultSelection, mapColumnValue = (value) => value) {
272
- const result = {};
273
- for (const [
274
- selectionItemIndex,
275
- selectionItem
276
- ] of buildQueryResultSelection.entries()) {
277
- if (selectionItem.isJson) {
278
- const relation = tableConfig.relations[selectionItem.tsKey];
279
- const rawSubRows = row[selectionItemIndex];
280
- const subRows = typeof rawSubRows === "string" ? JSON.parse(rawSubRows) : rawSubRows;
281
- result[selectionItem.tsKey] = (0, import_entity.is)(relation, One) ? subRows && mapRelationalRow(
282
- tablesConfig,
283
- tablesConfig[selectionItem.relationTableTsKey],
284
- subRows,
285
- selectionItem.selection,
286
- mapColumnValue
287
- ) : subRows.map(
288
- (subRow) => mapRelationalRow(
289
- tablesConfig,
290
- tablesConfig[selectionItem.relationTableTsKey],
291
- subRow,
292
- selectionItem.selection,
293
- mapColumnValue
294
- )
368
+ function createRelationsHelper(schema) {
369
+ const schemaTables = Object.fromEntries(
370
+ Object.entries(schema).filter((e) => (0, import_entity.is)(e[1], import_table.Table))
371
+ );
372
+ const helperStatic = new RelationsHelperStatic(schemaTables);
373
+ const tables = Object.entries(schema).reduce((acc, [key, value]) => {
374
+ if ((0, import_entity.is)(value, import_table.Table)) {
375
+ const rTable = new RelationsBuilderTable(value);
376
+ const columns = Object.entries((0, import_utils.getTableColumns)(value)).reduce(
377
+ (acc2, [key2, column]) => {
378
+ const rbColumn = new RelationsBuilderColumn(column);
379
+ acc2[key2] = rbColumn;
380
+ return acc2;
381
+ },
382
+ {}
295
383
  );
296
- } else {
297
- const value = mapColumnValue(row[selectionItemIndex]);
298
- const field = selectionItem.field;
299
- let decoder;
300
- if ((0, import_entity.is)(field, import_column.Column)) {
301
- decoder = field;
302
- } else if ((0, import_entity.is)(field, import_sql.SQL)) {
303
- decoder = field.decoder;
304
- } else {
305
- decoder = field.sql.decoder;
384
+ acc[key] = Object.assign(rTable, columns);
385
+ }
386
+ return acc;
387
+ }, {});
388
+ return Object.assign(helperStatic, tables);
389
+ }
390
+ function defineRelations(schema, relations) {
391
+ return new Relations(
392
+ schema,
393
+ schema,
394
+ relations(createRelationsHelper(schema))
395
+ );
396
+ }
397
+ function relationsFieldFilterToSQL(column, filter) {
398
+ if (typeof filter !== "object")
399
+ return (0, import_expressions.eq)(column, filter);
400
+ const entries = Object.entries(filter);
401
+ if (!entries.length)
402
+ return void 0;
403
+ const parts = [];
404
+ for (const [target, value] of entries) {
405
+ if (value === void 0)
406
+ continue;
407
+ switch (target) {
408
+ case "$not": {
409
+ const res = relationsFieldFilterToSQL(column, value);
410
+ if (!res)
411
+ continue;
412
+ parts.push((0, import_expressions.not)(res));
413
+ continue;
414
+ }
415
+ case "$or": {
416
+ if (!value.length)
417
+ continue;
418
+ parts.push(
419
+ (0, import_expressions.or)(
420
+ ...value.map((subFilter) => relationsFieldFilterToSQL(column, subFilter))
421
+ )
422
+ );
423
+ continue;
424
+ }
425
+ default: {
426
+ parts.push(
427
+ operators[target](
428
+ column,
429
+ value
430
+ )
431
+ );
432
+ continue;
433
+ }
434
+ }
435
+ }
436
+ if (!parts.length)
437
+ return void 0;
438
+ return (0, import_expressions.and)(...parts);
439
+ }
440
+ function relationFilterToSQL(table, filter) {
441
+ const entries = Object.entries(filter);
442
+ if (!entries.length)
443
+ return void 0;
444
+ const parts = [];
445
+ for (const [target, value] of entries) {
446
+ if (value === void 0)
447
+ continue;
448
+ switch (target) {
449
+ case "$raw": {
450
+ if (value)
451
+ parts.push(value(operators));
452
+ continue;
453
+ }
454
+ case "$or": {
455
+ if (!value?.length)
456
+ continue;
457
+ parts.push(
458
+ (0, import_expressions.or)(
459
+ ...value.map(
460
+ (subFilter) => relationFilterToSQL(table, subFilter)
461
+ )
462
+ )
463
+ );
464
+ continue;
465
+ }
466
+ case "$not": {
467
+ if (!value?.length)
468
+ continue;
469
+ parts.push(
470
+ (0, import_expressions.not)(
471
+ (0, import_expressions.and)(
472
+ ...value.map(
473
+ (subFilter) => relationFilterToSQL(table, subFilter)
474
+ )
475
+ )
476
+ )
477
+ );
478
+ continue;
479
+ }
480
+ default: {
481
+ const colFilter = relationsFieldFilterToSQL(
482
+ table[target],
483
+ value
484
+ );
485
+ if (colFilter)
486
+ parts.push(colFilter);
487
+ continue;
306
488
  }
307
- result[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);
308
489
  }
309
490
  }
310
- return result;
491
+ return (0, import_expressions.and)(...parts);
492
+ }
493
+ function relationsOrderToSQL(table, orders) {
494
+ const data = typeof orders === "function" ? orders(table[import_table2.Columns], orderByOperators) : orders;
495
+ return (0, import_entity.is)(data, import_sql.SQL) ? data : Array.isArray(data) ? data.length ? import_sql.sql.join(data.map((o) => (0, import_entity.is)(o, import_sql.SQL) ? o : (0, import_expressions.asc)(o)), import_sql.sql`, `) : void 0 : (0, import_expressions.asc)(data);
496
+ }
497
+ function relationExtrasToSQL(table, extras) {
498
+ const subqueries = [];
499
+ const selection = [];
500
+ for (const [key, extra] of Object.entries(
501
+ typeof extras === "function" ? extras(table[import_table2.Columns], { sql: operators.sql }) : extras
502
+ )) {
503
+ if (!extra)
504
+ continue;
505
+ const query = import_sql.sql`(${extra.getSQL()}) as ${import_sql.sql.identifier(key)}`;
506
+ query.decoder = extra.getSQL().decoder;
507
+ subqueries.push(query);
508
+ selection.push({
509
+ key,
510
+ field: query
511
+ });
512
+ }
513
+ return {
514
+ sql: subqueries.length ? import_sql.sql.join(subqueries, import_sql.sql`, `) : void 0,
515
+ selection
516
+ };
517
+ }
518
+ function relationToSQL(relation) {
519
+ const table = relation.sourceTable;
520
+ const columnWhere = relation.sourceColumns.map((s, i) => {
521
+ const t = relation.targetColumns[i];
522
+ return (0, import_expressions.eq)(s, t);
523
+ });
524
+ const targetWhere = relation.where ? (0, import_expressions.and)(...columnWhere, relationFilterToSQL(table, relation.where)) : (0, import_expressions.and)(...columnWhere);
525
+ return targetWhere;
311
526
  }
312
527
  // Annotate the CommonJS export names for ESM import in node:
313
528
  0 && (module.exports = {
529
+ AggregatedField,
530
+ Count,
314
531
  Many,
315
532
  One,
316
533
  Relation,
317
534
  Relations,
318
- createMany,
319
- createOne,
320
- createTableRelationsHelpers,
321
- extractTablesRelationalConfig,
322
- getOperators,
535
+ RelationsBuilderColumn,
536
+ RelationsBuilderTable,
537
+ RelationsHelperStatic,
538
+ createRelationsHelper,
539
+ defineRelations,
323
540
  getOrderByOperators,
324
541
  mapRelationalRow,
325
- normalizeRelation,
326
- relations
542
+ operators,
543
+ orderByOperators,
544
+ relationExtrasToSQL,
545
+ relationFilterToSQL,
546
+ relationToSQL,
547
+ relationsOrderToSQL
327
548
  });
328
549
  //# sourceMappingURL=relations.cjs.map