drizzle-orm 1.0.0-beta.1 → 1.0.0-beta.1-dfa4db3

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 (1709) hide show
  1. package/_relations.cjs +6 -50
  2. package/_relations.cjs.map +1 -1
  3. package/_relations.d.cts +0 -1
  4. package/_relations.d.ts +0 -1
  5. package/_relations.js +6 -49
  6. package/_relations.js.map +1 -1
  7. package/aws-data-api/common/index.cjs.map +1 -1
  8. package/aws-data-api/common/index.js.map +1 -1
  9. package/aws-data-api/pg/driver.cjs +4 -1
  10. package/aws-data-api/pg/driver.cjs.map +1 -1
  11. package/aws-data-api/pg/driver.d.cts +3 -0
  12. package/aws-data-api/pg/driver.d.ts +3 -0
  13. package/aws-data-api/pg/driver.js +4 -1
  14. package/aws-data-api/pg/driver.js.map +1 -1
  15. package/aws-data-api/pg/session.cjs +9 -2
  16. package/aws-data-api/pg/session.cjs.map +1 -1
  17. package/aws-data-api/pg/session.d.cts +1 -0
  18. package/aws-data-api/pg/session.d.ts +1 -0
  19. package/aws-data-api/pg/session.js +9 -2
  20. package/aws-data-api/pg/session.js.map +1 -1
  21. package/better-sqlite3/driver.cjs +14 -10
  22. package/better-sqlite3/driver.cjs.map +1 -1
  23. package/better-sqlite3/driver.d.cts +3 -3
  24. package/better-sqlite3/driver.d.ts +3 -3
  25. package/better-sqlite3/driver.js +14 -10
  26. package/better-sqlite3/driver.js.map +1 -1
  27. package/bun-sql/driver.cjs.map +1 -1
  28. package/bun-sql/driver.d.cts +8 -8
  29. package/bun-sql/driver.d.ts +8 -8
  30. package/bun-sql/driver.js.map +1 -1
  31. package/bun-sql/mysql/driver.cjs +14 -10
  32. package/bun-sql/mysql/driver.cjs.map +1 -1
  33. package/bun-sql/mysql/driver.d.cts +3 -3
  34. package/bun-sql/mysql/driver.d.ts +3 -3
  35. package/bun-sql/mysql/driver.js +14 -10
  36. package/bun-sql/mysql/driver.js.map +1 -1
  37. package/bun-sql/postgres/driver.cjs +14 -10
  38. package/bun-sql/postgres/driver.cjs.map +1 -1
  39. package/bun-sql/postgres/driver.d.cts +3 -3
  40. package/bun-sql/postgres/driver.d.ts +3 -3
  41. package/bun-sql/postgres/driver.js +14 -10
  42. package/bun-sql/postgres/driver.js.map +1 -1
  43. package/bun-sql/sqlite/driver.cjs +14 -10
  44. package/bun-sql/sqlite/driver.cjs.map +1 -1
  45. package/bun-sql/sqlite/driver.d.cts +3 -3
  46. package/bun-sql/sqlite/driver.d.ts +3 -3
  47. package/bun-sql/sqlite/driver.js +14 -10
  48. package/bun-sql/sqlite/driver.js.map +1 -1
  49. package/bun-sqlite/driver.cjs +15 -11
  50. package/bun-sqlite/driver.cjs.map +1 -1
  51. package/bun-sqlite/driver.d.cts +3 -3
  52. package/bun-sqlite/driver.d.ts +3 -3
  53. package/bun-sqlite/driver.js +15 -11
  54. package/bun-sqlite/driver.js.map +1 -1
  55. package/column-builder.cjs.map +1 -1
  56. package/column-builder.d.cts +8 -9
  57. package/column-builder.d.ts +8 -9
  58. package/column-builder.js.map +1 -1
  59. package/durable-sqlite/session.cjs +3 -6
  60. package/durable-sqlite/session.cjs.map +1 -1
  61. package/durable-sqlite/session.d.cts +2 -1
  62. package/durable-sqlite/session.d.ts +2 -1
  63. package/durable-sqlite/session.js +2 -6
  64. package/durable-sqlite/session.js.map +1 -1
  65. package/entity.cjs.map +1 -1
  66. package/entity.js.map +1 -1
  67. package/gel/driver.cjs +10 -6
  68. package/gel/driver.cjs.map +1 -1
  69. package/gel/driver.d.cts +2 -2
  70. package/gel/driver.d.ts +2 -2
  71. package/gel/driver.js +10 -6
  72. package/gel/driver.js.map +1 -1
  73. package/gel-core/columns/bigint.cjs.map +1 -1
  74. package/gel-core/columns/bigint.d.cts +1 -0
  75. package/gel-core/columns/bigint.d.ts +1 -0
  76. package/gel-core/columns/bigint.js.map +1 -1
  77. package/gel-core/columns/bigintT.cjs.map +1 -1
  78. package/gel-core/columns/bigintT.d.cts +1 -0
  79. package/gel-core/columns/bigintT.d.ts +1 -0
  80. package/gel-core/columns/bigintT.js.map +1 -1
  81. package/gel-core/columns/boolean.cjs.map +1 -1
  82. package/gel-core/columns/boolean.d.cts +1 -0
  83. package/gel-core/columns/boolean.d.ts +1 -0
  84. package/gel-core/columns/boolean.js.map +1 -1
  85. package/gel-core/columns/bytes.cjs.map +1 -1
  86. package/gel-core/columns/bytes.d.cts +1 -0
  87. package/gel-core/columns/bytes.d.ts +1 -0
  88. package/gel-core/columns/bytes.js.map +1 -1
  89. package/gel-core/columns/common.cjs +4 -0
  90. package/gel-core/columns/common.cjs.map +1 -1
  91. package/gel-core/columns/common.d.cts +1 -1
  92. package/gel-core/columns/common.d.ts +1 -1
  93. package/gel-core/columns/common.js +4 -0
  94. package/gel-core/columns/common.js.map +1 -1
  95. package/gel-core/columns/custom.cjs.map +1 -1
  96. package/gel-core/columns/custom.d.cts +1 -0
  97. package/gel-core/columns/custom.d.ts +1 -0
  98. package/gel-core/columns/custom.js.map +1 -1
  99. package/gel-core/columns/date-duration.cjs.map +1 -1
  100. package/gel-core/columns/date-duration.d.cts +1 -0
  101. package/gel-core/columns/date-duration.d.ts +1 -0
  102. package/gel-core/columns/date-duration.js.map +1 -1
  103. package/gel-core/columns/decimal.cjs.map +1 -1
  104. package/gel-core/columns/decimal.d.cts +1 -0
  105. package/gel-core/columns/decimal.d.ts +1 -0
  106. package/gel-core/columns/decimal.js.map +1 -1
  107. package/gel-core/columns/double-precision.cjs.map +1 -1
  108. package/gel-core/columns/double-precision.d.cts +1 -0
  109. package/gel-core/columns/double-precision.d.ts +1 -0
  110. package/gel-core/columns/double-precision.js.map +1 -1
  111. package/gel-core/columns/duration.cjs.map +1 -1
  112. package/gel-core/columns/duration.d.cts +1 -0
  113. package/gel-core/columns/duration.d.ts +1 -0
  114. package/gel-core/columns/duration.js.map +1 -1
  115. package/gel-core/columns/integer.cjs.map +1 -1
  116. package/gel-core/columns/integer.d.cts +1 -0
  117. package/gel-core/columns/integer.d.ts +1 -0
  118. package/gel-core/columns/integer.js.map +1 -1
  119. package/gel-core/columns/json.cjs.map +1 -1
  120. package/gel-core/columns/json.d.cts +1 -0
  121. package/gel-core/columns/json.d.ts +1 -0
  122. package/gel-core/columns/json.js.map +1 -1
  123. package/gel-core/columns/localdate.cjs.map +1 -1
  124. package/gel-core/columns/localdate.d.cts +1 -0
  125. package/gel-core/columns/localdate.d.ts +1 -0
  126. package/gel-core/columns/localdate.js.map +1 -1
  127. package/gel-core/columns/localtime.cjs.map +1 -1
  128. package/gel-core/columns/localtime.d.cts +1 -0
  129. package/gel-core/columns/localtime.d.ts +1 -0
  130. package/gel-core/columns/localtime.js.map +1 -1
  131. package/gel-core/columns/real.cjs.map +1 -1
  132. package/gel-core/columns/real.d.cts +1 -0
  133. package/gel-core/columns/real.d.ts +1 -0
  134. package/gel-core/columns/real.js.map +1 -1
  135. package/gel-core/columns/relative-duration.cjs.map +1 -1
  136. package/gel-core/columns/relative-duration.d.cts +1 -0
  137. package/gel-core/columns/relative-duration.d.ts +1 -0
  138. package/gel-core/columns/relative-duration.js.map +1 -1
  139. package/gel-core/columns/smallint.cjs.map +1 -1
  140. package/gel-core/columns/smallint.d.cts +1 -0
  141. package/gel-core/columns/smallint.d.ts +1 -0
  142. package/gel-core/columns/smallint.js.map +1 -1
  143. package/gel-core/columns/text.cjs.map +1 -1
  144. package/gel-core/columns/text.d.cts +1 -0
  145. package/gel-core/columns/text.d.ts +1 -0
  146. package/gel-core/columns/text.js.map +1 -1
  147. package/gel-core/columns/timestamp.cjs.map +1 -1
  148. package/gel-core/columns/timestamp.d.cts +1 -0
  149. package/gel-core/columns/timestamp.d.ts +1 -0
  150. package/gel-core/columns/timestamp.js.map +1 -1
  151. package/gel-core/columns/timestamptz.cjs.map +1 -1
  152. package/gel-core/columns/timestamptz.d.cts +1 -0
  153. package/gel-core/columns/timestamptz.d.ts +1 -0
  154. package/gel-core/columns/timestamptz.js.map +1 -1
  155. package/gel-core/columns/uuid.cjs.map +1 -1
  156. package/gel-core/columns/uuid.d.cts +1 -0
  157. package/gel-core/columns/uuid.d.ts +1 -0
  158. package/gel-core/columns/uuid.js.map +1 -1
  159. package/gel-core/query-builders/count.cjs.map +1 -1
  160. package/gel-core/query-builders/count.d.cts +1 -1
  161. package/gel-core/query-builders/count.d.ts +1 -1
  162. package/gel-core/query-builders/count.js.map +1 -1
  163. package/gel-core/query-builders/insert.cjs.map +1 -1
  164. package/gel-core/query-builders/insert.d.cts +9 -6
  165. package/gel-core/query-builders/insert.d.ts +9 -6
  166. package/gel-core/query-builders/insert.js.map +1 -1
  167. package/gel-core/query-builders/select.cjs +9 -8
  168. package/gel-core/query-builders/select.cjs.map +1 -1
  169. package/gel-core/query-builders/select.js +4 -4
  170. package/gel-core/query-builders/select.js.map +1 -1
  171. package/gel-core/query-builders/update.cjs +2 -2
  172. package/gel-core/query-builders/update.cjs.map +1 -1
  173. package/gel-core/query-builders/update.d.cts +1 -1
  174. package/gel-core/query-builders/update.d.ts +1 -1
  175. package/gel-core/query-builders/update.js +2 -2
  176. package/gel-core/query-builders/update.js.map +1 -1
  177. package/gel-core/schema.cjs +4 -4
  178. package/gel-core/schema.cjs.map +1 -1
  179. package/gel-core/schema.js +4 -4
  180. package/gel-core/schema.js.map +1 -1
  181. package/gel-core/utils.cjs +2 -1
  182. package/gel-core/utils.cjs.map +1 -1
  183. package/gel-core/utils.d.cts +1 -1
  184. package/gel-core/utils.d.ts +1 -1
  185. package/gel-core/utils.js +2 -1
  186. package/gel-core/utils.js.map +1 -1
  187. package/gel-core/view-common.cjs +0 -3
  188. package/gel-core/view-common.cjs.map +1 -1
  189. package/gel-core/view-common.d.cts +0 -1
  190. package/gel-core/view-common.d.ts +0 -1
  191. package/gel-core/view-common.js +0 -2
  192. package/gel-core/view-common.js.map +1 -1
  193. package/gel-core/view.cjs +5 -2
  194. package/gel-core/view.cjs.map +1 -1
  195. package/gel-core/view.d.cts +2 -1
  196. package/gel-core/view.d.ts +2 -1
  197. package/gel-core/view.js +3 -1
  198. package/gel-core/view.js.map +1 -1
  199. package/libsql/driver.cjs +10 -6
  200. package/libsql/driver.cjs.map +1 -1
  201. package/libsql/driver.d.cts +3 -3
  202. package/libsql/driver.d.ts +3 -3
  203. package/libsql/driver.js +10 -6
  204. package/libsql/driver.js.map +1 -1
  205. package/libsql/http/index.cjs +10 -6
  206. package/libsql/http/index.cjs.map +1 -1
  207. package/libsql/http/index.d.cts +3 -3
  208. package/libsql/http/index.d.ts +3 -3
  209. package/libsql/http/index.js +10 -6
  210. package/libsql/http/index.js.map +1 -1
  211. package/libsql/node/index.cjs +10 -6
  212. package/libsql/node/index.cjs.map +1 -1
  213. package/libsql/node/index.d.cts +3 -3
  214. package/libsql/node/index.d.ts +3 -3
  215. package/libsql/node/index.js +10 -6
  216. package/libsql/node/index.js.map +1 -1
  217. package/libsql/session.cjs.map +1 -1
  218. package/libsql/session.d.cts +1 -1
  219. package/libsql/session.d.ts +1 -1
  220. package/libsql/session.js.map +1 -1
  221. package/libsql/sqlite3/index.cjs +10 -6
  222. package/libsql/sqlite3/index.cjs.map +1 -1
  223. package/libsql/sqlite3/index.d.cts +3 -3
  224. package/libsql/sqlite3/index.d.ts +3 -3
  225. package/libsql/sqlite3/index.js +10 -6
  226. package/libsql/sqlite3/index.js.map +1 -1
  227. package/libsql/wasm/index.cjs +10 -6
  228. package/libsql/wasm/index.cjs.map +1 -1
  229. package/libsql/wasm/index.d.cts +3 -3
  230. package/libsql/wasm/index.d.ts +3 -3
  231. package/libsql/wasm/index.js +10 -6
  232. package/libsql/wasm/index.js.map +1 -1
  233. package/libsql/web/index.cjs +10 -6
  234. package/libsql/web/index.cjs.map +1 -1
  235. package/libsql/web/index.d.cts +3 -3
  236. package/libsql/web/index.d.ts +3 -3
  237. package/libsql/web/index.js +10 -6
  238. package/libsql/web/index.js.map +1 -1
  239. package/libsql/ws/index.cjs +10 -6
  240. package/libsql/ws/index.cjs.map +1 -1
  241. package/libsql/ws/index.d.cts +3 -3
  242. package/libsql/ws/index.d.ts +3 -3
  243. package/libsql/ws/index.js +10 -6
  244. package/libsql/ws/index.js.map +1 -1
  245. package/mysql-core/columns/all.cjs +1 -6
  246. package/mysql-core/columns/all.cjs.map +1 -1
  247. package/mysql-core/columns/all.d.cts +0 -5
  248. package/mysql-core/columns/all.d.ts +0 -5
  249. package/mysql-core/columns/all.js +1 -6
  250. package/mysql-core/columns/all.js.map +1 -1
  251. package/mysql-core/columns/bigint.cjs.map +1 -1
  252. package/mysql-core/columns/bigint.d.cts +2 -0
  253. package/mysql-core/columns/bigint.d.ts +2 -0
  254. package/mysql-core/columns/bigint.js.map +1 -1
  255. package/mysql-core/columns/binary.cjs +1 -0
  256. package/mysql-core/columns/binary.cjs.map +1 -1
  257. package/mysql-core/columns/binary.d.cts +2 -0
  258. package/mysql-core/columns/binary.d.ts +2 -0
  259. package/mysql-core/columns/binary.js +1 -0
  260. package/mysql-core/columns/binary.js.map +1 -1
  261. package/mysql-core/columns/boolean.cjs.map +1 -1
  262. package/mysql-core/columns/boolean.d.cts +1 -0
  263. package/mysql-core/columns/boolean.d.ts +1 -0
  264. package/mysql-core/columns/boolean.js.map +1 -1
  265. package/mysql-core/columns/char.cjs +4 -3
  266. package/mysql-core/columns/char.cjs.map +1 -1
  267. package/mysql-core/columns/char.d.cts +5 -3
  268. package/mysql-core/columns/char.d.ts +5 -3
  269. package/mysql-core/columns/char.js +4 -3
  270. package/mysql-core/columns/char.js.map +1 -1
  271. package/mysql-core/columns/common.cjs +4 -0
  272. package/mysql-core/columns/common.cjs.map +1 -1
  273. package/mysql-core/columns/common.d.cts +1 -1
  274. package/mysql-core/columns/common.d.ts +1 -1
  275. package/mysql-core/columns/common.js +4 -0
  276. package/mysql-core/columns/common.js.map +1 -1
  277. package/mysql-core/columns/custom.cjs.map +1 -1
  278. package/mysql-core/columns/custom.d.cts +1 -0
  279. package/mysql-core/columns/custom.d.ts +1 -0
  280. package/mysql-core/columns/custom.js.map +1 -1
  281. package/mysql-core/columns/date.cjs.map +1 -1
  282. package/mysql-core/columns/date.common.cjs +1 -3
  283. package/mysql-core/columns/date.common.cjs.map +1 -1
  284. package/mysql-core/columns/date.common.d.cts +1 -6
  285. package/mysql-core/columns/date.common.d.ts +1 -6
  286. package/mysql-core/columns/date.common.js +1 -3
  287. package/mysql-core/columns/date.common.js.map +1 -1
  288. package/mysql-core/columns/date.d.cts +2 -0
  289. package/mysql-core/columns/date.d.ts +2 -0
  290. package/mysql-core/columns/date.js.map +1 -1
  291. package/mysql-core/columns/datetime.cjs.map +1 -1
  292. package/mysql-core/columns/datetime.d.cts +2 -0
  293. package/mysql-core/columns/datetime.d.ts +2 -0
  294. package/mysql-core/columns/datetime.js.map +1 -1
  295. package/mysql-core/columns/decimal.cjs.map +1 -1
  296. package/mysql-core/columns/decimal.d.cts +3 -0
  297. package/mysql-core/columns/decimal.d.ts +3 -0
  298. package/mysql-core/columns/decimal.js.map +1 -1
  299. package/mysql-core/columns/double.cjs.map +1 -1
  300. package/mysql-core/columns/double.d.cts +1 -0
  301. package/mysql-core/columns/double.d.ts +1 -0
  302. package/mysql-core/columns/double.js.map +1 -1
  303. package/mysql-core/columns/enum.cjs +5 -5
  304. package/mysql-core/columns/enum.cjs.map +1 -1
  305. package/mysql-core/columns/enum.d.cts +7 -5
  306. package/mysql-core/columns/enum.d.ts +7 -5
  307. package/mysql-core/columns/enum.js +5 -5
  308. package/mysql-core/columns/enum.js.map +1 -1
  309. package/mysql-core/columns/float.cjs.map +1 -1
  310. package/mysql-core/columns/float.d.cts +1 -0
  311. package/mysql-core/columns/float.d.ts +1 -0
  312. package/mysql-core/columns/float.js.map +1 -1
  313. package/mysql-core/columns/index.cjs +0 -2
  314. package/mysql-core/columns/index.cjs.map +1 -1
  315. package/mysql-core/columns/index.d.cts +0 -1
  316. package/mysql-core/columns/index.d.ts +0 -1
  317. package/mysql-core/columns/index.js +0 -1
  318. package/mysql-core/columns/index.js.map +1 -1
  319. package/mysql-core/columns/int.cjs.map +1 -1
  320. package/mysql-core/columns/int.d.cts +1 -0
  321. package/mysql-core/columns/int.d.ts +1 -0
  322. package/mysql-core/columns/int.js.map +1 -1
  323. package/mysql-core/columns/json.cjs.map +1 -1
  324. package/mysql-core/columns/json.d.cts +1 -0
  325. package/mysql-core/columns/json.d.ts +1 -0
  326. package/mysql-core/columns/json.js.map +1 -1
  327. package/mysql-core/columns/mediumint.cjs.map +1 -1
  328. package/mysql-core/columns/mediumint.d.cts +1 -0
  329. package/mysql-core/columns/mediumint.d.ts +1 -0
  330. package/mysql-core/columns/mediumint.js.map +1 -1
  331. package/mysql-core/columns/real.cjs.map +1 -1
  332. package/mysql-core/columns/real.d.cts +1 -0
  333. package/mysql-core/columns/real.d.ts +1 -0
  334. package/mysql-core/columns/real.js.map +1 -1
  335. package/mysql-core/columns/serial.cjs.map +1 -1
  336. package/mysql-core/columns/serial.d.cts +1 -0
  337. package/mysql-core/columns/serial.d.ts +1 -0
  338. package/mysql-core/columns/serial.js.map +1 -1
  339. package/mysql-core/columns/smallint.cjs.map +1 -1
  340. package/mysql-core/columns/smallint.d.cts +1 -0
  341. package/mysql-core/columns/smallint.d.ts +1 -0
  342. package/mysql-core/columns/smallint.js.map +1 -1
  343. package/mysql-core/columns/text.cjs +3 -3
  344. package/mysql-core/columns/text.cjs.map +1 -1
  345. package/mysql-core/columns/text.d.cts +4 -3
  346. package/mysql-core/columns/text.d.ts +4 -3
  347. package/mysql-core/columns/text.js +3 -3
  348. package/mysql-core/columns/text.js.map +1 -1
  349. package/mysql-core/columns/time.cjs.map +1 -1
  350. package/mysql-core/columns/time.d.cts +1 -0
  351. package/mysql-core/columns/time.d.ts +1 -0
  352. package/mysql-core/columns/time.js.map +1 -1
  353. package/mysql-core/columns/timestamp.cjs.map +1 -1
  354. package/mysql-core/columns/timestamp.d.cts +2 -0
  355. package/mysql-core/columns/timestamp.d.ts +2 -0
  356. package/mysql-core/columns/timestamp.js.map +1 -1
  357. package/mysql-core/columns/tinyint.cjs.map +1 -1
  358. package/mysql-core/columns/tinyint.d.cts +1 -0
  359. package/mysql-core/columns/tinyint.d.ts +1 -0
  360. package/mysql-core/columns/tinyint.js.map +1 -1
  361. package/mysql-core/columns/varbinary.cjs.map +1 -1
  362. package/mysql-core/columns/varbinary.d.cts +1 -0
  363. package/mysql-core/columns/varbinary.d.ts +1 -0
  364. package/mysql-core/columns/varbinary.js.map +1 -1
  365. package/mysql-core/columns/varchar.cjs +4 -4
  366. package/mysql-core/columns/varchar.cjs.map +1 -1
  367. package/mysql-core/columns/varchar.d.cts +5 -4
  368. package/mysql-core/columns/varchar.d.ts +5 -4
  369. package/mysql-core/columns/varchar.js +4 -4
  370. package/mysql-core/columns/varchar.js.map +1 -1
  371. package/mysql-core/columns/year.cjs.map +1 -1
  372. package/mysql-core/columns/year.d.cts +1 -0
  373. package/mysql-core/columns/year.d.ts +1 -0
  374. package/mysql-core/columns/year.js.map +1 -1
  375. package/mysql-core/dialect.cjs +0 -3
  376. package/mysql-core/dialect.cjs.map +1 -1
  377. package/mysql-core/dialect.d.cts +0 -1
  378. package/mysql-core/dialect.d.ts +0 -1
  379. package/mysql-core/dialect.js +0 -3
  380. package/mysql-core/dialect.js.map +1 -1
  381. package/mysql-core/foreign-keys.cjs +0 -3
  382. package/mysql-core/foreign-keys.cjs.map +1 -1
  383. package/mysql-core/foreign-keys.d.cts +0 -1
  384. package/mysql-core/foreign-keys.d.ts +0 -1
  385. package/mysql-core/foreign-keys.js +0 -3
  386. package/mysql-core/foreign-keys.js.map +1 -1
  387. package/mysql-core/indexes.cjs +0 -2
  388. package/mysql-core/indexes.cjs.map +1 -1
  389. package/mysql-core/indexes.d.cts +0 -1
  390. package/mysql-core/indexes.d.ts +0 -1
  391. package/mysql-core/indexes.js +0 -2
  392. package/mysql-core/indexes.js.map +1 -1
  393. package/mysql-core/primary-keys.cjs +13 -4
  394. package/mysql-core/primary-keys.cjs.map +1 -1
  395. package/mysql-core/primary-keys.d.cts +6 -3
  396. package/mysql-core/primary-keys.d.ts +6 -3
  397. package/mysql-core/primary-keys.js +13 -4
  398. package/mysql-core/primary-keys.js.map +1 -1
  399. package/mysql-core/query-builders/count.cjs.map +1 -1
  400. package/mysql-core/query-builders/count.d.cts +1 -1
  401. package/mysql-core/query-builders/count.d.ts +1 -1
  402. package/mysql-core/query-builders/count.js.map +1 -1
  403. package/mysql-core/query-builders/insert.cjs.map +1 -1
  404. package/mysql-core/query-builders/insert.d.cts +2 -2
  405. package/mysql-core/query-builders/insert.d.ts +2 -2
  406. package/mysql-core/query-builders/insert.js.map +1 -1
  407. package/mysql-core/query-builders/select.cjs +2 -2
  408. package/mysql-core/query-builders/select.cjs.map +1 -1
  409. package/mysql-core/query-builders/select.js +2 -2
  410. package/mysql-core/query-builders/select.js.map +1 -1
  411. package/mysql-core/query-builders/update.cjs.map +1 -1
  412. package/mysql-core/query-builders/update.d.cts +1 -1
  413. package/mysql-core/query-builders/update.d.ts +1 -1
  414. package/mysql-core/query-builders/update.js.map +1 -1
  415. package/mysql-core/schema.cjs +2 -2
  416. package/mysql-core/schema.cjs.map +1 -1
  417. package/mysql-core/schema.js +2 -2
  418. package/mysql-core/schema.js.map +1 -1
  419. package/mysql-core/unique-constraint.cjs +0 -2
  420. package/mysql-core/unique-constraint.cjs.map +1 -1
  421. package/mysql-core/unique-constraint.d.cts +2 -3
  422. package/mysql-core/unique-constraint.d.ts +2 -3
  423. package/mysql-core/unique-constraint.js +0 -2
  424. package/mysql-core/unique-constraint.js.map +1 -1
  425. package/mysql-proxy/driver.cjs +2 -2
  426. package/mysql-proxy/driver.cjs.map +1 -1
  427. package/mysql-proxy/driver.d.cts +1 -2
  428. package/mysql-proxy/driver.d.ts +1 -2
  429. package/mysql-proxy/driver.js +2 -2
  430. package/mysql-proxy/driver.js.map +1 -1
  431. package/mysql2/driver.cjs +14 -10
  432. package/mysql2/driver.cjs.map +1 -1
  433. package/mysql2/driver.d.cts +3 -3
  434. package/mysql2/driver.d.ts +3 -3
  435. package/mysql2/driver.js +14 -10
  436. package/mysql2/driver.js.map +1 -1
  437. package/mysql2/session.cjs.map +1 -1
  438. package/mysql2/session.js.map +1 -1
  439. package/neon-http/driver.cjs +14 -10
  440. package/neon-http/driver.cjs.map +1 -1
  441. package/neon-http/driver.d.cts +3 -3
  442. package/neon-http/driver.d.ts +3 -3
  443. package/neon-http/driver.js +14 -10
  444. package/neon-http/driver.js.map +1 -1
  445. package/neon-http/session.cjs.map +1 -1
  446. package/neon-http/session.d.cts +1 -1
  447. package/neon-http/session.d.ts +1 -1
  448. package/neon-http/session.js.map +1 -1
  449. package/neon-serverless/driver.cjs +14 -10
  450. package/neon-serverless/driver.cjs.map +1 -1
  451. package/neon-serverless/driver.d.cts +3 -3
  452. package/neon-serverless/driver.d.ts +3 -3
  453. package/neon-serverless/driver.js +14 -10
  454. package/neon-serverless/driver.js.map +1 -1
  455. package/neon-serverless/session.cjs.map +1 -1
  456. package/neon-serverless/session.js.map +1 -1
  457. package/node-postgres/driver.cjs +12 -8
  458. package/node-postgres/driver.cjs.map +1 -1
  459. package/node-postgres/driver.d.cts +3 -3
  460. package/node-postgres/driver.d.ts +3 -3
  461. package/node-postgres/driver.js +12 -8
  462. package/node-postgres/driver.js.map +1 -1
  463. package/node-postgres/session.cjs.map +1 -1
  464. package/node-postgres/session.js.map +1 -1
  465. package/package.json +37 -1503
  466. package/pg-core/columns/bigint.cjs.map +1 -1
  467. package/pg-core/columns/bigint.d.cts +2 -0
  468. package/pg-core/columns/bigint.d.ts +2 -0
  469. package/pg-core/columns/bigint.js.map +1 -1
  470. package/pg-core/columns/bigserial.cjs +0 -1
  471. package/pg-core/columns/bigserial.cjs.map +1 -1
  472. package/pg-core/columns/bigserial.d.cts +2 -0
  473. package/pg-core/columns/bigserial.d.ts +2 -0
  474. package/pg-core/columns/bigserial.js +0 -1
  475. package/pg-core/columns/bigserial.js.map +1 -1
  476. package/pg-core/columns/boolean.cjs.map +1 -1
  477. package/pg-core/columns/boolean.d.cts +1 -0
  478. package/pg-core/columns/boolean.d.ts +1 -0
  479. package/pg-core/columns/boolean.js.map +1 -1
  480. package/pg-core/columns/bytea.cjs.map +1 -1
  481. package/pg-core/columns/bytea.d.cts +1 -0
  482. package/pg-core/columns/bytea.d.ts +1 -0
  483. package/pg-core/columns/bytea.js.map +1 -1
  484. package/pg-core/columns/char.cjs +1 -0
  485. package/pg-core/columns/char.cjs.map +1 -1
  486. package/pg-core/columns/char.d.cts +2 -0
  487. package/pg-core/columns/char.d.ts +2 -0
  488. package/pg-core/columns/char.js +1 -0
  489. package/pg-core/columns/char.js.map +1 -1
  490. package/pg-core/columns/cidr.cjs.map +1 -1
  491. package/pg-core/columns/cidr.d.cts +1 -0
  492. package/pg-core/columns/cidr.d.ts +1 -0
  493. package/pg-core/columns/cidr.js.map +1 -1
  494. package/pg-core/columns/common.cjs +14 -10
  495. package/pg-core/columns/common.cjs.map +1 -1
  496. package/pg-core/columns/common.d.cts +3 -4
  497. package/pg-core/columns/common.d.ts +3 -4
  498. package/pg-core/columns/common.js +14 -10
  499. package/pg-core/columns/common.js.map +1 -1
  500. package/pg-core/columns/custom.cjs.map +1 -1
  501. package/pg-core/columns/custom.d.cts +1 -0
  502. package/pg-core/columns/custom.d.ts +1 -0
  503. package/pg-core/columns/custom.js.map +1 -1
  504. package/pg-core/columns/date.cjs.map +1 -1
  505. package/pg-core/columns/date.d.cts +2 -0
  506. package/pg-core/columns/date.d.ts +2 -0
  507. package/pg-core/columns/date.js.map +1 -1
  508. package/pg-core/columns/double-precision.cjs.map +1 -1
  509. package/pg-core/columns/double-precision.d.cts +1 -0
  510. package/pg-core/columns/double-precision.d.ts +1 -0
  511. package/pg-core/columns/double-precision.js.map +1 -1
  512. package/pg-core/columns/enum.cjs.map +1 -1
  513. package/pg-core/columns/enum.d.cts +2 -0
  514. package/pg-core/columns/enum.d.ts +2 -0
  515. package/pg-core/columns/enum.js.map +1 -1
  516. package/pg-core/columns/inet.cjs.map +1 -1
  517. package/pg-core/columns/inet.d.cts +1 -0
  518. package/pg-core/columns/inet.d.ts +1 -0
  519. package/pg-core/columns/inet.js.map +1 -1
  520. package/pg-core/columns/integer.cjs.map +1 -1
  521. package/pg-core/columns/integer.d.cts +1 -0
  522. package/pg-core/columns/integer.d.ts +1 -0
  523. package/pg-core/columns/integer.js.map +1 -1
  524. package/pg-core/columns/interval.cjs.map +1 -1
  525. package/pg-core/columns/interval.d.cts +1 -0
  526. package/pg-core/columns/interval.d.ts +1 -0
  527. package/pg-core/columns/interval.js.map +1 -1
  528. package/pg-core/columns/json.cjs.map +1 -1
  529. package/pg-core/columns/json.d.cts +1 -0
  530. package/pg-core/columns/json.d.ts +1 -0
  531. package/pg-core/columns/json.js.map +1 -1
  532. package/pg-core/columns/jsonb.cjs.map +1 -1
  533. package/pg-core/columns/jsonb.d.cts +1 -0
  534. package/pg-core/columns/jsonb.d.ts +1 -0
  535. package/pg-core/columns/jsonb.js.map +1 -1
  536. package/pg-core/columns/line.cjs +0 -2
  537. package/pg-core/columns/line.cjs.map +1 -1
  538. package/pg-core/columns/line.d.cts +2 -2
  539. package/pg-core/columns/line.d.ts +2 -2
  540. package/pg-core/columns/line.js +0 -2
  541. package/pg-core/columns/line.js.map +1 -1
  542. package/pg-core/columns/macaddr.cjs.map +1 -1
  543. package/pg-core/columns/macaddr.d.cts +1 -0
  544. package/pg-core/columns/macaddr.d.ts +1 -0
  545. package/pg-core/columns/macaddr.js.map +1 -1
  546. package/pg-core/columns/macaddr8.cjs.map +1 -1
  547. package/pg-core/columns/macaddr8.d.cts +1 -0
  548. package/pg-core/columns/macaddr8.d.ts +1 -0
  549. package/pg-core/columns/macaddr8.js.map +1 -1
  550. package/pg-core/columns/numeric.cjs.map +1 -1
  551. package/pg-core/columns/numeric.d.cts +3 -0
  552. package/pg-core/columns/numeric.d.ts +3 -0
  553. package/pg-core/columns/numeric.js.map +1 -1
  554. package/pg-core/columns/point.cjs +0 -2
  555. package/pg-core/columns/point.cjs.map +1 -1
  556. package/pg-core/columns/point.d.cts +2 -2
  557. package/pg-core/columns/point.d.ts +2 -2
  558. package/pg-core/columns/point.js +0 -2
  559. package/pg-core/columns/point.js.map +1 -1
  560. package/pg-core/columns/postgis_extension/geometry.cjs +8 -14
  561. package/pg-core/columns/postgis_extension/geometry.cjs.map +1 -1
  562. package/pg-core/columns/postgis_extension/geometry.d.cts +6 -16
  563. package/pg-core/columns/postgis_extension/geometry.d.ts +6 -16
  564. package/pg-core/columns/postgis_extension/geometry.js +8 -14
  565. package/pg-core/columns/postgis_extension/geometry.js.map +1 -1
  566. package/pg-core/columns/postgis_extension/utils.cjs +3 -3
  567. package/pg-core/columns/postgis_extension/utils.cjs.map +1 -1
  568. package/pg-core/columns/postgis_extension/utils.d.cts +1 -4
  569. package/pg-core/columns/postgis_extension/utils.d.ts +1 -4
  570. package/pg-core/columns/postgis_extension/utils.js +3 -3
  571. package/pg-core/columns/postgis_extension/utils.js.map +1 -1
  572. package/pg-core/columns/real.cjs.map +1 -1
  573. package/pg-core/columns/real.d.cts +1 -0
  574. package/pg-core/columns/real.d.ts +1 -0
  575. package/pg-core/columns/real.js.map +1 -1
  576. package/pg-core/columns/serial.cjs.map +1 -1
  577. package/pg-core/columns/serial.d.cts +1 -0
  578. package/pg-core/columns/serial.d.ts +1 -0
  579. package/pg-core/columns/serial.js.map +1 -1
  580. package/pg-core/columns/smallint.cjs.map +1 -1
  581. package/pg-core/columns/smallint.d.cts +1 -0
  582. package/pg-core/columns/smallint.d.ts +1 -0
  583. package/pg-core/columns/smallint.js.map +1 -1
  584. package/pg-core/columns/smallserial.cjs.map +1 -1
  585. package/pg-core/columns/smallserial.d.cts +1 -0
  586. package/pg-core/columns/smallserial.d.ts +1 -0
  587. package/pg-core/columns/smallserial.js.map +1 -1
  588. package/pg-core/columns/text.cjs.map +1 -1
  589. package/pg-core/columns/text.d.cts +1 -0
  590. package/pg-core/columns/text.d.ts +1 -0
  591. package/pg-core/columns/text.js.map +1 -1
  592. package/pg-core/columns/time.cjs.map +1 -1
  593. package/pg-core/columns/time.d.cts +1 -0
  594. package/pg-core/columns/time.d.ts +1 -0
  595. package/pg-core/columns/time.js.map +1 -1
  596. package/pg-core/columns/timestamp.cjs.map +1 -1
  597. package/pg-core/columns/timestamp.d.cts +2 -0
  598. package/pg-core/columns/timestamp.d.ts +2 -0
  599. package/pg-core/columns/timestamp.js.map +1 -1
  600. package/pg-core/columns/uuid.cjs.map +1 -1
  601. package/pg-core/columns/uuid.d.cts +1 -0
  602. package/pg-core/columns/uuid.d.ts +1 -0
  603. package/pg-core/columns/uuid.js.map +1 -1
  604. package/pg-core/columns/varchar.cjs.map +1 -1
  605. package/pg-core/columns/varchar.d.cts +1 -0
  606. package/pg-core/columns/varchar.d.ts +1 -0
  607. package/pg-core/columns/varchar.js.map +1 -1
  608. package/pg-core/columns/vector_extension/bit.cjs.map +1 -1
  609. package/pg-core/columns/vector_extension/bit.d.cts +1 -0
  610. package/pg-core/columns/vector_extension/bit.d.ts +1 -0
  611. package/pg-core/columns/vector_extension/bit.js.map +1 -1
  612. package/pg-core/columns/vector_extension/halfvec.cjs.map +1 -1
  613. package/pg-core/columns/vector_extension/halfvec.d.cts +1 -0
  614. package/pg-core/columns/vector_extension/halfvec.d.ts +1 -0
  615. package/pg-core/columns/vector_extension/halfvec.js.map +1 -1
  616. package/pg-core/columns/vector_extension/sparsevec.cjs.map +1 -1
  617. package/pg-core/columns/vector_extension/sparsevec.d.cts +1 -0
  618. package/pg-core/columns/vector_extension/sparsevec.d.ts +1 -0
  619. package/pg-core/columns/vector_extension/sparsevec.js.map +1 -1
  620. package/pg-core/columns/vector_extension/vector.cjs.map +1 -1
  621. package/pg-core/columns/vector_extension/vector.d.cts +1 -0
  622. package/pg-core/columns/vector_extension/vector.d.ts +1 -0
  623. package/pg-core/columns/vector_extension/vector.js.map +1 -1
  624. package/pg-core/db.cjs +3 -2
  625. package/pg-core/db.cjs.map +1 -1
  626. package/pg-core/db.d.cts +1 -1
  627. package/pg-core/db.d.ts +1 -1
  628. package/pg-core/db.js +3 -2
  629. package/pg-core/db.js.map +1 -1
  630. package/pg-core/foreign-keys.cjs +0 -4
  631. package/pg-core/foreign-keys.cjs.map +1 -1
  632. package/pg-core/foreign-keys.d.cts +0 -2
  633. package/pg-core/foreign-keys.d.ts +0 -2
  634. package/pg-core/foreign-keys.js +0 -4
  635. package/pg-core/foreign-keys.js.map +1 -1
  636. package/pg-core/indexes.cjs +0 -2
  637. package/pg-core/indexes.cjs.map +1 -1
  638. package/pg-core/indexes.d.cts +0 -1
  639. package/pg-core/indexes.d.ts +0 -1
  640. package/pg-core/indexes.js +0 -2
  641. package/pg-core/indexes.js.map +1 -1
  642. package/pg-core/primary-keys.cjs +0 -2
  643. package/pg-core/primary-keys.cjs.map +1 -1
  644. package/pg-core/primary-keys.d.cts +0 -1
  645. package/pg-core/primary-keys.d.ts +0 -1
  646. package/pg-core/primary-keys.js +0 -2
  647. package/pg-core/primary-keys.js.map +1 -1
  648. package/pg-core/query-builders/count.cjs.map +1 -1
  649. package/pg-core/query-builders/count.d.cts +1 -1
  650. package/pg-core/query-builders/count.d.ts +1 -1
  651. package/pg-core/query-builders/count.js.map +1 -1
  652. package/pg-core/query-builders/insert.cjs.map +1 -1
  653. package/pg-core/query-builders/insert.d.cts +9 -6
  654. package/pg-core/query-builders/insert.d.ts +9 -6
  655. package/pg-core/query-builders/insert.js.map +1 -1
  656. package/pg-core/query-builders/query.cjs +9 -5
  657. package/pg-core/query-builders/query.cjs.map +1 -1
  658. package/pg-core/query-builders/query.d.cts +4 -2
  659. package/pg-core/query-builders/query.d.ts +4 -2
  660. package/pg-core/query-builders/query.js +9 -5
  661. package/pg-core/query-builders/query.js.map +1 -1
  662. package/pg-core/query-builders/select.cjs +9 -8
  663. package/pg-core/query-builders/select.cjs.map +1 -1
  664. package/pg-core/query-builders/select.js +4 -4
  665. package/pg-core/query-builders/select.js.map +1 -1
  666. package/pg-core/query-builders/update.cjs +2 -2
  667. package/pg-core/query-builders/update.cjs.map +1 -1
  668. package/pg-core/query-builders/update.d.cts +1 -1
  669. package/pg-core/query-builders/update.d.ts +1 -1
  670. package/pg-core/query-builders/update.js +2 -2
  671. package/pg-core/query-builders/update.js.map +1 -1
  672. package/pg-core/schema.cjs +8 -8
  673. package/pg-core/schema.cjs.map +1 -1
  674. package/pg-core/schema.js +8 -8
  675. package/pg-core/schema.js.map +1 -1
  676. package/pg-core/unique-constraint.cjs +0 -2
  677. package/pg-core/unique-constraint.cjs.map +1 -1
  678. package/pg-core/unique-constraint.d.cts +0 -1
  679. package/pg-core/unique-constraint.d.ts +0 -1
  680. package/pg-core/unique-constraint.js +0 -2
  681. package/pg-core/unique-constraint.js.map +1 -1
  682. package/pg-core/utils.cjs +2 -1
  683. package/pg-core/utils.cjs.map +1 -1
  684. package/pg-core/utils.d.cts +1 -1
  685. package/pg-core/utils.d.ts +1 -1
  686. package/pg-core/utils.js +2 -1
  687. package/pg-core/utils.js.map +1 -1
  688. package/pg-core/view-common.cjs +0 -3
  689. package/pg-core/view-common.cjs.map +1 -1
  690. package/pg-core/view-common.d.cts +0 -1
  691. package/pg-core/view-common.d.ts +0 -1
  692. package/pg-core/view-common.js +0 -2
  693. package/pg-core/view-common.js.map +1 -1
  694. package/pg-core/view.cjs +5 -2
  695. package/pg-core/view.cjs.map +1 -1
  696. package/pg-core/view.d.cts +2 -1
  697. package/pg-core/view.d.ts +2 -1
  698. package/pg-core/view.js +3 -1
  699. package/pg-core/view.js.map +1 -1
  700. package/pglite/driver.cjs +14 -10
  701. package/pglite/driver.cjs.map +1 -1
  702. package/pglite/driver.d.cts +3 -3
  703. package/pglite/driver.d.ts +3 -3
  704. package/pglite/driver.js +14 -10
  705. package/pglite/driver.js.map +1 -1
  706. package/planetscale-serverless/driver.cjs +15 -11
  707. package/planetscale-serverless/driver.cjs.map +1 -1
  708. package/planetscale-serverless/driver.d.cts +3 -3
  709. package/planetscale-serverless/driver.d.ts +3 -3
  710. package/planetscale-serverless/driver.js +15 -11
  711. package/planetscale-serverless/driver.js.map +1 -1
  712. package/postgres-js/driver.cjs +14 -10
  713. package/postgres-js/driver.cjs.map +1 -1
  714. package/postgres-js/driver.d.cts +3 -3
  715. package/postgres-js/driver.d.ts +3 -3
  716. package/postgres-js/driver.js +14 -10
  717. package/postgres-js/driver.js.map +1 -1
  718. package/singlestore/driver.cjs +26 -19
  719. package/singlestore/driver.cjs.map +1 -1
  720. package/singlestore/driver.d.cts +3 -3
  721. package/singlestore/driver.d.ts +3 -3
  722. package/singlestore/driver.js +26 -19
  723. package/singlestore/driver.js.map +1 -1
  724. package/singlestore/session.cjs.map +1 -1
  725. package/singlestore/session.js.map +1 -1
  726. package/singlestore-core/columns/bigint.cjs.map +1 -1
  727. package/singlestore-core/columns/bigint.d.cts +2 -0
  728. package/singlestore-core/columns/bigint.d.ts +2 -0
  729. package/singlestore-core/columns/bigint.js.map +1 -1
  730. package/singlestore-core/columns/binary.cjs +1 -0
  731. package/singlestore-core/columns/binary.cjs.map +1 -1
  732. package/singlestore-core/columns/binary.d.cts +2 -0
  733. package/singlestore-core/columns/binary.d.ts +2 -0
  734. package/singlestore-core/columns/binary.js +1 -0
  735. package/singlestore-core/columns/binary.js.map +1 -1
  736. package/singlestore-core/columns/boolean.cjs.map +1 -1
  737. package/singlestore-core/columns/boolean.d.cts +1 -0
  738. package/singlestore-core/columns/boolean.d.ts +1 -0
  739. package/singlestore-core/columns/boolean.js.map +1 -1
  740. package/singlestore-core/columns/char.cjs +1 -0
  741. package/singlestore-core/columns/char.cjs.map +1 -1
  742. package/singlestore-core/columns/char.d.cts +2 -0
  743. package/singlestore-core/columns/char.d.ts +2 -0
  744. package/singlestore-core/columns/char.js +1 -0
  745. package/singlestore-core/columns/char.js.map +1 -1
  746. package/singlestore-core/columns/common.cjs +4 -0
  747. package/singlestore-core/columns/common.cjs.map +1 -1
  748. package/singlestore-core/columns/common.d.cts +1 -1
  749. package/singlestore-core/columns/common.d.ts +1 -1
  750. package/singlestore-core/columns/common.js +4 -0
  751. package/singlestore-core/columns/common.js.map +1 -1
  752. package/singlestore-core/columns/custom.cjs.map +1 -1
  753. package/singlestore-core/columns/custom.d.cts +1 -0
  754. package/singlestore-core/columns/custom.d.ts +1 -0
  755. package/singlestore-core/columns/custom.js.map +1 -1
  756. package/singlestore-core/columns/date.cjs.map +1 -1
  757. package/singlestore-core/columns/date.d.cts +2 -0
  758. package/singlestore-core/columns/date.d.ts +2 -0
  759. package/singlestore-core/columns/date.js.map +1 -1
  760. package/singlestore-core/columns/datetime.cjs.map +1 -1
  761. package/singlestore-core/columns/datetime.d.cts +2 -0
  762. package/singlestore-core/columns/datetime.d.ts +2 -0
  763. package/singlestore-core/columns/datetime.js.map +1 -1
  764. package/singlestore-core/columns/decimal.cjs.map +1 -1
  765. package/singlestore-core/columns/decimal.d.cts +3 -0
  766. package/singlestore-core/columns/decimal.d.ts +3 -0
  767. package/singlestore-core/columns/decimal.js.map +1 -1
  768. package/singlestore-core/columns/double.cjs.map +1 -1
  769. package/singlestore-core/columns/double.d.cts +1 -0
  770. package/singlestore-core/columns/double.d.ts +1 -0
  771. package/singlestore-core/columns/double.js.map +1 -1
  772. package/singlestore-core/columns/enum.cjs.map +1 -1
  773. package/singlestore-core/columns/enum.d.cts +1 -0
  774. package/singlestore-core/columns/enum.d.ts +1 -0
  775. package/singlestore-core/columns/enum.js.map +1 -1
  776. package/singlestore-core/columns/float.cjs.map +1 -1
  777. package/singlestore-core/columns/float.d.cts +1 -0
  778. package/singlestore-core/columns/float.d.ts +1 -0
  779. package/singlestore-core/columns/float.js.map +1 -1
  780. package/singlestore-core/columns/int.cjs.map +1 -1
  781. package/singlestore-core/columns/int.d.cts +1 -0
  782. package/singlestore-core/columns/int.d.ts +1 -0
  783. package/singlestore-core/columns/int.js.map +1 -1
  784. package/singlestore-core/columns/json.cjs.map +1 -1
  785. package/singlestore-core/columns/json.d.cts +1 -0
  786. package/singlestore-core/columns/json.d.ts +1 -0
  787. package/singlestore-core/columns/json.js.map +1 -1
  788. package/singlestore-core/columns/mediumint.cjs.map +1 -1
  789. package/singlestore-core/columns/mediumint.d.cts +1 -0
  790. package/singlestore-core/columns/mediumint.d.ts +1 -0
  791. package/singlestore-core/columns/mediumint.js.map +1 -1
  792. package/singlestore-core/columns/real.cjs.map +1 -1
  793. package/singlestore-core/columns/real.d.cts +1 -0
  794. package/singlestore-core/columns/real.d.ts +1 -0
  795. package/singlestore-core/columns/real.js.map +1 -1
  796. package/singlestore-core/columns/serial.cjs.map +1 -1
  797. package/singlestore-core/columns/serial.d.cts +1 -0
  798. package/singlestore-core/columns/serial.d.ts +1 -0
  799. package/singlestore-core/columns/serial.js.map +1 -1
  800. package/singlestore-core/columns/smallint.cjs.map +1 -1
  801. package/singlestore-core/columns/smallint.d.cts +1 -0
  802. package/singlestore-core/columns/smallint.d.ts +1 -0
  803. package/singlestore-core/columns/smallint.js.map +1 -1
  804. package/singlestore-core/columns/text.cjs.map +1 -1
  805. package/singlestore-core/columns/text.d.cts +1 -0
  806. package/singlestore-core/columns/text.d.ts +1 -0
  807. package/singlestore-core/columns/text.js.map +1 -1
  808. package/singlestore-core/columns/time.cjs.map +1 -1
  809. package/singlestore-core/columns/time.d.cts +1 -0
  810. package/singlestore-core/columns/time.d.ts +1 -0
  811. package/singlestore-core/columns/time.js.map +1 -1
  812. package/singlestore-core/columns/timestamp.cjs.map +1 -1
  813. package/singlestore-core/columns/timestamp.d.cts +2 -0
  814. package/singlestore-core/columns/timestamp.d.ts +2 -0
  815. package/singlestore-core/columns/timestamp.js.map +1 -1
  816. package/singlestore-core/columns/tinyint.cjs.map +1 -1
  817. package/singlestore-core/columns/tinyint.d.cts +1 -0
  818. package/singlestore-core/columns/tinyint.d.ts +1 -0
  819. package/singlestore-core/columns/tinyint.js.map +1 -1
  820. package/singlestore-core/columns/varbinary.cjs.map +1 -1
  821. package/singlestore-core/columns/varbinary.d.cts +1 -0
  822. package/singlestore-core/columns/varbinary.d.ts +1 -0
  823. package/singlestore-core/columns/varbinary.js.map +1 -1
  824. package/singlestore-core/columns/varchar.cjs.map +1 -1
  825. package/singlestore-core/columns/varchar.d.cts +1 -0
  826. package/singlestore-core/columns/varchar.d.ts +1 -0
  827. package/singlestore-core/columns/varchar.js.map +1 -1
  828. package/singlestore-core/columns/vector.cjs.map +1 -1
  829. package/singlestore-core/columns/vector.d.cts +2 -0
  830. package/singlestore-core/columns/vector.d.ts +2 -0
  831. package/singlestore-core/columns/vector.js.map +1 -1
  832. package/singlestore-core/columns/year.cjs.map +1 -1
  833. package/singlestore-core/columns/year.d.cts +1 -0
  834. package/singlestore-core/columns/year.d.ts +1 -0
  835. package/singlestore-core/columns/year.js.map +1 -1
  836. package/singlestore-core/indexes.cjs +0 -2
  837. package/singlestore-core/indexes.cjs.map +1 -1
  838. package/singlestore-core/indexes.d.cts +0 -1
  839. package/singlestore-core/indexes.d.ts +0 -1
  840. package/singlestore-core/indexes.js +0 -2
  841. package/singlestore-core/indexes.js.map +1 -1
  842. package/singlestore-core/primary-keys.cjs +0 -2
  843. package/singlestore-core/primary-keys.cjs.map +1 -1
  844. package/singlestore-core/primary-keys.d.cts +0 -1
  845. package/singlestore-core/primary-keys.d.ts +0 -1
  846. package/singlestore-core/primary-keys.js +0 -2
  847. package/singlestore-core/primary-keys.js.map +1 -1
  848. package/singlestore-core/query-builders/count.cjs.map +1 -1
  849. package/singlestore-core/query-builders/count.d.cts +1 -1
  850. package/singlestore-core/query-builders/count.d.ts +1 -1
  851. package/singlestore-core/query-builders/count.js.map +1 -1
  852. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  853. package/singlestore-core/query-builders/insert.d.cts +1 -1
  854. package/singlestore-core/query-builders/insert.d.ts +1 -1
  855. package/singlestore-core/query-builders/insert.js.map +1 -1
  856. package/singlestore-core/query-builders/select.cjs +2 -2
  857. package/singlestore-core/query-builders/select.cjs.map +1 -1
  858. package/singlestore-core/query-builders/select.js +2 -2
  859. package/singlestore-core/query-builders/select.js.map +1 -1
  860. package/singlestore-core/query-builders/update.cjs.map +1 -1
  861. package/singlestore-core/query-builders/update.d.cts +1 -1
  862. package/singlestore-core/query-builders/update.d.ts +1 -1
  863. package/singlestore-core/query-builders/update.js.map +1 -1
  864. package/singlestore-core/unique-constraint.cjs +0 -2
  865. package/singlestore-core/unique-constraint.cjs.map +1 -1
  866. package/singlestore-core/unique-constraint.d.cts +2 -3
  867. package/singlestore-core/unique-constraint.d.ts +2 -3
  868. package/singlestore-core/unique-constraint.js +0 -2
  869. package/singlestore-core/unique-constraint.js.map +1 -1
  870. package/sql/sql.cjs +3 -10
  871. package/sql/sql.cjs.map +1 -1
  872. package/sql/sql.d.cts +1 -1
  873. package/sql/sql.d.ts +1 -1
  874. package/sql/sql.js +3 -10
  875. package/sql/sql.js.map +1 -1
  876. package/sql-js/session.cjs.map +1 -1
  877. package/sql-js/session.js.map +1 -1
  878. package/sqlite-core/columns/blob.cjs.map +1 -1
  879. package/sqlite-core/columns/blob.d.cts +3 -0
  880. package/sqlite-core/columns/blob.d.ts +3 -0
  881. package/sqlite-core/columns/blob.js.map +1 -1
  882. package/sqlite-core/columns/common.cjs +4 -0
  883. package/sqlite-core/columns/common.cjs.map +1 -1
  884. package/sqlite-core/columns/common.js +4 -0
  885. package/sqlite-core/columns/common.js.map +1 -1
  886. package/sqlite-core/columns/custom.cjs.map +1 -1
  887. package/sqlite-core/columns/custom.d.cts +1 -0
  888. package/sqlite-core/columns/custom.d.ts +1 -0
  889. package/sqlite-core/columns/custom.js.map +1 -1
  890. package/sqlite-core/columns/integer.cjs.map +1 -1
  891. package/sqlite-core/columns/integer.d.cts +3 -0
  892. package/sqlite-core/columns/integer.d.ts +3 -0
  893. package/sqlite-core/columns/integer.js.map +1 -1
  894. package/sqlite-core/columns/numeric.cjs.map +1 -1
  895. package/sqlite-core/columns/numeric.d.cts +3 -0
  896. package/sqlite-core/columns/numeric.d.ts +3 -0
  897. package/sqlite-core/columns/numeric.js.map +1 -1
  898. package/sqlite-core/columns/real.cjs.map +1 -1
  899. package/sqlite-core/columns/real.d.cts +1 -0
  900. package/sqlite-core/columns/real.d.ts +1 -0
  901. package/sqlite-core/columns/real.js.map +1 -1
  902. package/sqlite-core/columns/text.cjs.map +1 -1
  903. package/sqlite-core/columns/text.d.cts +2 -0
  904. package/sqlite-core/columns/text.d.ts +2 -0
  905. package/sqlite-core/columns/text.js.map +1 -1
  906. package/sqlite-core/foreign-keys.cjs +0 -3
  907. package/sqlite-core/foreign-keys.cjs.map +1 -1
  908. package/sqlite-core/foreign-keys.d.cts +14 -1
  909. package/sqlite-core/foreign-keys.d.ts +14 -1
  910. package/sqlite-core/foreign-keys.js +0 -3
  911. package/sqlite-core/foreign-keys.js.map +1 -1
  912. package/sqlite-core/indexes.cjs +0 -2
  913. package/sqlite-core/indexes.cjs.map +1 -1
  914. package/sqlite-core/indexes.d.cts +0 -1
  915. package/sqlite-core/indexes.d.ts +0 -1
  916. package/sqlite-core/indexes.js +0 -2
  917. package/sqlite-core/indexes.js.map +1 -1
  918. package/sqlite-core/primary-keys.cjs +0 -2
  919. package/sqlite-core/primary-keys.cjs.map +1 -1
  920. package/sqlite-core/primary-keys.d.cts +0 -1
  921. package/sqlite-core/primary-keys.d.ts +0 -1
  922. package/sqlite-core/primary-keys.js +0 -2
  923. package/sqlite-core/primary-keys.js.map +1 -1
  924. package/sqlite-core/query-builders/count.cjs.map +1 -1
  925. package/sqlite-core/query-builders/count.d.cts +1 -1
  926. package/sqlite-core/query-builders/count.d.ts +1 -1
  927. package/sqlite-core/query-builders/count.js.map +1 -1
  928. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  929. package/sqlite-core/query-builders/insert.d.cts +2 -2
  930. package/sqlite-core/query-builders/insert.d.ts +2 -2
  931. package/sqlite-core/query-builders/insert.js.map +1 -1
  932. package/sqlite-core/query-builders/update.cjs +2 -2
  933. package/sqlite-core/query-builders/update.cjs.map +1 -1
  934. package/sqlite-core/query-builders/update.d.cts +1 -1
  935. package/sqlite-core/query-builders/update.d.ts +1 -1
  936. package/sqlite-core/query-builders/update.js +2 -2
  937. package/sqlite-core/query-builders/update.js.map +1 -1
  938. package/sqlite-core/unique-constraint.cjs +0 -2
  939. package/sqlite-core/unique-constraint.cjs.map +1 -1
  940. package/sqlite-core/unique-constraint.d.cts +2 -3
  941. package/sqlite-core/unique-constraint.d.ts +2 -3
  942. package/sqlite-core/unique-constraint.js +0 -2
  943. package/sqlite-core/unique-constraint.js.map +1 -1
  944. package/tidb-serverless/driver.cjs +12 -8
  945. package/tidb-serverless/driver.cjs.map +1 -1
  946. package/tidb-serverless/driver.d.cts +3 -3
  947. package/tidb-serverless/driver.d.ts +3 -3
  948. package/tidb-serverless/driver.js +12 -8
  949. package/tidb-serverless/driver.js.map +1 -1
  950. package/tracing.cjs +3 -3
  951. package/tracing.cjs.map +1 -1
  952. package/tracing.js +3 -3
  953. package/tracing.js.map +1 -1
  954. package/tursodatabase/database.cjs +10 -6
  955. package/tursodatabase/database.cjs.map +1 -1
  956. package/tursodatabase/database.d.cts +3 -3
  957. package/tursodatabase/database.d.ts +3 -3
  958. package/tursodatabase/database.js +10 -6
  959. package/tursodatabase/database.js.map +1 -1
  960. package/tursodatabase/wasm.cjs +10 -6
  961. package/tursodatabase/wasm.cjs.map +1 -1
  962. package/tursodatabase/wasm.d.cts +3 -3
  963. package/tursodatabase/wasm.d.ts +3 -3
  964. package/tursodatabase/wasm.js +10 -6
  965. package/tursodatabase/wasm.js.map +1 -1
  966. package/vercel-postgres/session.cjs.map +1 -1
  967. package/vercel-postgres/session.js.map +1 -1
  968. package/version.cjs +1 -1
  969. package/version.d.cts +1 -1
  970. package/version.d.ts +1 -1
  971. package/version.js +1 -1
  972. package/cockroach/driver.cjs +0 -109
  973. package/cockroach/driver.cjs.map +0 -1
  974. package/cockroach/driver.d.cts +0 -42
  975. package/cockroach/driver.d.ts +0 -42
  976. package/cockroach/driver.js +0 -73
  977. package/cockroach/driver.js.map +0 -1
  978. package/cockroach/index.cjs +0 -25
  979. package/cockroach/index.cjs.map +0 -1
  980. package/cockroach/index.d.cts +0 -2
  981. package/cockroach/index.d.ts +0 -2
  982. package/cockroach/index.js +0 -3
  983. package/cockroach/index.js.map +0 -1
  984. package/cockroach/migrator.cjs +0 -33
  985. package/cockroach/migrator.cjs.map +0 -1
  986. package/cockroach/migrator.d.cts +0 -3
  987. package/cockroach/migrator.d.ts +0 -3
  988. package/cockroach/migrator.js +0 -9
  989. package/cockroach/migrator.js.map +0 -1
  990. package/cockroach/session.cjs +0 -253
  991. package/cockroach/session.cjs.map +0 -1
  992. package/cockroach/session.d.cts +0 -48
  993. package/cockroach/session.d.ts +0 -48
  994. package/cockroach/session.js +0 -217
  995. package/cockroach/session.js.map +0 -1
  996. package/cockroach-core/alias.cjs +0 -32
  997. package/cockroach-core/alias.cjs.map +0 -1
  998. package/cockroach-core/alias.d.cts +0 -4
  999. package/cockroach-core/alias.d.ts +0 -4
  1000. package/cockroach-core/alias.js +0 -8
  1001. package/cockroach-core/alias.js.map +0 -1
  1002. package/cockroach-core/checks.cjs +0 -58
  1003. package/cockroach-core/checks.cjs.map +0 -1
  1004. package/cockroach-core/checks.d.cts +0 -18
  1005. package/cockroach-core/checks.d.ts +0 -18
  1006. package/cockroach-core/checks.js +0 -32
  1007. package/cockroach-core/checks.js.map +0 -1
  1008. package/cockroach-core/columns/all.cjs +0 -81
  1009. package/cockroach-core/columns/all.cjs.map +0 -1
  1010. package/cockroach-core/columns/all.d.cts +0 -52
  1011. package/cockroach-core/columns/all.d.ts +0 -52
  1012. package/cockroach-core/columns/all.js +0 -57
  1013. package/cockroach-core/columns/all.js.map +0 -1
  1014. package/cockroach-core/columns/bigint.cjs +0 -104
  1015. package/cockroach-core/columns/bigint.cjs.map +0 -1
  1016. package/cockroach-core/columns/bigint.d.cts +0 -37
  1017. package/cockroach-core/columns/bigint.d.ts +0 -37
  1018. package/cockroach-core/columns/bigint.js +0 -75
  1019. package/cockroach-core/columns/bigint.js.map +0 -1
  1020. package/cockroach-core/columns/bit.cjs +0 -61
  1021. package/cockroach-core/columns/bit.cjs.map +0 -1
  1022. package/cockroach-core/columns/bit.d.cts +0 -29
  1023. package/cockroach-core/columns/bit.d.ts +0 -29
  1024. package/cockroach-core/columns/bit.js +0 -35
  1025. package/cockroach-core/columns/bit.js.map +0 -1
  1026. package/cockroach-core/columns/bool.cjs +0 -59
  1027. package/cockroach-core/columns/bool.cjs.map +0 -1
  1028. package/cockroach-core/columns/bool.d.cts +0 -17
  1029. package/cockroach-core/columns/bool.d.ts +0 -17
  1030. package/cockroach-core/columns/bool.js +0 -32
  1031. package/cockroach-core/columns/bool.js.map +0 -1
  1032. package/cockroach-core/columns/char.cjs +0 -62
  1033. package/cockroach-core/columns/char.cjs.map +0 -1
  1034. package/cockroach-core/columns/char.d.cts +0 -31
  1035. package/cockroach-core/columns/char.d.ts +0 -31
  1036. package/cockroach-core/columns/char.js +0 -36
  1037. package/cockroach-core/columns/char.js.map +0 -1
  1038. package/cockroach-core/columns/common.cjs +0 -198
  1039. package/cockroach-core/columns/common.cjs.map +0 -1
  1040. package/cockroach-core/columns/common.d.cts +0 -98
  1041. package/cockroach-core/columns/common.d.ts +0 -98
  1042. package/cockroach-core/columns/common.js +0 -168
  1043. package/cockroach-core/columns/common.js.map +0 -1
  1044. package/cockroach-core/columns/custom.cjs +0 -102
  1045. package/cockroach-core/columns/custom.cjs.map +0 -1
  1046. package/cockroach-core/columns/custom.d.cts +0 -261
  1047. package/cockroach-core/columns/custom.d.ts +0 -261
  1048. package/cockroach-core/columns/custom.js +0 -76
  1049. package/cockroach-core/columns/custom.js.map +0 -1
  1050. package/cockroach-core/columns/date.cjs +0 -91
  1051. package/cockroach-core/columns/date.cjs.map +0 -1
  1052. package/cockroach-core/columns/date.common.cjs +0 -37
  1053. package/cockroach-core/columns/date.common.cjs.map +0 -1
  1054. package/cockroach-core/columns/date.common.d.cts +0 -7
  1055. package/cockroach-core/columns/date.common.d.ts +0 -7
  1056. package/cockroach-core/columns/date.common.js +0 -13
  1057. package/cockroach-core/columns/date.common.js.map +0 -1
  1058. package/cockroach-core/columns/date.d.cts +0 -36
  1059. package/cockroach-core/columns/date.d.ts +0 -36
  1060. package/cockroach-core/columns/date.js +0 -63
  1061. package/cockroach-core/columns/date.js.map +0 -1
  1062. package/cockroach-core/columns/decimal.cjs +0 -164
  1063. package/cockroach-core/columns/decimal.cjs.map +0 -1
  1064. package/cockroach-core/columns/decimal.d.cts +0 -80
  1065. package/cockroach-core/columns/decimal.d.ts +0 -80
  1066. package/cockroach-core/columns/decimal.js +0 -133
  1067. package/cockroach-core/columns/decimal.js.map +0 -1
  1068. package/cockroach-core/columns/enum.cjs +0 -127
  1069. package/cockroach-core/columns/enum.cjs.map +0 -1
  1070. package/cockroach-core/columns/enum.d.cts +0 -64
  1071. package/cockroach-core/columns/enum.d.ts +0 -64
  1072. package/cockroach-core/columns/enum.js +0 -96
  1073. package/cockroach-core/columns/enum.js.map +0 -1
  1074. package/cockroach-core/columns/float.cjs +0 -65
  1075. package/cockroach-core/columns/float.cjs.map +0 -1
  1076. package/cockroach-core/columns/float.d.cts +0 -18
  1077. package/cockroach-core/columns/float.d.ts +0 -18
  1078. package/cockroach-core/columns/float.js +0 -38
  1079. package/cockroach-core/columns/float.js.map +0 -1
  1080. package/cockroach-core/columns/geometry.cjs +0 -105
  1081. package/cockroach-core/columns/geometry.cjs.map +0 -1
  1082. package/cockroach-core/columns/geometry.d.cts +0 -60
  1083. package/cockroach-core/columns/geometry.d.ts +0 -60
  1084. package/cockroach-core/columns/geometry.js +0 -77
  1085. package/cockroach-core/columns/geometry.js.map +0 -1
  1086. package/cockroach-core/columns/index.cjs +0 -71
  1087. package/cockroach-core/columns/index.cjs.map +0 -1
  1088. package/cockroach-core/columns/index.d.cts +0 -25
  1089. package/cockroach-core/columns/index.d.ts +0 -25
  1090. package/cockroach-core/columns/index.js +0 -26
  1091. package/cockroach-core/columns/index.js.map +0 -1
  1092. package/cockroach-core/columns/inet.cjs +0 -56
  1093. package/cockroach-core/columns/inet.cjs.map +0 -1
  1094. package/cockroach-core/columns/inet.d.cts +0 -16
  1095. package/cockroach-core/columns/inet.d.ts +0 -16
  1096. package/cockroach-core/columns/inet.js +0 -30
  1097. package/cockroach-core/columns/inet.js.map +0 -1
  1098. package/cockroach-core/columns/int.common.cjs +0 -55
  1099. package/cockroach-core/columns/int.common.cjs.map +0 -1
  1100. package/cockroach-core/columns/int.common.d.cts +0 -11
  1101. package/cockroach-core/columns/int.common.d.ts +0 -11
  1102. package/cockroach-core/columns/int.common.js +0 -31
  1103. package/cockroach-core/columns/int.common.js.map +0 -1
  1104. package/cockroach-core/columns/integer.cjs +0 -63
  1105. package/cockroach-core/columns/integer.cjs.map +0 -1
  1106. package/cockroach-core/columns/integer.d.cts +0 -18
  1107. package/cockroach-core/columns/integer.d.ts +0 -18
  1108. package/cockroach-core/columns/integer.js +0 -37
  1109. package/cockroach-core/columns/integer.js.map +0 -1
  1110. package/cockroach-core/columns/interval.cjs +0 -63
  1111. package/cockroach-core/columns/interval.cjs.map +0 -1
  1112. package/cockroach-core/columns/interval.d.cts +0 -28
  1113. package/cockroach-core/columns/interval.d.ts +0 -28
  1114. package/cockroach-core/columns/interval.js +0 -37
  1115. package/cockroach-core/columns/interval.js.map +0 -1
  1116. package/cockroach-core/columns/jsonb.cjs +0 -72
  1117. package/cockroach-core/columns/jsonb.cjs.map +0 -1
  1118. package/cockroach-core/columns/jsonb.d.cts +0 -20
  1119. package/cockroach-core/columns/jsonb.d.ts +0 -20
  1120. package/cockroach-core/columns/jsonb.js +0 -46
  1121. package/cockroach-core/columns/jsonb.js.map +0 -1
  1122. package/cockroach-core/columns/real.cjs +0 -66
  1123. package/cockroach-core/columns/real.cjs.map +0 -1
  1124. package/cockroach-core/columns/real.d.cts +0 -21
  1125. package/cockroach-core/columns/real.d.ts +0 -21
  1126. package/cockroach-core/columns/real.js +0 -40
  1127. package/cockroach-core/columns/real.js.map +0 -1
  1128. package/cockroach-core/columns/smallint.cjs +0 -68
  1129. package/cockroach-core/columns/smallint.cjs.map +0 -1
  1130. package/cockroach-core/columns/smallint.d.cts +0 -19
  1131. package/cockroach-core/columns/smallint.d.ts +0 -19
  1132. package/cockroach-core/columns/smallint.js +0 -41
  1133. package/cockroach-core/columns/smallint.js.map +0 -1
  1134. package/cockroach-core/columns/string.cjs +0 -67
  1135. package/cockroach-core/columns/string.cjs.map +0 -1
  1136. package/cockroach-core/columns/string.d.cts +0 -36
  1137. package/cockroach-core/columns/string.d.ts +0 -36
  1138. package/cockroach-core/columns/string.js +0 -40
  1139. package/cockroach-core/columns/string.js.map +0 -1
  1140. package/cockroach-core/columns/time.cjs +0 -70
  1141. package/cockroach-core/columns/time.cjs.map +0 -1
  1142. package/cockroach-core/columns/time.d.cts +0 -31
  1143. package/cockroach-core/columns/time.d.ts +0 -31
  1144. package/cockroach-core/columns/time.js +0 -44
  1145. package/cockroach-core/columns/time.js.map +0 -1
  1146. package/cockroach-core/columns/timestamp.cjs +0 -111
  1147. package/cockroach-core/columns/timestamp.cjs.map +0 -1
  1148. package/cockroach-core/columns/timestamp.d.cts +0 -52
  1149. package/cockroach-core/columns/timestamp.d.ts +0 -52
  1150. package/cockroach-core/columns/timestamp.js +0 -83
  1151. package/cockroach-core/columns/timestamp.js.map +0 -1
  1152. package/cockroach-core/columns/utils.cjs +0 -65
  1153. package/cockroach-core/columns/utils.cjs.map +0 -1
  1154. package/cockroach-core/columns/utils.d.cts +0 -4
  1155. package/cockroach-core/columns/utils.d.ts +0 -4
  1156. package/cockroach-core/columns/utils.js +0 -41
  1157. package/cockroach-core/columns/utils.js.map +0 -1
  1158. package/cockroach-core/columns/uuid.cjs +0 -63
  1159. package/cockroach-core/columns/uuid.cjs.map +0 -1
  1160. package/cockroach-core/columns/uuid.d.cts +0 -20
  1161. package/cockroach-core/columns/uuid.d.ts +0 -20
  1162. package/cockroach-core/columns/uuid.js +0 -37
  1163. package/cockroach-core/columns/uuid.js.map +0 -1
  1164. package/cockroach-core/columns/varbit.cjs +0 -59
  1165. package/cockroach-core/columns/varbit.cjs.map +0 -1
  1166. package/cockroach-core/columns/varbit.d.cts +0 -24
  1167. package/cockroach-core/columns/varbit.d.ts +0 -24
  1168. package/cockroach-core/columns/varbit.js +0 -33
  1169. package/cockroach-core/columns/varbit.js.map +0 -1
  1170. package/cockroach-core/columns/varchar.cjs +0 -61
  1171. package/cockroach-core/columns/varchar.cjs.map +0 -1
  1172. package/cockroach-core/columns/varchar.d.cts +0 -30
  1173. package/cockroach-core/columns/varchar.d.ts +0 -30
  1174. package/cockroach-core/columns/varchar.js +0 -35
  1175. package/cockroach-core/columns/varchar.js.map +0 -1
  1176. package/cockroach-core/columns/vector.cjs +0 -65
  1177. package/cockroach-core/columns/vector.cjs.map +0 -1
  1178. package/cockroach-core/columns/vector.d.cts +0 -26
  1179. package/cockroach-core/columns/vector.d.ts +0 -26
  1180. package/cockroach-core/columns/vector.js +0 -39
  1181. package/cockroach-core/columns/vector.js.map +0 -1
  1182. package/cockroach-core/db.cjs +0 -346
  1183. package/cockroach-core/db.cjs.map +0 -1
  1184. package/cockroach-core/db.d.cts +0 -282
  1185. package/cockroach-core/db.d.ts +0 -282
  1186. package/cockroach-core/db.js +0 -327
  1187. package/cockroach-core/db.js.map +0 -1
  1188. package/cockroach-core/dialect.cjs +0 -1146
  1189. package/cockroach-core/dialect.cjs.map +0 -1
  1190. package/cockroach-core/dialect.d.cts +0 -65
  1191. package/cockroach-core/dialect.d.ts +0 -65
  1192. package/cockroach-core/dialect.js +0 -1126
  1193. package/cockroach-core/dialect.js.map +0 -1
  1194. package/cockroach-core/expressions.cjs +0 -49
  1195. package/cockroach-core/expressions.cjs.map +0 -1
  1196. package/cockroach-core/expressions.d.cts +0 -8
  1197. package/cockroach-core/expressions.d.ts +0 -8
  1198. package/cockroach-core/expressions.js +0 -22
  1199. package/cockroach-core/expressions.js.map +0 -1
  1200. package/cockroach-core/foreign-keys.cjs +0 -95
  1201. package/cockroach-core/foreign-keys.cjs.map +0 -1
  1202. package/cockroach-core/foreign-keys.d.cts +0 -53
  1203. package/cockroach-core/foreign-keys.d.ts +0 -53
  1204. package/cockroach-core/foreign-keys.js +0 -69
  1205. package/cockroach-core/foreign-keys.js.map +0 -1
  1206. package/cockroach-core/index.cjs +0 -61
  1207. package/cockroach-core/index.cjs.map +0 -1
  1208. package/cockroach-core/index.d.cts +0 -20
  1209. package/cockroach-core/index.d.ts +0 -20
  1210. package/cockroach-core/index.js +0 -21
  1211. package/cockroach-core/index.js.map +0 -1
  1212. package/cockroach-core/indexes.cjs +0 -139
  1213. package/cockroach-core/indexes.cjs.map +0 -1
  1214. package/cockroach-core/indexes.d.cts +0 -65
  1215. package/cockroach-core/indexes.d.ts +0 -65
  1216. package/cockroach-core/indexes.js +0 -111
  1217. package/cockroach-core/indexes.js.map +0 -1
  1218. package/cockroach-core/policies.cjs +0 -58
  1219. package/cockroach-core/policies.cjs.map +0 -1
  1220. package/cockroach-core/policies.d.cts +0 -24
  1221. package/cockroach-core/policies.d.ts +0 -24
  1222. package/cockroach-core/policies.js +0 -33
  1223. package/cockroach-core/policies.js.map +0 -1
  1224. package/cockroach-core/primary-keys.cjs +0 -66
  1225. package/cockroach-core/primary-keys.cjs.map +0 -1
  1226. package/cockroach-core/primary-keys.d.cts +0 -24
  1227. package/cockroach-core/primary-keys.d.ts +0 -24
  1228. package/cockroach-core/primary-keys.js +0 -40
  1229. package/cockroach-core/primary-keys.js.map +0 -1
  1230. package/cockroach-core/query-builders/count.cjs +0 -79
  1231. package/cockroach-core/query-builders/count.cjs.map +0 -1
  1232. package/cockroach-core/query-builders/count.d.cts +0 -29
  1233. package/cockroach-core/query-builders/count.d.ts +0 -29
  1234. package/cockroach-core/query-builders/count.js +0 -55
  1235. package/cockroach-core/query-builders/count.js.map +0 -1
  1236. package/cockroach-core/query-builders/delete.cjs +0 -124
  1237. package/cockroach-core/query-builders/delete.cjs.map +0 -1
  1238. package/cockroach-core/query-builders/delete.d.cts +0 -103
  1239. package/cockroach-core/query-builders/delete.d.ts +0 -103
  1240. package/cockroach-core/query-builders/delete.js +0 -100
  1241. package/cockroach-core/query-builders/delete.js.map +0 -1
  1242. package/cockroach-core/query-builders/index.cjs +0 -35
  1243. package/cockroach-core/query-builders/index.cjs.map +0 -1
  1244. package/cockroach-core/query-builders/index.d.cts +0 -7
  1245. package/cockroach-core/query-builders/index.d.ts +0 -7
  1246. package/cockroach-core/query-builders/index.js +0 -8
  1247. package/cockroach-core/query-builders/index.js.map +0 -1
  1248. package/cockroach-core/query-builders/insert.cjs +0 -213
  1249. package/cockroach-core/query-builders/insert.cjs.map +0 -1
  1250. package/cockroach-core/query-builders/insert.d.cts +0 -168
  1251. package/cockroach-core/query-builders/insert.d.ts +0 -168
  1252. package/cockroach-core/query-builders/insert.js +0 -188
  1253. package/cockroach-core/query-builders/insert.js.map +0 -1
  1254. package/cockroach-core/query-builders/query-builder.cjs +0 -118
  1255. package/cockroach-core/query-builders/query-builder.cjs.map +0 -1
  1256. package/cockroach-core/query-builders/query-builder.d.cts +0 -37
  1257. package/cockroach-core/query-builders/query-builder.d.ts +0 -37
  1258. package/cockroach-core/query-builders/query-builder.js +0 -94
  1259. package/cockroach-core/query-builders/query-builder.js.map +0 -1
  1260. package/cockroach-core/query-builders/query.cjs +0 -145
  1261. package/cockroach-core/query-builders/query.cjs.map +0 -1
  1262. package/cockroach-core/query-builders/query.d.cts +0 -47
  1263. package/cockroach-core/query-builders/query.d.ts +0 -47
  1264. package/cockroach-core/query-builders/query.js +0 -122
  1265. package/cockroach-core/query-builders/query.js.map +0 -1
  1266. package/cockroach-core/query-builders/raw.cjs +0 -57
  1267. package/cockroach-core/query-builders/raw.cjs.map +0 -1
  1268. package/cockroach-core/query-builders/raw.d.cts +0 -22
  1269. package/cockroach-core/query-builders/raw.d.ts +0 -22
  1270. package/cockroach-core/query-builders/raw.js +0 -33
  1271. package/cockroach-core/query-builders/raw.js.map +0 -1
  1272. package/cockroach-core/query-builders/refresh-materialized-view.cjs +0 -83
  1273. package/cockroach-core/query-builders/refresh-materialized-view.cjs.map +0 -1
  1274. package/cockroach-core/query-builders/refresh-materialized-view.d.cts +0 -28
  1275. package/cockroach-core/query-builders/refresh-materialized-view.d.ts +0 -28
  1276. package/cockroach-core/query-builders/refresh-materialized-view.js +0 -59
  1277. package/cockroach-core/query-builders/refresh-materialized-view.js.map +0 -1
  1278. package/cockroach-core/query-builders/select.cjs +0 -847
  1279. package/cockroach-core/query-builders/select.cjs.map +0 -1
  1280. package/cockroach-core/query-builders/select.d.cts +0 -787
  1281. package/cockroach-core/query-builders/select.d.ts +0 -787
  1282. package/cockroach-core/query-builders/select.js +0 -821
  1283. package/cockroach-core/query-builders/select.js.map +0 -1
  1284. package/cockroach-core/query-builders/select.types.cjs +0 -17
  1285. package/cockroach-core/query-builders/select.types.cjs.map +0 -1
  1286. package/cockroach-core/query-builders/select.types.d.cts +0 -140
  1287. package/cockroach-core/query-builders/select.types.d.ts +0 -140
  1288. package/cockroach-core/query-builders/select.types.js +0 -1
  1289. package/cockroach-core/query-builders/select.types.js.map +0 -1
  1290. package/cockroach-core/query-builders/update.cjs +0 -240
  1291. package/cockroach-core/query-builders/update.cjs.map +0 -1
  1292. package/cockroach-core/query-builders/update.d.cts +0 -170
  1293. package/cockroach-core/query-builders/update.d.ts +0 -170
  1294. package/cockroach-core/query-builders/update.js +0 -219
  1295. package/cockroach-core/query-builders/update.js.map +0 -1
  1296. package/cockroach-core/roles.cjs +0 -54
  1297. package/cockroach-core/roles.cjs.map +0 -1
  1298. package/cockroach-core/roles.d.cts +0 -12
  1299. package/cockroach-core/roles.d.ts +0 -12
  1300. package/cockroach-core/roles.js +0 -29
  1301. package/cockroach-core/roles.js.map +0 -1
  1302. package/cockroach-core/schema.cjs +0 -80
  1303. package/cockroach-core/schema.cjs.map +0 -1
  1304. package/cockroach-core/schema.d.cts +0 -22
  1305. package/cockroach-core/schema.d.ts +0 -22
  1306. package/cockroach-core/schema.js +0 -60
  1307. package/cockroach-core/schema.js.map +0 -1
  1308. package/cockroach-core/sequence.cjs +0 -52
  1309. package/cockroach-core/sequence.cjs.map +0 -1
  1310. package/cockroach-core/sequence.d.cts +0 -17
  1311. package/cockroach-core/sequence.d.ts +0 -17
  1312. package/cockroach-core/sequence.js +0 -25
  1313. package/cockroach-core/sequence.js.map +0 -1
  1314. package/cockroach-core/session.cjs +0 -120
  1315. package/cockroach-core/session.cjs.map +0 -1
  1316. package/cockroach-core/session.d.cts +0 -62
  1317. package/cockroach-core/session.d.ts +0 -62
  1318. package/cockroach-core/session.js +0 -94
  1319. package/cockroach-core/session.js.map +0 -1
  1320. package/cockroach-core/subquery.cjs +0 -17
  1321. package/cockroach-core/subquery.cjs.map +0 -1
  1322. package/cockroach-core/subquery.d.cts +0 -18
  1323. package/cockroach-core/subquery.d.ts +0 -18
  1324. package/cockroach-core/subquery.js +0 -1
  1325. package/cockroach-core/subquery.js.map +0 -1
  1326. package/cockroach-core/table.cjs +0 -100
  1327. package/cockroach-core/table.cjs.map +0 -1
  1328. package/cockroach-core/table.d.cts +0 -37
  1329. package/cockroach-core/table.d.ts +0 -37
  1330. package/cockroach-core/table.js +0 -73
  1331. package/cockroach-core/table.js.map +0 -1
  1332. package/cockroach-core/unique-constraint.cjs +0 -77
  1333. package/cockroach-core/unique-constraint.cjs.map +0 -1
  1334. package/cockroach-core/unique-constraint.d.cts +0 -23
  1335. package/cockroach-core/unique-constraint.d.ts +0 -23
  1336. package/cockroach-core/unique-constraint.js +0 -50
  1337. package/cockroach-core/unique-constraint.js.map +0 -1
  1338. package/cockroach-core/utils/array.cjs +0 -106
  1339. package/cockroach-core/utils/array.cjs.map +0 -1
  1340. package/cockroach-core/utils/array.d.cts +0 -3
  1341. package/cockroach-core/utils/array.d.ts +0 -3
  1342. package/cockroach-core/utils/array.js +0 -80
  1343. package/cockroach-core/utils/array.js.map +0 -1
  1344. package/cockroach-core/utils/index.cjs +0 -23
  1345. package/cockroach-core/utils/index.cjs.map +0 -1
  1346. package/cockroach-core/utils/index.d.cts +0 -1
  1347. package/cockroach-core/utils/index.d.ts +0 -1
  1348. package/cockroach-core/utils/index.js +0 -2
  1349. package/cockroach-core/utils/index.js.map +0 -1
  1350. package/cockroach-core/utils.cjs +0 -98
  1351. package/cockroach-core/utils.cjs.map +0 -1
  1352. package/cockroach-core/utils.d.cts +0 -47
  1353. package/cockroach-core/utils.d.ts +0 -47
  1354. package/cockroach-core/utils.js +0 -72
  1355. package/cockroach-core/utils.js.map +0 -1
  1356. package/cockroach-core/view-base.cjs +0 -33
  1357. package/cockroach-core/view-base.cjs.map +0 -1
  1358. package/cockroach-core/view-base.d.cts +0 -8
  1359. package/cockroach-core/view-base.d.ts +0 -8
  1360. package/cockroach-core/view-base.js +0 -9
  1361. package/cockroach-core/view-base.js.map +0 -1
  1362. package/cockroach-core/view.cjs +0 -271
  1363. package/cockroach-core/view.cjs.map +0 -1
  1364. package/cockroach-core/view.d.cts +0 -106
  1365. package/cockroach-core/view.d.ts +0 -106
  1366. package/cockroach-core/view.js +0 -233
  1367. package/cockroach-core/view.js.map +0 -1
  1368. package/mssql-core/alias.cjs +0 -32
  1369. package/mssql-core/alias.cjs.map +0 -1
  1370. package/mssql-core/alias.d.cts +0 -4
  1371. package/mssql-core/alias.d.ts +0 -4
  1372. package/mssql-core/alias.js +0 -8
  1373. package/mssql-core/alias.js.map +0 -1
  1374. package/mssql-core/checks.cjs +0 -58
  1375. package/mssql-core/checks.cjs.map +0 -1
  1376. package/mssql-core/checks.d.cts +0 -18
  1377. package/mssql-core/checks.d.ts +0 -18
  1378. package/mssql-core/checks.js +0 -32
  1379. package/mssql-core/checks.js.map +0 -1
  1380. package/mssql-core/columns/all.cjs +0 -74
  1381. package/mssql-core/columns/all.cjs.map +0 -1
  1382. package/mssql-core/columns/all.d.cts +0 -45
  1383. package/mssql-core/columns/all.d.ts +0 -45
  1384. package/mssql-core/columns/all.js +0 -50
  1385. package/mssql-core/columns/all.js.map +0 -1
  1386. package/mssql-core/columns/bigint.cjs +0 -72
  1387. package/mssql-core/columns/bigint.cjs.map +0 -1
  1388. package/mssql-core/columns/bigint.d.cts +0 -25
  1389. package/mssql-core/columns/bigint.d.ts +0 -25
  1390. package/mssql-core/columns/bigint.js +0 -46
  1391. package/mssql-core/columns/bigint.js.map +0 -1
  1392. package/mssql-core/columns/binary.cjs +0 -57
  1393. package/mssql-core/columns/binary.cjs.map +0 -1
  1394. package/mssql-core/columns/binary.d.cts +0 -24
  1395. package/mssql-core/columns/binary.d.ts +0 -24
  1396. package/mssql-core/columns/binary.js +0 -31
  1397. package/mssql-core/columns/binary.js.map +0 -1
  1398. package/mssql-core/columns/bit.cjs +0 -54
  1399. package/mssql-core/columns/bit.cjs.map +0 -1
  1400. package/mssql-core/columns/bit.d.cts +0 -17
  1401. package/mssql-core/columns/bit.d.ts +0 -17
  1402. package/mssql-core/columns/bit.js +0 -28
  1403. package/mssql-core/columns/bit.js.map +0 -1
  1404. package/mssql-core/columns/char.cjs +0 -73
  1405. package/mssql-core/columns/char.cjs.map +0 -1
  1406. package/mssql-core/columns/char.d.cts +0 -29
  1407. package/mssql-core/columns/char.d.ts +0 -29
  1408. package/mssql-core/columns/char.js +0 -46
  1409. package/mssql-core/columns/char.js.map +0 -1
  1410. package/mssql-core/columns/common.cjs +0 -112
  1411. package/mssql-core/columns/common.cjs.map +0 -1
  1412. package/mssql-core/columns/common.d.cts +0 -57
  1413. package/mssql-core/columns/common.d.ts +0 -57
  1414. package/mssql-core/columns/common.js +0 -85
  1415. package/mssql-core/columns/common.js.map +0 -1
  1416. package/mssql-core/columns/custom.cjs +0 -105
  1417. package/mssql-core/columns/custom.cjs.map +0 -1
  1418. package/mssql-core/columns/custom.d.cts +0 -261
  1419. package/mssql-core/columns/custom.d.ts +0 -261
  1420. package/mssql-core/columns/custom.js +0 -79
  1421. package/mssql-core/columns/custom.js.map +0 -1
  1422. package/mssql-core/columns/date.cjs +0 -94
  1423. package/mssql-core/columns/date.cjs.map +0 -1
  1424. package/mssql-core/columns/date.common.cjs +0 -37
  1425. package/mssql-core/columns/date.common.cjs.map +0 -1
  1426. package/mssql-core/columns/date.common.d.cts +0 -12
  1427. package/mssql-core/columns/date.common.d.ts +0 -12
  1428. package/mssql-core/columns/date.common.js +0 -13
  1429. package/mssql-core/columns/date.common.js.map +0 -1
  1430. package/mssql-core/columns/date.d.cts +0 -39
  1431. package/mssql-core/columns/date.d.ts +0 -39
  1432. package/mssql-core/columns/date.js +0 -66
  1433. package/mssql-core/columns/date.js.map +0 -1
  1434. package/mssql-core/columns/datetime.cjs +0 -94
  1435. package/mssql-core/columns/datetime.cjs.map +0 -1
  1436. package/mssql-core/columns/datetime.d.cts +0 -38
  1437. package/mssql-core/columns/datetime.d.ts +0 -38
  1438. package/mssql-core/columns/datetime.js +0 -66
  1439. package/mssql-core/columns/datetime.js.map +0 -1
  1440. package/mssql-core/columns/datetime2.cjs +0 -102
  1441. package/mssql-core/columns/datetime2.cjs.map +0 -1
  1442. package/mssql-core/columns/datetime2.d.cts +0 -38
  1443. package/mssql-core/columns/datetime2.d.ts +0 -38
  1444. package/mssql-core/columns/datetime2.js +0 -74
  1445. package/mssql-core/columns/datetime2.js.map +0 -1
  1446. package/mssql-core/columns/datetimeoffset.cjs +0 -102
  1447. package/mssql-core/columns/datetimeoffset.cjs.map +0 -1
  1448. package/mssql-core/columns/datetimeoffset.d.cts +0 -39
  1449. package/mssql-core/columns/datetimeoffset.d.ts +0 -39
  1450. package/mssql-core/columns/datetimeoffset.js +0 -74
  1451. package/mssql-core/columns/datetimeoffset.js.map +0 -1
  1452. package/mssql-core/columns/decimal.cjs +0 -146
  1453. package/mssql-core/columns/decimal.cjs.map +0 -1
  1454. package/mssql-core/columns/decimal.d.cts +0 -58
  1455. package/mssql-core/columns/decimal.d.ts +0 -58
  1456. package/mssql-core/columns/decimal.js +0 -116
  1457. package/mssql-core/columns/decimal.js.map +0 -1
  1458. package/mssql-core/columns/float.cjs +0 -58
  1459. package/mssql-core/columns/float.cjs.map +0 -1
  1460. package/mssql-core/columns/float.d.cts +0 -21
  1461. package/mssql-core/columns/float.d.ts +0 -21
  1462. package/mssql-core/columns/float.js +0 -32
  1463. package/mssql-core/columns/float.js.map +0 -1
  1464. package/mssql-core/columns/index.cjs +0 -63
  1465. package/mssql-core/columns/index.cjs.map +0 -1
  1466. package/mssql-core/columns/index.d.cts +0 -21
  1467. package/mssql-core/columns/index.d.ts +0 -21
  1468. package/mssql-core/columns/index.js +0 -22
  1469. package/mssql-core/columns/index.js.map +0 -1
  1470. package/mssql-core/columns/int.cjs +0 -53
  1471. package/mssql-core/columns/int.cjs.map +0 -1
  1472. package/mssql-core/columns/int.d.cts +0 -16
  1473. package/mssql-core/columns/int.d.ts +0 -16
  1474. package/mssql-core/columns/int.js +0 -27
  1475. package/mssql-core/columns/int.js.map +0 -1
  1476. package/mssql-core/columns/numeric.cjs +0 -146
  1477. package/mssql-core/columns/numeric.cjs.map +0 -1
  1478. package/mssql-core/columns/numeric.d.cts +0 -58
  1479. package/mssql-core/columns/numeric.d.ts +0 -58
  1480. package/mssql-core/columns/numeric.js +0 -116
  1481. package/mssql-core/columns/numeric.js.map +0 -1
  1482. package/mssql-core/columns/real.cjs +0 -53
  1483. package/mssql-core/columns/real.cjs.map +0 -1
  1484. package/mssql-core/columns/real.d.cts +0 -16
  1485. package/mssql-core/columns/real.d.ts +0 -16
  1486. package/mssql-core/columns/real.js +0 -27
  1487. package/mssql-core/columns/real.js.map +0 -1
  1488. package/mssql-core/columns/smallint.cjs +0 -62
  1489. package/mssql-core/columns/smallint.cjs.map +0 -1
  1490. package/mssql-core/columns/smallint.d.cts +0 -17
  1491. package/mssql-core/columns/smallint.d.ts +0 -17
  1492. package/mssql-core/columns/smallint.js +0 -36
  1493. package/mssql-core/columns/smallint.js.map +0 -1
  1494. package/mssql-core/columns/text.cjs +0 -68
  1495. package/mssql-core/columns/text.cjs.map +0 -1
  1496. package/mssql-core/columns/text.d.cts +0 -36
  1497. package/mssql-core/columns/text.d.ts +0 -36
  1498. package/mssql-core/columns/text.js +0 -41
  1499. package/mssql-core/columns/text.js.map +0 -1
  1500. package/mssql-core/columns/time.cjs +0 -90
  1501. package/mssql-core/columns/time.cjs.map +0 -1
  1502. package/mssql-core/columns/time.d.cts +0 -37
  1503. package/mssql-core/columns/time.d.ts +0 -37
  1504. package/mssql-core/columns/time.js +0 -62
  1505. package/mssql-core/columns/time.js.map +0 -1
  1506. package/mssql-core/columns/tinyint.cjs +0 -62
  1507. package/mssql-core/columns/tinyint.cjs.map +0 -1
  1508. package/mssql-core/columns/tinyint.d.cts +0 -17
  1509. package/mssql-core/columns/tinyint.d.ts +0 -17
  1510. package/mssql-core/columns/tinyint.js +0 -36
  1511. package/mssql-core/columns/tinyint.js.map +0 -1
  1512. package/mssql-core/columns/varbinary.cjs +0 -61
  1513. package/mssql-core/columns/varbinary.cjs.map +0 -1
  1514. package/mssql-core/columns/varbinary.d.cts +0 -23
  1515. package/mssql-core/columns/varbinary.d.ts +0 -23
  1516. package/mssql-core/columns/varbinary.js +0 -35
  1517. package/mssql-core/columns/varbinary.js.map +0 -1
  1518. package/mssql-core/columns/varchar.cjs +0 -117
  1519. package/mssql-core/columns/varchar.cjs.map +0 -1
  1520. package/mssql-core/columns/varchar.d.cts +0 -59
  1521. package/mssql-core/columns/varchar.d.ts +0 -59
  1522. package/mssql-core/columns/varchar.js +0 -88
  1523. package/mssql-core/columns/varchar.js.map +0 -1
  1524. package/mssql-core/db.cjs +0 -254
  1525. package/mssql-core/db.cjs.map +0 -1
  1526. package/mssql-core/db.d.cts +0 -228
  1527. package/mssql-core/db.d.ts +0 -228
  1528. package/mssql-core/db.js +0 -235
  1529. package/mssql-core/db.js.map +0 -1
  1530. package/mssql-core/dialect.cjs +0 -633
  1531. package/mssql-core/dialect.cjs.map +0 -1
  1532. package/mssql-core/dialect.d.cts +0 -58
  1533. package/mssql-core/dialect.d.ts +0 -58
  1534. package/mssql-core/dialect.js +0 -599
  1535. package/mssql-core/dialect.js.map +0 -1
  1536. package/mssql-core/expressions.cjs +0 -49
  1537. package/mssql-core/expressions.cjs.map +0 -1
  1538. package/mssql-core/expressions.d.cts +0 -8
  1539. package/mssql-core/expressions.d.ts +0 -8
  1540. package/mssql-core/expressions.js +0 -22
  1541. package/mssql-core/expressions.js.map +0 -1
  1542. package/mssql-core/foreign-keys.cjs +0 -94
  1543. package/mssql-core/foreign-keys.cjs.map +0 -1
  1544. package/mssql-core/foreign-keys.d.cts +0 -52
  1545. package/mssql-core/foreign-keys.d.ts +0 -52
  1546. package/mssql-core/foreign-keys.js +0 -68
  1547. package/mssql-core/foreign-keys.js.map +0 -1
  1548. package/mssql-core/index.cjs +0 -55
  1549. package/mssql-core/index.cjs.map +0 -1
  1550. package/mssql-core/index.d.cts +0 -17
  1551. package/mssql-core/index.d.ts +0 -17
  1552. package/mssql-core/index.js +0 -18
  1553. package/mssql-core/index.js.map +0 -1
  1554. package/mssql-core/indexes.cjs +0 -82
  1555. package/mssql-core/indexes.cjs.map +0 -1
  1556. package/mssql-core/indexes.d.cts +0 -50
  1557. package/mssql-core/indexes.d.ts +0 -50
  1558. package/mssql-core/indexes.js +0 -54
  1559. package/mssql-core/indexes.js.map +0 -1
  1560. package/mssql-core/primary-keys.cjs +0 -66
  1561. package/mssql-core/primary-keys.cjs.map +0 -1
  1562. package/mssql-core/primary-keys.d.cts +0 -24
  1563. package/mssql-core/primary-keys.d.ts +0 -24
  1564. package/mssql-core/primary-keys.js +0 -40
  1565. package/mssql-core/primary-keys.js.map +0 -1
  1566. package/mssql-core/query-builders/delete.cjs +0 -107
  1567. package/mssql-core/query-builders/delete.cjs.map +0 -1
  1568. package/mssql-core/query-builders/delete.d.cts +0 -98
  1569. package/mssql-core/query-builders/delete.d.ts +0 -98
  1570. package/mssql-core/query-builders/delete.js +0 -83
  1571. package/mssql-core/query-builders/delete.js.map +0 -1
  1572. package/mssql-core/query-builders/index.cjs +0 -33
  1573. package/mssql-core/query-builders/index.cjs.map +0 -1
  1574. package/mssql-core/query-builders/index.d.cts +0 -6
  1575. package/mssql-core/query-builders/index.d.ts +0 -6
  1576. package/mssql-core/query-builders/index.js +0 -7
  1577. package/mssql-core/query-builders/index.js.map +0 -1
  1578. package/mssql-core/query-builders/insert.cjs +0 -105
  1579. package/mssql-core/query-builders/insert.cjs.map +0 -1
  1580. package/mssql-core/query-builders/insert.d.cts +0 -79
  1581. package/mssql-core/query-builders/insert.d.ts +0 -79
  1582. package/mssql-core/query-builders/insert.js +0 -80
  1583. package/mssql-core/query-builders/insert.js.map +0 -1
  1584. package/mssql-core/query-builders/query-builder.cjs +0 -95
  1585. package/mssql-core/query-builders/query-builder.cjs.map +0 -1
  1586. package/mssql-core/query-builders/query-builder.d.cts +0 -32
  1587. package/mssql-core/query-builders/query-builder.d.ts +0 -32
  1588. package/mssql-core/query-builders/query-builder.js +0 -71
  1589. package/mssql-core/query-builders/query-builder.js.map +0 -1
  1590. package/mssql-core/query-builders/query.cjs +0 -126
  1591. package/mssql-core/query-builders/query.cjs.map +0 -1
  1592. package/mssql-core/query-builders/query.d.cts +0 -42
  1593. package/mssql-core/query-builders/query.d.ts +0 -42
  1594. package/mssql-core/query-builders/query.js +0 -103
  1595. package/mssql-core/query-builders/query.js.map +0 -1
  1596. package/mssql-core/query-builders/select.cjs +0 -678
  1597. package/mssql-core/query-builders/select.cjs.map +0 -1
  1598. package/mssql-core/query-builders/select.d.cts +0 -549
  1599. package/mssql-core/query-builders/select.d.ts +0 -549
  1600. package/mssql-core/query-builders/select.js +0 -654
  1601. package/mssql-core/query-builders/select.js.map +0 -1
  1602. package/mssql-core/query-builders/select.types.cjs +0 -17
  1603. package/mssql-core/query-builders/select.types.cjs.map +0 -1
  1604. package/mssql-core/query-builders/select.types.d.cts +0 -142
  1605. package/mssql-core/query-builders/select.types.d.ts +0 -142
  1606. package/mssql-core/query-builders/select.types.js +0 -1
  1607. package/mssql-core/query-builders/select.types.js.map +0 -1
  1608. package/mssql-core/query-builders/update.cjs +0 -138
  1609. package/mssql-core/query-builders/update.cjs.map +0 -1
  1610. package/mssql-core/query-builders/update.d.cts +0 -142
  1611. package/mssql-core/query-builders/update.d.ts +0 -142
  1612. package/mssql-core/query-builders/update.js +0 -113
  1613. package/mssql-core/query-builders/update.js.map +0 -1
  1614. package/mssql-core/schema.cjs +0 -51
  1615. package/mssql-core/schema.cjs.map +0 -1
  1616. package/mssql-core/schema.d.cts +0 -22
  1617. package/mssql-core/schema.d.ts +0 -22
  1618. package/mssql-core/schema.js +0 -25
  1619. package/mssql-core/schema.js.map +0 -1
  1620. package/mssql-core/session.cjs +0 -74
  1621. package/mssql-core/session.cjs.map +0 -1
  1622. package/mssql-core/session.d.cts +0 -63
  1623. package/mssql-core/session.d.ts +0 -63
  1624. package/mssql-core/session.js +0 -48
  1625. package/mssql-core/session.js.map +0 -1
  1626. package/mssql-core/subquery.cjs +0 -17
  1627. package/mssql-core/subquery.cjs.map +0 -1
  1628. package/mssql-core/subquery.d.cts +0 -18
  1629. package/mssql-core/subquery.d.ts +0 -18
  1630. package/mssql-core/subquery.js +0 -1
  1631. package/mssql-core/subquery.js.map +0 -1
  1632. package/mssql-core/table.cjs +0 -81
  1633. package/mssql-core/table.cjs.map +0 -1
  1634. package/mssql-core/table.d.cts +0 -40
  1635. package/mssql-core/table.d.ts +0 -40
  1636. package/mssql-core/table.js +0 -55
  1637. package/mssql-core/table.js.map +0 -1
  1638. package/mssql-core/unique-constraint.cjs +0 -78
  1639. package/mssql-core/unique-constraint.cjs.map +0 -1
  1640. package/mssql-core/unique-constraint.d.cts +0 -24
  1641. package/mssql-core/unique-constraint.d.ts +0 -24
  1642. package/mssql-core/unique-constraint.js +0 -51
  1643. package/mssql-core/unique-constraint.js.map +0 -1
  1644. package/mssql-core/utils.cjs +0 -85
  1645. package/mssql-core/utils.cjs.map +0 -1
  1646. package/mssql-core/utils.d.cts +0 -31
  1647. package/mssql-core/utils.d.ts +0 -31
  1648. package/mssql-core/utils.js +0 -60
  1649. package/mssql-core/utils.js.map +0 -1
  1650. package/mssql-core/view-base.cjs +0 -33
  1651. package/mssql-core/view-base.cjs.map +0 -1
  1652. package/mssql-core/view-base.d.cts +0 -9
  1653. package/mssql-core/view-base.d.ts +0 -9
  1654. package/mssql-core/view-base.js +0 -9
  1655. package/mssql-core/view-base.js.map +0 -1
  1656. package/mssql-core/view-common.cjs +0 -29
  1657. package/mssql-core/view-common.cjs.map +0 -1
  1658. package/mssql-core/view-common.d.cts +0 -1
  1659. package/mssql-core/view-common.d.ts +0 -1
  1660. package/mssql-core/view-common.js +0 -5
  1661. package/mssql-core/view-common.js.map +0 -1
  1662. package/mssql-core/view.cjs +0 -154
  1663. package/mssql-core/view.cjs.map +0 -1
  1664. package/mssql-core/view.d.cts +0 -63
  1665. package/mssql-core/view.d.ts +0 -63
  1666. package/mssql-core/view.js +0 -125
  1667. package/mssql-core/view.js.map +0 -1
  1668. package/mysql-core/columns/blob.cjs +0 -158
  1669. package/mysql-core/columns/blob.cjs.map +0 -1
  1670. package/mysql-core/columns/blob.d.cts +0 -54
  1671. package/mysql-core/columns/blob.d.ts +0 -54
  1672. package/mysql-core/columns/blob.js +0 -127
  1673. package/mysql-core/columns/blob.js.map +0 -1
  1674. package/mysql-core/columns/string.common.cjs +0 -48
  1675. package/mysql-core/columns/string.common.cjs.map +0 -1
  1676. package/mysql-core/columns/string.common.d.cts +0 -21
  1677. package/mysql-core/columns/string.common.d.ts +0 -21
  1678. package/mysql-core/columns/string.common.js +0 -23
  1679. package/mysql-core/columns/string.common.js.map +0 -1
  1680. package/node-mssql/driver.cjs +0 -113
  1681. package/node-mssql/driver.cjs.map +0 -1
  1682. package/node-mssql/driver.d.cts +0 -46
  1683. package/node-mssql/driver.d.ts +0 -46
  1684. package/node-mssql/driver.js +0 -77
  1685. package/node-mssql/driver.js.map +0 -1
  1686. package/node-mssql/index.cjs +0 -25
  1687. package/node-mssql/index.cjs.map +0 -1
  1688. package/node-mssql/index.d.cts +0 -2
  1689. package/node-mssql/index.d.ts +0 -2
  1690. package/node-mssql/index.js +0 -3
  1691. package/node-mssql/index.js.map +0 -1
  1692. package/node-mssql/migrator.cjs +0 -33
  1693. package/node-mssql/migrator.cjs.map +0 -1
  1694. package/node-mssql/migrator.d.cts +0 -3
  1695. package/node-mssql/migrator.d.ts +0 -3
  1696. package/node-mssql/migrator.js +0 -9
  1697. package/node-mssql/migrator.js.map +0 -1
  1698. package/node-mssql/pool.cjs +0 -54
  1699. package/node-mssql/pool.cjs.map +0 -1
  1700. package/node-mssql/pool.d.cts +0 -8
  1701. package/node-mssql/pool.d.ts +0 -8
  1702. package/node-mssql/pool.js +0 -20
  1703. package/node-mssql/pool.js.map +0 -1
  1704. package/node-mssql/session.cjs +0 -256
  1705. package/node-mssql/session.cjs.map +0 -1
  1706. package/node-mssql/session.d.cts +0 -48
  1707. package/node-mssql/session.d.ts +0 -48
  1708. package/node-mssql/session.js +0 -224
  1709. package/node-mssql/session.js.map +0 -1
package/_relations.cjs CHANGED
@@ -29,7 +29,6 @@ __export(relations_exports, {
29
29
  getOperators: () => getOperators,
30
30
  getOrderByOperators: () => getOrderByOperators,
31
31
  mapRelationalRow: () => mapRelationalRow,
32
- mapRelationalRowFromObj: () => mapRelationalRowFromObj,
33
32
  normalizeRelation: () => normalizeRelation,
34
33
  relations: () => relations
35
34
  });
@@ -166,15 +165,19 @@ function extractTablesRelationalConfig(schema, configHelpers) {
166
165
  const relations2 = value.config(
167
166
  configHelpers(value.table)
168
167
  );
168
+ let primaryKey;
169
169
  for (const [relationName, relation] of Object.entries(relations2)) {
170
170
  if (tableName) {
171
171
  const tableConfig = tablesConfig[tableName];
172
172
  tableConfig.relations[relationName] = relation;
173
+ if (primaryKey) {
174
+ tableConfig.primaryKey.push(...primaryKey);
175
+ }
173
176
  } else {
174
177
  if (!(dbName in relationsBuffer)) {
175
178
  relationsBuffer[dbName] = {
176
- relations: {}
177
- // primaryKey,
179
+ relations: {},
180
+ primaryKey
178
181
  };
179
182
  }
180
183
  relationsBuffer[dbName].relations[relationName] = relation;
@@ -306,52 +309,6 @@ function mapRelationalRow(tablesConfig, tableConfig, row, buildQueryResultSelect
306
309
  }
307
310
  return result;
308
311
  }
309
- function mapRelationalRowFromObj(tablesConfig, tableConfig, row, buildQueryResultSelection, mapColumnValue = (value) => value) {
310
- const result = {};
311
- for (const [
312
- selectionItemIndex,
313
- selectionItem
314
- ] of buildQueryResultSelection.entries()) {
315
- if (selectionItem.isJson) {
316
- const relation = tableConfig.relations[selectionItem.tsKey];
317
- const isOne = (0, import_entity.is)(relation, One);
318
- const rawSubRows = row[selectionItemIndex];
319
- let subRows = rawSubRows;
320
- if (subRows || Array.isArray(subRows)) {
321
- subRows = typeof rawSubRows === "string" ? JSON.parse(rawSubRows) : rawSubRows;
322
- subRows = isOne ? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r)) : subRows.map((r) => Array.isArray(r) ? r : Object.values(r));
323
- }
324
- result[selectionItem.tsKey] = isOne ? subRows && mapRelationalRowFromObj(
325
- tablesConfig,
326
- tablesConfig[selectionItem.relationTableTsKey],
327
- subRows,
328
- selectionItem.selection,
329
- mapColumnValue
330
- ) : (subRows ?? []).map(
331
- (subRow) => mapRelationalRowFromObj(
332
- tablesConfig,
333
- tablesConfig[selectionItem.relationTableTsKey],
334
- subRow,
335
- selectionItem.selection,
336
- mapColumnValue
337
- )
338
- );
339
- } else {
340
- const value = mapColumnValue(row[selectionItemIndex]);
341
- const field = selectionItem.field;
342
- let decoder;
343
- if ((0, import_entity.is)(field, import_column.Column)) {
344
- decoder = field;
345
- } else if ((0, import_entity.is)(field, import_sql.SQL)) {
346
- decoder = field.decoder;
347
- } else {
348
- decoder = field.sql.decoder;
349
- }
350
- result[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);
351
- }
352
- }
353
- return result;
354
- }
355
312
  // Annotate the CommonJS export names for ESM import in node:
356
313
  0 && (module.exports = {
357
314
  Many,
@@ -365,7 +322,6 @@ function mapRelationalRowFromObj(tablesConfig, tableConfig, row, buildQueryResul
365
322
  getOperators,
366
323
  getOrderByOperators,
367
324
  mapRelationalRow,
368
- mapRelationalRowFromObj,
369
325
  normalizeRelation,
370
326
  relations
371
327
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/_relations.ts"],"sourcesContent":["import { type AnyTable, getTableUniqueName, type InferModelFromColumns, Table } from '~/table.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { PrimaryKeyBuilder } from './pg-core/primary-keys.ts';\nimport {\n\tand,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type Placeholder, SQL, sql } from './sql/sql.ts';\nimport type { Assume, ColumnsWithTable, Equal, Simplify, ValueOrArray } from './utils.ts';\n\nexport abstract class Relation<TTableName extends string = string> {\n\tstatic readonly [entityKind]: string = 'Relation';\n\n\tdeclare readonly $brand: 'Relation';\n\treadonly referencedTableName: TTableName;\n\tfieldName!: string;\n\n\tconstructor(\n\t\treadonly sourceTable: Table,\n\t\treadonly referencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly relationName: string | undefined,\n\t) {\n\t\tthis.referencedTableName = referencedTable[Table.Symbol.Name] as TTableName;\n\t}\n\n\tabstract withFieldName(fieldName: string): Relation<TTableName>;\n}\n\nexport class Relations<\n\tTTableName extends string = string,\n\tTConfig extends Record<string, Relation> = Record<string, Relation>,\n> {\n\tstatic readonly [entityKind]: string = 'Relations';\n\n\tdeclare readonly $brand: 'Relations';\n\n\tconstructor(\n\t\treadonly table: AnyTable<{ name: TTableName }>,\n\t\treadonly config: (helpers: TableRelationsHelpers<TTableName>) => TConfig,\n\t) {}\n}\n\nexport class One<\n\tTTableName extends string = string,\n\tTIsNullable extends boolean = boolean,\n> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'One';\n\n\tdeclare protected $relationBrand: 'One';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config:\n\t\t\t| RelationConfig<\n\t\t\t\tTTableName,\n\t\t\t\tstring,\n\t\t\t\tAnyColumn<{ tableName: TTableName }>[]\n\t\t\t>\n\t\t\t| undefined,\n\t\treadonly isNullable: TIsNullable,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): One<TTableName> {\n\t\tconst relation = new One(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t\tthis.isNullable,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport class Many<TTableName extends string> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'Many';\n\n\tdeclare protected $relationBrand: 'Many';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config: { relationName: string } | undefined,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): Many<TTableName> {\n\t\tconst relation = new Many(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport type TableRelationsKeysOnly<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n\tK extends keyof TSchema,\n> = TSchema[K] extends Relations<TTableName> ? K : never;\n\nexport type ExtractTableRelationsFromSchema<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TableRelationsKeysOnly<\n\t\t\t\tTSchema,\n\t\t\t\tTTableName,\n\t\t\t\tK\n\t\t\t>\n\t\t]: TSchema[K] extends Relations<TTableName, infer TConfig> ? TConfig : never;\n\t}\n>;\n\nexport type ExtractObjectValues<T> = T[keyof T];\n\nexport type ExtractRelationsFromTableExtraConfigSchema<\n\tTConfig extends unknown[],\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TConfig as TConfig[K] extends Relations<any> ? K\n\t\t\t\t: never\n\t\t]: TConfig[K] extends Relations<infer TRelationConfig> ? TRelationConfig\n\t\t\t: never;\n\t}\n>;\n\nexport function getOperators() {\n\treturn {\n\t\tand,\n\t\tbetween,\n\t\teq,\n\t\texists,\n\t\tgt,\n\t\tgte,\n\t\tilike,\n\t\tinArray,\n\t\tisNull,\n\t\tisNotNull,\n\t\tlike,\n\t\tlt,\n\t\tlte,\n\t\tne,\n\t\tnot,\n\t\tnotBetween,\n\t\tnotExists,\n\t\tnotLike,\n\t\tnotIlike,\n\t\tnotInArray,\n\t\tor,\n\t\tsql,\n\t};\n}\n\nexport type Operators = ReturnType<typeof getOperators>;\n\nexport function getOrderByOperators() {\n\treturn {\n\t\tsql,\n\t\tasc,\n\t\tdesc,\n\t};\n}\n\nexport type OrderByOperators = ReturnType<typeof getOrderByOperators>;\n\nexport type FindTableByDBName<\n\tTSchema extends TablesRelationalConfig,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TSchema[K]['dbName'] extends TTableName ? K\n\t\t\t\t: never\n\t\t]: TSchema[K];\n\t}\n>;\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport interface TableRelationalConfig {\n\ttsName: string;\n\tdbName: string;\n\tcolumns: Record<string, Column>;\n\trelations: Record<string, Relation>;\n\tprimaryKey: AnyColumn[];\n\tschema?: string;\n}\n\nexport type TablesRelationalConfig = Record<string, TableRelationalConfig>;\n\nexport interface RelationalSchemaConfig<\n\tTSchema extends TablesRelationalConfig,\n> {\n\tfullSchema: Record<string, unknown>;\n\tschema: TSchema;\n\ttableNamesMap: Record<string, string>;\n}\n\nexport type ExtractTablesWithRelations<\n\tTSchema extends Record<string, unknown>,\n> = {\n\t[\n\t\tK in keyof TSchema as TSchema[K] extends Table ? K\n\t\t\t: never\n\t]: TSchema[K] extends Table ? {\n\t\t\ttsName: K & string;\n\t\t\tdbName: TSchema[K]['_']['name'];\n\t\t\tcolumns: TSchema[K]['_']['columns'];\n\t\t\trelations: ExtractTableRelationsFromSchema<\n\t\t\t\tTSchema,\n\t\t\t\tTSchema[K]['_']['name']\n\t\t\t>;\n\t\t\tprimaryKey: AnyColumn[];\n\t\t}\n\t\t: never;\n};\n\nexport type ReturnTypeOrValue<T> = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type BuildRelationResult<\n\tTSchema extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends Record<string, Relation>,\n> = {\n\t[\n\t\tK in\n\t\t\t& NonUndefinedKeysOnly<TInclude>\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends Relation ? BuildQueryResult<\n\t\t\tTSchema,\n\t\t\tFindTableByDBName<TSchema, TRel['referencedTableName']>,\n\t\t\tAssume<TInclude[K], true | Record<string, unknown>>\n\t\t> extends infer TResult ? TRel extends One ?\n\t\t\t\t\t| TResult\n\t\t\t\t\t| (Equal<TRel['isNullable'], false> extends true ? null : never)\n\t\t\t: TResult[]\n\t\t: never\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly<T> =\n\t& ExtractObjectValues<\n\t\t{\n\t\t\t[K in keyof T as T[K] extends undefined ? never : K]: K;\n\t\t}\n\t>\n\t& keyof T;\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record<string, unknown>,\n> = Equal<TFullSelection, true> extends true ? InferModelFromColumns<TTableConfig['columns']>\n\t: TFullSelection extends Record<string, unknown> ? Simplify<\n\t\t\t& (TFullSelection['columns'] extends Record<string, unknown> ? InferModelFromColumns<\n\t\t\t\t\t{\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tK in Equal<\n\t\t\t\t\t\t\t\tExclude<\n\t\t\t\t\t\t\t\t\tTFullSelection['columns'][\n\t\t\t\t\t\t\t\t\t\t& keyof TFullSelection['columns']\n\t\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t> extends true ? Exclude<\n\t\t\t\t\t\t\t\t\tkeyof TTableConfig['columns'],\n\t\t\t\t\t\t\t\t\tNonUndefinedKeysOnly<TFullSelection['columns']>\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t& {\n\t\t\t\t\t\t\t\t\t\t[K in keyof TFullSelection['columns']]: Equal<\n\t\t\t\t\t\t\t\t\t\t\tTFullSelection['columns'][K],\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t\t\t\t}[keyof TFullSelection['columns']]\n\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t]: TTableConfig['columns'][K];\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t: InferModelFromColumns<TTableConfig['columns']>)\n\t\t\t& (TFullSelection['extras'] extends\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| ((...args: any[]) => Record<string, unknown>) ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>\n\t\t\t\t\t\t>\n\t\t\t\t\t]: Assume<\n\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>[K],\n\t\t\t\t\t\tSQL.Aliased\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record<string, unknown> ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface RelationConfig<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> {\n\trelationName?: string;\n\tfields: TColumns;\n\treferences: ColumnsWithTable<TTableName, TForeignTableName, TColumns>;\n}\n\nexport function extractTablesRelationalConfig<\n\tTTables extends TablesRelationalConfig,\n>(\n\tschema: Record<string, unknown>,\n\tconfigHelpers: (table: Table) => any,\n): { tables: TTables; tableNamesMap: Record<string, string> } {\n\tif (\n\t\tObject.keys(schema).length === 1\n\t\t&& 'default' in schema\n\t\t&& !is(schema['default'], Table)\n\t) {\n\t\tschema = schema['default'] as Record<string, unknown>;\n\t}\n\n\t// table DB name -> schema table key\n\tconst tableNamesMap: Record<string, string> = {};\n\t// Table relations found before their tables - need to buffer them until we know the schema table key\n\tconst relationsBuffer: Record<\n\t\tstring,\n\t\t{ relations: Record<string, Relation>; primaryKey?: AnyColumn[] }\n\t> = {};\n\tconst tablesConfig: TablesRelationalConfig = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (is(value, Table)) {\n\t\t\tconst dbName = getTableUniqueName(value);\n\t\t\tconst bufferedRelations = relationsBuffer[dbName];\n\t\t\ttableNamesMap[dbName] = key;\n\t\t\ttablesConfig[key] = {\n\t\t\t\ttsName: key,\n\t\t\t\tdbName: value[Table.Symbol.Name],\n\t\t\t\tschema: value[Table.Symbol.Schema],\n\t\t\t\tcolumns: value[Table.Symbol.Columns],\n\t\t\t\trelations: bufferedRelations?.relations ?? {},\n\t\t\t\tprimaryKey: bufferedRelations?.primaryKey ?? [],\n\t\t\t};\n\n\t\t\t// Fill in primary keys\n\t\t\tfor (\n\t\t\t\tconst column of Object.values(\n\t\t\t\t\t(value as Table)[Table.Symbol.Columns],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (column.primary) {\n\t\t\t\t\ttablesConfig[key]!.primaryKey.push(column);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst extraConfig = value[Table.Symbol.ExtraConfigBuilder]?.((value as Table)[Table.Symbol.ExtraConfigColumns]);\n\t\t\tif (extraConfig) {\n\t\t\t\tfor (const configEntry of Object.values(extraConfig)) {\n\t\t\t\t\tif (is(configEntry, PrimaryKeyBuilder)) {\n\t\t\t\t\t\ttablesConfig[key]!.primaryKey.push(...configEntry.columns);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (is(value, Relations)) {\n\t\t\tconst dbName = getTableUniqueName(value.table);\n\t\t\tconst tableName = tableNamesMap[dbName];\n\t\t\tconst relations: Record<string, Relation> = value.config(\n\t\t\t\tconfigHelpers(value.table),\n\t\t\t);\n\t\t\t// let primaryKey: AnyColumn[] | undefined;\n\n\t\t\tfor (const [relationName, relation] of Object.entries(relations)) {\n\t\t\t\tif (tableName) {\n\t\t\t\t\tconst tableConfig = tablesConfig[tableName]!;\n\t\t\t\t\ttableConfig.relations[relationName] = relation;\n\t\t\t\t\t// if (primaryKey) {\n\t\t\t\t\t// \ttableConfig.primaryKey.push(...primaryKey);\n\t\t\t\t\t// }\n\t\t\t\t} else {\n\t\t\t\t\tif (!(dbName in relationsBuffer)) {\n\t\t\t\t\t\trelationsBuffer[dbName] = {\n\t\t\t\t\t\t\trelations: {},\n\t\t\t\t\t\t\t// primaryKey,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\trelationsBuffer[dbName]!.relations[relationName] = relation;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { tables: tablesConfig as TTables, tableNamesMap };\n}\n\nexport function relations<\n\tTTableName extends string,\n\tTRelations extends Record<string, Relation<any>>,\n>(\n\ttable: AnyTable<{ name: TTableName }>,\n\trelations: (helpers: TableRelationsHelpers<TTableName>) => TRelations,\n): Relations<TTableName, TRelations> {\n\treturn new Relations<TTableName, TRelations>(\n\t\ttable,\n\t\t(helpers: TableRelationsHelpers<TTableName>) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(relations(helpers)).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue.withFieldName(key),\n\t\t\t\t]),\n\t\t\t) as TRelations,\n\t);\n}\n\nexport function createOne<TTableName extends string>(sourceTable: Table) {\n\treturn function one<\n\t\tTForeignTable extends Table,\n\t\tTColumns extends [\n\t\t\tAnyColumn<{ tableName: TTableName }>,\n\t\t\t...AnyColumn<{ tableName: TTableName }>[],\n\t\t],\n\t>(\n\t\ttable: TForeignTable,\n\t\tconfig?: RelationConfig<TTableName, TForeignTable['_']['name'], TColumns>,\n\t): One<\n\t\tTForeignTable['_']['name'],\n\t\tEqual<TColumns[number]['_']['notNull'], true>\n\t> {\n\t\treturn new One(\n\t\t\tsourceTable,\n\t\t\ttable,\n\t\t\tconfig,\n\t\t\t(config?.fields.reduce<boolean>((res, f) => res && f.notNull, true)\n\t\t\t\t?? false) as Equal<TColumns[number]['_']['notNull'], true>,\n\t\t);\n\t};\n}\n\nexport function createMany(sourceTable: Table) {\n\treturn function many<TForeignTable extends Table>(\n\t\treferencedTable: TForeignTable,\n\t\tconfig?: { relationName: string },\n\t): Many<TForeignTable['_']['name']> {\n\t\treturn new Many(sourceTable, referencedTable, config);\n\t};\n}\n\nexport interface NormalizedRelation {\n\tfields: AnyColumn[];\n\treferences: AnyColumn[];\n}\n\nexport function normalizeRelation(\n\tschema: TablesRelationalConfig,\n\ttableNamesMap: Record<string, string>,\n\trelation: Relation,\n): NormalizedRelation {\n\tif (is(relation, One) && relation.config) {\n\t\treturn {\n\t\t\tfields: relation.config.fields,\n\t\t\treferences: relation.config.references,\n\t\t};\n\t}\n\n\tconst referencedTableTsName = tableNamesMap[getTableUniqueName(relation.referencedTable)];\n\tif (!referencedTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${relation.referencedTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst referencedTableConfig = schema[referencedTableTsName];\n\tif (!referencedTableConfig) {\n\t\tthrow new Error(`Table \"${referencedTableTsName}\" not found in schema`);\n\t}\n\n\tconst sourceTable = relation.sourceTable;\n\tconst sourceTableTsName = tableNamesMap[getTableUniqueName(sourceTable)];\n\tif (!sourceTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${sourceTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst reverseRelations: Relation[] = [];\n\tfor (\n\t\tconst referencedTableRelation of Object.values(\n\t\t\treferencedTableConfig.relations,\n\t\t)\n\t) {\n\t\tif (\n\t\t\t(relation.relationName\n\t\t\t\t&& relation !== referencedTableRelation\n\t\t\t\t&& referencedTableRelation.relationName === relation.relationName)\n\t\t\t|| (!relation.relationName\n\t\t\t\t&& referencedTableRelation.referencedTable === relation.sourceTable)\n\t\t) {\n\t\t\treverseRelations.push(referencedTableRelation);\n\t\t}\n\t}\n\n\tif (reverseRelations.length > 1) {\n\t\tthrow relation.relationName\n\t\t\t? new Error(\n\t\t\t\t`There are multiple relations with name \"${relation.relationName}\" in table \"${referencedTableTsName}\"`,\n\t\t\t)\n\t\t\t: new Error(\n\t\t\t\t`There are multiple relations between \"${referencedTableTsName}\" and \"${\n\t\t\t\t\trelation.sourceTable[Table.Symbol.Name]\n\t\t\t\t}\". Please specify relation name`,\n\t\t\t);\n\t}\n\n\tif (\n\t\treverseRelations[0]\n\t\t&& is(reverseRelations[0], One)\n\t\t&& reverseRelations[0].config\n\t) {\n\t\treturn {\n\t\t\tfields: reverseRelations[0].config.references,\n\t\t\treferences: reverseRelations[0].config.fields,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`There is not enough information to infer relation \"${sourceTableTsName}.${relation.fieldName}\"`,\n\t);\n}\n\nexport function createTableRelationsHelpers<TTableName extends string>(\n\tsourceTable: AnyTable<{ name: TTableName }>,\n) {\n\treturn {\n\t\tone: createOne<TTableName>(sourceTable),\n\t\tmany: createMany(sourceTable),\n\t};\n}\n\nexport type TableRelationsHelpers<TTableName extends string> = ReturnType<\n\ttypeof createTableRelationsHelpers<TTableName>\n>;\n\nexport interface BuildRelationalQueryResult<\n\tTTable extends Table = Table,\n\tTColumn extends Column = Column,\n> {\n\ttableTsKey: string;\n\tselection: {\n\t\tdbKey: string;\n\t\ttsKey: string;\n\t\tfield: TColumn | SQL | SQL.Aliased;\n\t\trelationTableTsKey: string | undefined;\n\t\tisJson: boolean;\n\t\tisExtra?: boolean;\n\t\tselection: BuildRelationalQueryResult<TTable>['selection'];\n\t}[];\n\tsql: TTable | SQL;\n}\n\nexport function mapRelationalRow(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst rawSubRows = row[selectionItemIndex] as\n\t\t\t\t| unknown[]\n\t\t\t\t| null\n\t\t\t\t| [null]\n\t\t\t\t| string;\n\t\t\tconst subRows = typeof rawSubRows === 'string'\n\t\t\t\t? (JSON.parse(rawSubRows) as unknown[])\n\t\t\t\t: rawSubRows;\n\t\t\tresult[selectionItem.tsKey] = is(relation, One)\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: (subRows as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function mapRelationalRowFromObj(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst isOne = is(relation, One);\n\t\t\tconst rawSubRows = row[selectionItemIndex] as unknown[] | null | [null] | string;\n\n\t\t\tlet subRows = rawSubRows as unknown[] | null;\n\t\t\tif (subRows || Array.isArray(subRows)) {\n\t\t\t\tsubRows = (typeof rawSubRows === 'string' ? JSON.parse(rawSubRows) : rawSubRows) as unknown[];\n\n\t\t\t\tsubRows = isOne\n\t\t\t\t\t? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r as any))\n\t\t\t\t\t: subRows.map((r) => Array.isArray(r) ? r : Object.values(r as any));\n\t\t\t}\n\n\t\t\tresult[selectionItem.tsKey] = isOne\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: ((subRows ?? []) as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":"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","names":["relations"]}
1
+ {"version":3,"sources":["../src/_relations.ts"],"sourcesContent":["import { type AnyTable, getTableUniqueName, type InferModelFromColumns, Table } from '~/table.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { PrimaryKeyBuilder } from './pg-core/primary-keys.ts';\nimport {\n\tand,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type Placeholder, SQL, sql } from './sql/sql.ts';\nimport type { Assume, ColumnsWithTable, Equal, Simplify, ValueOrArray } from './utils.ts';\n\nexport abstract class Relation<TTableName extends string = string> {\n\tstatic readonly [entityKind]: string = 'Relation';\n\n\tdeclare readonly $brand: 'Relation';\n\treadonly referencedTableName: TTableName;\n\tfieldName!: string;\n\n\tconstructor(\n\t\treadonly sourceTable: Table,\n\t\treadonly referencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly relationName: string | undefined,\n\t) {\n\t\tthis.referencedTableName = referencedTable[Table.Symbol.Name] as TTableName;\n\t}\n\n\tabstract withFieldName(fieldName: string): Relation<TTableName>;\n}\n\nexport class Relations<\n\tTTableName extends string = string,\n\tTConfig extends Record<string, Relation> = Record<string, Relation>,\n> {\n\tstatic readonly [entityKind]: string = 'Relations';\n\n\tdeclare readonly $brand: 'Relations';\n\n\tconstructor(\n\t\treadonly table: AnyTable<{ name: TTableName }>,\n\t\treadonly config: (helpers: TableRelationsHelpers<TTableName>) => TConfig,\n\t) {}\n}\n\nexport class One<\n\tTTableName extends string = string,\n\tTIsNullable extends boolean = boolean,\n> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'One';\n\n\tdeclare protected $relationBrand: 'One';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config:\n\t\t\t| RelationConfig<\n\t\t\t\tTTableName,\n\t\t\t\tstring,\n\t\t\t\tAnyColumn<{ tableName: TTableName }>[]\n\t\t\t>\n\t\t\t| undefined,\n\t\treadonly isNullable: TIsNullable,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): One<TTableName> {\n\t\tconst relation = new One(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t\tthis.isNullable,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport class Many<TTableName extends string> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'Many';\n\n\tdeclare protected $relationBrand: 'Many';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config: { relationName: string } | undefined,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): Many<TTableName> {\n\t\tconst relation = new Many(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport type TableRelationsKeysOnly<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n\tK extends keyof TSchema,\n> = TSchema[K] extends Relations<TTableName> ? K : never;\n\nexport type ExtractTableRelationsFromSchema<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TableRelationsKeysOnly<\n\t\t\t\tTSchema,\n\t\t\t\tTTableName,\n\t\t\t\tK\n\t\t\t>\n\t\t]: TSchema[K] extends Relations<TTableName, infer TConfig> ? TConfig : never;\n\t}\n>;\n\nexport type ExtractObjectValues<T> = T[keyof T];\n\nexport type ExtractRelationsFromTableExtraConfigSchema<\n\tTConfig extends unknown[],\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TConfig as TConfig[K] extends Relations<any> ? K\n\t\t\t\t: never\n\t\t]: TConfig[K] extends Relations<infer TRelationConfig> ? TRelationConfig\n\t\t\t: never;\n\t}\n>;\n\nexport function getOperators() {\n\treturn {\n\t\tand,\n\t\tbetween,\n\t\teq,\n\t\texists,\n\t\tgt,\n\t\tgte,\n\t\tilike,\n\t\tinArray,\n\t\tisNull,\n\t\tisNotNull,\n\t\tlike,\n\t\tlt,\n\t\tlte,\n\t\tne,\n\t\tnot,\n\t\tnotBetween,\n\t\tnotExists,\n\t\tnotLike,\n\t\tnotIlike,\n\t\tnotInArray,\n\t\tor,\n\t\tsql,\n\t};\n}\n\nexport type Operators = ReturnType<typeof getOperators>;\n\nexport function getOrderByOperators() {\n\treturn {\n\t\tsql,\n\t\tasc,\n\t\tdesc,\n\t};\n}\n\nexport type OrderByOperators = ReturnType<typeof getOrderByOperators>;\n\nexport type FindTableByDBName<\n\tTSchema extends TablesRelationalConfig,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TSchema[K]['dbName'] extends TTableName ? K\n\t\t\t\t: never\n\t\t]: TSchema[K];\n\t}\n>;\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport interface TableRelationalConfig {\n\ttsName: string;\n\tdbName: string;\n\tcolumns: Record<string, Column>;\n\trelations: Record<string, Relation>;\n\tprimaryKey: AnyColumn[];\n\tschema?: string;\n}\n\nexport type TablesRelationalConfig = Record<string, TableRelationalConfig>;\n\nexport interface RelationalSchemaConfig<\n\tTSchema extends TablesRelationalConfig,\n> {\n\tfullSchema: Record<string, unknown>;\n\tschema: TSchema;\n\ttableNamesMap: Record<string, string>;\n}\n\nexport type ExtractTablesWithRelations<\n\tTSchema extends Record<string, unknown>,\n> = {\n\t[\n\t\tK in keyof TSchema as TSchema[K] extends Table ? K\n\t\t\t: never\n\t]: TSchema[K] extends Table ? {\n\t\t\ttsName: K & string;\n\t\t\tdbName: TSchema[K]['_']['name'];\n\t\t\tcolumns: TSchema[K]['_']['columns'];\n\t\t\trelations: ExtractTableRelationsFromSchema<\n\t\t\t\tTSchema,\n\t\t\t\tTSchema[K]['_']['name']\n\t\t\t>;\n\t\t\tprimaryKey: AnyColumn[];\n\t\t}\n\t\t: never;\n};\n\nexport type ReturnTypeOrValue<T> = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type BuildRelationResult<\n\tTSchema extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends Record<string, Relation>,\n> = {\n\t[\n\t\tK in\n\t\t\t& NonUndefinedKeysOnly<TInclude>\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends Relation ? BuildQueryResult<\n\t\t\tTSchema,\n\t\t\tFindTableByDBName<TSchema, TRel['referencedTableName']>,\n\t\t\tAssume<TInclude[K], true | Record<string, unknown>>\n\t\t> extends infer TResult ? TRel extends One ?\n\t\t\t\t\t| TResult\n\t\t\t\t\t| (Equal<TRel['isNullable'], false> extends true ? null : never)\n\t\t\t: TResult[]\n\t\t: never\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly<T> =\n\t& ExtractObjectValues<\n\t\t{\n\t\t\t[K in keyof T as T[K] extends undefined ? never : K]: K;\n\t\t}\n\t>\n\t& keyof T;\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record<string, unknown>,\n> = Equal<TFullSelection, true> extends true ? InferModelFromColumns<TTableConfig['columns']>\n\t: TFullSelection extends Record<string, unknown> ? Simplify<\n\t\t\t& (TFullSelection['columns'] extends Record<string, unknown> ? InferModelFromColumns<\n\t\t\t\t\t{\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tK in Equal<\n\t\t\t\t\t\t\t\tExclude<\n\t\t\t\t\t\t\t\t\tTFullSelection['columns'][\n\t\t\t\t\t\t\t\t\t\t& keyof TFullSelection['columns']\n\t\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t> extends true ? Exclude<\n\t\t\t\t\t\t\t\t\tkeyof TTableConfig['columns'],\n\t\t\t\t\t\t\t\t\tNonUndefinedKeysOnly<TFullSelection['columns']>\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t& {\n\t\t\t\t\t\t\t\t\t\t[K in keyof TFullSelection['columns']]: Equal<\n\t\t\t\t\t\t\t\t\t\t\tTFullSelection['columns'][K],\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t\t\t\t}[keyof TFullSelection['columns']]\n\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t]: TTableConfig['columns'][K];\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t: InferModelFromColumns<TTableConfig['columns']>)\n\t\t\t& (TFullSelection['extras'] extends\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| ((...args: any[]) => Record<string, unknown>) ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>\n\t\t\t\t\t\t>\n\t\t\t\t\t]: Assume<\n\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>[K],\n\t\t\t\t\t\tSQL.Aliased\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record<string, unknown> ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface RelationConfig<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> {\n\trelationName?: string;\n\tfields: TColumns;\n\treferences: ColumnsWithTable<TTableName, TForeignTableName, TColumns>;\n}\n\nexport function extractTablesRelationalConfig<\n\tTTables extends TablesRelationalConfig,\n>(\n\tschema: Record<string, unknown>,\n\tconfigHelpers: (table: Table) => any,\n): { tables: TTables; tableNamesMap: Record<string, string> } {\n\tif (\n\t\tObject.keys(schema).length === 1\n\t\t&& 'default' in schema\n\t\t&& !is(schema['default'], Table)\n\t) {\n\t\tschema = schema['default'] as Record<string, unknown>;\n\t}\n\n\t// table DB name -> schema table key\n\tconst tableNamesMap: Record<string, string> = {};\n\t// Table relations found before their tables - need to buffer them until we know the schema table key\n\tconst relationsBuffer: Record<\n\t\tstring,\n\t\t{ relations: Record<string, Relation>; primaryKey?: AnyColumn[] }\n\t> = {};\n\tconst tablesConfig: TablesRelationalConfig = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (is(value, Table)) {\n\t\t\tconst dbName = getTableUniqueName(value);\n\t\t\tconst bufferedRelations = relationsBuffer[dbName];\n\t\t\ttableNamesMap[dbName] = key;\n\t\t\ttablesConfig[key] = {\n\t\t\t\ttsName: key,\n\t\t\t\tdbName: value[Table.Symbol.Name],\n\t\t\t\tschema: value[Table.Symbol.Schema],\n\t\t\t\tcolumns: value[Table.Symbol.Columns],\n\t\t\t\trelations: bufferedRelations?.relations ?? {},\n\t\t\t\tprimaryKey: bufferedRelations?.primaryKey ?? [],\n\t\t\t};\n\n\t\t\t// Fill in primary keys\n\t\t\tfor (\n\t\t\t\tconst column of Object.values(\n\t\t\t\t\t(value as Table)[Table.Symbol.Columns],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (column.primary) {\n\t\t\t\t\ttablesConfig[key]!.primaryKey.push(column);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst extraConfig = value[Table.Symbol.ExtraConfigBuilder]?.((value as Table)[Table.Symbol.ExtraConfigColumns]);\n\t\t\tif (extraConfig) {\n\t\t\t\tfor (const configEntry of Object.values(extraConfig)) {\n\t\t\t\t\tif (is(configEntry, PrimaryKeyBuilder)) {\n\t\t\t\t\t\ttablesConfig[key]!.primaryKey.push(...configEntry.columns);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (is(value, Relations)) {\n\t\t\tconst dbName = getTableUniqueName(value.table);\n\t\t\tconst tableName = tableNamesMap[dbName];\n\t\t\tconst relations: Record<string, Relation> = value.config(\n\t\t\t\tconfigHelpers(value.table),\n\t\t\t);\n\t\t\tlet primaryKey: AnyColumn[] | undefined;\n\n\t\t\tfor (const [relationName, relation] of Object.entries(relations)) {\n\t\t\t\tif (tableName) {\n\t\t\t\t\tconst tableConfig = tablesConfig[tableName]!;\n\t\t\t\t\ttableConfig.relations[relationName] = relation;\n\t\t\t\t\tif (primaryKey) {\n\t\t\t\t\t\ttableConfig.primaryKey.push(...primaryKey);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!(dbName in relationsBuffer)) {\n\t\t\t\t\t\trelationsBuffer[dbName] = {\n\t\t\t\t\t\t\trelations: {},\n\t\t\t\t\t\t\tprimaryKey,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\trelationsBuffer[dbName]!.relations[relationName] = relation;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { tables: tablesConfig as TTables, tableNamesMap };\n}\n\nexport function relations<\n\tTTableName extends string,\n\tTRelations extends Record<string, Relation<any>>,\n>(\n\ttable: AnyTable<{ name: TTableName }>,\n\trelations: (helpers: TableRelationsHelpers<TTableName>) => TRelations,\n): Relations<TTableName, TRelations> {\n\treturn new Relations<TTableName, TRelations>(\n\t\ttable,\n\t\t(helpers: TableRelationsHelpers<TTableName>) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(relations(helpers)).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue.withFieldName(key),\n\t\t\t\t]),\n\t\t\t) as TRelations,\n\t);\n}\n\nexport function createOne<TTableName extends string>(sourceTable: Table) {\n\treturn function one<\n\t\tTForeignTable extends Table,\n\t\tTColumns extends [\n\t\t\tAnyColumn<{ tableName: TTableName }>,\n\t\t\t...AnyColumn<{ tableName: TTableName }>[],\n\t\t],\n\t>(\n\t\ttable: TForeignTable,\n\t\tconfig?: RelationConfig<TTableName, TForeignTable['_']['name'], TColumns>,\n\t): One<\n\t\tTForeignTable['_']['name'],\n\t\tEqual<TColumns[number]['_']['notNull'], true>\n\t> {\n\t\treturn new One(\n\t\t\tsourceTable,\n\t\t\ttable,\n\t\t\tconfig,\n\t\t\t(config?.fields.reduce<boolean>((res, f) => res && f.notNull, true)\n\t\t\t\t?? false) as Equal<TColumns[number]['_']['notNull'], true>,\n\t\t);\n\t};\n}\n\nexport function createMany(sourceTable: Table) {\n\treturn function many<TForeignTable extends Table>(\n\t\treferencedTable: TForeignTable,\n\t\tconfig?: { relationName: string },\n\t): Many<TForeignTable['_']['name']> {\n\t\treturn new Many(sourceTable, referencedTable, config);\n\t};\n}\n\nexport interface NormalizedRelation {\n\tfields: AnyColumn[];\n\treferences: AnyColumn[];\n}\n\nexport function normalizeRelation(\n\tschema: TablesRelationalConfig,\n\ttableNamesMap: Record<string, string>,\n\trelation: Relation,\n): NormalizedRelation {\n\tif (is(relation, One) && relation.config) {\n\t\treturn {\n\t\t\tfields: relation.config.fields,\n\t\t\treferences: relation.config.references,\n\t\t};\n\t}\n\n\tconst referencedTableTsName = tableNamesMap[getTableUniqueName(relation.referencedTable)];\n\tif (!referencedTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${relation.referencedTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst referencedTableConfig = schema[referencedTableTsName];\n\tif (!referencedTableConfig) {\n\t\tthrow new Error(`Table \"${referencedTableTsName}\" not found in schema`);\n\t}\n\n\tconst sourceTable = relation.sourceTable;\n\tconst sourceTableTsName = tableNamesMap[getTableUniqueName(sourceTable)];\n\tif (!sourceTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${sourceTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst reverseRelations: Relation[] = [];\n\tfor (\n\t\tconst referencedTableRelation of Object.values(\n\t\t\treferencedTableConfig.relations,\n\t\t)\n\t) {\n\t\tif (\n\t\t\t(relation.relationName\n\t\t\t\t&& relation !== referencedTableRelation\n\t\t\t\t&& referencedTableRelation.relationName === relation.relationName)\n\t\t\t|| (!relation.relationName\n\t\t\t\t&& referencedTableRelation.referencedTable === relation.sourceTable)\n\t\t) {\n\t\t\treverseRelations.push(referencedTableRelation);\n\t\t}\n\t}\n\n\tif (reverseRelations.length > 1) {\n\t\tthrow relation.relationName\n\t\t\t? new Error(\n\t\t\t\t`There are multiple relations with name \"${relation.relationName}\" in table \"${referencedTableTsName}\"`,\n\t\t\t)\n\t\t\t: new Error(\n\t\t\t\t`There are multiple relations between \"${referencedTableTsName}\" and \"${\n\t\t\t\t\trelation.sourceTable[Table.Symbol.Name]\n\t\t\t\t}\". Please specify relation name`,\n\t\t\t);\n\t}\n\n\tif (\n\t\treverseRelations[0]\n\t\t&& is(reverseRelations[0], One)\n\t\t&& reverseRelations[0].config\n\t) {\n\t\treturn {\n\t\t\tfields: reverseRelations[0].config.references,\n\t\t\treferences: reverseRelations[0].config.fields,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`There is not enough information to infer relation \"${sourceTableTsName}.${relation.fieldName}\"`,\n\t);\n}\n\nexport function createTableRelationsHelpers<TTableName extends string>(\n\tsourceTable: AnyTable<{ name: TTableName }>,\n) {\n\treturn {\n\t\tone: createOne<TTableName>(sourceTable),\n\t\tmany: createMany(sourceTable),\n\t};\n}\n\nexport type TableRelationsHelpers<TTableName extends string> = ReturnType<\n\ttypeof createTableRelationsHelpers<TTableName>\n>;\n\nexport interface BuildRelationalQueryResult<\n\tTTable extends Table = Table,\n\tTColumn extends Column = Column,\n> {\n\ttableTsKey: string;\n\tselection: {\n\t\tdbKey: string;\n\t\ttsKey: string;\n\t\tfield: TColumn | SQL | SQL.Aliased;\n\t\trelationTableTsKey: string | undefined;\n\t\tisJson: boolean;\n\t\tisExtra?: boolean;\n\t\tselection: BuildRelationalQueryResult<TTable>['selection'];\n\t}[];\n\tsql: TTable | SQL;\n}\n\nexport function mapRelationalRow(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst rawSubRows = row[selectionItemIndex] as\n\t\t\t\t| unknown[]\n\t\t\t\t| null\n\t\t\t\t| [null]\n\t\t\t\t| string;\n\t\t\tconst subRows = typeof rawSubRows === 'string'\n\t\t\t\t? (JSON.parse(rawSubRows) as unknown[])\n\t\t\t\t: rawSubRows;\n\t\t\tresult[selectionItem.tsKey] = is(relation, One)\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: (subRows as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":"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","names":["relations"]}
package/_relations.d.cts CHANGED
@@ -213,4 +213,3 @@ export interface BuildRelationalQueryResult<TTable extends Table = Table, TColum
213
213
  sql: TTable | SQL;
214
214
  }
215
215
  export declare function mapRelationalRow(tablesConfig: TablesRelationalConfig, tableConfig: TableRelationalConfig, row: unknown[], buildQueryResultSelection: BuildRelationalQueryResult['selection'], mapColumnValue?: (value: unknown) => unknown): Record<string, unknown>;
216
- export declare function mapRelationalRowFromObj(tablesConfig: TablesRelationalConfig, tableConfig: TableRelationalConfig, row: unknown[], buildQueryResultSelection: BuildRelationalQueryResult['selection'], mapColumnValue?: (value: unknown) => unknown): Record<string, unknown>;
package/_relations.d.ts CHANGED
@@ -213,4 +213,3 @@ export interface BuildRelationalQueryResult<TTable extends Table = Table, TColum
213
213
  sql: TTable | SQL;
214
214
  }
215
215
  export declare function mapRelationalRow(tablesConfig: TablesRelationalConfig, tableConfig: TableRelationalConfig, row: unknown[], buildQueryResultSelection: BuildRelationalQueryResult['selection'], mapColumnValue?: (value: unknown) => unknown): Record<string, unknown>;
216
- export declare function mapRelationalRowFromObj(tablesConfig: TablesRelationalConfig, tableConfig: TableRelationalConfig, row: unknown[], buildQueryResultSelection: BuildRelationalQueryResult['selection'], mapColumnValue?: (value: unknown) => unknown): Record<string, unknown>;
package/_relations.js CHANGED
@@ -154,15 +154,19 @@ function extractTablesRelationalConfig(schema, configHelpers) {
154
154
  const relations2 = value.config(
155
155
  configHelpers(value.table)
156
156
  );
157
+ let primaryKey;
157
158
  for (const [relationName, relation] of Object.entries(relations2)) {
158
159
  if (tableName) {
159
160
  const tableConfig = tablesConfig[tableName];
160
161
  tableConfig.relations[relationName] = relation;
162
+ if (primaryKey) {
163
+ tableConfig.primaryKey.push(...primaryKey);
164
+ }
161
165
  } else {
162
166
  if (!(dbName in relationsBuffer)) {
163
167
  relationsBuffer[dbName] = {
164
- relations: {}
165
- // primaryKey,
168
+ relations: {},
169
+ primaryKey
166
170
  };
167
171
  }
168
172
  relationsBuffer[dbName].relations[relationName] = relation;
@@ -294,52 +298,6 @@ function mapRelationalRow(tablesConfig, tableConfig, row, buildQueryResultSelect
294
298
  }
295
299
  return result;
296
300
  }
297
- function mapRelationalRowFromObj(tablesConfig, tableConfig, row, buildQueryResultSelection, mapColumnValue = (value) => value) {
298
- const result = {};
299
- for (const [
300
- selectionItemIndex,
301
- selectionItem
302
- ] of buildQueryResultSelection.entries()) {
303
- if (selectionItem.isJson) {
304
- const relation = tableConfig.relations[selectionItem.tsKey];
305
- const isOne = is(relation, One);
306
- const rawSubRows = row[selectionItemIndex];
307
- let subRows = rawSubRows;
308
- if (subRows || Array.isArray(subRows)) {
309
- subRows = typeof rawSubRows === "string" ? JSON.parse(rawSubRows) : rawSubRows;
310
- subRows = isOne ? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r)) : subRows.map((r) => Array.isArray(r) ? r : Object.values(r));
311
- }
312
- result[selectionItem.tsKey] = isOne ? subRows && mapRelationalRowFromObj(
313
- tablesConfig,
314
- tablesConfig[selectionItem.relationTableTsKey],
315
- subRows,
316
- selectionItem.selection,
317
- mapColumnValue
318
- ) : (subRows ?? []).map(
319
- (subRow) => mapRelationalRowFromObj(
320
- tablesConfig,
321
- tablesConfig[selectionItem.relationTableTsKey],
322
- subRow,
323
- selectionItem.selection,
324
- mapColumnValue
325
- )
326
- );
327
- } else {
328
- const value = mapColumnValue(row[selectionItemIndex]);
329
- const field = selectionItem.field;
330
- let decoder;
331
- if (is(field, Column)) {
332
- decoder = field;
333
- } else if (is(field, SQL)) {
334
- decoder = field.decoder;
335
- } else {
336
- decoder = field.sql.decoder;
337
- }
338
- result[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);
339
- }
340
- }
341
- return result;
342
- }
343
301
  export {
344
302
  Many,
345
303
  One,
@@ -352,7 +310,6 @@ export {
352
310
  getOperators,
353
311
  getOrderByOperators,
354
312
  mapRelationalRow,
355
- mapRelationalRowFromObj,
356
313
  normalizeRelation,
357
314
  relations
358
315
  };
package/_relations.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/_relations.ts"],"sourcesContent":["import { type AnyTable, getTableUniqueName, type InferModelFromColumns, Table } from '~/table.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { PrimaryKeyBuilder } from './pg-core/primary-keys.ts';\nimport {\n\tand,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type Placeholder, SQL, sql } from './sql/sql.ts';\nimport type { Assume, ColumnsWithTable, Equal, Simplify, ValueOrArray } from './utils.ts';\n\nexport abstract class Relation<TTableName extends string = string> {\n\tstatic readonly [entityKind]: string = 'Relation';\n\n\tdeclare readonly $brand: 'Relation';\n\treadonly referencedTableName: TTableName;\n\tfieldName!: string;\n\n\tconstructor(\n\t\treadonly sourceTable: Table,\n\t\treadonly referencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly relationName: string | undefined,\n\t) {\n\t\tthis.referencedTableName = referencedTable[Table.Symbol.Name] as TTableName;\n\t}\n\n\tabstract withFieldName(fieldName: string): Relation<TTableName>;\n}\n\nexport class Relations<\n\tTTableName extends string = string,\n\tTConfig extends Record<string, Relation> = Record<string, Relation>,\n> {\n\tstatic readonly [entityKind]: string = 'Relations';\n\n\tdeclare readonly $brand: 'Relations';\n\n\tconstructor(\n\t\treadonly table: AnyTable<{ name: TTableName }>,\n\t\treadonly config: (helpers: TableRelationsHelpers<TTableName>) => TConfig,\n\t) {}\n}\n\nexport class One<\n\tTTableName extends string = string,\n\tTIsNullable extends boolean = boolean,\n> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'One';\n\n\tdeclare protected $relationBrand: 'One';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config:\n\t\t\t| RelationConfig<\n\t\t\t\tTTableName,\n\t\t\t\tstring,\n\t\t\t\tAnyColumn<{ tableName: TTableName }>[]\n\t\t\t>\n\t\t\t| undefined,\n\t\treadonly isNullable: TIsNullable,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): One<TTableName> {\n\t\tconst relation = new One(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t\tthis.isNullable,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport class Many<TTableName extends string> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'Many';\n\n\tdeclare protected $relationBrand: 'Many';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config: { relationName: string } | undefined,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): Many<TTableName> {\n\t\tconst relation = new Many(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport type TableRelationsKeysOnly<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n\tK extends keyof TSchema,\n> = TSchema[K] extends Relations<TTableName> ? K : never;\n\nexport type ExtractTableRelationsFromSchema<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TableRelationsKeysOnly<\n\t\t\t\tTSchema,\n\t\t\t\tTTableName,\n\t\t\t\tK\n\t\t\t>\n\t\t]: TSchema[K] extends Relations<TTableName, infer TConfig> ? TConfig : never;\n\t}\n>;\n\nexport type ExtractObjectValues<T> = T[keyof T];\n\nexport type ExtractRelationsFromTableExtraConfigSchema<\n\tTConfig extends unknown[],\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TConfig as TConfig[K] extends Relations<any> ? K\n\t\t\t\t: never\n\t\t]: TConfig[K] extends Relations<infer TRelationConfig> ? TRelationConfig\n\t\t\t: never;\n\t}\n>;\n\nexport function getOperators() {\n\treturn {\n\t\tand,\n\t\tbetween,\n\t\teq,\n\t\texists,\n\t\tgt,\n\t\tgte,\n\t\tilike,\n\t\tinArray,\n\t\tisNull,\n\t\tisNotNull,\n\t\tlike,\n\t\tlt,\n\t\tlte,\n\t\tne,\n\t\tnot,\n\t\tnotBetween,\n\t\tnotExists,\n\t\tnotLike,\n\t\tnotIlike,\n\t\tnotInArray,\n\t\tor,\n\t\tsql,\n\t};\n}\n\nexport type Operators = ReturnType<typeof getOperators>;\n\nexport function getOrderByOperators() {\n\treturn {\n\t\tsql,\n\t\tasc,\n\t\tdesc,\n\t};\n}\n\nexport type OrderByOperators = ReturnType<typeof getOrderByOperators>;\n\nexport type FindTableByDBName<\n\tTSchema extends TablesRelationalConfig,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TSchema[K]['dbName'] extends TTableName ? K\n\t\t\t\t: never\n\t\t]: TSchema[K];\n\t}\n>;\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport interface TableRelationalConfig {\n\ttsName: string;\n\tdbName: string;\n\tcolumns: Record<string, Column>;\n\trelations: Record<string, Relation>;\n\tprimaryKey: AnyColumn[];\n\tschema?: string;\n}\n\nexport type TablesRelationalConfig = Record<string, TableRelationalConfig>;\n\nexport interface RelationalSchemaConfig<\n\tTSchema extends TablesRelationalConfig,\n> {\n\tfullSchema: Record<string, unknown>;\n\tschema: TSchema;\n\ttableNamesMap: Record<string, string>;\n}\n\nexport type ExtractTablesWithRelations<\n\tTSchema extends Record<string, unknown>,\n> = {\n\t[\n\t\tK in keyof TSchema as TSchema[K] extends Table ? K\n\t\t\t: never\n\t]: TSchema[K] extends Table ? {\n\t\t\ttsName: K & string;\n\t\t\tdbName: TSchema[K]['_']['name'];\n\t\t\tcolumns: TSchema[K]['_']['columns'];\n\t\t\trelations: ExtractTableRelationsFromSchema<\n\t\t\t\tTSchema,\n\t\t\t\tTSchema[K]['_']['name']\n\t\t\t>;\n\t\t\tprimaryKey: AnyColumn[];\n\t\t}\n\t\t: never;\n};\n\nexport type ReturnTypeOrValue<T> = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type BuildRelationResult<\n\tTSchema extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends Record<string, Relation>,\n> = {\n\t[\n\t\tK in\n\t\t\t& NonUndefinedKeysOnly<TInclude>\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends Relation ? BuildQueryResult<\n\t\t\tTSchema,\n\t\t\tFindTableByDBName<TSchema, TRel['referencedTableName']>,\n\t\t\tAssume<TInclude[K], true | Record<string, unknown>>\n\t\t> extends infer TResult ? TRel extends One ?\n\t\t\t\t\t| TResult\n\t\t\t\t\t| (Equal<TRel['isNullable'], false> extends true ? null : never)\n\t\t\t: TResult[]\n\t\t: never\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly<T> =\n\t& ExtractObjectValues<\n\t\t{\n\t\t\t[K in keyof T as T[K] extends undefined ? never : K]: K;\n\t\t}\n\t>\n\t& keyof T;\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record<string, unknown>,\n> = Equal<TFullSelection, true> extends true ? InferModelFromColumns<TTableConfig['columns']>\n\t: TFullSelection extends Record<string, unknown> ? Simplify<\n\t\t\t& (TFullSelection['columns'] extends Record<string, unknown> ? InferModelFromColumns<\n\t\t\t\t\t{\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tK in Equal<\n\t\t\t\t\t\t\t\tExclude<\n\t\t\t\t\t\t\t\t\tTFullSelection['columns'][\n\t\t\t\t\t\t\t\t\t\t& keyof TFullSelection['columns']\n\t\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t> extends true ? Exclude<\n\t\t\t\t\t\t\t\t\tkeyof TTableConfig['columns'],\n\t\t\t\t\t\t\t\t\tNonUndefinedKeysOnly<TFullSelection['columns']>\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t& {\n\t\t\t\t\t\t\t\t\t\t[K in keyof TFullSelection['columns']]: Equal<\n\t\t\t\t\t\t\t\t\t\t\tTFullSelection['columns'][K],\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t\t\t\t}[keyof TFullSelection['columns']]\n\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t]: TTableConfig['columns'][K];\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t: InferModelFromColumns<TTableConfig['columns']>)\n\t\t\t& (TFullSelection['extras'] extends\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| ((...args: any[]) => Record<string, unknown>) ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>\n\t\t\t\t\t\t>\n\t\t\t\t\t]: Assume<\n\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>[K],\n\t\t\t\t\t\tSQL.Aliased\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record<string, unknown> ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface RelationConfig<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> {\n\trelationName?: string;\n\tfields: TColumns;\n\treferences: ColumnsWithTable<TTableName, TForeignTableName, TColumns>;\n}\n\nexport function extractTablesRelationalConfig<\n\tTTables extends TablesRelationalConfig,\n>(\n\tschema: Record<string, unknown>,\n\tconfigHelpers: (table: Table) => any,\n): { tables: TTables; tableNamesMap: Record<string, string> } {\n\tif (\n\t\tObject.keys(schema).length === 1\n\t\t&& 'default' in schema\n\t\t&& !is(schema['default'], Table)\n\t) {\n\t\tschema = schema['default'] as Record<string, unknown>;\n\t}\n\n\t// table DB name -> schema table key\n\tconst tableNamesMap: Record<string, string> = {};\n\t// Table relations found before their tables - need to buffer them until we know the schema table key\n\tconst relationsBuffer: Record<\n\t\tstring,\n\t\t{ relations: Record<string, Relation>; primaryKey?: AnyColumn[] }\n\t> = {};\n\tconst tablesConfig: TablesRelationalConfig = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (is(value, Table)) {\n\t\t\tconst dbName = getTableUniqueName(value);\n\t\t\tconst bufferedRelations = relationsBuffer[dbName];\n\t\t\ttableNamesMap[dbName] = key;\n\t\t\ttablesConfig[key] = {\n\t\t\t\ttsName: key,\n\t\t\t\tdbName: value[Table.Symbol.Name],\n\t\t\t\tschema: value[Table.Symbol.Schema],\n\t\t\t\tcolumns: value[Table.Symbol.Columns],\n\t\t\t\trelations: bufferedRelations?.relations ?? {},\n\t\t\t\tprimaryKey: bufferedRelations?.primaryKey ?? [],\n\t\t\t};\n\n\t\t\t// Fill in primary keys\n\t\t\tfor (\n\t\t\t\tconst column of Object.values(\n\t\t\t\t\t(value as Table)[Table.Symbol.Columns],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (column.primary) {\n\t\t\t\t\ttablesConfig[key]!.primaryKey.push(column);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst extraConfig = value[Table.Symbol.ExtraConfigBuilder]?.((value as Table)[Table.Symbol.ExtraConfigColumns]);\n\t\t\tif (extraConfig) {\n\t\t\t\tfor (const configEntry of Object.values(extraConfig)) {\n\t\t\t\t\tif (is(configEntry, PrimaryKeyBuilder)) {\n\t\t\t\t\t\ttablesConfig[key]!.primaryKey.push(...configEntry.columns);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (is(value, Relations)) {\n\t\t\tconst dbName = getTableUniqueName(value.table);\n\t\t\tconst tableName = tableNamesMap[dbName];\n\t\t\tconst relations: Record<string, Relation> = value.config(\n\t\t\t\tconfigHelpers(value.table),\n\t\t\t);\n\t\t\t// let primaryKey: AnyColumn[] | undefined;\n\n\t\t\tfor (const [relationName, relation] of Object.entries(relations)) {\n\t\t\t\tif (tableName) {\n\t\t\t\t\tconst tableConfig = tablesConfig[tableName]!;\n\t\t\t\t\ttableConfig.relations[relationName] = relation;\n\t\t\t\t\t// if (primaryKey) {\n\t\t\t\t\t// \ttableConfig.primaryKey.push(...primaryKey);\n\t\t\t\t\t// }\n\t\t\t\t} else {\n\t\t\t\t\tif (!(dbName in relationsBuffer)) {\n\t\t\t\t\t\trelationsBuffer[dbName] = {\n\t\t\t\t\t\t\trelations: {},\n\t\t\t\t\t\t\t// primaryKey,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\trelationsBuffer[dbName]!.relations[relationName] = relation;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { tables: tablesConfig as TTables, tableNamesMap };\n}\n\nexport function relations<\n\tTTableName extends string,\n\tTRelations extends Record<string, Relation<any>>,\n>(\n\ttable: AnyTable<{ name: TTableName }>,\n\trelations: (helpers: TableRelationsHelpers<TTableName>) => TRelations,\n): Relations<TTableName, TRelations> {\n\treturn new Relations<TTableName, TRelations>(\n\t\ttable,\n\t\t(helpers: TableRelationsHelpers<TTableName>) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(relations(helpers)).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue.withFieldName(key),\n\t\t\t\t]),\n\t\t\t) as TRelations,\n\t);\n}\n\nexport function createOne<TTableName extends string>(sourceTable: Table) {\n\treturn function one<\n\t\tTForeignTable extends Table,\n\t\tTColumns extends [\n\t\t\tAnyColumn<{ tableName: TTableName }>,\n\t\t\t...AnyColumn<{ tableName: TTableName }>[],\n\t\t],\n\t>(\n\t\ttable: TForeignTable,\n\t\tconfig?: RelationConfig<TTableName, TForeignTable['_']['name'], TColumns>,\n\t): One<\n\t\tTForeignTable['_']['name'],\n\t\tEqual<TColumns[number]['_']['notNull'], true>\n\t> {\n\t\treturn new One(\n\t\t\tsourceTable,\n\t\t\ttable,\n\t\t\tconfig,\n\t\t\t(config?.fields.reduce<boolean>((res, f) => res && f.notNull, true)\n\t\t\t\t?? false) as Equal<TColumns[number]['_']['notNull'], true>,\n\t\t);\n\t};\n}\n\nexport function createMany(sourceTable: Table) {\n\treturn function many<TForeignTable extends Table>(\n\t\treferencedTable: TForeignTable,\n\t\tconfig?: { relationName: string },\n\t): Many<TForeignTable['_']['name']> {\n\t\treturn new Many(sourceTable, referencedTable, config);\n\t};\n}\n\nexport interface NormalizedRelation {\n\tfields: AnyColumn[];\n\treferences: AnyColumn[];\n}\n\nexport function normalizeRelation(\n\tschema: TablesRelationalConfig,\n\ttableNamesMap: Record<string, string>,\n\trelation: Relation,\n): NormalizedRelation {\n\tif (is(relation, One) && relation.config) {\n\t\treturn {\n\t\t\tfields: relation.config.fields,\n\t\t\treferences: relation.config.references,\n\t\t};\n\t}\n\n\tconst referencedTableTsName = tableNamesMap[getTableUniqueName(relation.referencedTable)];\n\tif (!referencedTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${relation.referencedTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst referencedTableConfig = schema[referencedTableTsName];\n\tif (!referencedTableConfig) {\n\t\tthrow new Error(`Table \"${referencedTableTsName}\" not found in schema`);\n\t}\n\n\tconst sourceTable = relation.sourceTable;\n\tconst sourceTableTsName = tableNamesMap[getTableUniqueName(sourceTable)];\n\tif (!sourceTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${sourceTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst reverseRelations: Relation[] = [];\n\tfor (\n\t\tconst referencedTableRelation of Object.values(\n\t\t\treferencedTableConfig.relations,\n\t\t)\n\t) {\n\t\tif (\n\t\t\t(relation.relationName\n\t\t\t\t&& relation !== referencedTableRelation\n\t\t\t\t&& referencedTableRelation.relationName === relation.relationName)\n\t\t\t|| (!relation.relationName\n\t\t\t\t&& referencedTableRelation.referencedTable === relation.sourceTable)\n\t\t) {\n\t\t\treverseRelations.push(referencedTableRelation);\n\t\t}\n\t}\n\n\tif (reverseRelations.length > 1) {\n\t\tthrow relation.relationName\n\t\t\t? new Error(\n\t\t\t\t`There are multiple relations with name \"${relation.relationName}\" in table \"${referencedTableTsName}\"`,\n\t\t\t)\n\t\t\t: new Error(\n\t\t\t\t`There are multiple relations between \"${referencedTableTsName}\" and \"${\n\t\t\t\t\trelation.sourceTable[Table.Symbol.Name]\n\t\t\t\t}\". Please specify relation name`,\n\t\t\t);\n\t}\n\n\tif (\n\t\treverseRelations[0]\n\t\t&& is(reverseRelations[0], One)\n\t\t&& reverseRelations[0].config\n\t) {\n\t\treturn {\n\t\t\tfields: reverseRelations[0].config.references,\n\t\t\treferences: reverseRelations[0].config.fields,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`There is not enough information to infer relation \"${sourceTableTsName}.${relation.fieldName}\"`,\n\t);\n}\n\nexport function createTableRelationsHelpers<TTableName extends string>(\n\tsourceTable: AnyTable<{ name: TTableName }>,\n) {\n\treturn {\n\t\tone: createOne<TTableName>(sourceTable),\n\t\tmany: createMany(sourceTable),\n\t};\n}\n\nexport type TableRelationsHelpers<TTableName extends string> = ReturnType<\n\ttypeof createTableRelationsHelpers<TTableName>\n>;\n\nexport interface BuildRelationalQueryResult<\n\tTTable extends Table = Table,\n\tTColumn extends Column = Column,\n> {\n\ttableTsKey: string;\n\tselection: {\n\t\tdbKey: string;\n\t\ttsKey: string;\n\t\tfield: TColumn | SQL | SQL.Aliased;\n\t\trelationTableTsKey: string | undefined;\n\t\tisJson: boolean;\n\t\tisExtra?: boolean;\n\t\tselection: BuildRelationalQueryResult<TTable>['selection'];\n\t}[];\n\tsql: TTable | SQL;\n}\n\nexport function mapRelationalRow(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst rawSubRows = row[selectionItemIndex] as\n\t\t\t\t| unknown[]\n\t\t\t\t| null\n\t\t\t\t| [null]\n\t\t\t\t| string;\n\t\t\tconst subRows = typeof rawSubRows === 'string'\n\t\t\t\t? (JSON.parse(rawSubRows) as unknown[])\n\t\t\t\t: rawSubRows;\n\t\t\tresult[selectionItem.tsKey] = is(relation, One)\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: (subRows as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function mapRelationalRowFromObj(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst isOne = is(relation, One);\n\t\t\tconst rawSubRows = row[selectionItemIndex] as unknown[] | null | [null] | string;\n\n\t\t\tlet subRows = rawSubRows as unknown[] | null;\n\t\t\tif (subRows || Array.isArray(subRows)) {\n\t\t\t\tsubRows = (typeof rawSubRows === 'string' ? JSON.parse(rawSubRows) : rawSubRows) as unknown[];\n\n\t\t\t\tsubRows = isOne\n\t\t\t\t\t? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r as any))\n\t\t\t\t\t: subRows.map((r) => Array.isArray(r) ? r : Object.values(r as any));\n\t\t\t}\n\n\t\t\tresult[selectionItem.tsKey] = isOne\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: ((subRows ?? []) as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRowFromObj(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":"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","names":["relations"]}
1
+ {"version":3,"sources":["../src/_relations.ts"],"sourcesContent":["import { type AnyTable, getTableUniqueName, type InferModelFromColumns, Table } from '~/table.ts';\nimport { type AnyColumn, Column } from './column.ts';\nimport { entityKind, is } from './entity.ts';\nimport { PrimaryKeyBuilder } from './pg-core/primary-keys.ts';\nimport {\n\tand,\n\tasc,\n\tbetween,\n\tdesc,\n\teq,\n\texists,\n\tgt,\n\tgte,\n\tilike,\n\tinArray,\n\tisNotNull,\n\tisNull,\n\tlike,\n\tlt,\n\tlte,\n\tne,\n\tnot,\n\tnotBetween,\n\tnotExists,\n\tnotIlike,\n\tnotInArray,\n\tnotLike,\n\tor,\n} from './sql/expressions/index.ts';\nimport { type Placeholder, SQL, sql } from './sql/sql.ts';\nimport type { Assume, ColumnsWithTable, Equal, Simplify, ValueOrArray } from './utils.ts';\n\nexport abstract class Relation<TTableName extends string = string> {\n\tstatic readonly [entityKind]: string = 'Relation';\n\n\tdeclare readonly $brand: 'Relation';\n\treadonly referencedTableName: TTableName;\n\tfieldName!: string;\n\n\tconstructor(\n\t\treadonly sourceTable: Table,\n\t\treadonly referencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly relationName: string | undefined,\n\t) {\n\t\tthis.referencedTableName = referencedTable[Table.Symbol.Name] as TTableName;\n\t}\n\n\tabstract withFieldName(fieldName: string): Relation<TTableName>;\n}\n\nexport class Relations<\n\tTTableName extends string = string,\n\tTConfig extends Record<string, Relation> = Record<string, Relation>,\n> {\n\tstatic readonly [entityKind]: string = 'Relations';\n\n\tdeclare readonly $brand: 'Relations';\n\n\tconstructor(\n\t\treadonly table: AnyTable<{ name: TTableName }>,\n\t\treadonly config: (helpers: TableRelationsHelpers<TTableName>) => TConfig,\n\t) {}\n}\n\nexport class One<\n\tTTableName extends string = string,\n\tTIsNullable extends boolean = boolean,\n> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'One';\n\n\tdeclare protected $relationBrand: 'One';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config:\n\t\t\t| RelationConfig<\n\t\t\t\tTTableName,\n\t\t\t\tstring,\n\t\t\t\tAnyColumn<{ tableName: TTableName }>[]\n\t\t\t>\n\t\t\t| undefined,\n\t\treadonly isNullable: TIsNullable,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): One<TTableName> {\n\t\tconst relation = new One(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t\tthis.isNullable,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport class Many<TTableName extends string> extends Relation<TTableName> {\n\tstatic override readonly [entityKind]: string = 'Many';\n\n\tdeclare protected $relationBrand: 'Many';\n\n\tconstructor(\n\t\tsourceTable: Table,\n\t\treferencedTable: AnyTable<{ name: TTableName }>,\n\t\treadonly config: { relationName: string } | undefined,\n\t) {\n\t\tsuper(sourceTable, referencedTable, config?.relationName);\n\t}\n\n\twithFieldName(fieldName: string): Many<TTableName> {\n\t\tconst relation = new Many(\n\t\t\tthis.sourceTable,\n\t\t\tthis.referencedTable,\n\t\t\tthis.config,\n\t\t);\n\t\trelation.fieldName = fieldName;\n\t\treturn relation;\n\t}\n}\n\nexport type TableRelationsKeysOnly<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n\tK extends keyof TSchema,\n> = TSchema[K] extends Relations<TTableName> ? K : never;\n\nexport type ExtractTableRelationsFromSchema<\n\tTSchema extends Record<string, unknown>,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TableRelationsKeysOnly<\n\t\t\t\tTSchema,\n\t\t\t\tTTableName,\n\t\t\t\tK\n\t\t\t>\n\t\t]: TSchema[K] extends Relations<TTableName, infer TConfig> ? TConfig : never;\n\t}\n>;\n\nexport type ExtractObjectValues<T> = T[keyof T];\n\nexport type ExtractRelationsFromTableExtraConfigSchema<\n\tTConfig extends unknown[],\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TConfig as TConfig[K] extends Relations<any> ? K\n\t\t\t\t: never\n\t\t]: TConfig[K] extends Relations<infer TRelationConfig> ? TRelationConfig\n\t\t\t: never;\n\t}\n>;\n\nexport function getOperators() {\n\treturn {\n\t\tand,\n\t\tbetween,\n\t\teq,\n\t\texists,\n\t\tgt,\n\t\tgte,\n\t\tilike,\n\t\tinArray,\n\t\tisNull,\n\t\tisNotNull,\n\t\tlike,\n\t\tlt,\n\t\tlte,\n\t\tne,\n\t\tnot,\n\t\tnotBetween,\n\t\tnotExists,\n\t\tnotLike,\n\t\tnotIlike,\n\t\tnotInArray,\n\t\tor,\n\t\tsql,\n\t};\n}\n\nexport type Operators = ReturnType<typeof getOperators>;\n\nexport function getOrderByOperators() {\n\treturn {\n\t\tsql,\n\t\tasc,\n\t\tdesc,\n\t};\n}\n\nexport type OrderByOperators = ReturnType<typeof getOrderByOperators>;\n\nexport type FindTableByDBName<\n\tTSchema extends TablesRelationalConfig,\n\tTTableName extends string,\n> = ExtractObjectValues<\n\t{\n\t\t[\n\t\t\tK in keyof TSchema as TSchema[K]['dbName'] extends TTableName ? K\n\t\t\t\t: never\n\t\t]: TSchema[K];\n\t}\n>;\n\nexport type DBQueryConfig<\n\tTRelationType extends 'one' | 'many' = 'one' | 'many',\n\tTIsRoot extends boolean = boolean,\n\tTSchema extends TablesRelationalConfig = TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig = TableRelationalConfig,\n> =\n\t& {\n\t\tcolumns?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['columns']]?: boolean;\n\t\t\t}\n\t\t\t| undefined;\n\t\twith?:\n\t\t\t| {\n\t\t\t\t[K in keyof TTableConfig['relations']]?:\n\t\t\t\t\t| true\n\t\t\t\t\t| DBQueryConfig<\n\t\t\t\t\t\tTTableConfig['relations'][K] extends One ? 'one' : 'many',\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\tFindTableByDBName<\n\t\t\t\t\t\t\tTSchema,\n\t\t\t\t\t\t\tTTableConfig['relations'][K]['referencedTableName']\n\t\t\t\t\t\t>\n\t\t\t\t\t>\n\t\t\t\t\t| undefined;\n\t\t\t}\n\t\t\t| undefined;\n\t\textras?:\n\t\t\t| Record<string, SQL.Aliased>\n\t\t\t| ((\n\t\t\t\tfields: Simplify<\n\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t>,\n\t\t\t\toperators: { sql: Operators['sql'] },\n\t\t\t) => Record<string, SQL.Aliased>)\n\t\t\t| undefined;\n\t}\n\t& (TRelationType extends 'many' ?\n\t\t\t& {\n\t\t\t\twhere?:\n\t\t\t\t\t| SQL\n\t\t\t\t\t| undefined\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: Operators,\n\t\t\t\t\t) => SQL | undefined);\n\t\t\t\torderBy?:\n\t\t\t\t\t| ValueOrArray<AnyColumn | SQL>\n\t\t\t\t\t| ((\n\t\t\t\t\t\tfields: Simplify<\n\t\t\t\t\t\t\t[TTableConfig['columns']] extends [never] ? {}\n\t\t\t\t\t\t\t\t: TTableConfig['columns']\n\t\t\t\t\t\t>,\n\t\t\t\t\t\toperators: OrderByOperators,\n\t\t\t\t\t) => ValueOrArray<AnyColumn | SQL>)\n\t\t\t\t\t| undefined;\n\t\t\t\tlimit?: number | Placeholder | undefined;\n\t\t\t}\n\t\t\t& (TIsRoot extends true ? {\n\t\t\t\t\toffset?: number | Placeholder | undefined;\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t: {});\n\nexport interface TableRelationalConfig {\n\ttsName: string;\n\tdbName: string;\n\tcolumns: Record<string, Column>;\n\trelations: Record<string, Relation>;\n\tprimaryKey: AnyColumn[];\n\tschema?: string;\n}\n\nexport type TablesRelationalConfig = Record<string, TableRelationalConfig>;\n\nexport interface RelationalSchemaConfig<\n\tTSchema extends TablesRelationalConfig,\n> {\n\tfullSchema: Record<string, unknown>;\n\tschema: TSchema;\n\ttableNamesMap: Record<string, string>;\n}\n\nexport type ExtractTablesWithRelations<\n\tTSchema extends Record<string, unknown>,\n> = {\n\t[\n\t\tK in keyof TSchema as TSchema[K] extends Table ? K\n\t\t\t: never\n\t]: TSchema[K] extends Table ? {\n\t\t\ttsName: K & string;\n\t\t\tdbName: TSchema[K]['_']['name'];\n\t\t\tcolumns: TSchema[K]['_']['columns'];\n\t\t\trelations: ExtractTableRelationsFromSchema<\n\t\t\t\tTSchema,\n\t\t\t\tTSchema[K]['_']['name']\n\t\t\t>;\n\t\t\tprimaryKey: AnyColumn[];\n\t\t}\n\t\t: never;\n};\n\nexport type ReturnTypeOrValue<T> = T extends (...args: any[]) => infer R ? R\n\t: T;\n\nexport type BuildRelationResult<\n\tTSchema extends TablesRelationalConfig,\n\tTInclude,\n\tTRelations extends Record<string, Relation>,\n> = {\n\t[\n\t\tK in\n\t\t\t& NonUndefinedKeysOnly<TInclude>\n\t\t\t& keyof TRelations\n\t]: TRelations[K] extends infer TRel extends Relation ? BuildQueryResult<\n\t\t\tTSchema,\n\t\t\tFindTableByDBName<TSchema, TRel['referencedTableName']>,\n\t\t\tAssume<TInclude[K], true | Record<string, unknown>>\n\t\t> extends infer TResult ? TRel extends One ?\n\t\t\t\t\t| TResult\n\t\t\t\t\t| (Equal<TRel['isNullable'], false> extends true ? null : never)\n\t\t\t: TResult[]\n\t\t: never\n\t\t: never;\n};\n\nexport type NonUndefinedKeysOnly<T> =\n\t& ExtractObjectValues<\n\t\t{\n\t\t\t[K in keyof T as T[K] extends undefined ? never : K]: K;\n\t\t}\n\t>\n\t& keyof T;\n\nexport type BuildQueryResult<\n\tTSchema extends TablesRelationalConfig,\n\tTTableConfig extends TableRelationalConfig,\n\tTFullSelection extends true | Record<string, unknown>,\n> = Equal<TFullSelection, true> extends true ? InferModelFromColumns<TTableConfig['columns']>\n\t: TFullSelection extends Record<string, unknown> ? Simplify<\n\t\t\t& (TFullSelection['columns'] extends Record<string, unknown> ? InferModelFromColumns<\n\t\t\t\t\t{\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tK in Equal<\n\t\t\t\t\t\t\t\tExclude<\n\t\t\t\t\t\t\t\t\tTFullSelection['columns'][\n\t\t\t\t\t\t\t\t\t\t& keyof TFullSelection['columns']\n\t\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t\t>,\n\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t> extends true ? Exclude<\n\t\t\t\t\t\t\t\t\tkeyof TTableConfig['columns'],\n\t\t\t\t\t\t\t\t\tNonUndefinedKeysOnly<TFullSelection['columns']>\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t& {\n\t\t\t\t\t\t\t\t\t\t[K in keyof TFullSelection['columns']]: Equal<\n\t\t\t\t\t\t\t\t\t\t\tTFullSelection['columns'][K],\n\t\t\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t\t\t> extends true ? K\n\t\t\t\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t\t\t\t}[keyof TFullSelection['columns']]\n\t\t\t\t\t\t\t\t\t& keyof TTableConfig['columns']\n\t\t\t\t\t\t]: TTableConfig['columns'][K];\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t: InferModelFromColumns<TTableConfig['columns']>)\n\t\t\t& (TFullSelection['extras'] extends\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| ((...args: any[]) => Record<string, unknown>) ? {\n\t\t\t\t\t[\n\t\t\t\t\t\tK in NonUndefinedKeysOnly<\n\t\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>\n\t\t\t\t\t\t>\n\t\t\t\t\t]: Assume<\n\t\t\t\t\t\tReturnTypeOrValue<TFullSelection['extras']>[K],\n\t\t\t\t\t\tSQL.Aliased\n\t\t\t\t\t>['_']['type'];\n\t\t\t\t}\n\t\t\t\t: {})\n\t\t\t& (TFullSelection['with'] extends Record<string, unknown> ? BuildRelationResult<\n\t\t\t\t\tTSchema,\n\t\t\t\t\tTFullSelection['with'],\n\t\t\t\t\tTTableConfig['relations']\n\t\t\t\t>\n\t\t\t\t: {})\n\t\t>\n\t: never;\n\nexport interface RelationConfig<\n\tTTableName extends string,\n\tTForeignTableName extends string,\n\tTColumns extends AnyColumn<{ tableName: TTableName }>[],\n> {\n\trelationName?: string;\n\tfields: TColumns;\n\treferences: ColumnsWithTable<TTableName, TForeignTableName, TColumns>;\n}\n\nexport function extractTablesRelationalConfig<\n\tTTables extends TablesRelationalConfig,\n>(\n\tschema: Record<string, unknown>,\n\tconfigHelpers: (table: Table) => any,\n): { tables: TTables; tableNamesMap: Record<string, string> } {\n\tif (\n\t\tObject.keys(schema).length === 1\n\t\t&& 'default' in schema\n\t\t&& !is(schema['default'], Table)\n\t) {\n\t\tschema = schema['default'] as Record<string, unknown>;\n\t}\n\n\t// table DB name -> schema table key\n\tconst tableNamesMap: Record<string, string> = {};\n\t// Table relations found before their tables - need to buffer them until we know the schema table key\n\tconst relationsBuffer: Record<\n\t\tstring,\n\t\t{ relations: Record<string, Relation>; primaryKey?: AnyColumn[] }\n\t> = {};\n\tconst tablesConfig: TablesRelationalConfig = {};\n\tfor (const [key, value] of Object.entries(schema)) {\n\t\tif (is(value, Table)) {\n\t\t\tconst dbName = getTableUniqueName(value);\n\t\t\tconst bufferedRelations = relationsBuffer[dbName];\n\t\t\ttableNamesMap[dbName] = key;\n\t\t\ttablesConfig[key] = {\n\t\t\t\ttsName: key,\n\t\t\t\tdbName: value[Table.Symbol.Name],\n\t\t\t\tschema: value[Table.Symbol.Schema],\n\t\t\t\tcolumns: value[Table.Symbol.Columns],\n\t\t\t\trelations: bufferedRelations?.relations ?? {},\n\t\t\t\tprimaryKey: bufferedRelations?.primaryKey ?? [],\n\t\t\t};\n\n\t\t\t// Fill in primary keys\n\t\t\tfor (\n\t\t\t\tconst column of Object.values(\n\t\t\t\t\t(value as Table)[Table.Symbol.Columns],\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (column.primary) {\n\t\t\t\t\ttablesConfig[key]!.primaryKey.push(column);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst extraConfig = value[Table.Symbol.ExtraConfigBuilder]?.((value as Table)[Table.Symbol.ExtraConfigColumns]);\n\t\t\tif (extraConfig) {\n\t\t\t\tfor (const configEntry of Object.values(extraConfig)) {\n\t\t\t\t\tif (is(configEntry, PrimaryKeyBuilder)) {\n\t\t\t\t\t\ttablesConfig[key]!.primaryKey.push(...configEntry.columns);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (is(value, Relations)) {\n\t\t\tconst dbName = getTableUniqueName(value.table);\n\t\t\tconst tableName = tableNamesMap[dbName];\n\t\t\tconst relations: Record<string, Relation> = value.config(\n\t\t\t\tconfigHelpers(value.table),\n\t\t\t);\n\t\t\tlet primaryKey: AnyColumn[] | undefined;\n\n\t\t\tfor (const [relationName, relation] of Object.entries(relations)) {\n\t\t\t\tif (tableName) {\n\t\t\t\t\tconst tableConfig = tablesConfig[tableName]!;\n\t\t\t\t\ttableConfig.relations[relationName] = relation;\n\t\t\t\t\tif (primaryKey) {\n\t\t\t\t\t\ttableConfig.primaryKey.push(...primaryKey);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!(dbName in relationsBuffer)) {\n\t\t\t\t\t\trelationsBuffer[dbName] = {\n\t\t\t\t\t\t\trelations: {},\n\t\t\t\t\t\t\tprimaryKey,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\trelationsBuffer[dbName]!.relations[relationName] = relation;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { tables: tablesConfig as TTables, tableNamesMap };\n}\n\nexport function relations<\n\tTTableName extends string,\n\tTRelations extends Record<string, Relation<any>>,\n>(\n\ttable: AnyTable<{ name: TTableName }>,\n\trelations: (helpers: TableRelationsHelpers<TTableName>) => TRelations,\n): Relations<TTableName, TRelations> {\n\treturn new Relations<TTableName, TRelations>(\n\t\ttable,\n\t\t(helpers: TableRelationsHelpers<TTableName>) =>\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(relations(helpers)).map(([key, value]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue.withFieldName(key),\n\t\t\t\t]),\n\t\t\t) as TRelations,\n\t);\n}\n\nexport function createOne<TTableName extends string>(sourceTable: Table) {\n\treturn function one<\n\t\tTForeignTable extends Table,\n\t\tTColumns extends [\n\t\t\tAnyColumn<{ tableName: TTableName }>,\n\t\t\t...AnyColumn<{ tableName: TTableName }>[],\n\t\t],\n\t>(\n\t\ttable: TForeignTable,\n\t\tconfig?: RelationConfig<TTableName, TForeignTable['_']['name'], TColumns>,\n\t): One<\n\t\tTForeignTable['_']['name'],\n\t\tEqual<TColumns[number]['_']['notNull'], true>\n\t> {\n\t\treturn new One(\n\t\t\tsourceTable,\n\t\t\ttable,\n\t\t\tconfig,\n\t\t\t(config?.fields.reduce<boolean>((res, f) => res && f.notNull, true)\n\t\t\t\t?? false) as Equal<TColumns[number]['_']['notNull'], true>,\n\t\t);\n\t};\n}\n\nexport function createMany(sourceTable: Table) {\n\treturn function many<TForeignTable extends Table>(\n\t\treferencedTable: TForeignTable,\n\t\tconfig?: { relationName: string },\n\t): Many<TForeignTable['_']['name']> {\n\t\treturn new Many(sourceTable, referencedTable, config);\n\t};\n}\n\nexport interface NormalizedRelation {\n\tfields: AnyColumn[];\n\treferences: AnyColumn[];\n}\n\nexport function normalizeRelation(\n\tschema: TablesRelationalConfig,\n\ttableNamesMap: Record<string, string>,\n\trelation: Relation,\n): NormalizedRelation {\n\tif (is(relation, One) && relation.config) {\n\t\treturn {\n\t\t\tfields: relation.config.fields,\n\t\t\treferences: relation.config.references,\n\t\t};\n\t}\n\n\tconst referencedTableTsName = tableNamesMap[getTableUniqueName(relation.referencedTable)];\n\tif (!referencedTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${relation.referencedTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst referencedTableConfig = schema[referencedTableTsName];\n\tif (!referencedTableConfig) {\n\t\tthrow new Error(`Table \"${referencedTableTsName}\" not found in schema`);\n\t}\n\n\tconst sourceTable = relation.sourceTable;\n\tconst sourceTableTsName = tableNamesMap[getTableUniqueName(sourceTable)];\n\tif (!sourceTableTsName) {\n\t\tthrow new Error(\n\t\t\t`Table \"${sourceTable[Table.Symbol.Name]}\" not found in schema`,\n\t\t);\n\t}\n\n\tconst reverseRelations: Relation[] = [];\n\tfor (\n\t\tconst referencedTableRelation of Object.values(\n\t\t\treferencedTableConfig.relations,\n\t\t)\n\t) {\n\t\tif (\n\t\t\t(relation.relationName\n\t\t\t\t&& relation !== referencedTableRelation\n\t\t\t\t&& referencedTableRelation.relationName === relation.relationName)\n\t\t\t|| (!relation.relationName\n\t\t\t\t&& referencedTableRelation.referencedTable === relation.sourceTable)\n\t\t) {\n\t\t\treverseRelations.push(referencedTableRelation);\n\t\t}\n\t}\n\n\tif (reverseRelations.length > 1) {\n\t\tthrow relation.relationName\n\t\t\t? new Error(\n\t\t\t\t`There are multiple relations with name \"${relation.relationName}\" in table \"${referencedTableTsName}\"`,\n\t\t\t)\n\t\t\t: new Error(\n\t\t\t\t`There are multiple relations between \"${referencedTableTsName}\" and \"${\n\t\t\t\t\trelation.sourceTable[Table.Symbol.Name]\n\t\t\t\t}\". Please specify relation name`,\n\t\t\t);\n\t}\n\n\tif (\n\t\treverseRelations[0]\n\t\t&& is(reverseRelations[0], One)\n\t\t&& reverseRelations[0].config\n\t) {\n\t\treturn {\n\t\t\tfields: reverseRelations[0].config.references,\n\t\t\treferences: reverseRelations[0].config.fields,\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`There is not enough information to infer relation \"${sourceTableTsName}.${relation.fieldName}\"`,\n\t);\n}\n\nexport function createTableRelationsHelpers<TTableName extends string>(\n\tsourceTable: AnyTable<{ name: TTableName }>,\n) {\n\treturn {\n\t\tone: createOne<TTableName>(sourceTable),\n\t\tmany: createMany(sourceTable),\n\t};\n}\n\nexport type TableRelationsHelpers<TTableName extends string> = ReturnType<\n\ttypeof createTableRelationsHelpers<TTableName>\n>;\n\nexport interface BuildRelationalQueryResult<\n\tTTable extends Table = Table,\n\tTColumn extends Column = Column,\n> {\n\ttableTsKey: string;\n\tselection: {\n\t\tdbKey: string;\n\t\ttsKey: string;\n\t\tfield: TColumn | SQL | SQL.Aliased;\n\t\trelationTableTsKey: string | undefined;\n\t\tisJson: boolean;\n\t\tisExtra?: boolean;\n\t\tselection: BuildRelationalQueryResult<TTable>['selection'];\n\t}[];\n\tsql: TTable | SQL;\n}\n\nexport function mapRelationalRow(\n\ttablesConfig: TablesRelationalConfig,\n\ttableConfig: TableRelationalConfig,\n\trow: unknown[],\n\tbuildQueryResultSelection: BuildRelationalQueryResult['selection'],\n\tmapColumnValue: (value: unknown) => unknown = (value) => value,\n): Record<string, unknown> {\n\tconst result: Record<string, unknown> = {};\n\n\tfor (\n\t\tconst [\n\t\t\tselectionItemIndex,\n\t\t\tselectionItem,\n\t\t] of buildQueryResultSelection.entries()\n\t) {\n\t\tif (selectionItem.isJson) {\n\t\t\tconst relation = tableConfig.relations[selectionItem.tsKey]!;\n\t\t\tconst rawSubRows = row[selectionItemIndex] as\n\t\t\t\t| unknown[]\n\t\t\t\t| null\n\t\t\t\t| [null]\n\t\t\t\t| string;\n\t\t\tconst subRows = typeof rawSubRows === 'string'\n\t\t\t\t? (JSON.parse(rawSubRows) as unknown[])\n\t\t\t\t: rawSubRows;\n\t\t\tresult[selectionItem.tsKey] = is(relation, One)\n\t\t\t\t? subRows\n\t\t\t\t\t&& mapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRows,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t: (subRows as unknown[][]).map((subRow) =>\n\t\t\t\t\tmapRelationalRow(\n\t\t\t\t\t\ttablesConfig,\n\t\t\t\t\t\ttablesConfig[selectionItem.relationTableTsKey!]!,\n\t\t\t\t\t\tsubRow,\n\t\t\t\t\t\tselectionItem.selection,\n\t\t\t\t\t\tmapColumnValue,\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t} else {\n\t\t\tconst value = mapColumnValue(row[selectionItemIndex]);\n\t\t\tconst field = selectionItem.field!;\n\t\t\tlet decoder;\n\t\t\tif (is(field, Column)) {\n\t\t\t\tdecoder = field;\n\t\t\t} else if (is(field, SQL)) {\n\t\t\t\tdecoder = field.decoder;\n\t\t\t} else {\n\t\t\t\tdecoder = field.sql.decoder;\n\t\t\t}\n\t\t\tresult[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);\n\t\t}\n\t}\n\n\treturn result;\n}\n"],"mappings":"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","names":["relations"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn TypeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn TypeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn TypeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn TypeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn TypeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn TypeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase TypeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TypeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn TypeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn TypeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn TypeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn TypeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn TypeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn TypeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase TypeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TypeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn TypeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn TypeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn TypeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn TypeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn TypeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn TypeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase TypeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TypeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // oxlint-disable-line drizzle-internal/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":"AACA,SAAS,gBAAgB;AAGlB,SAAS,oBAAoB,OAAc;AACjD,MAAI,MAAM,gBAAgB,QAAW;AACpC,WAAO,MAAM;AAAA,EACd,WAAW,MAAM,iBAAiB,QAAW;AAC5C,WAAO,MAAM;AAAA,EACd,WAAW,MAAM,gBAAgB,QAAW;AAC3C,WAAO,MAAM;AAAA,EACd,WAAW,MAAM,WAAW,QAAW;AACtC,WAAO;AAAA,EACR,WAAW,MAAM,cAAc,QAAW;AACzC,WAAO,MAAM;AAAA,EACd,WAAW,MAAM,cAAc,QAAW;AACzC,WAAO,MAAM;AAAA,EAEd,WAAW,MAAM,eAAe,QAAW;AAC1C,QAAI,MAAM,WAAW,iBAAiB,QAAW;AAChD,aAAO,MAAM,WAAW;AAAA,IACzB;AACA,QAAI,MAAM,WAAW,eAAe,QAAW;AAC9C,aAAO,MAAM,WAAW;AAAA,IACzB;AACA,QAAI,MAAM,WAAW,iBAAiB,QAAW;AAChD,aAAO,MAAM,WAAW;AAAA,IACzB;AACA,QAAI,MAAM,WAAW,kBAAkB,QAAW;AACjD,aAAO,MAAM,WAAW;AAAA,IACzB;AACA,QAAI,MAAM,WAAW,gBAAgB,QAAW;AAC/C,aAAO,MAAM,WAAW;AAAA,IACzB;AAEA,UAAM,IAAI,MAAM,oBAAoB;AAAA,EACrC,OAAO;AACN,UAAM,IAAI,MAAM,cAAc;AAAA,EAC/B;AACD;AAEO,SAAS,qBAAqB,SAAmD;AACvF,MAAI,YAAY,QAAQ;AACvB,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,WAAW;AACjC,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,QAAQ;AAC9B,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,QAAQ;AAC9B,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,aAAa;AACnC,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,QAAQ;AAC9B,WAAO,SAAS;AAAA,EACjB,OAAO;AACN,WAAO;AAAA,EACR;AACD;AAEO,SAAS,aAAa,OAAY,SAAoE;AAC5G,QAAM,WAAkD;AAAA,IACvD,OAAO,CAAC;AAAA,IACR,UAAU,qBAAqB,OAAO;AAAA,EACvC;AAEA,MAAI,UAAU,MAAM;AACnB,aAAS,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACjC,WAAW,OAAO,UAAU,UAAU;AACrC,YAAQ,SAAS,UAAU;AAAA,MAC1B,KAAK,SAAS,MAAM;AACnB,iBAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,GAAG,EAAE,CAAC,EAAG;AACrD;AAAA,MACD;AAAA,MACA,KAAK,SAAS,WAAW;AACxB,iBAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,GAAG,EAAE,QAAQ,KAAK,EAAE,EAAE;AACzE;AAAA,MACD;AAAA,MACA,SAAS;AACR,iBAAS,QAAQ,EAAE,aAAa,MAAM;AACtC;AAAA,MACD;AAAA,IACD;AAAA,EACD,WAAW,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,GAAG;AAChE,aAAS,QAAQ,EAAE,WAAW,MAAM;AAAA,EACrC,WAAW,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,KAAK,GAAG;AACjE,aAAS,QAAQ,EAAE,aAAa,MAAM;AAAA,EACvC,WAAW,OAAO,UAAU,WAAW;AACtC,aAAS,QAAQ,EAAE,cAAc,MAAM;AAAA,EACxC,WAAW,iBAAiB,MAAM;AAEjC,aAAS,QAAQ,EAAE,aAAa,MAAM,YAAY,EAAE,QAAQ,KAAK,GAAG,EAAE,QAAQ,KAAK,EAAE,EAAE;AAAA,EACxF,OAAO;AACN,UAAM,IAAI,MAAM,oBAAoB,KAAK,EAAE;AAAA,EAC5C;AAEA,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/common/index.ts"],"sourcesContent":["import type { Field } from '@aws-sdk/client-rds-data';\nimport { TypeHint } from '@aws-sdk/client-rds-data';\nimport type { QueryTypingsValue } from '~/sql/sql.ts';\n\nexport function getValueFromDataApi(field: Field) {\n\tif (field.stringValue !== undefined) {\n\t\treturn field.stringValue;\n\t} else if (field.booleanValue !== undefined) {\n\t\treturn field.booleanValue;\n\t} else if (field.doubleValue !== undefined) {\n\t\treturn field.doubleValue;\n\t} else if (field.isNull !== undefined) {\n\t\treturn null;\n\t} else if (field.longValue !== undefined) {\n\t\treturn field.longValue;\n\t} else if (field.blobValue !== undefined) {\n\t\treturn field.blobValue;\n\t\t// eslint-disable-next-line unicorn/no-negated-condition\n\t} else if (field.arrayValue !== undefined) {\n\t\tif (field.arrayValue.stringValues !== undefined) {\n\t\t\treturn field.arrayValue.stringValues;\n\t\t}\n\t\tif (field.arrayValue.longValues !== undefined) {\n\t\t\treturn field.arrayValue.longValues;\n\t\t}\n\t\tif (field.arrayValue.doubleValues !== undefined) {\n\t\t\treturn field.arrayValue.doubleValues;\n\t\t}\n\t\tif (field.arrayValue.booleanValues !== undefined) {\n\t\t\treturn field.arrayValue.booleanValues;\n\t\t}\n\t\tif (field.arrayValue.arrayValues !== undefined) {\n\t\t\treturn field.arrayValue.arrayValues;\n\t\t}\n\n\t\tthrow new Error('Unknown array type');\n\t} else {\n\t\tthrow new Error('Unknown type');\n\t}\n}\n\nexport function typingsToAwsTypeHint(typings?: QueryTypingsValue): TypeHint | undefined {\n\tif (typings === 'date') {\n\t\treturn TypeHint.DATE;\n\t} else if (typings === 'decimal') {\n\t\treturn TypeHint.DECIMAL;\n\t} else if (typings === 'json') {\n\t\treturn TypeHint.JSON;\n\t} else if (typings === 'time') {\n\t\treturn TypeHint.TIME;\n\t} else if (typings === 'timestamp') {\n\t\treturn TypeHint.TIMESTAMP;\n\t} else if (typings === 'uuid') {\n\t\treturn TypeHint.UUID;\n\t} else {\n\t\treturn undefined;\n\t}\n}\n\nexport function toValueParam(value: any, typings?: QueryTypingsValue): { value: Field; typeHint?: TypeHint } {\n\tconst response: { value: Field; typeHint?: TypeHint } = {\n\t\tvalue: {} as any,\n\t\ttypeHint: typingsToAwsTypeHint(typings),\n\t};\n\n\tif (value === null) {\n\t\tresponse.value = { isNull: true };\n\t} else if (typeof value === 'string') {\n\t\tswitch (response.typeHint) {\n\t\t\tcase TypeHint.DATE: {\n\t\t\t\tresponse.value = { stringValue: value.split('T')[0]! };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TypeHint.TIMESTAMP: {\n\t\t\t\tresponse.value = { stringValue: value.replace('T', ' ').replace('Z', '') };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tresponse.value = { stringValue: value };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else if (typeof value === 'number' && Number.isInteger(value)) {\n\t\tresponse.value = { longValue: value };\n\t} else if (typeof value === 'number' && !Number.isInteger(value)) {\n\t\tresponse.value = { doubleValue: value };\n\t} else if (typeof value === 'boolean') {\n\t\tresponse.value = { booleanValue: value };\n\t} else if (value instanceof Date) { // eslint-disable-line no-instanceof/no-instanceof\n\t\t// TODO: check if this clause is needed? Seems like date value always comes as string\n\t\tresponse.value = { stringValue: value.toISOString().replace('T', ' ').replace('Z', '') };\n\t} else {\n\t\tthrow new Error(`Unknown type for ${value}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":"AACA,SAAS,gBAAgB;AAGlB,SAAS,oBAAoB,OAAc;AACjD,MAAI,MAAM,gBAAgB,QAAW;AACpC,WAAO,MAAM;AAAA,EACd,WAAW,MAAM,iBAAiB,QAAW;AAC5C,WAAO,MAAM;AAAA,EACd,WAAW,MAAM,gBAAgB,QAAW;AAC3C,WAAO,MAAM;AAAA,EACd,WAAW,MAAM,WAAW,QAAW;AACtC,WAAO;AAAA,EACR,WAAW,MAAM,cAAc,QAAW;AACzC,WAAO,MAAM;AAAA,EACd,WAAW,MAAM,cAAc,QAAW;AACzC,WAAO,MAAM;AAAA,EAEd,WAAW,MAAM,eAAe,QAAW;AAC1C,QAAI,MAAM,WAAW,iBAAiB,QAAW;AAChD,aAAO,MAAM,WAAW;AAAA,IACzB;AACA,QAAI,MAAM,WAAW,eAAe,QAAW;AAC9C,aAAO,MAAM,WAAW;AAAA,IACzB;AACA,QAAI,MAAM,WAAW,iBAAiB,QAAW;AAChD,aAAO,MAAM,WAAW;AAAA,IACzB;AACA,QAAI,MAAM,WAAW,kBAAkB,QAAW;AACjD,aAAO,MAAM,WAAW;AAAA,IACzB;AACA,QAAI,MAAM,WAAW,gBAAgB,QAAW;AAC/C,aAAO,MAAM,WAAW;AAAA,IACzB;AAEA,UAAM,IAAI,MAAM,oBAAoB;AAAA,EACrC,OAAO;AACN,UAAM,IAAI,MAAM,cAAc;AAAA,EAC/B;AACD;AAEO,SAAS,qBAAqB,SAAmD;AACvF,MAAI,YAAY,QAAQ;AACvB,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,WAAW;AACjC,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,QAAQ;AAC9B,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,QAAQ;AAC9B,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,aAAa;AACnC,WAAO,SAAS;AAAA,EACjB,WAAW,YAAY,QAAQ;AAC9B,WAAO,SAAS;AAAA,EACjB,OAAO;AACN,WAAO;AAAA,EACR;AACD;AAEO,SAAS,aAAa,OAAY,SAAoE;AAC5G,QAAM,WAAkD;AAAA,IACvD,OAAO,CAAC;AAAA,IACR,UAAU,qBAAqB,OAAO;AAAA,EACvC;AAEA,MAAI,UAAU,MAAM;AACnB,aAAS,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACjC,WAAW,OAAO,UAAU,UAAU;AACrC,YAAQ,SAAS,UAAU;AAAA,MAC1B,KAAK,SAAS,MAAM;AACnB,iBAAS,QAAQ,EAAE,aAAa,MAAM,MAAM,GAAG,EAAE,CAAC,EAAG;AACrD;AAAA,MACD;AAAA,MACA,KAAK,SAAS,WAAW;AACxB,iBAAS,QAAQ,EAAE,aAAa,MAAM,QAAQ,KAAK,GAAG,EAAE,QAAQ,KAAK,EAAE,EAAE;AACzE;AAAA,MACD;AAAA,MACA,SAAS;AACR,iBAAS,QAAQ,EAAE,aAAa,MAAM;AACtC;AAAA,MACD;AAAA,IACD;AAAA,EACD,WAAW,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,GAAG;AAChE,aAAS,QAAQ,EAAE,WAAW,MAAM;AAAA,EACrC,WAAW,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,KAAK,GAAG;AACjE,aAAS,QAAQ,EAAE,aAAa,MAAM;AAAA,EACvC,WAAW,OAAO,UAAU,WAAW;AACtC,aAAS,QAAQ,EAAE,cAAc,MAAM;AAAA,EACxC,WAAW,iBAAiB,MAAM;AAEjC,aAAS,QAAQ,EAAE,aAAa,MAAM,YAAY,EAAE,QAAQ,KAAK,GAAG,EAAE,QAAQ,KAAK,EAAE,EAAE;AAAA,EACxF,OAAO;AACN,UAAM,IAAI,MAAM,oBAAoB,KAAK,EAAE;AAAA,EAC5C;AAEA,SAAO;AACR;","names":[]}
@@ -105,7 +105,7 @@ function construct(client, config) {
105
105
  logger,
106
106
  cache: config.cache
107
107
  }, void 0);
108
- const db = new AwsDataApiPgDatabase(dialect, session, relations, schema);
108
+ const db = new AwsDataApiPgDatabase(dialect, session, relations, schema, true);
109
109
  db.$client = client;
110
110
  db.$cache = config.cache;
111
111
  if (db.$cache) {
@@ -114,6 +114,9 @@ function construct(client, config) {
114
114
  return db;
115
115
  }
116
116
  function drizzle(...params) {
117
+ if (params[0] instanceof import_client_rds_data.RDSDataClient || params[0].constructor.name !== "Object") {
118
+ return construct(params[0], params[1]);
119
+ }
117
120
  if (params[0].client) {
118
121
  const { client, ...drizzleConfig2 } = params[0];
119
122
  return construct(client, drizzleConfig2);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { RDSDataClient, type RDSDataClientConfig } from '@aws-sdk/client-rds-data';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgColumn, PgInsertConfig, PgTable, TableConfig } from '~/pg-core/index.ts';\nimport { PgArray } from '~/pg-core/index.ts';\nimport type { PgRaw } from '~/pg-core/query-builders/raw.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { Param, type SQL, sql, type SQLWrapper } from '~/sql/sql.ts';\nimport { Table } from '~/table.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends DrizzleConfig<TSchema, TRelations> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n\n\toverride execute<\n\t\tTRow extends Record<string, unknown> = Record<string, unknown>,\n\t>(query: SQLWrapper | string): PgRaw<AwsDataApiPgQueryResult<TRow>> {\n\t\treturn super.execute(query);\n\t}\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic override readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning, select, withList }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tif (!select) {\n\t\t\tfor (const value of (values as Record<string, Param | SQL>[])) {\n\t\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\t\tif (\n\t\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t\t) {\n\t\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning, withList });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new AwsDataApiSession(client, dialect, relations, schema, {\n\t\t...config,\n\t\tlogger,\n\t\tcache: config.cache,\n\t}, undefined);\n\tconst db = new AwsDataApiPgDatabase(dialect, session, relations, schema as V1.RelationalSchemaConfig<any>);\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\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends AwsDataApiClient = RDSDataClient,\n>(\n\t...params: [\n\t\t(\n\t\t\t| (\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t\t\t\t}\n\t\t\t)\n\t\t\t| (\n\t\t\t\t& DrizzleAwsDataApiPgConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t}\n\t\t\t)\n\t\t),\n\t]\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif ((params[0] as { client?: TClient }).client) {\n\t\tconst { client, ...drizzleConfig } = params[0] as {\n\t\t\tclient: TClient;\n\t\t} & DrizzleAwsDataApiPgConfig<TSchema, TRelations>;\n\n\t\treturn construct(client, drizzleConfig) as any;\n\t}\n\n\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t} & DrizzleConfig<TSchema, TRelations>;\n\tconst { resourceArn, database, secretArn, ...rdsConfig } = connection;\n\n\tconst instance = new RDSDataClient(rdsConfig);\n\treturn construct(instance, { resourceArn, database, secretArn, ...drizzleConfig }) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n\t): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"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","names":["drizzleConfig","drizzle"]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { RDSDataClient, type RDSDataClientConfig } from '@aws-sdk/client-rds-data';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgColumn, PgInsertConfig, PgTable, TableConfig } from '~/pg-core/index.ts';\nimport { PgArray } from '~/pg-core/index.ts';\nimport type { PgRaw } from '~/pg-core/query-builders/raw.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { Param, type SQL, sql, type SQLWrapper } from '~/sql/sql.ts';\nimport { Table } from '~/table.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends DrizzleConfig<TSchema, TRelations> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n\n\toverride execute<\n\t\tTRow extends Record<string, unknown> = Record<string, unknown>,\n\t>(query: SQLWrapper | string): PgRaw<AwsDataApiPgQueryResult<TRow>> {\n\t\treturn super.execute(query);\n\t}\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic override readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning, select, withList }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tif (!select) {\n\t\t\tfor (const value of (values as Record<string, Param | SQL>[])) {\n\t\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\t\tif (\n\t\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t\t) {\n\t\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning, withList });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new AwsDataApiSession(client, dialect, relations, schema, {\n\t\t...config,\n\t\tlogger,\n\t\tcache: config.cache,\n\t}, undefined);\n\tconst db = new AwsDataApiPgDatabase(dialect, session, relations, schema as V1.RelationalSchemaConfig<any>, true);\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\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends AwsDataApiClient = RDSDataClient,\n>(\n\t...params: [\n\t\tTClient,\n\t\tDrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n\t] | [\n\t\t(\n\t\t\t| (\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t\t\t\t}\n\t\t\t)\n\t\t\t| (\n\t\t\t\t& DrizzleAwsDataApiPgConfig<TSchema, TRelations>\n\t\t\t\t& {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t}\n\t\t\t)\n\t\t),\n\t]\n): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof RDSDataClient || params[0].constructor.name !== 'Object') {\n\t\treturn construct(params[0] as TClient, params[1] as DrizzleAwsDataApiPgConfig<TSchema, TRelations>) as any;\n\t}\n\n\tif ((params[0] as { client?: TClient }).client) {\n\t\tconst { client, ...drizzleConfig } = params[0] as {\n\t\t\tclient: TClient;\n\t\t} & DrizzleAwsDataApiPgConfig<TSchema, TRelations>;\n\n\t\treturn construct(client, drizzleConfig) as any;\n\t}\n\n\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\tconnection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\t} & DrizzleConfig<TSchema, TRelations>;\n\tconst { resourceArn, database, secretArn, ...rdsConfig } = connection;\n\n\tconst instance = new RDSDataClient(rdsConfig);\n\treturn construct(instance, { resourceArn, database, secretArn, ...drizzleConfig }) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig: DrizzleAwsDataApiPgConfig<TSchema, TRelations>,\n\t): AwsDataApiPgDatabase<TSchema, TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAAwD;AACxD,SAAoB;AACpB,oBAA+B;AAE/B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAE1B,qBAAwB;AAGxB,iBAAsD;AACtD,mBAAsB;AAGtB,qBAAkC;AAmB3B,MAAM,6BAGH,qBAA4D;AAAA,EACrE,QAA0B,wBAAU,IAAY;AAAA,EAEvC,QAEP,OAAkE;AACnE,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC3B;AACD;AAEO,MAAM,qBAAqB,yBAAU;AAAA,EAC3C,QAA0B,wBAAU,IAAY;AAAA,EAEvC,YAAY,KAAqB;AACzC,WAAO,IAAI,MAAM,CAAC;AAAA,EACnB;AAAA,EAES,iBACR,EAAE,OAAO,QAAQ,YAAY,WAAW,QAAQ,SAAS,GAC1C;AACf,UAAM,UAAoC,MAAM,mBAAM,OAAO,OAAO;AAEpE,QAAI,CAAC,QAAQ;AACZ,iBAAW,SAAU,QAA0C;AAC9D,mBAAW,aAAa,OAAO,KAAK,OAAO,GAAG;AAC7C,gBAAM,WAAW,MAAM,SAAS;AAChC,kBACC,kBAAG,UAAU,gBAAK,KAAK,SAAS,UAAU,cAAa,kBAAG,SAAS,SAAS,sBAAO,KAChF,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,kBAAM,SAAS,IAAI,sBAAW,QAAQ,OAAO,eAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,UACpF;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,WAAO,MAAM,iBAAiB,EAAE,OAAO,QAAQ,YAAY,WAAW,SAAS,CAAC;AAAA,EACjF;AAAA,EAES,eAAe,OAA6B,KAA8B;AAClF,UAAM,UAAoC,MAAM,mBAAM,OAAO,OAAO;AAEpE,eAAW,CAAC,SAAS,QAAQ,KAAK,OAAO,QAAQ,GAAG,GAAG;AACtD,YAAM,gBAAgB,QAAQ,OAAO;AACrC,UACC,qBAAiB,kBAAG,UAAU,gBAAK,KAAK,SAAS,UAAU,cAAa,kBAAG,SAAS,SAAS,sBAAO,KACjG,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,YAAI,OAAO,IAAI,sBAAW,QAAQ,OAAO,eAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,MAChF;AAAA,IACD;AACA,WAAO,MAAM,eAAe,OAAO,GAAG;AAAA,EACvC;AACD;AAEA,SAAS,UAIR,QACA,QAGC;AACD,QAAM,UAAU,IAAI,aAAa,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC1D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe,GAAG;AAAA,MACvB,OAAO;AAAA,MACP,GAAG;AAAA,IACJ;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO,aAAa,CAAC;AACvC,QAAM,UAAU,IAAI,iCAAkB,QAAQ,SAAS,WAAW,QAAQ;AAAA,IACzE,GAAG;AAAA,IACH;AAAA,IACA,OAAO,OAAO;AAAA,EACf,GAAG,MAAS;AACZ,QAAM,KAAK,IAAI,qBAAqB,SAAS,SAAS,WAAW,QAA0C,IAAI;AAC/G,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;AAEO,SAAS,WAKZ,QAqBF;AAED,MAAI,OAAO,CAAC,aAAa,wCAAiB,OAAO,CAAC,EAAE,YAAY,SAAS,UAAU;AAClF,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAmD;AAAA,EACnG;AAEA,MAAK,OAAO,CAAC,EAA2B,QAAQ;AAC/C,UAAM,EAAE,QAAQ,GAAGA,eAAc,IAAI,OAAO,CAAC;AAI7C,WAAO,UAAU,QAAQA,cAAa;AAAA,EACvC;AAEA,QAAM,EAAE,YAAY,GAAG,cAAc,IAAI,OAAO,CAAC;AAGjD,QAAM,EAAE,aAAa,UAAU,WAAW,GAAG,UAAU,IAAI;AAE3D,QAAM,WAAW,IAAI,qCAAc,SAAS;AAC5C,SAAO,UAAU,UAAU,EAAE,aAAa,UAAU,WAAW,GAAG,cAAc,CAAC;AAClF;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["drizzleConfig","drizzle"]}
@@ -32,6 +32,9 @@ export declare class AwsPgDialect extends PgDialect {
32
32
  buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown>;
33
33
  }
34
34
  export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TClient extends AwsDataApiClient = RDSDataClient>(...params: [
35
+ TClient,
36
+ DrizzleAwsDataApiPgConfig<TSchema, TRelations>
37
+ ] | [
35
38
  ((DrizzleConfig<TSchema, TRelations> & {
36
39
  connection: RDSDataClientConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;
37
40
  }) | (DrizzleAwsDataApiPgConfig<TSchema, TRelations> & {