drizzle-orm 1.0.0-beta.1-4ec2def → 1.0.0-beta.1-cdf226f

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 (1331) hide show
  1. package/_relations.cjs +0 -48
  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 +0 -47
  6. package/_relations.js.map +1 -1
  7. package/column-builder.cjs.map +1 -1
  8. package/column-builder.d.cts +8 -10
  9. package/column-builder.d.ts +8 -10
  10. package/column-builder.js.map +1 -1
  11. package/column.cjs +0 -2
  12. package/column.cjs.map +1 -1
  13. package/column.d.cts +0 -1
  14. package/column.d.ts +0 -1
  15. package/column.js +0 -2
  16. package/column.js.map +1 -1
  17. package/{cockroach-core/roles.cjs → effect/effect-wrapper.cjs} +22 -30
  18. package/effect/effect-wrapper.cjs.map +1 -0
  19. package/effect/effect-wrapper.d.cts +8 -0
  20. package/effect/effect-wrapper.d.ts +8 -0
  21. package/effect/effect-wrapper.js +22 -0
  22. package/effect/effect-wrapper.js.map +1 -0
  23. package/{cockroach-core → effect/sqlite}/db.cjs +124 -99
  24. package/effect/sqlite/db.cjs.map +1 -0
  25. package/{cockroach-core/db.d.ts → effect/sqlite/db.d.cts} +87 -92
  26. package/{cockroach-core/db.d.cts → effect/sqlite/db.d.ts} +87 -92
  27. package/{cockroach-core → effect/sqlite}/db.js +127 -103
  28. package/effect/sqlite/db.js.map +1 -0
  29. package/{node-mssql/pool.cjs → effect/sqlite/driver.cjs} +32 -19
  30. package/effect/sqlite/driver.cjs.map +1 -0
  31. package/effect/sqlite/driver.d.cts +4 -0
  32. package/effect/sqlite/driver.d.ts +4 -0
  33. package/effect/sqlite/driver.js +33 -0
  34. package/effect/sqlite/driver.js.map +1 -0
  35. package/{cockroach → effect/sqlite}/index.cjs +4 -4
  36. package/effect/sqlite/index.cjs.map +1 -0
  37. package/effect/sqlite/index.js.map +1 -0
  38. package/effect/sqlite/query-builders/select.cjs +122 -0
  39. package/effect/sqlite/query-builders/select.cjs.map +1 -0
  40. package/effect/sqlite/query-builders/select.d.cts +62 -0
  41. package/effect/sqlite/query-builders/select.d.ts +62 -0
  42. package/effect/sqlite/query-builders/select.js +97 -0
  43. package/effect/sqlite/query-builders/select.js.map +1 -0
  44. package/effect/sqlite/session.cjs +237 -0
  45. package/effect/sqlite/session.cjs.map +1 -0
  46. package/effect/sqlite/session.d.cts +79 -0
  47. package/effect/sqlite/session.d.ts +79 -0
  48. package/effect/sqlite/session.js +212 -0
  49. package/effect/sqlite/session.js.map +1 -0
  50. package/gel-core/columns/bigint.cjs.map +1 -1
  51. package/gel-core/columns/bigint.d.cts +1 -0
  52. package/gel-core/columns/bigint.d.ts +1 -0
  53. package/gel-core/columns/bigint.js.map +1 -1
  54. package/gel-core/columns/bigintT.cjs.map +1 -1
  55. package/gel-core/columns/bigintT.d.cts +1 -0
  56. package/gel-core/columns/bigintT.d.ts +1 -0
  57. package/gel-core/columns/bigintT.js.map +1 -1
  58. package/gel-core/columns/boolean.cjs.map +1 -1
  59. package/gel-core/columns/boolean.d.cts +1 -0
  60. package/gel-core/columns/boolean.d.ts +1 -0
  61. package/gel-core/columns/boolean.js.map +1 -1
  62. package/gel-core/columns/bytes.cjs.map +1 -1
  63. package/gel-core/columns/bytes.d.cts +1 -0
  64. package/gel-core/columns/bytes.d.ts +1 -0
  65. package/gel-core/columns/bytes.js.map +1 -1
  66. package/gel-core/columns/custom.cjs.map +1 -1
  67. package/gel-core/columns/custom.d.cts +1 -0
  68. package/gel-core/columns/custom.d.ts +1 -0
  69. package/gel-core/columns/custom.js.map +1 -1
  70. package/gel-core/columns/date-duration.cjs.map +1 -1
  71. package/gel-core/columns/date-duration.d.cts +1 -0
  72. package/gel-core/columns/date-duration.d.ts +1 -0
  73. package/gel-core/columns/date-duration.js.map +1 -1
  74. package/gel-core/columns/decimal.cjs.map +1 -1
  75. package/gel-core/columns/decimal.d.cts +1 -0
  76. package/gel-core/columns/decimal.d.ts +1 -0
  77. package/gel-core/columns/decimal.js.map +1 -1
  78. package/gel-core/columns/double-precision.cjs.map +1 -1
  79. package/gel-core/columns/double-precision.d.cts +1 -0
  80. package/gel-core/columns/double-precision.d.ts +1 -0
  81. package/gel-core/columns/double-precision.js.map +1 -1
  82. package/gel-core/columns/duration.cjs.map +1 -1
  83. package/gel-core/columns/duration.d.cts +1 -0
  84. package/gel-core/columns/duration.d.ts +1 -0
  85. package/gel-core/columns/duration.js.map +1 -1
  86. package/gel-core/columns/integer.cjs.map +1 -1
  87. package/gel-core/columns/integer.d.cts +1 -0
  88. package/gel-core/columns/integer.d.ts +1 -0
  89. package/gel-core/columns/integer.js.map +1 -1
  90. package/gel-core/columns/json.cjs.map +1 -1
  91. package/gel-core/columns/json.d.cts +1 -0
  92. package/gel-core/columns/json.d.ts +1 -0
  93. package/gel-core/columns/json.js.map +1 -1
  94. package/gel-core/columns/localdate.cjs.map +1 -1
  95. package/gel-core/columns/localdate.d.cts +1 -0
  96. package/gel-core/columns/localdate.d.ts +1 -0
  97. package/gel-core/columns/localdate.js.map +1 -1
  98. package/gel-core/columns/localtime.cjs.map +1 -1
  99. package/gel-core/columns/localtime.d.cts +1 -0
  100. package/gel-core/columns/localtime.d.ts +1 -0
  101. package/gel-core/columns/localtime.js.map +1 -1
  102. package/gel-core/columns/real.cjs.map +1 -1
  103. package/gel-core/columns/real.d.cts +1 -0
  104. package/gel-core/columns/real.d.ts +1 -0
  105. package/gel-core/columns/real.js.map +1 -1
  106. package/gel-core/columns/relative-duration.cjs.map +1 -1
  107. package/gel-core/columns/relative-duration.d.cts +1 -0
  108. package/gel-core/columns/relative-duration.d.ts +1 -0
  109. package/gel-core/columns/relative-duration.js.map +1 -1
  110. package/gel-core/columns/smallint.cjs.map +1 -1
  111. package/gel-core/columns/smallint.d.cts +1 -0
  112. package/gel-core/columns/smallint.d.ts +1 -0
  113. package/gel-core/columns/smallint.js.map +1 -1
  114. package/gel-core/columns/text.cjs.map +1 -1
  115. package/gel-core/columns/text.d.cts +1 -0
  116. package/gel-core/columns/text.d.ts +1 -0
  117. package/gel-core/columns/text.js.map +1 -1
  118. package/gel-core/columns/timestamp.cjs.map +1 -1
  119. package/gel-core/columns/timestamp.d.cts +1 -0
  120. package/gel-core/columns/timestamp.d.ts +1 -0
  121. package/gel-core/columns/timestamp.js.map +1 -1
  122. package/gel-core/columns/timestamptz.cjs.map +1 -1
  123. package/gel-core/columns/timestamptz.d.cts +1 -0
  124. package/gel-core/columns/timestamptz.d.ts +1 -0
  125. package/gel-core/columns/timestamptz.js.map +1 -1
  126. package/gel-core/columns/uuid.cjs.map +1 -1
  127. package/gel-core/columns/uuid.d.cts +1 -0
  128. package/gel-core/columns/uuid.d.ts +1 -0
  129. package/gel-core/columns/uuid.js.map +1 -1
  130. package/gel-core/query-builders/insert.cjs.map +1 -1
  131. package/gel-core/query-builders/insert.d.cts +9 -6
  132. package/gel-core/query-builders/insert.d.ts +9 -6
  133. package/gel-core/query-builders/insert.js.map +1 -1
  134. package/gel-core/query-builders/update.cjs.map +1 -1
  135. package/gel-core/query-builders/update.d.cts +1 -1
  136. package/gel-core/query-builders/update.d.ts +1 -1
  137. package/gel-core/query-builders/update.js.map +1 -1
  138. package/mysql-core/columns/bigint.cjs.map +1 -1
  139. package/mysql-core/columns/bigint.d.cts +2 -0
  140. package/mysql-core/columns/bigint.d.ts +2 -0
  141. package/mysql-core/columns/bigint.js.map +1 -1
  142. package/mysql-core/columns/binary.cjs +1 -0
  143. package/mysql-core/columns/binary.cjs.map +1 -1
  144. package/mysql-core/columns/binary.d.cts +2 -0
  145. package/mysql-core/columns/binary.d.ts +2 -0
  146. package/mysql-core/columns/binary.js +1 -0
  147. package/mysql-core/columns/binary.js.map +1 -1
  148. package/mysql-core/columns/boolean.cjs.map +1 -1
  149. package/mysql-core/columns/boolean.d.cts +1 -0
  150. package/mysql-core/columns/boolean.d.ts +1 -0
  151. package/mysql-core/columns/boolean.js.map +1 -1
  152. package/mysql-core/columns/char.cjs +1 -0
  153. package/mysql-core/columns/char.cjs.map +1 -1
  154. package/mysql-core/columns/char.d.cts +2 -0
  155. package/mysql-core/columns/char.d.ts +2 -0
  156. package/mysql-core/columns/char.js +1 -0
  157. package/mysql-core/columns/char.js.map +1 -1
  158. package/mysql-core/columns/common.cjs.map +1 -1
  159. package/mysql-core/columns/common.d.cts +1 -1
  160. package/mysql-core/columns/common.d.ts +1 -1
  161. package/mysql-core/columns/common.js.map +1 -1
  162. package/mysql-core/columns/custom.cjs.map +1 -1
  163. package/mysql-core/columns/custom.d.cts +1 -0
  164. package/mysql-core/columns/custom.d.ts +1 -0
  165. package/mysql-core/columns/custom.js.map +1 -1
  166. package/mysql-core/columns/date.cjs.map +1 -1
  167. package/mysql-core/columns/date.d.cts +2 -0
  168. package/mysql-core/columns/date.d.ts +2 -0
  169. package/mysql-core/columns/date.js.map +1 -1
  170. package/mysql-core/columns/datetime.cjs.map +1 -1
  171. package/mysql-core/columns/datetime.d.cts +2 -0
  172. package/mysql-core/columns/datetime.d.ts +2 -0
  173. package/mysql-core/columns/datetime.js.map +1 -1
  174. package/mysql-core/columns/decimal.cjs.map +1 -1
  175. package/mysql-core/columns/decimal.d.cts +3 -0
  176. package/mysql-core/columns/decimal.d.ts +3 -0
  177. package/mysql-core/columns/decimal.js.map +1 -1
  178. package/mysql-core/columns/double.cjs.map +1 -1
  179. package/mysql-core/columns/double.d.cts +1 -0
  180. package/mysql-core/columns/double.d.ts +1 -0
  181. package/mysql-core/columns/double.js.map +1 -1
  182. package/mysql-core/columns/enum.cjs.map +1 -1
  183. package/mysql-core/columns/enum.d.cts +2 -0
  184. package/mysql-core/columns/enum.d.ts +2 -0
  185. package/mysql-core/columns/enum.js.map +1 -1
  186. package/mysql-core/columns/float.cjs.map +1 -1
  187. package/mysql-core/columns/float.d.cts +1 -0
  188. package/mysql-core/columns/float.d.ts +1 -0
  189. package/mysql-core/columns/float.js.map +1 -1
  190. package/mysql-core/columns/int.cjs.map +1 -1
  191. package/mysql-core/columns/int.d.cts +1 -0
  192. package/mysql-core/columns/int.d.ts +1 -0
  193. package/mysql-core/columns/int.js.map +1 -1
  194. package/mysql-core/columns/json.cjs.map +1 -1
  195. package/mysql-core/columns/json.d.cts +1 -0
  196. package/mysql-core/columns/json.d.ts +1 -0
  197. package/mysql-core/columns/json.js.map +1 -1
  198. package/mysql-core/columns/mediumint.cjs.map +1 -1
  199. package/mysql-core/columns/mediumint.d.cts +1 -0
  200. package/mysql-core/columns/mediumint.d.ts +1 -0
  201. package/mysql-core/columns/mediumint.js.map +1 -1
  202. package/mysql-core/columns/real.cjs.map +1 -1
  203. package/mysql-core/columns/real.d.cts +1 -0
  204. package/mysql-core/columns/real.d.ts +1 -0
  205. package/mysql-core/columns/real.js.map +1 -1
  206. package/mysql-core/columns/serial.cjs.map +1 -1
  207. package/mysql-core/columns/serial.d.cts +1 -0
  208. package/mysql-core/columns/serial.d.ts +1 -0
  209. package/mysql-core/columns/serial.js.map +1 -1
  210. package/mysql-core/columns/smallint.cjs.map +1 -1
  211. package/mysql-core/columns/smallint.d.cts +1 -0
  212. package/mysql-core/columns/smallint.d.ts +1 -0
  213. package/mysql-core/columns/smallint.js.map +1 -1
  214. package/mysql-core/columns/text.cjs.map +1 -1
  215. package/mysql-core/columns/text.d.cts +1 -0
  216. package/mysql-core/columns/text.d.ts +1 -0
  217. package/mysql-core/columns/text.js.map +1 -1
  218. package/mysql-core/columns/time.cjs.map +1 -1
  219. package/mysql-core/columns/time.d.cts +1 -0
  220. package/mysql-core/columns/time.d.ts +1 -0
  221. package/mysql-core/columns/time.js.map +1 -1
  222. package/mysql-core/columns/timestamp.cjs.map +1 -1
  223. package/mysql-core/columns/timestamp.d.cts +2 -0
  224. package/mysql-core/columns/timestamp.d.ts +2 -0
  225. package/mysql-core/columns/timestamp.js.map +1 -1
  226. package/mysql-core/columns/tinyint.cjs.map +1 -1
  227. package/mysql-core/columns/tinyint.d.cts +1 -0
  228. package/mysql-core/columns/tinyint.d.ts +1 -0
  229. package/mysql-core/columns/tinyint.js.map +1 -1
  230. package/mysql-core/columns/varbinary.cjs.map +1 -1
  231. package/mysql-core/columns/varbinary.d.cts +1 -0
  232. package/mysql-core/columns/varbinary.d.ts +1 -0
  233. package/mysql-core/columns/varbinary.js.map +1 -1
  234. package/mysql-core/columns/varchar.cjs +1 -1
  235. package/mysql-core/columns/varchar.cjs.map +1 -1
  236. package/mysql-core/columns/varchar.d.cts +2 -1
  237. package/mysql-core/columns/varchar.d.ts +2 -1
  238. package/mysql-core/columns/varchar.js +1 -1
  239. package/mysql-core/columns/varchar.js.map +1 -1
  240. package/mysql-core/columns/year.cjs.map +1 -1
  241. package/mysql-core/columns/year.d.cts +1 -0
  242. package/mysql-core/columns/year.d.ts +1 -0
  243. package/mysql-core/columns/year.js.map +1 -1
  244. package/mysql-core/dialect.cjs +0 -3
  245. package/mysql-core/dialect.cjs.map +1 -1
  246. package/mysql-core/dialect.d.cts +0 -1
  247. package/mysql-core/dialect.d.ts +0 -1
  248. package/mysql-core/dialect.js +0 -3
  249. package/mysql-core/dialect.js.map +1 -1
  250. package/mysql-core/query-builders/insert.cjs.map +1 -1
  251. package/mysql-core/query-builders/insert.d.cts +2 -2
  252. package/mysql-core/query-builders/insert.d.ts +2 -2
  253. package/mysql-core/query-builders/insert.js.map +1 -1
  254. package/mysql-core/query-builders/update.cjs.map +1 -1
  255. package/mysql-core/query-builders/update.d.cts +1 -1
  256. package/mysql-core/query-builders/update.d.ts +1 -1
  257. package/mysql-core/query-builders/update.js.map +1 -1
  258. package/mysql-proxy/driver.cjs +2 -2
  259. package/mysql-proxy/driver.cjs.map +1 -1
  260. package/mysql-proxy/driver.d.cts +1 -2
  261. package/mysql-proxy/driver.d.ts +1 -2
  262. package/mysql-proxy/driver.js +2 -2
  263. package/mysql-proxy/driver.js.map +1 -1
  264. package/node-postgres/session.cjs.map +1 -1
  265. package/node-postgres/session.js.map +1 -1
  266. package/package.json +236 -1591
  267. package/pg-core/columns/bigint.cjs.map +1 -1
  268. package/pg-core/columns/bigint.d.cts +2 -0
  269. package/pg-core/columns/bigint.d.ts +2 -0
  270. package/pg-core/columns/bigint.js.map +1 -1
  271. package/pg-core/columns/bigserial.cjs +0 -1
  272. package/pg-core/columns/bigserial.cjs.map +1 -1
  273. package/pg-core/columns/bigserial.d.cts +2 -0
  274. package/pg-core/columns/bigserial.d.ts +2 -0
  275. package/pg-core/columns/bigserial.js +0 -1
  276. package/pg-core/columns/bigserial.js.map +1 -1
  277. package/pg-core/columns/boolean.cjs.map +1 -1
  278. package/pg-core/columns/boolean.d.cts +1 -0
  279. package/pg-core/columns/boolean.d.ts +1 -0
  280. package/pg-core/columns/boolean.js.map +1 -1
  281. package/pg-core/columns/bytea.cjs.map +1 -1
  282. package/pg-core/columns/bytea.d.cts +1 -0
  283. package/pg-core/columns/bytea.d.ts +1 -0
  284. package/pg-core/columns/bytea.js.map +1 -1
  285. package/pg-core/columns/char.cjs +1 -0
  286. package/pg-core/columns/char.cjs.map +1 -1
  287. package/pg-core/columns/char.d.cts +2 -0
  288. package/pg-core/columns/char.d.ts +2 -0
  289. package/pg-core/columns/char.js +1 -0
  290. package/pg-core/columns/char.js.map +1 -1
  291. package/pg-core/columns/cidr.cjs.map +1 -1
  292. package/pg-core/columns/cidr.d.cts +1 -0
  293. package/pg-core/columns/cidr.d.ts +1 -0
  294. package/pg-core/columns/cidr.js.map +1 -1
  295. package/pg-core/columns/common.cjs +10 -11
  296. package/pg-core/columns/common.cjs.map +1 -1
  297. package/pg-core/columns/common.d.cts +2 -3
  298. package/pg-core/columns/common.d.ts +2 -3
  299. package/pg-core/columns/common.js +10 -11
  300. package/pg-core/columns/common.js.map +1 -1
  301. package/pg-core/columns/custom.cjs.map +1 -1
  302. package/pg-core/columns/custom.d.cts +1 -0
  303. package/pg-core/columns/custom.d.ts +1 -0
  304. package/pg-core/columns/custom.js.map +1 -1
  305. package/pg-core/columns/date.cjs.map +1 -1
  306. package/pg-core/columns/date.d.cts +2 -0
  307. package/pg-core/columns/date.d.ts +2 -0
  308. package/pg-core/columns/date.js.map +1 -1
  309. package/pg-core/columns/double-precision.cjs.map +1 -1
  310. package/pg-core/columns/double-precision.d.cts +1 -0
  311. package/pg-core/columns/double-precision.d.ts +1 -0
  312. package/pg-core/columns/double-precision.js.map +1 -1
  313. package/pg-core/columns/enum.cjs.map +1 -1
  314. package/pg-core/columns/enum.d.cts +2 -0
  315. package/pg-core/columns/enum.d.ts +2 -0
  316. package/pg-core/columns/enum.js.map +1 -1
  317. package/pg-core/columns/inet.cjs.map +1 -1
  318. package/pg-core/columns/inet.d.cts +1 -0
  319. package/pg-core/columns/inet.d.ts +1 -0
  320. package/pg-core/columns/inet.js.map +1 -1
  321. package/pg-core/columns/integer.cjs.map +1 -1
  322. package/pg-core/columns/integer.d.cts +1 -0
  323. package/pg-core/columns/integer.d.ts +1 -0
  324. package/pg-core/columns/integer.js.map +1 -1
  325. package/pg-core/columns/interval.cjs.map +1 -1
  326. package/pg-core/columns/interval.d.cts +1 -0
  327. package/pg-core/columns/interval.d.ts +1 -0
  328. package/pg-core/columns/interval.js.map +1 -1
  329. package/pg-core/columns/json.cjs.map +1 -1
  330. package/pg-core/columns/json.d.cts +1 -0
  331. package/pg-core/columns/json.d.ts +1 -0
  332. package/pg-core/columns/json.js.map +1 -1
  333. package/pg-core/columns/jsonb.cjs.map +1 -1
  334. package/pg-core/columns/jsonb.d.cts +1 -0
  335. package/pg-core/columns/jsonb.d.ts +1 -0
  336. package/pg-core/columns/jsonb.js.map +1 -1
  337. package/pg-core/columns/line.cjs +0 -2
  338. package/pg-core/columns/line.cjs.map +1 -1
  339. package/pg-core/columns/line.d.cts +2 -2
  340. package/pg-core/columns/line.d.ts +2 -2
  341. package/pg-core/columns/line.js +0 -2
  342. package/pg-core/columns/line.js.map +1 -1
  343. package/pg-core/columns/macaddr.cjs.map +1 -1
  344. package/pg-core/columns/macaddr.d.cts +1 -0
  345. package/pg-core/columns/macaddr.d.ts +1 -0
  346. package/pg-core/columns/macaddr.js.map +1 -1
  347. package/pg-core/columns/macaddr8.cjs.map +1 -1
  348. package/pg-core/columns/macaddr8.d.cts +1 -0
  349. package/pg-core/columns/macaddr8.d.ts +1 -0
  350. package/pg-core/columns/macaddr8.js.map +1 -1
  351. package/pg-core/columns/numeric.cjs.map +1 -1
  352. package/pg-core/columns/numeric.d.cts +3 -0
  353. package/pg-core/columns/numeric.d.ts +3 -0
  354. package/pg-core/columns/numeric.js.map +1 -1
  355. package/pg-core/columns/point.cjs +0 -2
  356. package/pg-core/columns/point.cjs.map +1 -1
  357. package/pg-core/columns/point.d.cts +2 -2
  358. package/pg-core/columns/point.d.ts +2 -2
  359. package/pg-core/columns/point.js +0 -2
  360. package/pg-core/columns/point.js.map +1 -1
  361. package/pg-core/columns/postgis_extension/geometry.cjs +8 -14
  362. package/pg-core/columns/postgis_extension/geometry.cjs.map +1 -1
  363. package/pg-core/columns/postgis_extension/geometry.d.cts +6 -16
  364. package/pg-core/columns/postgis_extension/geometry.d.ts +6 -16
  365. package/pg-core/columns/postgis_extension/geometry.js +8 -14
  366. package/pg-core/columns/postgis_extension/geometry.js.map +1 -1
  367. package/pg-core/columns/postgis_extension/utils.cjs +3 -3
  368. package/pg-core/columns/postgis_extension/utils.cjs.map +1 -1
  369. package/pg-core/columns/postgis_extension/utils.d.cts +1 -4
  370. package/pg-core/columns/postgis_extension/utils.d.ts +1 -4
  371. package/pg-core/columns/postgis_extension/utils.js +3 -3
  372. package/pg-core/columns/postgis_extension/utils.js.map +1 -1
  373. package/pg-core/columns/real.cjs.map +1 -1
  374. package/pg-core/columns/real.d.cts +1 -0
  375. package/pg-core/columns/real.d.ts +1 -0
  376. package/pg-core/columns/real.js.map +1 -1
  377. package/pg-core/columns/serial.cjs.map +1 -1
  378. package/pg-core/columns/serial.d.cts +1 -0
  379. package/pg-core/columns/serial.d.ts +1 -0
  380. package/pg-core/columns/serial.js.map +1 -1
  381. package/pg-core/columns/smallint.cjs.map +1 -1
  382. package/pg-core/columns/smallint.d.cts +1 -0
  383. package/pg-core/columns/smallint.d.ts +1 -0
  384. package/pg-core/columns/smallint.js.map +1 -1
  385. package/pg-core/columns/smallserial.cjs.map +1 -1
  386. package/pg-core/columns/smallserial.d.cts +1 -0
  387. package/pg-core/columns/smallserial.d.ts +1 -0
  388. package/pg-core/columns/smallserial.js.map +1 -1
  389. package/pg-core/columns/text.cjs.map +1 -1
  390. package/pg-core/columns/text.d.cts +1 -0
  391. package/pg-core/columns/text.d.ts +1 -0
  392. package/pg-core/columns/text.js.map +1 -1
  393. package/pg-core/columns/time.cjs.map +1 -1
  394. package/pg-core/columns/time.d.cts +1 -0
  395. package/pg-core/columns/time.d.ts +1 -0
  396. package/pg-core/columns/time.js.map +1 -1
  397. package/pg-core/columns/timestamp.cjs.map +1 -1
  398. package/pg-core/columns/timestamp.d.cts +2 -0
  399. package/pg-core/columns/timestamp.d.ts +2 -0
  400. package/pg-core/columns/timestamp.js.map +1 -1
  401. package/pg-core/columns/uuid.cjs.map +1 -1
  402. package/pg-core/columns/uuid.d.cts +1 -0
  403. package/pg-core/columns/uuid.d.ts +1 -0
  404. package/pg-core/columns/uuid.js.map +1 -1
  405. package/pg-core/columns/varchar.cjs.map +1 -1
  406. package/pg-core/columns/varchar.d.cts +1 -0
  407. package/pg-core/columns/varchar.d.ts +1 -0
  408. package/pg-core/columns/varchar.js.map +1 -1
  409. package/pg-core/columns/vector_extension/bit.cjs.map +1 -1
  410. package/pg-core/columns/vector_extension/bit.d.cts +1 -0
  411. package/pg-core/columns/vector_extension/bit.d.ts +1 -0
  412. package/pg-core/columns/vector_extension/bit.js.map +1 -1
  413. package/pg-core/columns/vector_extension/halfvec.cjs.map +1 -1
  414. package/pg-core/columns/vector_extension/halfvec.d.cts +1 -0
  415. package/pg-core/columns/vector_extension/halfvec.d.ts +1 -0
  416. package/pg-core/columns/vector_extension/halfvec.js.map +1 -1
  417. package/pg-core/columns/vector_extension/sparsevec.cjs.map +1 -1
  418. package/pg-core/columns/vector_extension/sparsevec.d.cts +1 -0
  419. package/pg-core/columns/vector_extension/sparsevec.d.ts +1 -0
  420. package/pg-core/columns/vector_extension/sparsevec.js.map +1 -1
  421. package/pg-core/columns/vector_extension/vector.cjs.map +1 -1
  422. package/pg-core/columns/vector_extension/vector.d.cts +1 -0
  423. package/pg-core/columns/vector_extension/vector.d.ts +1 -0
  424. package/pg-core/columns/vector_extension/vector.js.map +1 -1
  425. package/pg-core/foreign-keys.cjs +0 -4
  426. package/pg-core/foreign-keys.cjs.map +1 -1
  427. package/pg-core/foreign-keys.d.cts +0 -2
  428. package/pg-core/foreign-keys.d.ts +0 -2
  429. package/pg-core/foreign-keys.js +0 -4
  430. package/pg-core/foreign-keys.js.map +1 -1
  431. package/pg-core/primary-keys.cjs +0 -3
  432. package/pg-core/primary-keys.cjs.map +1 -1
  433. package/pg-core/primary-keys.d.cts +0 -1
  434. package/pg-core/primary-keys.d.ts +0 -1
  435. package/pg-core/primary-keys.js +0 -3
  436. package/pg-core/primary-keys.js.map +1 -1
  437. package/pg-core/query-builders/insert.cjs.map +1 -1
  438. package/pg-core/query-builders/insert.d.cts +9 -6
  439. package/pg-core/query-builders/insert.d.ts +9 -6
  440. package/pg-core/query-builders/insert.js.map +1 -1
  441. package/pg-core/query-builders/update.cjs.map +1 -1
  442. package/pg-core/query-builders/update.d.cts +1 -1
  443. package/pg-core/query-builders/update.d.ts +1 -1
  444. package/pg-core/query-builders/update.js.map +1 -1
  445. package/pg-core/unique-constraint.cjs +0 -5
  446. package/pg-core/unique-constraint.cjs.map +1 -1
  447. package/pg-core/unique-constraint.d.cts +0 -2
  448. package/pg-core/unique-constraint.d.ts +0 -2
  449. package/pg-core/unique-constraint.js +0 -5
  450. package/pg-core/unique-constraint.js.map +1 -1
  451. package/singlestore-core/columns/bigint.cjs.map +1 -1
  452. package/singlestore-core/columns/bigint.d.cts +2 -0
  453. package/singlestore-core/columns/bigint.d.ts +2 -0
  454. package/singlestore-core/columns/bigint.js.map +1 -1
  455. package/singlestore-core/columns/binary.cjs +1 -0
  456. package/singlestore-core/columns/binary.cjs.map +1 -1
  457. package/singlestore-core/columns/binary.d.cts +2 -0
  458. package/singlestore-core/columns/binary.d.ts +2 -0
  459. package/singlestore-core/columns/binary.js +1 -0
  460. package/singlestore-core/columns/binary.js.map +1 -1
  461. package/singlestore-core/columns/boolean.cjs.map +1 -1
  462. package/singlestore-core/columns/boolean.d.cts +1 -0
  463. package/singlestore-core/columns/boolean.d.ts +1 -0
  464. package/singlestore-core/columns/boolean.js.map +1 -1
  465. package/singlestore-core/columns/char.cjs +1 -0
  466. package/singlestore-core/columns/char.cjs.map +1 -1
  467. package/singlestore-core/columns/char.d.cts +2 -0
  468. package/singlestore-core/columns/char.d.ts +2 -0
  469. package/singlestore-core/columns/char.js +1 -0
  470. package/singlestore-core/columns/char.js.map +1 -1
  471. package/singlestore-core/columns/common.cjs.map +1 -1
  472. package/singlestore-core/columns/common.d.cts +1 -1
  473. package/singlestore-core/columns/common.d.ts +1 -1
  474. package/singlestore-core/columns/common.js.map +1 -1
  475. package/singlestore-core/columns/custom.cjs.map +1 -1
  476. package/singlestore-core/columns/custom.d.cts +1 -0
  477. package/singlestore-core/columns/custom.d.ts +1 -0
  478. package/singlestore-core/columns/custom.js.map +1 -1
  479. package/singlestore-core/columns/date.cjs.map +1 -1
  480. package/singlestore-core/columns/date.d.cts +2 -0
  481. package/singlestore-core/columns/date.d.ts +2 -0
  482. package/singlestore-core/columns/date.js.map +1 -1
  483. package/singlestore-core/columns/datetime.cjs.map +1 -1
  484. package/singlestore-core/columns/datetime.d.cts +2 -0
  485. package/singlestore-core/columns/datetime.d.ts +2 -0
  486. package/singlestore-core/columns/datetime.js.map +1 -1
  487. package/singlestore-core/columns/decimal.cjs.map +1 -1
  488. package/singlestore-core/columns/decimal.d.cts +3 -0
  489. package/singlestore-core/columns/decimal.d.ts +3 -0
  490. package/singlestore-core/columns/decimal.js.map +1 -1
  491. package/singlestore-core/columns/double.cjs.map +1 -1
  492. package/singlestore-core/columns/double.d.cts +1 -0
  493. package/singlestore-core/columns/double.d.ts +1 -0
  494. package/singlestore-core/columns/double.js.map +1 -1
  495. package/singlestore-core/columns/enum.cjs.map +1 -1
  496. package/singlestore-core/columns/enum.d.cts +1 -0
  497. package/singlestore-core/columns/enum.d.ts +1 -0
  498. package/singlestore-core/columns/enum.js.map +1 -1
  499. package/singlestore-core/columns/float.cjs.map +1 -1
  500. package/singlestore-core/columns/float.d.cts +1 -0
  501. package/singlestore-core/columns/float.d.ts +1 -0
  502. package/singlestore-core/columns/float.js.map +1 -1
  503. package/singlestore-core/columns/int.cjs.map +1 -1
  504. package/singlestore-core/columns/int.d.cts +1 -0
  505. package/singlestore-core/columns/int.d.ts +1 -0
  506. package/singlestore-core/columns/int.js.map +1 -1
  507. package/singlestore-core/columns/json.cjs.map +1 -1
  508. package/singlestore-core/columns/json.d.cts +1 -0
  509. package/singlestore-core/columns/json.d.ts +1 -0
  510. package/singlestore-core/columns/json.js.map +1 -1
  511. package/singlestore-core/columns/mediumint.cjs.map +1 -1
  512. package/singlestore-core/columns/mediumint.d.cts +1 -0
  513. package/singlestore-core/columns/mediumint.d.ts +1 -0
  514. package/singlestore-core/columns/mediumint.js.map +1 -1
  515. package/singlestore-core/columns/real.cjs.map +1 -1
  516. package/singlestore-core/columns/real.d.cts +1 -0
  517. package/singlestore-core/columns/real.d.ts +1 -0
  518. package/singlestore-core/columns/real.js.map +1 -1
  519. package/singlestore-core/columns/serial.cjs.map +1 -1
  520. package/singlestore-core/columns/serial.d.cts +1 -0
  521. package/singlestore-core/columns/serial.d.ts +1 -0
  522. package/singlestore-core/columns/serial.js.map +1 -1
  523. package/singlestore-core/columns/smallint.cjs.map +1 -1
  524. package/singlestore-core/columns/smallint.d.cts +1 -0
  525. package/singlestore-core/columns/smallint.d.ts +1 -0
  526. package/singlestore-core/columns/smallint.js.map +1 -1
  527. package/singlestore-core/columns/text.cjs.map +1 -1
  528. package/singlestore-core/columns/text.d.cts +1 -0
  529. package/singlestore-core/columns/text.d.ts +1 -0
  530. package/singlestore-core/columns/text.js.map +1 -1
  531. package/singlestore-core/columns/time.cjs.map +1 -1
  532. package/singlestore-core/columns/time.d.cts +1 -0
  533. package/singlestore-core/columns/time.d.ts +1 -0
  534. package/singlestore-core/columns/time.js.map +1 -1
  535. package/singlestore-core/columns/timestamp.cjs.map +1 -1
  536. package/singlestore-core/columns/timestamp.d.cts +2 -0
  537. package/singlestore-core/columns/timestamp.d.ts +2 -0
  538. package/singlestore-core/columns/timestamp.js.map +1 -1
  539. package/singlestore-core/columns/tinyint.cjs.map +1 -1
  540. package/singlestore-core/columns/tinyint.d.cts +1 -0
  541. package/singlestore-core/columns/tinyint.d.ts +1 -0
  542. package/singlestore-core/columns/tinyint.js.map +1 -1
  543. package/singlestore-core/columns/varbinary.cjs.map +1 -1
  544. package/singlestore-core/columns/varbinary.d.cts +1 -0
  545. package/singlestore-core/columns/varbinary.d.ts +1 -0
  546. package/singlestore-core/columns/varbinary.js.map +1 -1
  547. package/singlestore-core/columns/varchar.cjs.map +1 -1
  548. package/singlestore-core/columns/varchar.d.cts +1 -0
  549. package/singlestore-core/columns/varchar.d.ts +1 -0
  550. package/singlestore-core/columns/varchar.js.map +1 -1
  551. package/singlestore-core/columns/vector.cjs.map +1 -1
  552. package/singlestore-core/columns/vector.d.cts +2 -0
  553. package/singlestore-core/columns/vector.d.ts +2 -0
  554. package/singlestore-core/columns/vector.js.map +1 -1
  555. package/singlestore-core/columns/year.cjs.map +1 -1
  556. package/singlestore-core/columns/year.d.cts +1 -0
  557. package/singlestore-core/columns/year.d.ts +1 -0
  558. package/singlestore-core/columns/year.js.map +1 -1
  559. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  560. package/singlestore-core/query-builders/insert.d.cts +1 -1
  561. package/singlestore-core/query-builders/insert.d.ts +1 -1
  562. package/singlestore-core/query-builders/insert.js.map +1 -1
  563. package/singlestore-core/query-builders/update.cjs.map +1 -1
  564. package/singlestore-core/query-builders/update.d.cts +1 -1
  565. package/singlestore-core/query-builders/update.d.ts +1 -1
  566. package/singlestore-core/query-builders/update.js.map +1 -1
  567. package/sql/sql.cjs +3 -10
  568. package/sql/sql.cjs.map +1 -1
  569. package/sql/sql.d.cts +1 -1
  570. package/sql/sql.d.ts +1 -1
  571. package/sql/sql.js +3 -10
  572. package/sql/sql.js.map +1 -1
  573. package/sqlite-core/columns/blob.cjs.map +1 -1
  574. package/sqlite-core/columns/blob.d.cts +3 -0
  575. package/sqlite-core/columns/blob.d.ts +3 -0
  576. package/sqlite-core/columns/blob.js.map +1 -1
  577. package/sqlite-core/columns/custom.cjs.map +1 -1
  578. package/sqlite-core/columns/custom.d.cts +1 -0
  579. package/sqlite-core/columns/custom.d.ts +1 -0
  580. package/sqlite-core/columns/custom.js.map +1 -1
  581. package/sqlite-core/columns/integer.cjs.map +1 -1
  582. package/sqlite-core/columns/integer.d.cts +3 -0
  583. package/sqlite-core/columns/integer.d.ts +3 -0
  584. package/sqlite-core/columns/integer.js.map +1 -1
  585. package/sqlite-core/columns/numeric.cjs.map +1 -1
  586. package/sqlite-core/columns/numeric.d.cts +3 -0
  587. package/sqlite-core/columns/numeric.d.ts +3 -0
  588. package/sqlite-core/columns/numeric.js.map +1 -1
  589. package/sqlite-core/columns/real.cjs.map +1 -1
  590. package/sqlite-core/columns/real.d.cts +1 -0
  591. package/sqlite-core/columns/real.d.ts +1 -0
  592. package/sqlite-core/columns/real.js.map +1 -1
  593. package/sqlite-core/columns/text.cjs.map +1 -1
  594. package/sqlite-core/columns/text.d.cts +2 -0
  595. package/sqlite-core/columns/text.d.ts +2 -0
  596. package/sqlite-core/columns/text.js.map +1 -1
  597. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  598. package/sqlite-core/query-builders/insert.d.cts +2 -2
  599. package/sqlite-core/query-builders/insert.d.ts +2 -2
  600. package/sqlite-core/query-builders/insert.js.map +1 -1
  601. package/sqlite-core/query-builders/update.cjs.map +1 -1
  602. package/sqlite-core/query-builders/update.d.cts +1 -1
  603. package/sqlite-core/query-builders/update.d.ts +1 -1
  604. package/sqlite-core/query-builders/update.js.map +1 -1
  605. package/sqlite-core/session.cjs.map +1 -1
  606. package/sqlite-core/session.d.cts +1 -1
  607. package/sqlite-core/session.d.ts +1 -1
  608. package/sqlite-core/session.js.map +1 -1
  609. package/version.cjs +1 -1
  610. package/version.d.cts +1 -1
  611. package/version.d.ts +1 -1
  612. package/version.js +1 -1
  613. package/cockroach/driver.cjs +0 -113
  614. package/cockroach/driver.cjs.map +0 -1
  615. package/cockroach/driver.d.cts +0 -42
  616. package/cockroach/driver.d.ts +0 -42
  617. package/cockroach/driver.js +0 -77
  618. package/cockroach/driver.js.map +0 -1
  619. package/cockroach/index.cjs.map +0 -1
  620. package/cockroach/index.js.map +0 -1
  621. package/cockroach/migrator.cjs +0 -33
  622. package/cockroach/migrator.cjs.map +0 -1
  623. package/cockroach/migrator.d.cts +0 -3
  624. package/cockroach/migrator.d.ts +0 -3
  625. package/cockroach/migrator.js +0 -9
  626. package/cockroach/migrator.js.map +0 -1
  627. package/cockroach/session.cjs +0 -253
  628. package/cockroach/session.cjs.map +0 -1
  629. package/cockroach/session.d.cts +0 -48
  630. package/cockroach/session.d.ts +0 -48
  631. package/cockroach/session.js +0 -217
  632. package/cockroach/session.js.map +0 -1
  633. package/cockroach-core/alias.cjs +0 -32
  634. package/cockroach-core/alias.cjs.map +0 -1
  635. package/cockroach-core/alias.d.cts +0 -4
  636. package/cockroach-core/alias.d.ts +0 -4
  637. package/cockroach-core/alias.js +0 -8
  638. package/cockroach-core/alias.js.map +0 -1
  639. package/cockroach-core/checks.cjs +0 -58
  640. package/cockroach-core/checks.cjs.map +0 -1
  641. package/cockroach-core/checks.d.cts +0 -18
  642. package/cockroach-core/checks.d.ts +0 -18
  643. package/cockroach-core/checks.js +0 -32
  644. package/cockroach-core/checks.js.map +0 -1
  645. package/cockroach-core/columns/all.cjs +0 -81
  646. package/cockroach-core/columns/all.cjs.map +0 -1
  647. package/cockroach-core/columns/all.d.cts +0 -52
  648. package/cockroach-core/columns/all.d.ts +0 -52
  649. package/cockroach-core/columns/all.js +0 -57
  650. package/cockroach-core/columns/all.js.map +0 -1
  651. package/cockroach-core/columns/bigint.cjs +0 -104
  652. package/cockroach-core/columns/bigint.cjs.map +0 -1
  653. package/cockroach-core/columns/bigint.d.cts +0 -37
  654. package/cockroach-core/columns/bigint.d.ts +0 -37
  655. package/cockroach-core/columns/bigint.js +0 -75
  656. package/cockroach-core/columns/bigint.js.map +0 -1
  657. package/cockroach-core/columns/bit.cjs +0 -61
  658. package/cockroach-core/columns/bit.cjs.map +0 -1
  659. package/cockroach-core/columns/bit.d.cts +0 -29
  660. package/cockroach-core/columns/bit.d.ts +0 -29
  661. package/cockroach-core/columns/bit.js +0 -35
  662. package/cockroach-core/columns/bit.js.map +0 -1
  663. package/cockroach-core/columns/bool.cjs +0 -56
  664. package/cockroach-core/columns/bool.cjs.map +0 -1
  665. package/cockroach-core/columns/bool.d.cts +0 -16
  666. package/cockroach-core/columns/bool.d.ts +0 -16
  667. package/cockroach-core/columns/bool.js +0 -30
  668. package/cockroach-core/columns/bool.js.map +0 -1
  669. package/cockroach-core/columns/char.cjs +0 -62
  670. package/cockroach-core/columns/char.cjs.map +0 -1
  671. package/cockroach-core/columns/char.d.cts +0 -31
  672. package/cockroach-core/columns/char.d.ts +0 -31
  673. package/cockroach-core/columns/char.js +0 -36
  674. package/cockroach-core/columns/char.js.map +0 -1
  675. package/cockroach-core/columns/common.cjs +0 -199
  676. package/cockroach-core/columns/common.cjs.map +0 -1
  677. package/cockroach-core/columns/common.d.cts +0 -98
  678. package/cockroach-core/columns/common.d.ts +0 -98
  679. package/cockroach-core/columns/common.js +0 -169
  680. package/cockroach-core/columns/common.js.map +0 -1
  681. package/cockroach-core/columns/custom.cjs +0 -102
  682. package/cockroach-core/columns/custom.cjs.map +0 -1
  683. package/cockroach-core/columns/custom.d.cts +0 -261
  684. package/cockroach-core/columns/custom.d.ts +0 -261
  685. package/cockroach-core/columns/custom.js +0 -76
  686. package/cockroach-core/columns/custom.js.map +0 -1
  687. package/cockroach-core/columns/date.cjs +0 -91
  688. package/cockroach-core/columns/date.cjs.map +0 -1
  689. package/cockroach-core/columns/date.common.cjs +0 -37
  690. package/cockroach-core/columns/date.common.cjs.map +0 -1
  691. package/cockroach-core/columns/date.common.d.cts +0 -7
  692. package/cockroach-core/columns/date.common.d.ts +0 -7
  693. package/cockroach-core/columns/date.common.js +0 -13
  694. package/cockroach-core/columns/date.common.js.map +0 -1
  695. package/cockroach-core/columns/date.d.cts +0 -36
  696. package/cockroach-core/columns/date.d.ts +0 -36
  697. package/cockroach-core/columns/date.js +0 -63
  698. package/cockroach-core/columns/date.js.map +0 -1
  699. package/cockroach-core/columns/decimal.cjs +0 -164
  700. package/cockroach-core/columns/decimal.cjs.map +0 -1
  701. package/cockroach-core/columns/decimal.d.cts +0 -80
  702. package/cockroach-core/columns/decimal.d.ts +0 -80
  703. package/cockroach-core/columns/decimal.js +0 -133
  704. package/cockroach-core/columns/decimal.js.map +0 -1
  705. package/cockroach-core/columns/enum.cjs +0 -127
  706. package/cockroach-core/columns/enum.cjs.map +0 -1
  707. package/cockroach-core/columns/enum.d.cts +0 -64
  708. package/cockroach-core/columns/enum.d.ts +0 -64
  709. package/cockroach-core/columns/enum.js +0 -96
  710. package/cockroach-core/columns/enum.js.map +0 -1
  711. package/cockroach-core/columns/float.cjs +0 -65
  712. package/cockroach-core/columns/float.cjs.map +0 -1
  713. package/cockroach-core/columns/float.d.cts +0 -18
  714. package/cockroach-core/columns/float.d.ts +0 -18
  715. package/cockroach-core/columns/float.js +0 -38
  716. package/cockroach-core/columns/float.js.map +0 -1
  717. package/cockroach-core/columns/geometry.cjs +0 -98
  718. package/cockroach-core/columns/geometry.cjs.map +0 -1
  719. package/cockroach-core/columns/geometry.d.cts +0 -48
  720. package/cockroach-core/columns/geometry.d.ts +0 -48
  721. package/cockroach-core/columns/geometry.js +0 -70
  722. package/cockroach-core/columns/geometry.js.map +0 -1
  723. package/cockroach-core/columns/index.cjs +0 -71
  724. package/cockroach-core/columns/index.cjs.map +0 -1
  725. package/cockroach-core/columns/index.d.cts +0 -25
  726. package/cockroach-core/columns/index.d.ts +0 -25
  727. package/cockroach-core/columns/index.js +0 -26
  728. package/cockroach-core/columns/index.js.map +0 -1
  729. package/cockroach-core/columns/inet.cjs +0 -56
  730. package/cockroach-core/columns/inet.cjs.map +0 -1
  731. package/cockroach-core/columns/inet.d.cts +0 -16
  732. package/cockroach-core/columns/inet.d.ts +0 -16
  733. package/cockroach-core/columns/inet.js +0 -30
  734. package/cockroach-core/columns/inet.js.map +0 -1
  735. package/cockroach-core/columns/int.common.cjs +0 -55
  736. package/cockroach-core/columns/int.common.cjs.map +0 -1
  737. package/cockroach-core/columns/int.common.d.cts +0 -11
  738. package/cockroach-core/columns/int.common.d.ts +0 -11
  739. package/cockroach-core/columns/int.common.js +0 -31
  740. package/cockroach-core/columns/int.common.js.map +0 -1
  741. package/cockroach-core/columns/integer.cjs +0 -63
  742. package/cockroach-core/columns/integer.cjs.map +0 -1
  743. package/cockroach-core/columns/integer.d.cts +0 -18
  744. package/cockroach-core/columns/integer.d.ts +0 -18
  745. package/cockroach-core/columns/integer.js +0 -37
  746. package/cockroach-core/columns/integer.js.map +0 -1
  747. package/cockroach-core/columns/interval.cjs +0 -63
  748. package/cockroach-core/columns/interval.cjs.map +0 -1
  749. package/cockroach-core/columns/interval.d.cts +0 -28
  750. package/cockroach-core/columns/interval.d.ts +0 -28
  751. package/cockroach-core/columns/interval.js +0 -37
  752. package/cockroach-core/columns/interval.js.map +0 -1
  753. package/cockroach-core/columns/jsonb.cjs +0 -72
  754. package/cockroach-core/columns/jsonb.cjs.map +0 -1
  755. package/cockroach-core/columns/jsonb.d.cts +0 -20
  756. package/cockroach-core/columns/jsonb.d.ts +0 -20
  757. package/cockroach-core/columns/jsonb.js +0 -46
  758. package/cockroach-core/columns/jsonb.js.map +0 -1
  759. package/cockroach-core/columns/real.cjs +0 -66
  760. package/cockroach-core/columns/real.cjs.map +0 -1
  761. package/cockroach-core/columns/real.d.cts +0 -21
  762. package/cockroach-core/columns/real.d.ts +0 -21
  763. package/cockroach-core/columns/real.js +0 -40
  764. package/cockroach-core/columns/real.js.map +0 -1
  765. package/cockroach-core/columns/smallint.cjs +0 -68
  766. package/cockroach-core/columns/smallint.cjs.map +0 -1
  767. package/cockroach-core/columns/smallint.d.cts +0 -19
  768. package/cockroach-core/columns/smallint.d.ts +0 -19
  769. package/cockroach-core/columns/smallint.js +0 -41
  770. package/cockroach-core/columns/smallint.js.map +0 -1
  771. package/cockroach-core/columns/string.cjs +0 -66
  772. package/cockroach-core/columns/string.cjs.map +0 -1
  773. package/cockroach-core/columns/string.d.cts +0 -35
  774. package/cockroach-core/columns/string.d.ts +0 -35
  775. package/cockroach-core/columns/string.js +0 -39
  776. package/cockroach-core/columns/string.js.map +0 -1
  777. package/cockroach-core/columns/time.cjs +0 -70
  778. package/cockroach-core/columns/time.cjs.map +0 -1
  779. package/cockroach-core/columns/time.d.cts +0 -31
  780. package/cockroach-core/columns/time.d.ts +0 -31
  781. package/cockroach-core/columns/time.js +0 -44
  782. package/cockroach-core/columns/time.js.map +0 -1
  783. package/cockroach-core/columns/timestamp.cjs +0 -111
  784. package/cockroach-core/columns/timestamp.cjs.map +0 -1
  785. package/cockroach-core/columns/timestamp.d.cts +0 -52
  786. package/cockroach-core/columns/timestamp.d.ts +0 -52
  787. package/cockroach-core/columns/timestamp.js +0 -83
  788. package/cockroach-core/columns/timestamp.js.map +0 -1
  789. package/cockroach-core/columns/utils.cjs +0 -65
  790. package/cockroach-core/columns/utils.cjs.map +0 -1
  791. package/cockroach-core/columns/utils.d.cts +0 -1
  792. package/cockroach-core/columns/utils.d.ts +0 -1
  793. package/cockroach-core/columns/utils.js +0 -41
  794. package/cockroach-core/columns/utils.js.map +0 -1
  795. package/cockroach-core/columns/uuid.cjs +0 -63
  796. package/cockroach-core/columns/uuid.cjs.map +0 -1
  797. package/cockroach-core/columns/uuid.d.cts +0 -20
  798. package/cockroach-core/columns/uuid.d.ts +0 -20
  799. package/cockroach-core/columns/uuid.js +0 -37
  800. package/cockroach-core/columns/uuid.js.map +0 -1
  801. package/cockroach-core/columns/varbit.cjs +0 -59
  802. package/cockroach-core/columns/varbit.cjs.map +0 -1
  803. package/cockroach-core/columns/varbit.d.cts +0 -24
  804. package/cockroach-core/columns/varbit.d.ts +0 -24
  805. package/cockroach-core/columns/varbit.js +0 -33
  806. package/cockroach-core/columns/varbit.js.map +0 -1
  807. package/cockroach-core/columns/varchar.cjs +0 -61
  808. package/cockroach-core/columns/varchar.cjs.map +0 -1
  809. package/cockroach-core/columns/varchar.d.cts +0 -30
  810. package/cockroach-core/columns/varchar.d.ts +0 -30
  811. package/cockroach-core/columns/varchar.js +0 -35
  812. package/cockroach-core/columns/varchar.js.map +0 -1
  813. package/cockroach-core/columns/vector.cjs +0 -65
  814. package/cockroach-core/columns/vector.cjs.map +0 -1
  815. package/cockroach-core/columns/vector.d.cts +0 -26
  816. package/cockroach-core/columns/vector.d.ts +0 -26
  817. package/cockroach-core/columns/vector.js +0 -39
  818. package/cockroach-core/columns/vector.js.map +0 -1
  819. package/cockroach-core/db.cjs.map +0 -1
  820. package/cockroach-core/db.js.map +0 -1
  821. package/cockroach-core/dialect.cjs +0 -1146
  822. package/cockroach-core/dialect.cjs.map +0 -1
  823. package/cockroach-core/dialect.d.cts +0 -65
  824. package/cockroach-core/dialect.d.ts +0 -65
  825. package/cockroach-core/dialect.js +0 -1126
  826. package/cockroach-core/dialect.js.map +0 -1
  827. package/cockroach-core/expressions.cjs +0 -49
  828. package/cockroach-core/expressions.cjs.map +0 -1
  829. package/cockroach-core/expressions.d.cts +0 -8
  830. package/cockroach-core/expressions.d.ts +0 -8
  831. package/cockroach-core/expressions.js +0 -22
  832. package/cockroach-core/expressions.js.map +0 -1
  833. package/cockroach-core/foreign-keys.cjs +0 -92
  834. package/cockroach-core/foreign-keys.cjs.map +0 -1
  835. package/cockroach-core/foreign-keys.d.cts +0 -52
  836. package/cockroach-core/foreign-keys.d.ts +0 -52
  837. package/cockroach-core/foreign-keys.js +0 -66
  838. package/cockroach-core/foreign-keys.js.map +0 -1
  839. package/cockroach-core/index.cjs +0 -61
  840. package/cockroach-core/index.cjs.map +0 -1
  841. package/cockroach-core/index.d.cts +0 -20
  842. package/cockroach-core/index.d.ts +0 -20
  843. package/cockroach-core/index.js +0 -21
  844. package/cockroach-core/index.js.map +0 -1
  845. package/cockroach-core/indexes.cjs +0 -137
  846. package/cockroach-core/indexes.cjs.map +0 -1
  847. package/cockroach-core/indexes.d.cts +0 -64
  848. package/cockroach-core/indexes.d.ts +0 -64
  849. package/cockroach-core/indexes.js +0 -109
  850. package/cockroach-core/indexes.js.map +0 -1
  851. package/cockroach-core/policies.cjs +0 -58
  852. package/cockroach-core/policies.cjs.map +0 -1
  853. package/cockroach-core/policies.d.cts +0 -24
  854. package/cockroach-core/policies.d.ts +0 -24
  855. package/cockroach-core/policies.js +0 -33
  856. package/cockroach-core/policies.js.map +0 -1
  857. package/cockroach-core/primary-keys.cjs +0 -64
  858. package/cockroach-core/primary-keys.cjs.map +0 -1
  859. package/cockroach-core/primary-keys.d.cts +0 -23
  860. package/cockroach-core/primary-keys.d.ts +0 -23
  861. package/cockroach-core/primary-keys.js +0 -38
  862. package/cockroach-core/primary-keys.js.map +0 -1
  863. package/cockroach-core/query-builders/count.cjs +0 -79
  864. package/cockroach-core/query-builders/count.cjs.map +0 -1
  865. package/cockroach-core/query-builders/count.d.cts +0 -29
  866. package/cockroach-core/query-builders/count.d.ts +0 -29
  867. package/cockroach-core/query-builders/count.js +0 -55
  868. package/cockroach-core/query-builders/count.js.map +0 -1
  869. package/cockroach-core/query-builders/delete.cjs +0 -124
  870. package/cockroach-core/query-builders/delete.cjs.map +0 -1
  871. package/cockroach-core/query-builders/delete.d.cts +0 -103
  872. package/cockroach-core/query-builders/delete.d.ts +0 -103
  873. package/cockroach-core/query-builders/delete.js +0 -100
  874. package/cockroach-core/query-builders/delete.js.map +0 -1
  875. package/cockroach-core/query-builders/index.cjs +0 -35
  876. package/cockroach-core/query-builders/index.cjs.map +0 -1
  877. package/cockroach-core/query-builders/index.d.cts +0 -7
  878. package/cockroach-core/query-builders/index.d.ts +0 -7
  879. package/cockroach-core/query-builders/index.js +0 -8
  880. package/cockroach-core/query-builders/index.js.map +0 -1
  881. package/cockroach-core/query-builders/insert.cjs +0 -213
  882. package/cockroach-core/query-builders/insert.cjs.map +0 -1
  883. package/cockroach-core/query-builders/insert.d.cts +0 -168
  884. package/cockroach-core/query-builders/insert.d.ts +0 -168
  885. package/cockroach-core/query-builders/insert.js +0 -188
  886. package/cockroach-core/query-builders/insert.js.map +0 -1
  887. package/cockroach-core/query-builders/query-builder.cjs +0 -118
  888. package/cockroach-core/query-builders/query-builder.cjs.map +0 -1
  889. package/cockroach-core/query-builders/query-builder.d.cts +0 -37
  890. package/cockroach-core/query-builders/query-builder.d.ts +0 -37
  891. package/cockroach-core/query-builders/query-builder.js +0 -94
  892. package/cockroach-core/query-builders/query-builder.js.map +0 -1
  893. package/cockroach-core/query-builders/query.cjs +0 -145
  894. package/cockroach-core/query-builders/query.cjs.map +0 -1
  895. package/cockroach-core/query-builders/query.d.cts +0 -47
  896. package/cockroach-core/query-builders/query.d.ts +0 -47
  897. package/cockroach-core/query-builders/query.js +0 -122
  898. package/cockroach-core/query-builders/query.js.map +0 -1
  899. package/cockroach-core/query-builders/raw.cjs +0 -57
  900. package/cockroach-core/query-builders/raw.cjs.map +0 -1
  901. package/cockroach-core/query-builders/raw.d.cts +0 -22
  902. package/cockroach-core/query-builders/raw.d.ts +0 -22
  903. package/cockroach-core/query-builders/raw.js +0 -33
  904. package/cockroach-core/query-builders/raw.js.map +0 -1
  905. package/cockroach-core/query-builders/refresh-materialized-view.cjs +0 -83
  906. package/cockroach-core/query-builders/refresh-materialized-view.cjs.map +0 -1
  907. package/cockroach-core/query-builders/refresh-materialized-view.d.cts +0 -28
  908. package/cockroach-core/query-builders/refresh-materialized-view.d.ts +0 -28
  909. package/cockroach-core/query-builders/refresh-materialized-view.js +0 -59
  910. package/cockroach-core/query-builders/refresh-materialized-view.js.map +0 -1
  911. package/cockroach-core/query-builders/select.cjs +0 -848
  912. package/cockroach-core/query-builders/select.cjs.map +0 -1
  913. package/cockroach-core/query-builders/select.d.cts +0 -787
  914. package/cockroach-core/query-builders/select.d.ts +0 -787
  915. package/cockroach-core/query-builders/select.js +0 -821
  916. package/cockroach-core/query-builders/select.js.map +0 -1
  917. package/cockroach-core/query-builders/select.types.cjs +0 -17
  918. package/cockroach-core/query-builders/select.types.cjs.map +0 -1
  919. package/cockroach-core/query-builders/select.types.d.cts +0 -140
  920. package/cockroach-core/query-builders/select.types.d.ts +0 -140
  921. package/cockroach-core/query-builders/select.types.js +0 -1
  922. package/cockroach-core/query-builders/select.types.js.map +0 -1
  923. package/cockroach-core/query-builders/update.cjs +0 -240
  924. package/cockroach-core/query-builders/update.cjs.map +0 -1
  925. package/cockroach-core/query-builders/update.d.cts +0 -170
  926. package/cockroach-core/query-builders/update.d.ts +0 -170
  927. package/cockroach-core/query-builders/update.js +0 -219
  928. package/cockroach-core/query-builders/update.js.map +0 -1
  929. package/cockroach-core/roles.cjs.map +0 -1
  930. package/cockroach-core/roles.d.cts +0 -12
  931. package/cockroach-core/roles.d.ts +0 -12
  932. package/cockroach-core/roles.js +0 -29
  933. package/cockroach-core/roles.js.map +0 -1
  934. package/cockroach-core/schema.cjs +0 -80
  935. package/cockroach-core/schema.cjs.map +0 -1
  936. package/cockroach-core/schema.d.cts +0 -22
  937. package/cockroach-core/schema.d.ts +0 -22
  938. package/cockroach-core/schema.js +0 -60
  939. package/cockroach-core/schema.js.map +0 -1
  940. package/cockroach-core/sequence.cjs +0 -52
  941. package/cockroach-core/sequence.cjs.map +0 -1
  942. package/cockroach-core/sequence.d.cts +0 -17
  943. package/cockroach-core/sequence.d.ts +0 -17
  944. package/cockroach-core/sequence.js +0 -25
  945. package/cockroach-core/sequence.js.map +0 -1
  946. package/cockroach-core/session.cjs +0 -120
  947. package/cockroach-core/session.cjs.map +0 -1
  948. package/cockroach-core/session.d.cts +0 -62
  949. package/cockroach-core/session.d.ts +0 -62
  950. package/cockroach-core/session.js +0 -94
  951. package/cockroach-core/session.js.map +0 -1
  952. package/cockroach-core/subquery.cjs +0 -17
  953. package/cockroach-core/subquery.cjs.map +0 -1
  954. package/cockroach-core/subquery.d.cts +0 -18
  955. package/cockroach-core/subquery.d.ts +0 -18
  956. package/cockroach-core/subquery.js +0 -1
  957. package/cockroach-core/subquery.js.map +0 -1
  958. package/cockroach-core/table.cjs +0 -100
  959. package/cockroach-core/table.cjs.map +0 -1
  960. package/cockroach-core/table.d.cts +0 -37
  961. package/cockroach-core/table.d.ts +0 -37
  962. package/cockroach-core/table.js +0 -73
  963. package/cockroach-core/table.js.map +0 -1
  964. package/cockroach-core/unique-constraint.cjs +0 -77
  965. package/cockroach-core/unique-constraint.cjs.map +0 -1
  966. package/cockroach-core/unique-constraint.d.cts +0 -23
  967. package/cockroach-core/unique-constraint.d.ts +0 -23
  968. package/cockroach-core/unique-constraint.js +0 -50
  969. package/cockroach-core/unique-constraint.js.map +0 -1
  970. package/cockroach-core/utils/array.cjs +0 -106
  971. package/cockroach-core/utils/array.cjs.map +0 -1
  972. package/cockroach-core/utils/array.d.cts +0 -3
  973. package/cockroach-core/utils/array.d.ts +0 -3
  974. package/cockroach-core/utils/array.js +0 -80
  975. package/cockroach-core/utils/array.js.map +0 -1
  976. package/cockroach-core/utils/index.cjs +0 -23
  977. package/cockroach-core/utils/index.cjs.map +0 -1
  978. package/cockroach-core/utils/index.d.cts +0 -1
  979. package/cockroach-core/utils/index.d.ts +0 -1
  980. package/cockroach-core/utils/index.js +0 -2
  981. package/cockroach-core/utils/index.js.map +0 -1
  982. package/cockroach-core/utils.cjs +0 -98
  983. package/cockroach-core/utils.cjs.map +0 -1
  984. package/cockroach-core/utils.d.cts +0 -47
  985. package/cockroach-core/utils.d.ts +0 -47
  986. package/cockroach-core/utils.js +0 -72
  987. package/cockroach-core/utils.js.map +0 -1
  988. package/cockroach-core/view-base.cjs +0 -33
  989. package/cockroach-core/view-base.cjs.map +0 -1
  990. package/cockroach-core/view-base.d.cts +0 -8
  991. package/cockroach-core/view-base.d.ts +0 -8
  992. package/cockroach-core/view-base.js +0 -9
  993. package/cockroach-core/view-base.js.map +0 -1
  994. package/cockroach-core/view.cjs +0 -271
  995. package/cockroach-core/view.cjs.map +0 -1
  996. package/cockroach-core/view.d.cts +0 -106
  997. package/cockroach-core/view.d.ts +0 -106
  998. package/cockroach-core/view.js +0 -233
  999. package/cockroach-core/view.js.map +0 -1
  1000. package/mssql-core/alias.cjs +0 -32
  1001. package/mssql-core/alias.cjs.map +0 -1
  1002. package/mssql-core/alias.d.cts +0 -4
  1003. package/mssql-core/alias.d.ts +0 -4
  1004. package/mssql-core/alias.js +0 -8
  1005. package/mssql-core/alias.js.map +0 -1
  1006. package/mssql-core/checks.cjs +0 -58
  1007. package/mssql-core/checks.cjs.map +0 -1
  1008. package/mssql-core/checks.d.cts +0 -18
  1009. package/mssql-core/checks.d.ts +0 -18
  1010. package/mssql-core/checks.js +0 -32
  1011. package/mssql-core/checks.js.map +0 -1
  1012. package/mssql-core/columns/all.cjs +0 -74
  1013. package/mssql-core/columns/all.cjs.map +0 -1
  1014. package/mssql-core/columns/all.d.cts +0 -45
  1015. package/mssql-core/columns/all.d.ts +0 -45
  1016. package/mssql-core/columns/all.js +0 -50
  1017. package/mssql-core/columns/all.js.map +0 -1
  1018. package/mssql-core/columns/bigint.cjs +0 -72
  1019. package/mssql-core/columns/bigint.cjs.map +0 -1
  1020. package/mssql-core/columns/bigint.d.cts +0 -25
  1021. package/mssql-core/columns/bigint.d.ts +0 -25
  1022. package/mssql-core/columns/bigint.js +0 -46
  1023. package/mssql-core/columns/bigint.js.map +0 -1
  1024. package/mssql-core/columns/binary.cjs +0 -57
  1025. package/mssql-core/columns/binary.cjs.map +0 -1
  1026. package/mssql-core/columns/binary.d.cts +0 -24
  1027. package/mssql-core/columns/binary.d.ts +0 -24
  1028. package/mssql-core/columns/binary.js +0 -31
  1029. package/mssql-core/columns/binary.js.map +0 -1
  1030. package/mssql-core/columns/bit.cjs +0 -54
  1031. package/mssql-core/columns/bit.cjs.map +0 -1
  1032. package/mssql-core/columns/bit.d.cts +0 -17
  1033. package/mssql-core/columns/bit.d.ts +0 -17
  1034. package/mssql-core/columns/bit.js +0 -28
  1035. package/mssql-core/columns/bit.js.map +0 -1
  1036. package/mssql-core/columns/char.cjs +0 -73
  1037. package/mssql-core/columns/char.cjs.map +0 -1
  1038. package/mssql-core/columns/char.d.cts +0 -29
  1039. package/mssql-core/columns/char.d.ts +0 -29
  1040. package/mssql-core/columns/char.js +0 -46
  1041. package/mssql-core/columns/char.js.map +0 -1
  1042. package/mssql-core/columns/common.cjs +0 -112
  1043. package/mssql-core/columns/common.cjs.map +0 -1
  1044. package/mssql-core/columns/common.d.cts +0 -57
  1045. package/mssql-core/columns/common.d.ts +0 -57
  1046. package/mssql-core/columns/common.js +0 -85
  1047. package/mssql-core/columns/common.js.map +0 -1
  1048. package/mssql-core/columns/custom.cjs +0 -105
  1049. package/mssql-core/columns/custom.cjs.map +0 -1
  1050. package/mssql-core/columns/custom.d.cts +0 -261
  1051. package/mssql-core/columns/custom.d.ts +0 -261
  1052. package/mssql-core/columns/custom.js +0 -79
  1053. package/mssql-core/columns/custom.js.map +0 -1
  1054. package/mssql-core/columns/date.cjs +0 -94
  1055. package/mssql-core/columns/date.cjs.map +0 -1
  1056. package/mssql-core/columns/date.common.cjs +0 -37
  1057. package/mssql-core/columns/date.common.cjs.map +0 -1
  1058. package/mssql-core/columns/date.common.d.cts +0 -12
  1059. package/mssql-core/columns/date.common.d.ts +0 -12
  1060. package/mssql-core/columns/date.common.js +0 -13
  1061. package/mssql-core/columns/date.common.js.map +0 -1
  1062. package/mssql-core/columns/date.d.cts +0 -39
  1063. package/mssql-core/columns/date.d.ts +0 -39
  1064. package/mssql-core/columns/date.js +0 -66
  1065. package/mssql-core/columns/date.js.map +0 -1
  1066. package/mssql-core/columns/datetime.cjs +0 -94
  1067. package/mssql-core/columns/datetime.cjs.map +0 -1
  1068. package/mssql-core/columns/datetime.d.cts +0 -38
  1069. package/mssql-core/columns/datetime.d.ts +0 -38
  1070. package/mssql-core/columns/datetime.js +0 -66
  1071. package/mssql-core/columns/datetime.js.map +0 -1
  1072. package/mssql-core/columns/datetime2.cjs +0 -102
  1073. package/mssql-core/columns/datetime2.cjs.map +0 -1
  1074. package/mssql-core/columns/datetime2.d.cts +0 -38
  1075. package/mssql-core/columns/datetime2.d.ts +0 -38
  1076. package/mssql-core/columns/datetime2.js +0 -74
  1077. package/mssql-core/columns/datetime2.js.map +0 -1
  1078. package/mssql-core/columns/datetimeoffset.cjs +0 -102
  1079. package/mssql-core/columns/datetimeoffset.cjs.map +0 -1
  1080. package/mssql-core/columns/datetimeoffset.d.cts +0 -39
  1081. package/mssql-core/columns/datetimeoffset.d.ts +0 -39
  1082. package/mssql-core/columns/datetimeoffset.js +0 -74
  1083. package/mssql-core/columns/datetimeoffset.js.map +0 -1
  1084. package/mssql-core/columns/decimal.cjs +0 -146
  1085. package/mssql-core/columns/decimal.cjs.map +0 -1
  1086. package/mssql-core/columns/decimal.d.cts +0 -58
  1087. package/mssql-core/columns/decimal.d.ts +0 -58
  1088. package/mssql-core/columns/decimal.js +0 -116
  1089. package/mssql-core/columns/decimal.js.map +0 -1
  1090. package/mssql-core/columns/float.cjs +0 -58
  1091. package/mssql-core/columns/float.cjs.map +0 -1
  1092. package/mssql-core/columns/float.d.cts +0 -21
  1093. package/mssql-core/columns/float.d.ts +0 -21
  1094. package/mssql-core/columns/float.js +0 -32
  1095. package/mssql-core/columns/float.js.map +0 -1
  1096. package/mssql-core/columns/index.cjs +0 -63
  1097. package/mssql-core/columns/index.cjs.map +0 -1
  1098. package/mssql-core/columns/index.d.cts +0 -21
  1099. package/mssql-core/columns/index.d.ts +0 -21
  1100. package/mssql-core/columns/index.js +0 -22
  1101. package/mssql-core/columns/index.js.map +0 -1
  1102. package/mssql-core/columns/int.cjs +0 -53
  1103. package/mssql-core/columns/int.cjs.map +0 -1
  1104. package/mssql-core/columns/int.d.cts +0 -16
  1105. package/mssql-core/columns/int.d.ts +0 -16
  1106. package/mssql-core/columns/int.js +0 -27
  1107. package/mssql-core/columns/int.js.map +0 -1
  1108. package/mssql-core/columns/numeric.cjs +0 -146
  1109. package/mssql-core/columns/numeric.cjs.map +0 -1
  1110. package/mssql-core/columns/numeric.d.cts +0 -58
  1111. package/mssql-core/columns/numeric.d.ts +0 -58
  1112. package/mssql-core/columns/numeric.js +0 -116
  1113. package/mssql-core/columns/numeric.js.map +0 -1
  1114. package/mssql-core/columns/real.cjs +0 -53
  1115. package/mssql-core/columns/real.cjs.map +0 -1
  1116. package/mssql-core/columns/real.d.cts +0 -16
  1117. package/mssql-core/columns/real.d.ts +0 -16
  1118. package/mssql-core/columns/real.js +0 -27
  1119. package/mssql-core/columns/real.js.map +0 -1
  1120. package/mssql-core/columns/smallint.cjs +0 -62
  1121. package/mssql-core/columns/smallint.cjs.map +0 -1
  1122. package/mssql-core/columns/smallint.d.cts +0 -17
  1123. package/mssql-core/columns/smallint.d.ts +0 -17
  1124. package/mssql-core/columns/smallint.js +0 -36
  1125. package/mssql-core/columns/smallint.js.map +0 -1
  1126. package/mssql-core/columns/text.cjs +0 -68
  1127. package/mssql-core/columns/text.cjs.map +0 -1
  1128. package/mssql-core/columns/text.d.cts +0 -36
  1129. package/mssql-core/columns/text.d.ts +0 -36
  1130. package/mssql-core/columns/text.js +0 -41
  1131. package/mssql-core/columns/text.js.map +0 -1
  1132. package/mssql-core/columns/time.cjs +0 -90
  1133. package/mssql-core/columns/time.cjs.map +0 -1
  1134. package/mssql-core/columns/time.d.cts +0 -37
  1135. package/mssql-core/columns/time.d.ts +0 -37
  1136. package/mssql-core/columns/time.js +0 -62
  1137. package/mssql-core/columns/time.js.map +0 -1
  1138. package/mssql-core/columns/tinyint.cjs +0 -62
  1139. package/mssql-core/columns/tinyint.cjs.map +0 -1
  1140. package/mssql-core/columns/tinyint.d.cts +0 -17
  1141. package/mssql-core/columns/tinyint.d.ts +0 -17
  1142. package/mssql-core/columns/tinyint.js +0 -36
  1143. package/mssql-core/columns/tinyint.js.map +0 -1
  1144. package/mssql-core/columns/varbinary.cjs +0 -61
  1145. package/mssql-core/columns/varbinary.cjs.map +0 -1
  1146. package/mssql-core/columns/varbinary.d.cts +0 -23
  1147. package/mssql-core/columns/varbinary.d.ts +0 -23
  1148. package/mssql-core/columns/varbinary.js +0 -35
  1149. package/mssql-core/columns/varbinary.js.map +0 -1
  1150. package/mssql-core/columns/varchar.cjs +0 -117
  1151. package/mssql-core/columns/varchar.cjs.map +0 -1
  1152. package/mssql-core/columns/varchar.d.cts +0 -59
  1153. package/mssql-core/columns/varchar.d.ts +0 -59
  1154. package/mssql-core/columns/varchar.js +0 -88
  1155. package/mssql-core/columns/varchar.js.map +0 -1
  1156. package/mssql-core/db.cjs +0 -254
  1157. package/mssql-core/db.cjs.map +0 -1
  1158. package/mssql-core/db.d.cts +0 -228
  1159. package/mssql-core/db.d.ts +0 -228
  1160. package/mssql-core/db.js +0 -235
  1161. package/mssql-core/db.js.map +0 -1
  1162. package/mssql-core/dialect.cjs +0 -633
  1163. package/mssql-core/dialect.cjs.map +0 -1
  1164. package/mssql-core/dialect.d.cts +0 -58
  1165. package/mssql-core/dialect.d.ts +0 -58
  1166. package/mssql-core/dialect.js +0 -599
  1167. package/mssql-core/dialect.js.map +0 -1
  1168. package/mssql-core/expressions.cjs +0 -49
  1169. package/mssql-core/expressions.cjs.map +0 -1
  1170. package/mssql-core/expressions.d.cts +0 -8
  1171. package/mssql-core/expressions.d.ts +0 -8
  1172. package/mssql-core/expressions.js +0 -22
  1173. package/mssql-core/expressions.js.map +0 -1
  1174. package/mssql-core/foreign-keys.cjs +0 -91
  1175. package/mssql-core/foreign-keys.cjs.map +0 -1
  1176. package/mssql-core/foreign-keys.d.cts +0 -51
  1177. package/mssql-core/foreign-keys.d.ts +0 -51
  1178. package/mssql-core/foreign-keys.js +0 -65
  1179. package/mssql-core/foreign-keys.js.map +0 -1
  1180. package/mssql-core/index.cjs +0 -55
  1181. package/mssql-core/index.cjs.map +0 -1
  1182. package/mssql-core/index.d.cts +0 -17
  1183. package/mssql-core/index.d.ts +0 -17
  1184. package/mssql-core/index.js +0 -18
  1185. package/mssql-core/index.js.map +0 -1
  1186. package/mssql-core/indexes.cjs +0 -80
  1187. package/mssql-core/indexes.cjs.map +0 -1
  1188. package/mssql-core/indexes.d.cts +0 -49
  1189. package/mssql-core/indexes.d.ts +0 -49
  1190. package/mssql-core/indexes.js +0 -52
  1191. package/mssql-core/indexes.js.map +0 -1
  1192. package/mssql-core/primary-keys.cjs +0 -64
  1193. package/mssql-core/primary-keys.cjs.map +0 -1
  1194. package/mssql-core/primary-keys.d.cts +0 -23
  1195. package/mssql-core/primary-keys.d.ts +0 -23
  1196. package/mssql-core/primary-keys.js +0 -38
  1197. package/mssql-core/primary-keys.js.map +0 -1
  1198. package/mssql-core/query-builders/delete.cjs +0 -107
  1199. package/mssql-core/query-builders/delete.cjs.map +0 -1
  1200. package/mssql-core/query-builders/delete.d.cts +0 -98
  1201. package/mssql-core/query-builders/delete.d.ts +0 -98
  1202. package/mssql-core/query-builders/delete.js +0 -83
  1203. package/mssql-core/query-builders/delete.js.map +0 -1
  1204. package/mssql-core/query-builders/index.cjs +0 -33
  1205. package/mssql-core/query-builders/index.cjs.map +0 -1
  1206. package/mssql-core/query-builders/index.d.cts +0 -6
  1207. package/mssql-core/query-builders/index.d.ts +0 -6
  1208. package/mssql-core/query-builders/index.js +0 -7
  1209. package/mssql-core/query-builders/index.js.map +0 -1
  1210. package/mssql-core/query-builders/insert.cjs +0 -105
  1211. package/mssql-core/query-builders/insert.cjs.map +0 -1
  1212. package/mssql-core/query-builders/insert.d.cts +0 -79
  1213. package/mssql-core/query-builders/insert.d.ts +0 -79
  1214. package/mssql-core/query-builders/insert.js +0 -80
  1215. package/mssql-core/query-builders/insert.js.map +0 -1
  1216. package/mssql-core/query-builders/query-builder.cjs +0 -95
  1217. package/mssql-core/query-builders/query-builder.cjs.map +0 -1
  1218. package/mssql-core/query-builders/query-builder.d.cts +0 -32
  1219. package/mssql-core/query-builders/query-builder.d.ts +0 -32
  1220. package/mssql-core/query-builders/query-builder.js +0 -71
  1221. package/mssql-core/query-builders/query-builder.js.map +0 -1
  1222. package/mssql-core/query-builders/query.cjs +0 -126
  1223. package/mssql-core/query-builders/query.cjs.map +0 -1
  1224. package/mssql-core/query-builders/query.d.cts +0 -42
  1225. package/mssql-core/query-builders/query.d.ts +0 -42
  1226. package/mssql-core/query-builders/query.js +0 -103
  1227. package/mssql-core/query-builders/query.js.map +0 -1
  1228. package/mssql-core/query-builders/select.cjs +0 -679
  1229. package/mssql-core/query-builders/select.cjs.map +0 -1
  1230. package/mssql-core/query-builders/select.d.cts +0 -549
  1231. package/mssql-core/query-builders/select.d.ts +0 -549
  1232. package/mssql-core/query-builders/select.js +0 -649
  1233. package/mssql-core/query-builders/select.js.map +0 -1
  1234. package/mssql-core/query-builders/select.types.cjs +0 -17
  1235. package/mssql-core/query-builders/select.types.cjs.map +0 -1
  1236. package/mssql-core/query-builders/select.types.d.cts +0 -142
  1237. package/mssql-core/query-builders/select.types.d.ts +0 -142
  1238. package/mssql-core/query-builders/select.types.js +0 -1
  1239. package/mssql-core/query-builders/select.types.js.map +0 -1
  1240. package/mssql-core/query-builders/update.cjs +0 -138
  1241. package/mssql-core/query-builders/update.cjs.map +0 -1
  1242. package/mssql-core/query-builders/update.d.cts +0 -142
  1243. package/mssql-core/query-builders/update.d.ts +0 -142
  1244. package/mssql-core/query-builders/update.js +0 -113
  1245. package/mssql-core/query-builders/update.js.map +0 -1
  1246. package/mssql-core/schema.cjs +0 -51
  1247. package/mssql-core/schema.cjs.map +0 -1
  1248. package/mssql-core/schema.d.cts +0 -22
  1249. package/mssql-core/schema.d.ts +0 -22
  1250. package/mssql-core/schema.js +0 -25
  1251. package/mssql-core/schema.js.map +0 -1
  1252. package/mssql-core/session.cjs +0 -74
  1253. package/mssql-core/session.cjs.map +0 -1
  1254. package/mssql-core/session.d.cts +0 -63
  1255. package/mssql-core/session.d.ts +0 -63
  1256. package/mssql-core/session.js +0 -48
  1257. package/mssql-core/session.js.map +0 -1
  1258. package/mssql-core/subquery.cjs +0 -17
  1259. package/mssql-core/subquery.cjs.map +0 -1
  1260. package/mssql-core/subquery.d.cts +0 -18
  1261. package/mssql-core/subquery.d.ts +0 -18
  1262. package/mssql-core/subquery.js +0 -1
  1263. package/mssql-core/subquery.js.map +0 -1
  1264. package/mssql-core/table.cjs +0 -81
  1265. package/mssql-core/table.cjs.map +0 -1
  1266. package/mssql-core/table.d.cts +0 -40
  1267. package/mssql-core/table.d.ts +0 -40
  1268. package/mssql-core/table.js +0 -55
  1269. package/mssql-core/table.js.map +0 -1
  1270. package/mssql-core/unique-constraint.cjs +0 -76
  1271. package/mssql-core/unique-constraint.cjs.map +0 -1
  1272. package/mssql-core/unique-constraint.d.cts +0 -23
  1273. package/mssql-core/unique-constraint.d.ts +0 -23
  1274. package/mssql-core/unique-constraint.js +0 -49
  1275. package/mssql-core/unique-constraint.js.map +0 -1
  1276. package/mssql-core/utils.cjs +0 -85
  1277. package/mssql-core/utils.cjs.map +0 -1
  1278. package/mssql-core/utils.d.cts +0 -31
  1279. package/mssql-core/utils.d.ts +0 -31
  1280. package/mssql-core/utils.js +0 -60
  1281. package/mssql-core/utils.js.map +0 -1
  1282. package/mssql-core/view-base.cjs +0 -33
  1283. package/mssql-core/view-base.cjs.map +0 -1
  1284. package/mssql-core/view-base.d.cts +0 -9
  1285. package/mssql-core/view-base.d.ts +0 -9
  1286. package/mssql-core/view-base.js +0 -9
  1287. package/mssql-core/view-base.js.map +0 -1
  1288. package/mssql-core/view-common.cjs +0 -29
  1289. package/mssql-core/view-common.cjs.map +0 -1
  1290. package/mssql-core/view-common.d.cts +0 -1
  1291. package/mssql-core/view-common.d.ts +0 -1
  1292. package/mssql-core/view-common.js +0 -5
  1293. package/mssql-core/view-common.js.map +0 -1
  1294. package/mssql-core/view.cjs +0 -154
  1295. package/mssql-core/view.cjs.map +0 -1
  1296. package/mssql-core/view.d.cts +0 -63
  1297. package/mssql-core/view.d.ts +0 -63
  1298. package/mssql-core/view.js +0 -125
  1299. package/mssql-core/view.js.map +0 -1
  1300. package/node-mssql/driver.cjs +0 -117
  1301. package/node-mssql/driver.cjs.map +0 -1
  1302. package/node-mssql/driver.d.cts +0 -46
  1303. package/node-mssql/driver.d.ts +0 -46
  1304. package/node-mssql/driver.js +0 -81
  1305. package/node-mssql/driver.js.map +0 -1
  1306. package/node-mssql/index.cjs +0 -25
  1307. package/node-mssql/index.cjs.map +0 -1
  1308. package/node-mssql/index.d.cts +0 -2
  1309. package/node-mssql/index.d.ts +0 -2
  1310. package/node-mssql/index.js +0 -3
  1311. package/node-mssql/index.js.map +0 -1
  1312. package/node-mssql/migrator.cjs +0 -33
  1313. package/node-mssql/migrator.cjs.map +0 -1
  1314. package/node-mssql/migrator.d.cts +0 -3
  1315. package/node-mssql/migrator.d.ts +0 -3
  1316. package/node-mssql/migrator.js +0 -9
  1317. package/node-mssql/migrator.js.map +0 -1
  1318. package/node-mssql/pool.cjs.map +0 -1
  1319. package/node-mssql/pool.d.cts +0 -8
  1320. package/node-mssql/pool.d.ts +0 -8
  1321. package/node-mssql/pool.js +0 -20
  1322. package/node-mssql/pool.js.map +0 -1
  1323. package/node-mssql/session.cjs +0 -256
  1324. package/node-mssql/session.cjs.map +0 -1
  1325. package/node-mssql/session.d.cts +0 -48
  1326. package/node-mssql/session.d.ts +0 -48
  1327. package/node-mssql/session.js +0 -224
  1328. package/node-mssql/session.js.map +0 -1
  1329. /package/{cockroach → effect/sqlite}/index.d.cts +0 -0
  1330. /package/{cockroach → effect/sqlite}/index.d.ts +0 -0
  1331. /package/{cockroach → effect/sqlite}/index.js +0 -0
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
  });
@@ -310,52 +309,6 @@ function mapRelationalRow(tablesConfig, tableConfig, row, buildQueryResultSelect
310
309
  }
311
310
  return result;
312
311
  }
313
- function mapRelationalRowFromObj(tablesConfig, tableConfig, row, buildQueryResultSelection, mapColumnValue = (value) => value) {
314
- const result = {};
315
- for (const [
316
- selectionItemIndex,
317
- selectionItem
318
- ] of buildQueryResultSelection.entries()) {
319
- if (selectionItem.isJson) {
320
- const relation = tableConfig.relations[selectionItem.tsKey];
321
- const isOne = (0, import_entity.is)(relation, One);
322
- const rawSubRows = row[selectionItemIndex];
323
- let subRows = rawSubRows;
324
- if (subRows || Array.isArray(subRows)) {
325
- subRows = typeof rawSubRows === "string" ? JSON.parse(rawSubRows) : rawSubRows;
326
- subRows = isOne ? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r)) : subRows.map((r) => Array.isArray(r) ? r : Object.values(r));
327
- }
328
- result[selectionItem.tsKey] = isOne ? subRows && mapRelationalRowFromObj(
329
- tablesConfig,
330
- tablesConfig[selectionItem.relationTableTsKey],
331
- subRows,
332
- selectionItem.selection,
333
- mapColumnValue
334
- ) : (subRows ?? []).map(
335
- (subRow) => mapRelationalRowFromObj(
336
- tablesConfig,
337
- tablesConfig[selectionItem.relationTableTsKey],
338
- subRow,
339
- selectionItem.selection,
340
- mapColumnValue
341
- )
342
- );
343
- } else {
344
- const value = mapColumnValue(row[selectionItemIndex]);
345
- const field = selectionItem.field;
346
- let decoder;
347
- if ((0, import_entity.is)(field, import_column.Column)) {
348
- decoder = field;
349
- } else if ((0, import_entity.is)(field, import_sql.SQL)) {
350
- decoder = field.decoder;
351
- } else {
352
- decoder = field.sql.decoder;
353
- }
354
- result[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);
355
- }
356
- }
357
- return result;
358
- }
359
312
  // Annotate the CommonJS export names for ESM import in node:
360
313
  0 && (module.exports = {
361
314
  Many,
@@ -369,7 +322,6 @@ function mapRelationalRowFromObj(tablesConfig, tableConfig, row, buildQueryResul
369
322
  getOperators,
370
323
  getOrderByOperators,
371
324
  mapRelationalRow,
372
- mapRelationalRowFromObj,
373
325
  normalizeRelation,
374
326
  relations
375
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\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\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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAqF;AACrF,oBAAuC;AACvC,oBAA+B;AAC/B,0BAAkC;AAClC,yBAwBO;AACP,iBAA2C;AAGpC,MAAe,SAA6C;AAAA,EAOlE,YACU,aACA,iBACA,cACR;AAHQ;AACA;AACA;AAET,SAAK,sBAAsB,gBAAgB,mBAAM,OAAO,IAAI;AAAA,EAC7D;AAAA,EAZA,QAAiB,wBAAU,IAAY;AAAA,EAG9B;AAAA,EACT;AAWD;AAEO,MAAM,UAGX;AAAA,EAKD,YACU,OACA,QACR;AAFQ;AACA;AAAA,EACP;AAAA,EAPH,QAAiB,wBAAU,IAAY;AAQxC;AAEO,MAAM,YAGH,SAAqB;AAAA,EAK9B,YACC,aACA,iBACS,QAOA,YACR;AACD,UAAM,aAAa,iBAAiB,QAAQ,YAAY;AAT/C;AAOA;AAAA,EAGV;AAAA,EAjBA,QAA0B,wBAAU,IAAY;AAAA,EAmBhD,cAAc,WAAoC;AACjD,UAAM,WAAW,IAAI;AAAA,MACpB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACN;AACA,aAAS,YAAY;AACrB,WAAO;AAAA,EACR;AACD;AAEO,MAAM,aAAwC,SAAqB;AAAA,EAKzE,YACC,aACA,iBACS,QACR;AACD,UAAM,aAAa,iBAAiB,QAAQ,YAAY;AAF/C;AAAA,EAGV;AAAA,EAVA,QAA0B,wBAAU,IAAY;AAAA,EAYhD,cAAc,WAAqC;AAClD,UAAM,WAAW,IAAI;AAAA,MACpB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IACN;AACA,aAAS,YAAY;AACrB,WAAO;AAAA,EACR;AACD;AAqCO,SAAS,eAAe;AAC9B,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAIO,SAAS,sBAAsB;AACrC,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AA8NO,SAAS,8BAGf,QACA,eAC6D;AAC7D,MACC,OAAO,KAAK,MAAM,EAAE,WAAW,KAC5B,aAAa,UACb,KAAC,kBAAG,OAAO,SAAS,GAAG,kBAAK,GAC9B;AACD,aAAS,OAAO,SAAS;AAAA,EAC1B;AAGA,QAAM,gBAAwC,CAAC;AAE/C,QAAM,kBAGF,CAAC;AACL,QAAM,eAAuC,CAAC;AAC9C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AAClD,YAAI,kBAAG,OAAO,kBAAK,GAAG;AACrB,YAAM,aAAS,iCAAmB,KAAK;AACvC,YAAM,oBAAoB,gBAAgB,MAAM;AAChD,oBAAc,MAAM,IAAI;AACxB,mBAAa,GAAG,IAAI;AAAA,QACnB,QAAQ;AAAA,QACR,QAAQ,MAAM,mBAAM,OAAO,IAAI;AAAA,QAC/B,QAAQ,MAAM,mBAAM,OAAO,MAAM;AAAA,QACjC,SAAS,MAAM,mBAAM,OAAO,OAAO;AAAA,QACnC,WAAW,mBAAmB,aAAa,CAAC;AAAA,QAC5C,YAAY,mBAAmB,cAAc,CAAC;AAAA,MAC/C;AAGA,iBACO,UAAU,OAAO;AAAA,QACrB,MAAgB,mBAAM,OAAO,OAAO;AAAA,MACtC,GACC;AACD,YAAI,OAAO,SAAS;AACnB,uBAAa,GAAG,EAAG,WAAW,KAAK,MAAM;AAAA,QAC1C;AAAA,MACD;AAEA,YAAM,cAAc,MAAM,mBAAM,OAAO,kBAAkB,IAAK,MAAgB,mBAAM,OAAO,kBAAkB,CAAC;AAC9G,UAAI,aAAa;AAChB,mBAAW,eAAe,OAAO,OAAO,WAAW,GAAG;AACrD,kBAAI,kBAAG,aAAa,qCAAiB,GAAG;AACvC,yBAAa,GAAG,EAAG,WAAW,KAAK,GAAG,YAAY,OAAO;AAAA,UAC1D;AAAA,QACD;AAAA,MACD;AAAA,IACD,eAAW,kBAAG,OAAO,SAAS,GAAG;AAChC,YAAM,aAAS,iCAAmB,MAAM,KAAK;AAC7C,YAAM,YAAY,cAAc,MAAM;AACtC,YAAMA,aAAsC,MAAM;AAAA,QACjD,cAAc,MAAM,KAAK;AAAA,MAC1B;AACA,UAAI;AAEJ,iBAAW,CAAC,cAAc,QAAQ,KAAK,OAAO,QAAQA,UAAS,GAAG;AACjE,YAAI,WAAW;AACd,gBAAM,cAAc,aAAa,SAAS;AAC1C,sBAAY,UAAU,YAAY,IAAI;AACtC,cAAI,YAAY;AACf,wBAAY,WAAW,KAAK,GAAG,UAAU;AAAA,UAC1C;AAAA,QACD,OAAO;AACN,cAAI,EAAE,UAAU,kBAAkB;AACjC,4BAAgB,MAAM,IAAI;AAAA,cACzB,WAAW,CAAC;AAAA,cACZ;AAAA,YACD;AAAA,UACD;AACA,0BAAgB,MAAM,EAAG,UAAU,YAAY,IAAI;AAAA,QACpD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,SAAO,EAAE,QAAQ,cAAyB,cAAc;AACzD;AAEO,SAAS,UAIf,OACAA,YACoC;AACpC,SAAO,IAAI;AAAA,IACV;AAAA,IACA,CAAC,YACA,OAAO;AAAA,MACN,OAAO,QAAQA,WAAU,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AAAA,QACxD;AAAA,QACA,MAAM,cAAc,GAAG;AAAA,MACxB,CAAC;AAAA,IACF;AAAA,EACF;AACD;AAEO,SAAS,UAAqC,aAAoB;AACxE,SAAO,SAAS,IAOf,OACA,QAIC;AACD,WAAO,IAAI;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACC,QAAQ,OAAO,OAAgB,CAAC,KAAK,MAAM,OAAO,EAAE,SAAS,IAAI,KAC9D;AAAA,IACL;AAAA,EACD;AACD;AAEO,SAAS,WAAW,aAAoB;AAC9C,SAAO,SAAS,KACf,iBACA,QACmC;AACnC,WAAO,IAAI,KAAK,aAAa,iBAAiB,MAAM;AAAA,EACrD;AACD;AAOO,SAAS,kBACf,QACA,eACA,UACqB;AACrB,UAAI,kBAAG,UAAU,GAAG,KAAK,SAAS,QAAQ;AACzC,WAAO;AAAA,MACN,QAAQ,SAAS,OAAO;AAAA,MACxB,YAAY,SAAS,OAAO;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,wBAAwB,kBAAc,iCAAmB,SAAS,eAAe,CAAC;AACxF,MAAI,CAAC,uBAAuB;AAC3B,UAAM,IAAI;AAAA,MACT,UAAU,SAAS,gBAAgB,mBAAM,OAAO,IAAI,CAAC;AAAA,IACtD;AAAA,EACD;AAEA,QAAM,wBAAwB,OAAO,qBAAqB;AAC1D,MAAI,CAAC,uBAAuB;AAC3B,UAAM,IAAI,MAAM,UAAU,qBAAqB,uBAAuB;AAAA,EACvE;AAEA,QAAM,cAAc,SAAS;AAC7B,QAAM,oBAAoB,kBAAc,iCAAmB,WAAW,CAAC;AACvE,MAAI,CAAC,mBAAmB;AACvB,UAAM,IAAI;AAAA,MACT,UAAU,YAAY,mBAAM,OAAO,IAAI,CAAC;AAAA,IACzC;AAAA,EACD;AAEA,QAAM,mBAA+B,CAAC;AACtC,aACO,2BAA2B,OAAO;AAAA,IACvC,sBAAsB;AAAA,EACvB,GACC;AACD,QACE,SAAS,gBACN,aAAa,2BACb,wBAAwB,iBAAiB,SAAS,gBAClD,CAAC,SAAS,gBACV,wBAAwB,oBAAoB,SAAS,aACxD;AACD,uBAAiB,KAAK,uBAAuB;AAAA,IAC9C;AAAA,EACD;AAEA,MAAI,iBAAiB,SAAS,GAAG;AAChC,UAAM,SAAS,eACZ,IAAI;AAAA,MACL,2CAA2C,SAAS,YAAY,eAAe,qBAAqB;AAAA,IACrG,IACE,IAAI;AAAA,MACL,yCAAyC,qBAAqB,UAC7D,SAAS,YAAY,mBAAM,OAAO,IAAI,CACvC;AAAA,IACD;AAAA,EACF;AAEA,MACC,iBAAiB,CAAC,SACf,kBAAG,iBAAiB,CAAC,GAAG,GAAG,KAC3B,iBAAiB,CAAC,EAAE,QACtB;AACD,WAAO;AAAA,MACN,QAAQ,iBAAiB,CAAC,EAAE,OAAO;AAAA,MACnC,YAAY,iBAAiB,CAAC,EAAE,OAAO;AAAA,IACxC;AAAA,EACD;AAEA,QAAM,IAAI;AAAA,IACT,sDAAsD,iBAAiB,IAAI,SAAS,SAAS;AAAA,EAC9F;AACD;AAEO,SAAS,4BACf,aACC;AACD,SAAO;AAAA,IACN,KAAK,UAAsB,WAAW;AAAA,IACtC,MAAM,WAAW,WAAW;AAAA,EAC7B;AACD;AAuBO,SAAS,iBACf,cACA,aACA,KACA,2BACA,iBAA8C,CAAC,UAAU,OAC/B;AAC1B,QAAM,SAAkC,CAAC;AAEzC,aACO;AAAA,IACL;AAAA,IACA;AAAA,EACD,KAAK,0BAA0B,QAAQ,GACtC;AACD,QAAI,cAAc,QAAQ;AACzB,YAAM,WAAW,YAAY,UAAU,cAAc,KAAK;AAC1D,YAAM,aAAa,IAAI,kBAAkB;AAKzC,YAAM,UAAU,OAAO,eAAe,WAClC,KAAK,MAAM,UAAU,IACtB;AACH,aAAO,cAAc,KAAK,QAAI,kBAAG,UAAU,GAAG,IAC3C,WACE;AAAA,QACF;AAAA,QACA,aAAa,cAAc,kBAAmB;AAAA,QAC9C;AAAA,QACA,cAAc;AAAA,QACd;AAAA,MACD,IACE,QAAwB;AAAA,QAAI,CAAC,WAC/B;AAAA,UACC;AAAA,UACA,aAAa,cAAc,kBAAmB;AAAA,UAC9C;AAAA,UACA,cAAc;AAAA,UACd;AAAA,QACD;AAAA,MACD;AAAA,IACF,OAAO;AACN,YAAM,QAAQ,eAAe,IAAI,kBAAkB,CAAC;AACpD,YAAM,QAAQ,cAAc;AAC5B,UAAI;AACJ,cAAI,kBAAG,OAAO,oBAAM,GAAG;AACtB,kBAAU;AAAA,MACX,eAAW,kBAAG,OAAO,cAAG,GAAG;AAC1B,kBAAU,MAAM;AAAA,MACjB,OAAO;AACN,kBAAU,MAAM,IAAI;AAAA,MACrB;AACA,aAAO,cAAc,KAAK,IAAI,UAAU,OAAO,OAAO,QAAQ,mBAAmB,KAAK;AAAA,IACvF;AAAA,EACD;AAEA,SAAO;AACR;","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
@@ -298,52 +298,6 @@ function mapRelationalRow(tablesConfig, tableConfig, row, buildQueryResultSelect
298
298
  }
299
299
  return result;
300
300
  }
301
- function mapRelationalRowFromObj(tablesConfig, tableConfig, row, buildQueryResultSelection, mapColumnValue = (value) => value) {
302
- const result = {};
303
- for (const [
304
- selectionItemIndex,
305
- selectionItem
306
- ] of buildQueryResultSelection.entries()) {
307
- if (selectionItem.isJson) {
308
- const relation = tableConfig.relations[selectionItem.tsKey];
309
- const isOne = is(relation, One);
310
- const rawSubRows = row[selectionItemIndex];
311
- let subRows = rawSubRows;
312
- if (subRows || Array.isArray(subRows)) {
313
- subRows = typeof rawSubRows === "string" ? JSON.parse(rawSubRows) : rawSubRows;
314
- subRows = isOne ? subRows.flatMap((r) => Array.isArray(r) ? r : Object.values(r)) : subRows.map((r) => Array.isArray(r) ? r : Object.values(r));
315
- }
316
- result[selectionItem.tsKey] = isOne ? subRows && mapRelationalRowFromObj(
317
- tablesConfig,
318
- tablesConfig[selectionItem.relationTableTsKey],
319
- subRows,
320
- selectionItem.selection,
321
- mapColumnValue
322
- ) : (subRows ?? []).map(
323
- (subRow) => mapRelationalRowFromObj(
324
- tablesConfig,
325
- tablesConfig[selectionItem.relationTableTsKey],
326
- subRow,
327
- selectionItem.selection,
328
- mapColumnValue
329
- )
330
- );
331
- } else {
332
- const value = mapColumnValue(row[selectionItemIndex]);
333
- const field = selectionItem.field;
334
- let decoder;
335
- if (is(field, Column)) {
336
- decoder = field;
337
- } else if (is(field, SQL)) {
338
- decoder = field.decoder;
339
- } else {
340
- decoder = field.sql.decoder;
341
- }
342
- result[selectionItem.tsKey] = value === null ? null : decoder.mapFromDriverValue(value);
343
- }
344
- }
345
- return result;
346
- }
347
301
  export {
348
302
  Many,
349
303
  One,
@@ -356,7 +310,6 @@ export {
356
310
  getOperators,
357
311
  getOrderByOperators,
358
312
  mapRelationalRow,
359
- mapRelationalRowFromObj,
360
313
  normalizeRelation,
361
314
  relations
362
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\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\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/column-builder.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { CockroachColumn, ExtraConfigColumn as CockroachExtraConfigColumn } from './cockroach-core/index.ts';\nimport type { Column, ColumnBaseConfig } from './column.ts';\nimport type { GelColumn, GelExtraConfigColumn } from './gel-core/index.ts';\nimport type { MsSqlColumn } from './mssql-core/index.ts';\nimport type { MySqlColumn } from './mysql-core/index.ts';\nimport type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from './pg-core/index.ts';\nimport type { SingleStoreColumn } from './singlestore-core/index.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { SQLiteColumn } from './sqlite-core/index.ts';\nimport type { Assume } from './utils.ts';\n\nexport type ColumnDataType =\n\t| 'array'\n\t| 'bigint'\n\t| 'boolean'\n\t| 'custom'\n\t| 'number'\n\t| 'object'\n\t| 'string';\n\nexport type ColumnDataArrayConstraint =\n\t| 'vector'\n\t| 'int64vector'\n\t| 'halfvector'\n\t| 'basecolumn'\n\t| 'point'\n\t| 'geometry'\n\t| 'line';\n\nexport type ColumnDataBigIntConstraint = 'int64' | 'uint64';\n\nexport type ColumnDataNumberConstraint =\n\t| 'double'\n\t| 'float'\n\t| 'int8'\n\t| 'int16'\n\t| 'int24'\n\t| 'int32'\n\t| 'int53'\n\t| 'udouble'\n\t| 'ufloat'\n\t| 'uint8'\n\t| 'uint16'\n\t| 'uint24'\n\t| 'uint32'\n\t| 'uint53'\n\t| 'unsigned'\n\t| 'year';\n\nexport type ColumnDataObjectConstraint =\n\t| 'buffer'\n\t| 'date'\n\t| 'geometry'\n\t| 'json'\n\t| 'line'\n\t| 'point'\n\t// Gel-specific\n\t| 'dateDuration'\n\t| 'duration'\n\t| 'localDate'\n\t| 'localDateTime'\n\t| 'localTime'\n\t| 'relDuration';\n\nexport type ColumnDataStringConstraint =\n\t| 'binary'\n\t| 'cidr'\n\t| 'date'\n\t| 'datetime'\n\t| 'enum'\n\t| 'inet'\n\t| 'int64'\n\t| 'interval'\n\t| 'macaddr'\n\t| 'macaddr8'\n\t| 'numeric'\n\t| 'sparsevec'\n\t| 'time'\n\t| 'timestamp'\n\t| 'unumeric'\n\t| 'uuid';\n\nexport type ColumnDataConstraint =\n\t| ColumnDataArrayConstraint\n\t| ColumnDataBigIntConstraint\n\t| ColumnDataNumberConstraint\n\t| ColumnDataObjectConstraint\n\t| ColumnDataStringConstraint;\n\nexport type ColumnType =\n\t| ColumnDataType\n\t| `array ${ColumnDataArrayConstraint}`\n\t| `bigint ${ColumnDataBigIntConstraint}`\n\t| `number ${ColumnDataNumberConstraint}`\n\t| `object ${ColumnDataObjectConstraint}`\n\t| `string ${ColumnDataStringConstraint}`;\n\nexport interface ColumnTypeData<\n\tTType extends ColumnDataType = ColumnDataType,\n\tTConstraint extends ColumnDataConstraint | undefined = ColumnDataConstraint | undefined,\n> {\n\ttype: TType;\n\tconstraint: TConstraint;\n}\n\nexport type ExtractColumnTypeData<T extends ColumnType> = T extends\n\t`${infer Type extends ColumnDataType} ${infer Constraint extends ColumnDataConstraint}`\n\t? ColumnTypeData<Type, Constraint>\n\t: ColumnTypeData<Assume<T, ColumnDataType>, undefined>;\n\nexport function extractExtendedColumnType<TColumn extends Column>(\n\tcolumn: TColumn,\n): ExtractColumnTypeData<TColumn['_']['dataType']> {\n\tconst [type, constraint] = column.dataType.split(' ');\n\n\treturn { type, constraint } as any;\n}\n\nexport type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'mssql' | 'common' | 'gel' | 'cockroach';\n\n// TODO update description\n// 'virtual' | 'stored' for postgres\n// 'stored' for mysql\n// 'virtual' | 'persisted' for mssql\n// We should remove this option from common Column and store it per dialect common\n// Was discussed with Andrew\nexport type GeneratedStorageMode = 'virtual' | 'stored' | 'persisted';\n\nexport type GeneratedType = 'always' | 'byDefault';\n\nexport interface GeneratedColumnConfig<TDataType> {\n\tas: TDataType | SQL | (() => SQL);\n\ttype?: GeneratedType;\n\tmode?: GeneratedStorageMode;\n}\n\nexport interface GeneratedIdentityConfig {\n\tsequenceName?: string;\n\tsequenceOptions?: PgSequenceOptions;\n\ttype: 'always' | 'byDefault';\n}\n\nexport interface ColumnBuilderBaseConfig<TDataType extends ColumnType> {\n\tdataType: TDataType;\n\tdata: unknown;\n\tdriverParam: unknown;\n\tnotNull?: boolean;\n\thasDefault?: boolean;\n}\n\nexport type MakeColumnConfig<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTTableName extends string,\n\tTDialect extends Dialect = 'common',\n\tTData = T extends { $type: infer U } ? U : T['data'],\n> = {\n\tname: string;\n\ttableName: TTableName;\n\tdataType: T['dataType'];\n\tdata: TData;\n\tdriverParam: T['driverParam'];\n\tnotNull: T['notNull'] extends true ? true : false;\n\thasDefault: T['hasDefault'] extends true ? true : false;\n\tisPrimaryKey: T extends { isPrimaryKey: true } ? true : false;\n\tisAutoincrement: T extends { isAutoincrement: true } ? true : false;\n\thasRuntimeDefault: T extends { hasRuntimeDefault: true } ? true : false;\n\tenumValues: T extends { enumValues: [string, ...string[]] } ? T['enumValues'] : undefined;\n\tbaseColumn: T extends { baseBuilder: infer U extends ColumnBuilderBase } ? BuildColumn<TTableName, U, TDialect>\n\t\t: never;\n\tidentity: T extends { identity: 'always' } ? 'always' : T extends { identity: 'byDefault' } ? 'byDefault' : undefined;\n\tgenerated: T extends { generated: infer G } ? unknown extends G ? undefined\n\t\t: G extends undefined ? undefined\n\t\t: G\n\t\t: undefined;\n} & {};\n\nexport interface ColumnBuilderRuntimeConfig<TData> {\n\tname: string;\n\tkeyAsName: boolean;\n\tnotNull: boolean;\n\tdefault: TData | SQL | undefined;\n\tdefaultFn: (() => TData | SQL) | undefined;\n\tonUpdateFn: (() => TData | SQL) | undefined;\n\thasDefault: boolean;\n\tprimaryKey: boolean;\n\tisUnique: boolean;\n\tuniqueName: string | undefined;\n\tuniqueNameExplicit: boolean | undefined;\n\tuniqueType: string | undefined;\n\tdataType: string;\n\tcolumnType: string;\n\tgenerated: GeneratedColumnConfig<TData> | undefined;\n\tgeneratedIdentity: GeneratedIdentityConfig | undefined;\n}\n\nexport interface ColumnBuilderExtraConfig {\n\tprimaryKeyHasDefault?: boolean;\n}\n\nexport type NotNull<T> = T & {\n\t_: {\n\t\tnotNull: true;\n\t};\n};\n\nexport type HasDefault<T> = T & {\n\t_: {\n\t\thasDefault: true;\n\t};\n};\n\nexport type IsPrimaryKey<T> = T & {\n\t_: {\n\t\tisPrimaryKey: true;\n\t\tnotNull: true;\n\t};\n};\n\nexport type IsAutoincrement<T> = T & {\n\t_: {\n\t\tisAutoincrement: true;\n\t};\n};\n\nexport type HasRuntimeDefault<T> = T & {\n\t_: {\n\t\thasRuntimeDefault: true;\n\t};\n};\n\nexport type $Type<T, TType> = T & {\n\t_: {\n\t\t$type: TType;\n\t};\n};\n\nexport type HasGenerated<T, TGenerated = {}> = T & {\n\t_: {\n\t\thasDefault: true;\n\t\tgenerated: TGenerated;\n\t};\n};\n\nexport type IsIdentity<T, TType extends 'always' | 'byDefault'> = T & {\n\t_: {\n\t\tnotNull: true;\n\t\thasDefault: true;\n\t\tidentity: TType;\n\t};\n};\n\nexport interface ColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnType> = ColumnBuilderBaseConfig<ColumnType>,\n> {\n\t_: T;\n}\n\n// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.\nexport abstract class ColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> implements ColumnBuilderBase<T> {\n\tstatic readonly [entityKind]: string = 'ColumnBuilder';\n\n\tdeclare _: T;\n\n\t/** @internal */\n\tprotected config: ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig;\n\n\tconstructor(name: string, dataType: ColumnType, columnType: string) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tkeyAsName: name === '',\n\t\t\tnotNull: false,\n\t\t\tdefault: undefined,\n\t\t\thasDefault: false,\n\t\t\tprimaryKey: false,\n\t\t\tisUnique: false,\n\t\t\tuniqueName: undefined,\n\t\t\tuniqueType: undefined,\n\t\t\tdataType,\n\t\t\tcolumnType,\n\t\t\tgenerated: undefined,\n\t\t} as ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig; // TODO: ??\n\t}\n\n\t/**\n\t * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n\t *\n\t * @example\n\t * ```ts\n\t * const users = pgTable('users', {\n\t * \tid: integer('id').$type<UserId>().primaryKey(),\n\t * \tdetails: json('details').$type<UserDetails>().notNull(),\n\t * });\n\t * ```\n\t */\n\t$type<TType>(): $Type<this, TType> {\n\t\treturn this as $Type<this, TType>;\n\t}\n\n\t/**\n\t * Adds a `not null` clause to the column definition.\n\t *\n\t * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n\t */\n\tnotNull(): NotNull<this> {\n\t\tthis.config.notNull = true;\n\t\treturn this as NotNull<this>;\n\t}\n\n\t/**\n\t * Adds a `default <value>` clause to the column definition.\n\t *\n\t * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n\t *\n\t * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n\t */\n\tdefault(value: (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL): HasDefault<this> {\n\t\tthis.config.default = value;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Adds a dynamic default value to the column.\n\t * The function will be called when the row is inserted, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$defaultFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasRuntimeDefault<HasDefault<this>> {\n\t\tthis.config.defaultFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasRuntimeDefault<HasDefault<this>>;\n\t}\n\n\t/**\n\t * Alias for {@link $defaultFn}.\n\t */\n\t$default = this.$defaultFn;\n\n\t/**\n\t * Adds a dynamic update value to the column.\n\t * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided.\n\t * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$onUpdateFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasDefault<this> {\n\t\tthis.config.onUpdateFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Alias for {@link $onUpdateFn}.\n\t */\n\t$onUpdate = this.$onUpdateFn;\n\n\t/**\n\t * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n\t *\n\t * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n\t */\n\tprimaryKey(): TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<this>>\n\t\t: IsPrimaryKey<this>\n\t{\n\t\tthis.config.primaryKey = true;\n\t\tthis.config.notNull = true;\n\t\treturn this as TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<this>>\n\t\t\t: IsPrimaryKey<this>;\n\t}\n\n\tabstract generatedAlwaysAs(\n\t\tas: SQL | T['data'] | (() => SQL),\n\t\tconfig?: Partial<GeneratedColumnConfig<unknown>>,\n\t): HasGenerated<this, {\n\t\ttype: 'always';\n\t}>;\n\n\t/** @internal Sets the name of the column to the key within the table definition if a name was not given. */\n\tsetName(name: string) {\n\t\tif (this.config.name !== '') return;\n\t\tthis.config.name = name;\n\t}\n}\n\nexport type BuildColumn<\n\tTTableName extends string,\n\tTBuilder extends ColumnBuilderBase,\n\tTDialect extends Dialect,\n\tTBuiltConfig extends ColumnBaseConfig<ColumnType> = MakeColumnConfig<TBuilder['_'], TTableName, TDialect>,\n> = TDialect extends 'pg' ? PgColumn<TBuiltConfig, {}>\n\t: TDialect extends 'mysql' ? MySqlColumn<TBuiltConfig, {}>\n\t: TDialect extends 'mssql' ? MsSqlColumn<TBuiltConfig, {}>\n\t: TDialect extends 'sqlite' ? SQLiteColumn<TBuiltConfig, {}>\n\t: TDialect extends 'singlestore' ? SingleStoreColumn<TBuiltConfig, {}>\n\t: TDialect extends 'gel' ? GelColumn<TBuiltConfig, {}>\n\t: TDialect extends 'cockroach' ? CockroachColumn<TBuiltConfig, {}>\n\t: TDialect extends 'common' ? Column<TBuiltConfig, {}>\n\t: never;\n\nexport type BuildIndexColumn<\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? ExtraConfigColumn\n\t: TDialect extends 'cockroach' ? CockroachExtraConfigColumn\n\t: TDialect extends 'gel' ? GelExtraConfigColumn\n\t: never;\n\n// TODO\n// try to make sql as well + indexRaw\n\n// optional after everything will be working as expected\n// also try to leave only needed methods for extraConfig\n// make an error if I pass .asc() to fk and so on\n\nexport type BuildColumns<\n\tTTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildColumn<\n\t\t\tTTableName,\n\t\t\tTConfigMap[Key],\n\t\t\tTDialect\n\t\t>;\n\t}\n\t& {};\n\nexport type BuildExtraConfigColumns<\n\t_TTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;\n\t}\n\t& {};\n\nexport type ChangeColumnTableName<\n\tTColumn extends Column,\n\tTAlias extends string,\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'mssql' ? MsSqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'cockroach' ? CockroachColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: never;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AA+GpB,SAAS,0BACf,QACkD;AAClD,QAAM,CAAC,MAAM,UAAU,IAAI,OAAO,SAAS,MAAM,GAAG;AAEpD,SAAO,EAAE,MAAM,WAAW;AAC3B;AA8IO,MAAe,cAIY;AAAA,EACjC,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAK7B;AAAA,EAEV,YAAY,MAAc,UAAsB,YAAoB;AACnE,SAAK,SAAS;AAAA,MACb;AAAA,MACA,WAAW,SAAS;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACZ;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,QAAmC;AAClC,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAyB;AACxB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QAAQ,OAA+F;AACtG,SAAK,OAAO,UAAU;AACtB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WACC,IACsC;AACtC,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAShB,YACC,IACmB;AACnB,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjB,aAEA;AACC,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EAER;AAAA;AAAA,EAUA,QAAQ,MAAc;AACrB,QAAI,KAAK,OAAO,SAAS,GAAI;AAC7B,SAAK,OAAO,OAAO;AAAA,EACpB;AACD;","names":[]}
1
+ {"version":3,"sources":["../src/column-builder.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Column, ColumnBaseConfig } from './column.ts';\nimport type { GelColumn, GelExtraConfigColumn } from './gel-core/index.ts';\nimport type { MySqlColumn } from './mysql-core/index.ts';\nimport type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from './pg-core/index.ts';\nimport type { SingleStoreColumn } from './singlestore-core/index.ts';\nimport type { SQL } from './sql/sql.ts';\nimport type { SQLiteColumn } from './sqlite-core/index.ts';\nimport type { Assume } from './utils.ts';\n\nexport type ColumnDataType =\n\t| 'array'\n\t| 'bigint'\n\t| 'boolean'\n\t| 'custom'\n\t| 'number'\n\t| 'object'\n\t| 'string';\n\nexport type ColumnDataArrayConstraint =\n\t| 'vector'\n\t| 'int64vector'\n\t| 'halfvector'\n\t| 'basecolumn'\n\t| 'point'\n\t| 'geometry'\n\t| 'line';\n\nexport type ColumnDataBigIntConstraint = 'int64' | 'uint64';\n\nexport type ColumnDataNumberConstraint =\n\t| 'double'\n\t| 'float'\n\t| 'int8'\n\t| 'int16'\n\t| 'int24'\n\t| 'int32'\n\t| 'int53'\n\t| 'udouble'\n\t| 'ufloat'\n\t| 'uint8'\n\t| 'uint16'\n\t| 'uint24'\n\t| 'uint32'\n\t| 'uint53'\n\t| 'unsigned'\n\t| 'year';\n\nexport type ColumnDataObjectConstraint =\n\t| 'buffer'\n\t| 'date'\n\t| 'geometry'\n\t| 'json'\n\t| 'line'\n\t| 'point'\n\t// Gel-specific\n\t| 'dateDuration'\n\t| 'duration'\n\t| 'localDate'\n\t| 'localDateTime'\n\t| 'localTime'\n\t| 'relDuration';\n\nexport type ColumnDataStringConstraint =\n\t| 'text'\n\t| 'binary'\n\t| 'cidr'\n\t| 'date'\n\t| 'datetime'\n\t| 'enum'\n\t| 'inet'\n\t| 'interval'\n\t| 'macaddr'\n\t| 'macaddr8'\n\t| 'numeric'\n\t| 'sparsevec'\n\t| 'time'\n\t| 'timestamp'\n\t| 'unumeric'\n\t| 'uuid';\n\nexport type ColumnDataConstraint =\n\t| ColumnDataArrayConstraint\n\t| ColumnDataBigIntConstraint\n\t| ColumnDataNumberConstraint\n\t| ColumnDataObjectConstraint\n\t| ColumnDataStringConstraint;\n\nexport type ColumnType =\n\t| ColumnDataType\n\t| `array ${ColumnDataArrayConstraint}`\n\t| `bigint ${ColumnDataBigIntConstraint}`\n\t| `number ${ColumnDataNumberConstraint}`\n\t| `object ${ColumnDataObjectConstraint}`\n\t| `string ${ColumnDataStringConstraint}`;\n\nexport interface ColumnTypeData<\n\tTType extends ColumnDataType = ColumnDataType,\n\tTConstraint extends ColumnDataConstraint | undefined = ColumnDataConstraint | undefined,\n> {\n\ttype: TType;\n\tconstraint: TConstraint;\n}\n\nexport type ExtractColumnTypeData<T extends ColumnType> = T extends\n\t`${infer Type extends ColumnDataType} ${infer Constraint extends ColumnDataConstraint}`\n\t? ColumnTypeData<Type, Constraint>\n\t: ColumnTypeData<Assume<T, ColumnDataType>, undefined>;\n\nexport function extractExtendedColumnType<TColumn extends Column>(\n\tcolumn: TColumn,\n): ExtractColumnTypeData<TColumn['_']['dataType']> {\n\tconst [type, constraint] = column.dataType.split(' ');\n\n\treturn { type, constraint } as any;\n}\n\nexport type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'common' | 'gel';\n\nexport type GeneratedStorageMode = 'virtual' | 'stored';\n\nexport type GeneratedType = 'always' | 'byDefault';\n\nexport interface GeneratedColumnConfig<TDataType> {\n\tas: TDataType | SQL | (() => SQL);\n\ttype?: GeneratedType;\n\tmode?: GeneratedStorageMode;\n}\n\nexport interface GeneratedIdentityConfig {\n\tsequenceName?: string;\n\tsequenceOptions?: PgSequenceOptions;\n\ttype: 'always' | 'byDefault';\n}\n\nexport interface ColumnBuilderBaseConfig<TDataType extends ColumnType> {\n\tname: string;\n\tdataType: TDataType;\n\tdata: unknown;\n\tdriverParam: unknown;\n\tnotNull?: boolean;\n\thasDefault?: boolean;\n}\n\nexport type MakeColumnConfig<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTTableName extends string,\n\tTDialect extends Dialect = 'common',\n\tTData = T extends { $type: infer U } ? U : T['data'],\n> = {\n\tname: string;\n\ttableName: TTableName;\n\tdataType: T['dataType'];\n\tdata: TData;\n\tdriverParam: T['driverParam'];\n\tnotNull: T['notNull'] extends true ? true : false;\n\thasDefault: T['hasDefault'] extends true ? true : false;\n\tisPrimaryKey: T extends { isPrimaryKey: true } ? true : false;\n\tisAutoincrement: T extends { isAutoincrement: true } ? true : false;\n\thasRuntimeDefault: T extends { hasRuntimeDefault: true } ? true : false;\n\tenumValues: T extends { enumValues: [string, ...string[]] } ? T['enumValues'] : undefined;\n\tbaseColumn: T extends { baseBuilder: infer U extends ColumnBuilderBase } ? BuildColumn<TTableName, U, TDialect>\n\t\t: never;\n\tidentity: T extends { identity: 'always' } ? 'always' : T extends { identity: 'byDefault' } ? 'byDefault' : undefined;\n\tgenerated: T extends { generated: infer G } ? unknown extends G ? undefined\n\t\t: G extends undefined ? undefined\n\t\t: G\n\t\t: undefined;\n} & {};\n\nexport interface ColumnBuilderRuntimeConfig<TData> {\n\tname: string;\n\tkeyAsName: boolean;\n\tnotNull: boolean;\n\tdefault: TData | SQL | undefined;\n\tdefaultFn: (() => TData | SQL) | undefined;\n\tonUpdateFn: (() => TData | SQL) | undefined;\n\thasDefault: boolean;\n\tprimaryKey: boolean;\n\tisUnique: boolean;\n\tuniqueName: string | undefined;\n\tuniqueType: string | undefined;\n\tdataType: string;\n\tcolumnType: string;\n\tgenerated: GeneratedColumnConfig<TData> | undefined;\n\tgeneratedIdentity: GeneratedIdentityConfig | undefined;\n}\n\nexport interface ColumnBuilderExtraConfig {\n\tprimaryKeyHasDefault?: boolean;\n}\n\nexport type NotNull<T> = T & {\n\t_: {\n\t\tnotNull: true;\n\t};\n};\n\nexport type HasDefault<T> = T & {\n\t_: {\n\t\thasDefault: true;\n\t};\n};\n\nexport type IsPrimaryKey<T> = T & {\n\t_: {\n\t\tisPrimaryKey: true;\n\t\tnotNull: true;\n\t};\n};\n\nexport type IsAutoincrement<T> = T & {\n\t_: {\n\t\tisAutoincrement: true;\n\t};\n};\n\nexport type HasRuntimeDefault<T> = T & {\n\t_: {\n\t\thasRuntimeDefault: true;\n\t};\n};\n\nexport type $Type<T, TType> = T & {\n\t_: {\n\t\t$type: TType;\n\t};\n};\n\nexport type HasGenerated<T, TGenerated> = T & {\n\t_: {\n\t\thasDefault: true;\n\t\tgenerated: TGenerated;\n\t};\n};\n\nexport type IsIdentity<T, TType extends 'always' | 'byDefault'> = T & {\n\t_: {\n\t\tnotNull: true;\n\t\thasDefault: true;\n\t\tidentity: TType;\n\t};\n};\n\nexport interface ColumnBuilderBase<\n\tT extends ColumnBuilderBaseConfig<ColumnType> = ColumnBuilderBaseConfig<ColumnType>,\n> {\n\t_: T;\n}\n\n// To understand how to use `ColumnBuilder` and `AnyColumnBuilder`, see `Column` and `AnyColumn` documentation.\nexport abstract class ColumnBuilder<\n\tT extends ColumnBuilderBaseConfig<ColumnType>,\n\tTRuntimeConfig extends object = object,\n\tTExtraConfig extends ColumnBuilderExtraConfig = ColumnBuilderExtraConfig,\n> implements ColumnBuilderBase<T> {\n\tstatic readonly [entityKind]: string = 'ColumnBuilder';\n\n\tdeclare _: T;\n\n\t/** @internal */\n\tprotected config: ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig;\n\n\tconstructor(name: string, dataType: ColumnType, columnType: string) {\n\t\tthis.config = {\n\t\t\tname,\n\t\t\tkeyAsName: name === '',\n\t\t\tnotNull: false,\n\t\t\tdefault: undefined,\n\t\t\thasDefault: false,\n\t\t\tprimaryKey: false,\n\t\t\tisUnique: false,\n\t\t\tuniqueName: undefined,\n\t\t\tuniqueType: undefined,\n\t\t\tdataType,\n\t\t\tcolumnType,\n\t\t\tgenerated: undefined,\n\t\t} as ColumnBuilderRuntimeConfig<T['data']> & TRuntimeConfig; // TODO: ??\n\t}\n\n\t/**\n\t * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n\t *\n\t * @example\n\t * ```ts\n\t * const users = pgTable('users', {\n\t * \tid: integer('id').$type<UserId>().primaryKey(),\n\t * \tdetails: json('details').$type<UserDetails>().notNull(),\n\t * });\n\t * ```\n\t */\n\t$type<TType>(): $Type<this, TType> {\n\t\treturn this as $Type<this, TType>;\n\t}\n\n\t/**\n\t * Adds a `not null` clause to the column definition.\n\t *\n\t * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n\t */\n\tnotNull(): NotNull<this> {\n\t\tthis.config.notNull = true;\n\t\treturn this as NotNull<this>;\n\t}\n\n\t/**\n\t * Adds a `default <value>` clause to the column definition.\n\t *\n\t * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n\t *\n\t * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n\t */\n\tdefault(value: (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL): HasDefault<this> {\n\t\tthis.config.default = value;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Adds a dynamic default value to the column.\n\t * The function will be called when the row is inserted, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$defaultFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasRuntimeDefault<HasDefault<this>> {\n\t\tthis.config.defaultFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasRuntimeDefault<HasDefault<this>>;\n\t}\n\n\t/**\n\t * Alias for {@link $defaultFn}.\n\t */\n\t$default = this.$defaultFn;\n\n\t/**\n\t * Adds a dynamic update value to the column.\n\t * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided.\n\t * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value.\n\t *\n\t * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n\t */\n\t$onUpdateFn(\n\t\tfn: () => (this['_'] extends { $type: infer U } ? U : this['_']['data']) | SQL,\n\t): HasDefault<this> {\n\t\tthis.config.onUpdateFn = fn;\n\t\tthis.config.hasDefault = true;\n\t\treturn this as HasDefault<this>;\n\t}\n\n\t/**\n\t * Alias for {@link $onUpdateFn}.\n\t */\n\t$onUpdate = this.$onUpdateFn;\n\n\t/**\n\t * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n\t *\n\t * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n\t */\n\tprimaryKey(): TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<this>>\n\t\t: IsPrimaryKey<this>\n\t{\n\t\tthis.config.primaryKey = true;\n\t\tthis.config.notNull = true;\n\t\treturn this as TExtraConfig['primaryKeyHasDefault'] extends true ? IsPrimaryKey<HasDefault<this>>\n\t\t\t: IsPrimaryKey<this>;\n\t}\n\n\tabstract generatedAlwaysAs(\n\t\tas: SQL | T['data'] | (() => SQL),\n\t\tconfig?: Partial<GeneratedColumnConfig<unknown>>,\n\t): HasGenerated<this, {\n\t\ttype: 'always';\n\t}>;\n\n\t/** @internal Sets the name of the column to the key within the table definition if a name was not given. */\n\tsetName(name: string) {\n\t\tif (this.config.name !== '') return;\n\t\tthis.config.name = name;\n\t}\n}\n\nexport type BuildColumn<\n\tTTableName extends string,\n\tTBuilder extends ColumnBuilderBase,\n\tTDialect extends Dialect,\n\tTBuiltConfig extends ColumnBaseConfig<ColumnType> = MakeColumnConfig<TBuilder['_'], TTableName, TDialect>,\n> = TDialect extends 'pg' ? PgColumn<TBuiltConfig, {}>\n\t: TDialect extends 'mysql' ? MySqlColumn<TBuiltConfig, {}>\n\t: TDialect extends 'sqlite' ? SQLiteColumn<TBuiltConfig, {}>\n\t: TDialect extends 'common' ? Column<TBuiltConfig, {}>\n\t: TDialect extends 'singlestore' ? SingleStoreColumn<TBuiltConfig, {}>\n\t: TDialect extends 'gel' ? GelColumn<TBuiltConfig, {}>\n\t: never;\n\nexport type BuildIndexColumn<\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? ExtraConfigColumn\n\t: TDialect extends 'gel' ? GelExtraConfigColumn\n\t: never;\n\n// TODO\n// try to make sql as well + indexRaw\n\n// optional after everything will be working as expected\n// also try to leave only needed methods for extraConfig\n// make an error if I pass .asc() to fk and so on\n\nexport type BuildColumns<\n\tTTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildColumn<\n\t\t\tTTableName,\n\t\t\tTConfigMap[Key],\n\t\t\tTDialect\n\t\t>;\n\t}\n\t& {};\n\nexport type BuildExtraConfigColumns<\n\t_TTableName extends string,\n\tTConfigMap extends Record<string, ColumnBuilderBase>,\n\tTDialect extends Dialect,\n> =\n\t& {\n\t\t[Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;\n\t}\n\t& {};\n\nexport type ChangeColumnTableName<\n\tTColumn extends Column,\n\tTAlias extends string,\n\tTDialect extends Dialect,\n> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>>\n\t: never;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AA6GpB,SAAS,0BACf,QACkD;AAClD,QAAM,CAAC,MAAM,UAAU,IAAI,OAAO,SAAS,MAAM,GAAG;AAEpD,SAAO,EAAE,MAAM,WAAW;AAC3B;AAwIO,MAAe,cAIY;AAAA,EACjC,QAAiB,wBAAU,IAAY;AAAA;AAAA,EAK7B;AAAA,EAEV,YAAY,MAAc,UAAsB,YAAoB;AACnE,SAAK,SAAS;AAAA,MACb;AAAA,MACA,WAAW,SAAS;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,WAAW;AAAA,IACZ;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,QAAmC;AAClC,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,UAAyB;AACxB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,QAAQ,OAA+F;AACtG,SAAK,OAAO,UAAU;AACtB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,WACC,IACsC;AACtC,SAAK,OAAO,YAAY;AACxB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAShB,YACC,IACmB;AACnB,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjB,aAEA;AACC,SAAK,OAAO,aAAa;AACzB,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EAER;AAAA;AAAA,EAUA,QAAQ,MAAc;AACrB,QAAI,KAAK,OAAO,SAAS,GAAI;AAC7B,SAAK,OAAO,OAAO;AAAA,EACpB;AACD;","names":[]}
@@ -1,8 +1,6 @@
1
1
  import { entityKind } from "./entity.cjs";
2
- import type { CockroachColumn, ExtraConfigColumn as CockroachExtraConfigColumn } from "./cockroach-core/index.cjs";
3
2
  import type { Column, ColumnBaseConfig } from "./column.cjs";
4
3
  import type { GelColumn, GelExtraConfigColumn } from "./gel-core/index.cjs";
5
- import type { MsSqlColumn } from "./mssql-core/index.cjs";
6
4
  import type { MySqlColumn } from "./mysql-core/index.cjs";
7
5
  import type { ExtraConfigColumn, PgColumn, PgSequenceOptions } from "./pg-core/index.cjs";
8
6
  import type { SingleStoreColumn } from "./singlestore-core/index.cjs";
@@ -14,7 +12,7 @@ export type ColumnDataArrayConstraint = 'vector' | 'int64vector' | 'halfvector'
14
12
  export type ColumnDataBigIntConstraint = 'int64' | 'uint64';
15
13
  export type ColumnDataNumberConstraint = 'double' | 'float' | 'int8' | 'int16' | 'int24' | 'int32' | 'int53' | 'udouble' | 'ufloat' | 'uint8' | 'uint16' | 'uint24' | 'uint32' | 'uint53' | 'unsigned' | 'year';
16
14
  export type ColumnDataObjectConstraint = 'buffer' | 'date' | 'geometry' | 'json' | 'line' | 'point' | 'dateDuration' | 'duration' | 'localDate' | 'localDateTime' | 'localTime' | 'relDuration';
17
- export type ColumnDataStringConstraint = 'binary' | 'cidr' | 'date' | 'datetime' | 'enum' | 'inet' | 'int64' | 'interval' | 'macaddr' | 'macaddr8' | 'numeric' | 'sparsevec' | 'time' | 'timestamp' | 'unumeric' | 'uuid';
15
+ export type ColumnDataStringConstraint = 'text' | 'binary' | 'cidr' | 'date' | 'datetime' | 'enum' | 'inet' | 'interval' | 'macaddr' | 'macaddr8' | 'numeric' | 'sparsevec' | 'time' | 'timestamp' | 'unumeric' | 'uuid';
18
16
  export type ColumnDataConstraint = ColumnDataArrayConstraint | ColumnDataBigIntConstraint | ColumnDataNumberConstraint | ColumnDataObjectConstraint | ColumnDataStringConstraint;
19
17
  export type ColumnType = ColumnDataType | `array ${ColumnDataArrayConstraint}` | `bigint ${ColumnDataBigIntConstraint}` | `number ${ColumnDataNumberConstraint}` | `object ${ColumnDataObjectConstraint}` | `string ${ColumnDataStringConstraint}`;
20
18
  export interface ColumnTypeData<TType extends ColumnDataType = ColumnDataType, TConstraint extends ColumnDataConstraint | undefined = ColumnDataConstraint | undefined> {
@@ -23,8 +21,8 @@ export interface ColumnTypeData<TType extends ColumnDataType = ColumnDataType, T
23
21
  }
24
22
  export type ExtractColumnTypeData<T extends ColumnType> = T extends `${infer Type extends ColumnDataType} ${infer Constraint extends ColumnDataConstraint}` ? ColumnTypeData<Type, Constraint> : ColumnTypeData<Assume<T, ColumnDataType>, undefined>;
25
23
  export declare function extractExtendedColumnType<TColumn extends Column>(column: TColumn): ExtractColumnTypeData<TColumn['_']['dataType']>;
26
- export type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'mssql' | 'common' | 'gel' | 'cockroach';
27
- export type GeneratedStorageMode = 'virtual' | 'stored' | 'persisted';
24
+ export type Dialect = 'pg' | 'mysql' | 'sqlite' | 'singlestore' | 'common' | 'gel';
25
+ export type GeneratedStorageMode = 'virtual' | 'stored';
28
26
  export type GeneratedType = 'always' | 'byDefault';
29
27
  export interface GeneratedColumnConfig<TDataType> {
30
28
  as: TDataType | SQL | (() => SQL);
@@ -37,6 +35,7 @@ export interface GeneratedIdentityConfig {
37
35
  type: 'always' | 'byDefault';
38
36
  }
39
37
  export interface ColumnBuilderBaseConfig<TDataType extends ColumnType> {
38
+ name: string;
40
39
  dataType: TDataType;
41
40
  data: unknown;
42
41
  driverParam: unknown;
@@ -88,7 +87,6 @@ export interface ColumnBuilderRuntimeConfig<TData> {
88
87
  primaryKey: boolean;
89
88
  isUnique: boolean;
90
89
  uniqueName: string | undefined;
91
- uniqueNameExplicit: boolean | undefined;
92
90
  uniqueType: string | undefined;
93
91
  dataType: string;
94
92
  columnType: string;
@@ -129,7 +127,7 @@ export type $Type<T, TType> = T & {
129
127
  $type: TType;
130
128
  };
131
129
  };
132
- export type HasGenerated<T, TGenerated = {}> = T & {
130
+ export type HasGenerated<T, TGenerated> = T & {
133
131
  _: {
134
132
  hasDefault: true;
135
133
  generated: TGenerated;
@@ -218,12 +216,12 @@ export declare abstract class ColumnBuilder<T extends ColumnBuilderBaseConfig<Co
218
216
  type: 'always';
219
217
  }>;
220
218
  }
221
- export type BuildColumn<TTableName extends string, TBuilder extends ColumnBuilderBase, TDialect extends Dialect, TBuiltConfig extends ColumnBaseConfig<ColumnType> = MakeColumnConfig<TBuilder['_'], TTableName, TDialect>> = TDialect extends 'pg' ? PgColumn<TBuiltConfig, {}> : TDialect extends 'mysql' ? MySqlColumn<TBuiltConfig, {}> : TDialect extends 'mssql' ? MsSqlColumn<TBuiltConfig, {}> : TDialect extends 'sqlite' ? SQLiteColumn<TBuiltConfig, {}> : TDialect extends 'singlestore' ? SingleStoreColumn<TBuiltConfig, {}> : TDialect extends 'gel' ? GelColumn<TBuiltConfig, {}> : TDialect extends 'cockroach' ? CockroachColumn<TBuiltConfig, {}> : TDialect extends 'common' ? Column<TBuiltConfig, {}> : never;
222
- export type BuildIndexColumn<TDialect extends Dialect> = TDialect extends 'pg' ? ExtraConfigColumn : TDialect extends 'cockroach' ? CockroachExtraConfigColumn : TDialect extends 'gel' ? GelExtraConfigColumn : never;
219
+ export type BuildColumn<TTableName extends string, TBuilder extends ColumnBuilderBase, TDialect extends Dialect, TBuiltConfig extends ColumnBaseConfig<ColumnType> = MakeColumnConfig<TBuilder['_'], TTableName, TDialect>> = TDialect extends 'pg' ? PgColumn<TBuiltConfig, {}> : TDialect extends 'mysql' ? MySqlColumn<TBuiltConfig, {}> : TDialect extends 'sqlite' ? SQLiteColumn<TBuiltConfig, {}> : TDialect extends 'common' ? Column<TBuiltConfig, {}> : TDialect extends 'singlestore' ? SingleStoreColumn<TBuiltConfig, {}> : TDialect extends 'gel' ? GelColumn<TBuiltConfig, {}> : never;
220
+ export type BuildIndexColumn<TDialect extends Dialect> = TDialect extends 'pg' ? ExtraConfigColumn : TDialect extends 'gel' ? GelExtraConfigColumn : never;
223
221
  export type BuildColumns<TTableName extends string, TConfigMap extends Record<string, ColumnBuilderBase>, TDialect extends Dialect> = {
224
222
  [Key in keyof TConfigMap]: BuildColumn<TTableName, TConfigMap[Key], TDialect>;
225
223
  } & {};
226
224
  export type BuildExtraConfigColumns<_TTableName extends string, TConfigMap extends Record<string, ColumnBuilderBase>, TDialect extends Dialect> = {
227
225
  [Key in keyof TConfigMap]: BuildIndexColumn<TDialect>;
228
226
  } & {};
229
- export type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'mssql' ? MsSqlColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'cockroach' ? CockroachColumn<MakeColumnConfig<TColumn['_'], TAlias>> : never;
227
+ export type ChangeColumnTableName<TColumn extends Column, TAlias extends string, TDialect extends Dialect> = TDialect extends 'pg' ? PgColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'mysql' ? MySqlColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'singlestore' ? SingleStoreColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'sqlite' ? SQLiteColumn<MakeColumnConfig<TColumn['_'], TAlias>> : TDialect extends 'gel' ? GelColumn<MakeColumnConfig<TColumn['_'], TAlias>> : never;