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

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 (1301) 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/gel-core/columns/bigint.cjs.map +1 -1
  18. package/gel-core/columns/bigint.d.cts +1 -0
  19. package/gel-core/columns/bigint.d.ts +1 -0
  20. package/gel-core/columns/bigint.js.map +1 -1
  21. package/gel-core/columns/bigintT.cjs.map +1 -1
  22. package/gel-core/columns/bigintT.d.cts +1 -0
  23. package/gel-core/columns/bigintT.d.ts +1 -0
  24. package/gel-core/columns/bigintT.js.map +1 -1
  25. package/gel-core/columns/boolean.cjs.map +1 -1
  26. package/gel-core/columns/boolean.d.cts +1 -0
  27. package/gel-core/columns/boolean.d.ts +1 -0
  28. package/gel-core/columns/boolean.js.map +1 -1
  29. package/gel-core/columns/bytes.cjs.map +1 -1
  30. package/gel-core/columns/bytes.d.cts +1 -0
  31. package/gel-core/columns/bytes.d.ts +1 -0
  32. package/gel-core/columns/bytes.js.map +1 -1
  33. package/gel-core/columns/custom.cjs.map +1 -1
  34. package/gel-core/columns/custom.d.cts +1 -0
  35. package/gel-core/columns/custom.d.ts +1 -0
  36. package/gel-core/columns/custom.js.map +1 -1
  37. package/gel-core/columns/date-duration.cjs.map +1 -1
  38. package/gel-core/columns/date-duration.d.cts +1 -0
  39. package/gel-core/columns/date-duration.d.ts +1 -0
  40. package/gel-core/columns/date-duration.js.map +1 -1
  41. package/gel-core/columns/decimal.cjs.map +1 -1
  42. package/gel-core/columns/decimal.d.cts +1 -0
  43. package/gel-core/columns/decimal.d.ts +1 -0
  44. package/gel-core/columns/decimal.js.map +1 -1
  45. package/gel-core/columns/double-precision.cjs.map +1 -1
  46. package/gel-core/columns/double-precision.d.cts +1 -0
  47. package/gel-core/columns/double-precision.d.ts +1 -0
  48. package/gel-core/columns/double-precision.js.map +1 -1
  49. package/gel-core/columns/duration.cjs.map +1 -1
  50. package/gel-core/columns/duration.d.cts +1 -0
  51. package/gel-core/columns/duration.d.ts +1 -0
  52. package/gel-core/columns/duration.js.map +1 -1
  53. package/gel-core/columns/integer.cjs.map +1 -1
  54. package/gel-core/columns/integer.d.cts +1 -0
  55. package/gel-core/columns/integer.d.ts +1 -0
  56. package/gel-core/columns/integer.js.map +1 -1
  57. package/gel-core/columns/json.cjs.map +1 -1
  58. package/gel-core/columns/json.d.cts +1 -0
  59. package/gel-core/columns/json.d.ts +1 -0
  60. package/gel-core/columns/json.js.map +1 -1
  61. package/gel-core/columns/localdate.cjs.map +1 -1
  62. package/gel-core/columns/localdate.d.cts +1 -0
  63. package/gel-core/columns/localdate.d.ts +1 -0
  64. package/gel-core/columns/localdate.js.map +1 -1
  65. package/gel-core/columns/localtime.cjs.map +1 -1
  66. package/gel-core/columns/localtime.d.cts +1 -0
  67. package/gel-core/columns/localtime.d.ts +1 -0
  68. package/gel-core/columns/localtime.js.map +1 -1
  69. package/gel-core/columns/real.cjs.map +1 -1
  70. package/gel-core/columns/real.d.cts +1 -0
  71. package/gel-core/columns/real.d.ts +1 -0
  72. package/gel-core/columns/real.js.map +1 -1
  73. package/gel-core/columns/relative-duration.cjs.map +1 -1
  74. package/gel-core/columns/relative-duration.d.cts +1 -0
  75. package/gel-core/columns/relative-duration.d.ts +1 -0
  76. package/gel-core/columns/relative-duration.js.map +1 -1
  77. package/gel-core/columns/smallint.cjs.map +1 -1
  78. package/gel-core/columns/smallint.d.cts +1 -0
  79. package/gel-core/columns/smallint.d.ts +1 -0
  80. package/gel-core/columns/smallint.js.map +1 -1
  81. package/gel-core/columns/text.cjs.map +1 -1
  82. package/gel-core/columns/text.d.cts +1 -0
  83. package/gel-core/columns/text.d.ts +1 -0
  84. package/gel-core/columns/text.js.map +1 -1
  85. package/gel-core/columns/timestamp.cjs.map +1 -1
  86. package/gel-core/columns/timestamp.d.cts +1 -0
  87. package/gel-core/columns/timestamp.d.ts +1 -0
  88. package/gel-core/columns/timestamp.js.map +1 -1
  89. package/gel-core/columns/timestamptz.cjs.map +1 -1
  90. package/gel-core/columns/timestamptz.d.cts +1 -0
  91. package/gel-core/columns/timestamptz.d.ts +1 -0
  92. package/gel-core/columns/timestamptz.js.map +1 -1
  93. package/gel-core/columns/uuid.cjs.map +1 -1
  94. package/gel-core/columns/uuid.d.cts +1 -0
  95. package/gel-core/columns/uuid.d.ts +1 -0
  96. package/gel-core/columns/uuid.js.map +1 -1
  97. package/gel-core/query-builders/insert.cjs.map +1 -1
  98. package/gel-core/query-builders/insert.d.cts +9 -6
  99. package/gel-core/query-builders/insert.d.ts +9 -6
  100. package/gel-core/query-builders/insert.js.map +1 -1
  101. package/gel-core/query-builders/update.cjs.map +1 -1
  102. package/gel-core/query-builders/update.d.cts +1 -1
  103. package/gel-core/query-builders/update.d.ts +1 -1
  104. package/gel-core/query-builders/update.js.map +1 -1
  105. package/mysql-core/columns/bigint.cjs.map +1 -1
  106. package/mysql-core/columns/bigint.d.cts +2 -0
  107. package/mysql-core/columns/bigint.d.ts +2 -0
  108. package/mysql-core/columns/bigint.js.map +1 -1
  109. package/mysql-core/columns/binary.cjs +1 -0
  110. package/mysql-core/columns/binary.cjs.map +1 -1
  111. package/mysql-core/columns/binary.d.cts +2 -0
  112. package/mysql-core/columns/binary.d.ts +2 -0
  113. package/mysql-core/columns/binary.js +1 -0
  114. package/mysql-core/columns/binary.js.map +1 -1
  115. package/mysql-core/columns/boolean.cjs.map +1 -1
  116. package/mysql-core/columns/boolean.d.cts +1 -0
  117. package/mysql-core/columns/boolean.d.ts +1 -0
  118. package/mysql-core/columns/boolean.js.map +1 -1
  119. package/mysql-core/columns/char.cjs +1 -0
  120. package/mysql-core/columns/char.cjs.map +1 -1
  121. package/mysql-core/columns/char.d.cts +2 -0
  122. package/mysql-core/columns/char.d.ts +2 -0
  123. package/mysql-core/columns/char.js +1 -0
  124. package/mysql-core/columns/char.js.map +1 -1
  125. package/mysql-core/columns/common.cjs.map +1 -1
  126. package/mysql-core/columns/common.d.cts +1 -1
  127. package/mysql-core/columns/common.d.ts +1 -1
  128. package/mysql-core/columns/common.js.map +1 -1
  129. package/mysql-core/columns/custom.cjs.map +1 -1
  130. package/mysql-core/columns/custom.d.cts +1 -0
  131. package/mysql-core/columns/custom.d.ts +1 -0
  132. package/mysql-core/columns/custom.js.map +1 -1
  133. package/mysql-core/columns/date.cjs.map +1 -1
  134. package/mysql-core/columns/date.d.cts +2 -0
  135. package/mysql-core/columns/date.d.ts +2 -0
  136. package/mysql-core/columns/date.js.map +1 -1
  137. package/mysql-core/columns/datetime.cjs.map +1 -1
  138. package/mysql-core/columns/datetime.d.cts +2 -0
  139. package/mysql-core/columns/datetime.d.ts +2 -0
  140. package/mysql-core/columns/datetime.js.map +1 -1
  141. package/mysql-core/columns/decimal.cjs.map +1 -1
  142. package/mysql-core/columns/decimal.d.cts +3 -0
  143. package/mysql-core/columns/decimal.d.ts +3 -0
  144. package/mysql-core/columns/decimal.js.map +1 -1
  145. package/mysql-core/columns/double.cjs.map +1 -1
  146. package/mysql-core/columns/double.d.cts +1 -0
  147. package/mysql-core/columns/double.d.ts +1 -0
  148. package/mysql-core/columns/double.js.map +1 -1
  149. package/mysql-core/columns/enum.cjs.map +1 -1
  150. package/mysql-core/columns/enum.d.cts +2 -0
  151. package/mysql-core/columns/enum.d.ts +2 -0
  152. package/mysql-core/columns/enum.js.map +1 -1
  153. package/mysql-core/columns/float.cjs.map +1 -1
  154. package/mysql-core/columns/float.d.cts +1 -0
  155. package/mysql-core/columns/float.d.ts +1 -0
  156. package/mysql-core/columns/float.js.map +1 -1
  157. package/mysql-core/columns/int.cjs.map +1 -1
  158. package/mysql-core/columns/int.d.cts +1 -0
  159. package/mysql-core/columns/int.d.ts +1 -0
  160. package/mysql-core/columns/int.js.map +1 -1
  161. package/mysql-core/columns/json.cjs.map +1 -1
  162. package/mysql-core/columns/json.d.cts +1 -0
  163. package/mysql-core/columns/json.d.ts +1 -0
  164. package/mysql-core/columns/json.js.map +1 -1
  165. package/mysql-core/columns/mediumint.cjs.map +1 -1
  166. package/mysql-core/columns/mediumint.d.cts +1 -0
  167. package/mysql-core/columns/mediumint.d.ts +1 -0
  168. package/mysql-core/columns/mediumint.js.map +1 -1
  169. package/mysql-core/columns/real.cjs.map +1 -1
  170. package/mysql-core/columns/real.d.cts +1 -0
  171. package/mysql-core/columns/real.d.ts +1 -0
  172. package/mysql-core/columns/real.js.map +1 -1
  173. package/mysql-core/columns/serial.cjs.map +1 -1
  174. package/mysql-core/columns/serial.d.cts +1 -0
  175. package/mysql-core/columns/serial.d.ts +1 -0
  176. package/mysql-core/columns/serial.js.map +1 -1
  177. package/mysql-core/columns/smallint.cjs.map +1 -1
  178. package/mysql-core/columns/smallint.d.cts +1 -0
  179. package/mysql-core/columns/smallint.d.ts +1 -0
  180. package/mysql-core/columns/smallint.js.map +1 -1
  181. package/mysql-core/columns/text.cjs.map +1 -1
  182. package/mysql-core/columns/text.d.cts +1 -0
  183. package/mysql-core/columns/text.d.ts +1 -0
  184. package/mysql-core/columns/text.js.map +1 -1
  185. package/mysql-core/columns/time.cjs.map +1 -1
  186. package/mysql-core/columns/time.d.cts +1 -0
  187. package/mysql-core/columns/time.d.ts +1 -0
  188. package/mysql-core/columns/time.js.map +1 -1
  189. package/mysql-core/columns/timestamp.cjs.map +1 -1
  190. package/mysql-core/columns/timestamp.d.cts +2 -0
  191. package/mysql-core/columns/timestamp.d.ts +2 -0
  192. package/mysql-core/columns/timestamp.js.map +1 -1
  193. package/mysql-core/columns/tinyint.cjs.map +1 -1
  194. package/mysql-core/columns/tinyint.d.cts +1 -0
  195. package/mysql-core/columns/tinyint.d.ts +1 -0
  196. package/mysql-core/columns/tinyint.js.map +1 -1
  197. package/mysql-core/columns/varbinary.cjs.map +1 -1
  198. package/mysql-core/columns/varbinary.d.cts +1 -0
  199. package/mysql-core/columns/varbinary.d.ts +1 -0
  200. package/mysql-core/columns/varbinary.js.map +1 -1
  201. package/mysql-core/columns/varchar.cjs +1 -1
  202. package/mysql-core/columns/varchar.cjs.map +1 -1
  203. package/mysql-core/columns/varchar.d.cts +2 -1
  204. package/mysql-core/columns/varchar.d.ts +2 -1
  205. package/mysql-core/columns/varchar.js +1 -1
  206. package/mysql-core/columns/varchar.js.map +1 -1
  207. package/mysql-core/columns/year.cjs.map +1 -1
  208. package/mysql-core/columns/year.d.cts +1 -0
  209. package/mysql-core/columns/year.d.ts +1 -0
  210. package/mysql-core/columns/year.js.map +1 -1
  211. package/mysql-core/dialect.cjs +0 -3
  212. package/mysql-core/dialect.cjs.map +1 -1
  213. package/mysql-core/dialect.d.cts +0 -1
  214. package/mysql-core/dialect.d.ts +0 -1
  215. package/mysql-core/dialect.js +0 -3
  216. package/mysql-core/dialect.js.map +1 -1
  217. package/mysql-core/query-builders/insert.cjs.map +1 -1
  218. package/mysql-core/query-builders/insert.d.cts +2 -2
  219. package/mysql-core/query-builders/insert.d.ts +2 -2
  220. package/mysql-core/query-builders/insert.js.map +1 -1
  221. package/mysql-core/query-builders/update.cjs.map +1 -1
  222. package/mysql-core/query-builders/update.d.cts +1 -1
  223. package/mysql-core/query-builders/update.d.ts +1 -1
  224. package/mysql-core/query-builders/update.js.map +1 -1
  225. package/mysql-proxy/driver.cjs +2 -2
  226. package/mysql-proxy/driver.cjs.map +1 -1
  227. package/mysql-proxy/driver.d.cts +1 -2
  228. package/mysql-proxy/driver.d.ts +1 -2
  229. package/mysql-proxy/driver.js +2 -2
  230. package/mysql-proxy/driver.js.map +1 -1
  231. package/node-postgres/session.cjs.map +1 -1
  232. package/node-postgres/session.js.map +1 -1
  233. package/package.json +22 -1464
  234. package/pg-core/columns/bigint.cjs.map +1 -1
  235. package/pg-core/columns/bigint.d.cts +2 -0
  236. package/pg-core/columns/bigint.d.ts +2 -0
  237. package/pg-core/columns/bigint.js.map +1 -1
  238. package/pg-core/columns/bigserial.cjs +0 -1
  239. package/pg-core/columns/bigserial.cjs.map +1 -1
  240. package/pg-core/columns/bigserial.d.cts +2 -0
  241. package/pg-core/columns/bigserial.d.ts +2 -0
  242. package/pg-core/columns/bigserial.js +0 -1
  243. package/pg-core/columns/bigserial.js.map +1 -1
  244. package/pg-core/columns/boolean.cjs.map +1 -1
  245. package/pg-core/columns/boolean.d.cts +1 -0
  246. package/pg-core/columns/boolean.d.ts +1 -0
  247. package/pg-core/columns/boolean.js.map +1 -1
  248. package/pg-core/columns/bytea.cjs.map +1 -1
  249. package/pg-core/columns/bytea.d.cts +1 -0
  250. package/pg-core/columns/bytea.d.ts +1 -0
  251. package/pg-core/columns/bytea.js.map +1 -1
  252. package/pg-core/columns/char.cjs +1 -0
  253. package/pg-core/columns/char.cjs.map +1 -1
  254. package/pg-core/columns/char.d.cts +2 -0
  255. package/pg-core/columns/char.d.ts +2 -0
  256. package/pg-core/columns/char.js +1 -0
  257. package/pg-core/columns/char.js.map +1 -1
  258. package/pg-core/columns/cidr.cjs.map +1 -1
  259. package/pg-core/columns/cidr.d.cts +1 -0
  260. package/pg-core/columns/cidr.d.ts +1 -0
  261. package/pg-core/columns/cidr.js.map +1 -1
  262. package/pg-core/columns/common.cjs +10 -11
  263. package/pg-core/columns/common.cjs.map +1 -1
  264. package/pg-core/columns/common.d.cts +2 -3
  265. package/pg-core/columns/common.d.ts +2 -3
  266. package/pg-core/columns/common.js +10 -11
  267. package/pg-core/columns/common.js.map +1 -1
  268. package/pg-core/columns/custom.cjs.map +1 -1
  269. package/pg-core/columns/custom.d.cts +1 -0
  270. package/pg-core/columns/custom.d.ts +1 -0
  271. package/pg-core/columns/custom.js.map +1 -1
  272. package/pg-core/columns/date.cjs.map +1 -1
  273. package/pg-core/columns/date.d.cts +2 -0
  274. package/pg-core/columns/date.d.ts +2 -0
  275. package/pg-core/columns/date.js.map +1 -1
  276. package/pg-core/columns/double-precision.cjs.map +1 -1
  277. package/pg-core/columns/double-precision.d.cts +1 -0
  278. package/pg-core/columns/double-precision.d.ts +1 -0
  279. package/pg-core/columns/double-precision.js.map +1 -1
  280. package/pg-core/columns/enum.cjs.map +1 -1
  281. package/pg-core/columns/enum.d.cts +2 -0
  282. package/pg-core/columns/enum.d.ts +2 -0
  283. package/pg-core/columns/enum.js.map +1 -1
  284. package/pg-core/columns/inet.cjs.map +1 -1
  285. package/pg-core/columns/inet.d.cts +1 -0
  286. package/pg-core/columns/inet.d.ts +1 -0
  287. package/pg-core/columns/inet.js.map +1 -1
  288. package/pg-core/columns/integer.cjs.map +1 -1
  289. package/pg-core/columns/integer.d.cts +1 -0
  290. package/pg-core/columns/integer.d.ts +1 -0
  291. package/pg-core/columns/integer.js.map +1 -1
  292. package/pg-core/columns/interval.cjs.map +1 -1
  293. package/pg-core/columns/interval.d.cts +1 -0
  294. package/pg-core/columns/interval.d.ts +1 -0
  295. package/pg-core/columns/interval.js.map +1 -1
  296. package/pg-core/columns/json.cjs.map +1 -1
  297. package/pg-core/columns/json.d.cts +1 -0
  298. package/pg-core/columns/json.d.ts +1 -0
  299. package/pg-core/columns/json.js.map +1 -1
  300. package/pg-core/columns/jsonb.cjs.map +1 -1
  301. package/pg-core/columns/jsonb.d.cts +1 -0
  302. package/pg-core/columns/jsonb.d.ts +1 -0
  303. package/pg-core/columns/jsonb.js.map +1 -1
  304. package/pg-core/columns/line.cjs +0 -2
  305. package/pg-core/columns/line.cjs.map +1 -1
  306. package/pg-core/columns/line.d.cts +2 -2
  307. package/pg-core/columns/line.d.ts +2 -2
  308. package/pg-core/columns/line.js +0 -2
  309. package/pg-core/columns/line.js.map +1 -1
  310. package/pg-core/columns/macaddr.cjs.map +1 -1
  311. package/pg-core/columns/macaddr.d.cts +1 -0
  312. package/pg-core/columns/macaddr.d.ts +1 -0
  313. package/pg-core/columns/macaddr.js.map +1 -1
  314. package/pg-core/columns/macaddr8.cjs.map +1 -1
  315. package/pg-core/columns/macaddr8.d.cts +1 -0
  316. package/pg-core/columns/macaddr8.d.ts +1 -0
  317. package/pg-core/columns/macaddr8.js.map +1 -1
  318. package/pg-core/columns/numeric.cjs.map +1 -1
  319. package/pg-core/columns/numeric.d.cts +3 -0
  320. package/pg-core/columns/numeric.d.ts +3 -0
  321. package/pg-core/columns/numeric.js.map +1 -1
  322. package/pg-core/columns/point.cjs +0 -2
  323. package/pg-core/columns/point.cjs.map +1 -1
  324. package/pg-core/columns/point.d.cts +2 -2
  325. package/pg-core/columns/point.d.ts +2 -2
  326. package/pg-core/columns/point.js +0 -2
  327. package/pg-core/columns/point.js.map +1 -1
  328. package/pg-core/columns/postgis_extension/geometry.cjs +8 -14
  329. package/pg-core/columns/postgis_extension/geometry.cjs.map +1 -1
  330. package/pg-core/columns/postgis_extension/geometry.d.cts +6 -16
  331. package/pg-core/columns/postgis_extension/geometry.d.ts +6 -16
  332. package/pg-core/columns/postgis_extension/geometry.js +8 -14
  333. package/pg-core/columns/postgis_extension/geometry.js.map +1 -1
  334. package/pg-core/columns/postgis_extension/utils.cjs +3 -3
  335. package/pg-core/columns/postgis_extension/utils.cjs.map +1 -1
  336. package/pg-core/columns/postgis_extension/utils.d.cts +1 -4
  337. package/pg-core/columns/postgis_extension/utils.d.ts +1 -4
  338. package/pg-core/columns/postgis_extension/utils.js +3 -3
  339. package/pg-core/columns/postgis_extension/utils.js.map +1 -1
  340. package/pg-core/columns/real.cjs.map +1 -1
  341. package/pg-core/columns/real.d.cts +1 -0
  342. package/pg-core/columns/real.d.ts +1 -0
  343. package/pg-core/columns/real.js.map +1 -1
  344. package/pg-core/columns/serial.cjs.map +1 -1
  345. package/pg-core/columns/serial.d.cts +1 -0
  346. package/pg-core/columns/serial.d.ts +1 -0
  347. package/pg-core/columns/serial.js.map +1 -1
  348. package/pg-core/columns/smallint.cjs.map +1 -1
  349. package/pg-core/columns/smallint.d.cts +1 -0
  350. package/pg-core/columns/smallint.d.ts +1 -0
  351. package/pg-core/columns/smallint.js.map +1 -1
  352. package/pg-core/columns/smallserial.cjs.map +1 -1
  353. package/pg-core/columns/smallserial.d.cts +1 -0
  354. package/pg-core/columns/smallserial.d.ts +1 -0
  355. package/pg-core/columns/smallserial.js.map +1 -1
  356. package/pg-core/columns/text.cjs.map +1 -1
  357. package/pg-core/columns/text.d.cts +1 -0
  358. package/pg-core/columns/text.d.ts +1 -0
  359. package/pg-core/columns/text.js.map +1 -1
  360. package/pg-core/columns/time.cjs.map +1 -1
  361. package/pg-core/columns/time.d.cts +1 -0
  362. package/pg-core/columns/time.d.ts +1 -0
  363. package/pg-core/columns/time.js.map +1 -1
  364. package/pg-core/columns/timestamp.cjs.map +1 -1
  365. package/pg-core/columns/timestamp.d.cts +2 -0
  366. package/pg-core/columns/timestamp.d.ts +2 -0
  367. package/pg-core/columns/timestamp.js.map +1 -1
  368. package/pg-core/columns/uuid.cjs.map +1 -1
  369. package/pg-core/columns/uuid.d.cts +1 -0
  370. package/pg-core/columns/uuid.d.ts +1 -0
  371. package/pg-core/columns/uuid.js.map +1 -1
  372. package/pg-core/columns/varchar.cjs.map +1 -1
  373. package/pg-core/columns/varchar.d.cts +1 -0
  374. package/pg-core/columns/varchar.d.ts +1 -0
  375. package/pg-core/columns/varchar.js.map +1 -1
  376. package/pg-core/columns/vector_extension/bit.cjs.map +1 -1
  377. package/pg-core/columns/vector_extension/bit.d.cts +1 -0
  378. package/pg-core/columns/vector_extension/bit.d.ts +1 -0
  379. package/pg-core/columns/vector_extension/bit.js.map +1 -1
  380. package/pg-core/columns/vector_extension/halfvec.cjs.map +1 -1
  381. package/pg-core/columns/vector_extension/halfvec.d.cts +1 -0
  382. package/pg-core/columns/vector_extension/halfvec.d.ts +1 -0
  383. package/pg-core/columns/vector_extension/halfvec.js.map +1 -1
  384. package/pg-core/columns/vector_extension/sparsevec.cjs.map +1 -1
  385. package/pg-core/columns/vector_extension/sparsevec.d.cts +1 -0
  386. package/pg-core/columns/vector_extension/sparsevec.d.ts +1 -0
  387. package/pg-core/columns/vector_extension/sparsevec.js.map +1 -1
  388. package/pg-core/columns/vector_extension/vector.cjs.map +1 -1
  389. package/pg-core/columns/vector_extension/vector.d.cts +1 -0
  390. package/pg-core/columns/vector_extension/vector.d.ts +1 -0
  391. package/pg-core/columns/vector_extension/vector.js.map +1 -1
  392. package/pg-core/foreign-keys.cjs +0 -4
  393. package/pg-core/foreign-keys.cjs.map +1 -1
  394. package/pg-core/foreign-keys.d.cts +0 -2
  395. package/pg-core/foreign-keys.d.ts +0 -2
  396. package/pg-core/foreign-keys.js +0 -4
  397. package/pg-core/foreign-keys.js.map +1 -1
  398. package/pg-core/primary-keys.cjs +0 -3
  399. package/pg-core/primary-keys.cjs.map +1 -1
  400. package/pg-core/primary-keys.d.cts +0 -1
  401. package/pg-core/primary-keys.d.ts +0 -1
  402. package/pg-core/primary-keys.js +0 -3
  403. package/pg-core/primary-keys.js.map +1 -1
  404. package/pg-core/query-builders/insert.cjs.map +1 -1
  405. package/pg-core/query-builders/insert.d.cts +9 -6
  406. package/pg-core/query-builders/insert.d.ts +9 -6
  407. package/pg-core/query-builders/insert.js.map +1 -1
  408. package/pg-core/query-builders/update.cjs.map +1 -1
  409. package/pg-core/query-builders/update.d.cts +1 -1
  410. package/pg-core/query-builders/update.d.ts +1 -1
  411. package/pg-core/query-builders/update.js.map +1 -1
  412. package/pg-core/unique-constraint.cjs +0 -5
  413. package/pg-core/unique-constraint.cjs.map +1 -1
  414. package/pg-core/unique-constraint.d.cts +0 -2
  415. package/pg-core/unique-constraint.d.ts +0 -2
  416. package/pg-core/unique-constraint.js +0 -5
  417. package/pg-core/unique-constraint.js.map +1 -1
  418. package/singlestore-core/columns/bigint.cjs.map +1 -1
  419. package/singlestore-core/columns/bigint.d.cts +2 -0
  420. package/singlestore-core/columns/bigint.d.ts +2 -0
  421. package/singlestore-core/columns/bigint.js.map +1 -1
  422. package/singlestore-core/columns/binary.cjs +1 -0
  423. package/singlestore-core/columns/binary.cjs.map +1 -1
  424. package/singlestore-core/columns/binary.d.cts +2 -0
  425. package/singlestore-core/columns/binary.d.ts +2 -0
  426. package/singlestore-core/columns/binary.js +1 -0
  427. package/singlestore-core/columns/binary.js.map +1 -1
  428. package/singlestore-core/columns/boolean.cjs.map +1 -1
  429. package/singlestore-core/columns/boolean.d.cts +1 -0
  430. package/singlestore-core/columns/boolean.d.ts +1 -0
  431. package/singlestore-core/columns/boolean.js.map +1 -1
  432. package/singlestore-core/columns/char.cjs +1 -0
  433. package/singlestore-core/columns/char.cjs.map +1 -1
  434. package/singlestore-core/columns/char.d.cts +2 -0
  435. package/singlestore-core/columns/char.d.ts +2 -0
  436. package/singlestore-core/columns/char.js +1 -0
  437. package/singlestore-core/columns/char.js.map +1 -1
  438. package/singlestore-core/columns/common.cjs.map +1 -1
  439. package/singlestore-core/columns/common.d.cts +1 -1
  440. package/singlestore-core/columns/common.d.ts +1 -1
  441. package/singlestore-core/columns/common.js.map +1 -1
  442. package/singlestore-core/columns/custom.cjs.map +1 -1
  443. package/singlestore-core/columns/custom.d.cts +1 -0
  444. package/singlestore-core/columns/custom.d.ts +1 -0
  445. package/singlestore-core/columns/custom.js.map +1 -1
  446. package/singlestore-core/columns/date.cjs.map +1 -1
  447. package/singlestore-core/columns/date.d.cts +2 -0
  448. package/singlestore-core/columns/date.d.ts +2 -0
  449. package/singlestore-core/columns/date.js.map +1 -1
  450. package/singlestore-core/columns/datetime.cjs.map +1 -1
  451. package/singlestore-core/columns/datetime.d.cts +2 -0
  452. package/singlestore-core/columns/datetime.d.ts +2 -0
  453. package/singlestore-core/columns/datetime.js.map +1 -1
  454. package/singlestore-core/columns/decimal.cjs.map +1 -1
  455. package/singlestore-core/columns/decimal.d.cts +3 -0
  456. package/singlestore-core/columns/decimal.d.ts +3 -0
  457. package/singlestore-core/columns/decimal.js.map +1 -1
  458. package/singlestore-core/columns/double.cjs.map +1 -1
  459. package/singlestore-core/columns/double.d.cts +1 -0
  460. package/singlestore-core/columns/double.d.ts +1 -0
  461. package/singlestore-core/columns/double.js.map +1 -1
  462. package/singlestore-core/columns/enum.cjs.map +1 -1
  463. package/singlestore-core/columns/enum.d.cts +1 -0
  464. package/singlestore-core/columns/enum.d.ts +1 -0
  465. package/singlestore-core/columns/enum.js.map +1 -1
  466. package/singlestore-core/columns/float.cjs.map +1 -1
  467. package/singlestore-core/columns/float.d.cts +1 -0
  468. package/singlestore-core/columns/float.d.ts +1 -0
  469. package/singlestore-core/columns/float.js.map +1 -1
  470. package/singlestore-core/columns/int.cjs.map +1 -1
  471. package/singlestore-core/columns/int.d.cts +1 -0
  472. package/singlestore-core/columns/int.d.ts +1 -0
  473. package/singlestore-core/columns/int.js.map +1 -1
  474. package/singlestore-core/columns/json.cjs.map +1 -1
  475. package/singlestore-core/columns/json.d.cts +1 -0
  476. package/singlestore-core/columns/json.d.ts +1 -0
  477. package/singlestore-core/columns/json.js.map +1 -1
  478. package/singlestore-core/columns/mediumint.cjs.map +1 -1
  479. package/singlestore-core/columns/mediumint.d.cts +1 -0
  480. package/singlestore-core/columns/mediumint.d.ts +1 -0
  481. package/singlestore-core/columns/mediumint.js.map +1 -1
  482. package/singlestore-core/columns/real.cjs.map +1 -1
  483. package/singlestore-core/columns/real.d.cts +1 -0
  484. package/singlestore-core/columns/real.d.ts +1 -0
  485. package/singlestore-core/columns/real.js.map +1 -1
  486. package/singlestore-core/columns/serial.cjs.map +1 -1
  487. package/singlestore-core/columns/serial.d.cts +1 -0
  488. package/singlestore-core/columns/serial.d.ts +1 -0
  489. package/singlestore-core/columns/serial.js.map +1 -1
  490. package/singlestore-core/columns/smallint.cjs.map +1 -1
  491. package/singlestore-core/columns/smallint.d.cts +1 -0
  492. package/singlestore-core/columns/smallint.d.ts +1 -0
  493. package/singlestore-core/columns/smallint.js.map +1 -1
  494. package/singlestore-core/columns/text.cjs.map +1 -1
  495. package/singlestore-core/columns/text.d.cts +1 -0
  496. package/singlestore-core/columns/text.d.ts +1 -0
  497. package/singlestore-core/columns/text.js.map +1 -1
  498. package/singlestore-core/columns/time.cjs.map +1 -1
  499. package/singlestore-core/columns/time.d.cts +1 -0
  500. package/singlestore-core/columns/time.d.ts +1 -0
  501. package/singlestore-core/columns/time.js.map +1 -1
  502. package/singlestore-core/columns/timestamp.cjs.map +1 -1
  503. package/singlestore-core/columns/timestamp.d.cts +2 -0
  504. package/singlestore-core/columns/timestamp.d.ts +2 -0
  505. package/singlestore-core/columns/timestamp.js.map +1 -1
  506. package/singlestore-core/columns/tinyint.cjs.map +1 -1
  507. package/singlestore-core/columns/tinyint.d.cts +1 -0
  508. package/singlestore-core/columns/tinyint.d.ts +1 -0
  509. package/singlestore-core/columns/tinyint.js.map +1 -1
  510. package/singlestore-core/columns/varbinary.cjs.map +1 -1
  511. package/singlestore-core/columns/varbinary.d.cts +1 -0
  512. package/singlestore-core/columns/varbinary.d.ts +1 -0
  513. package/singlestore-core/columns/varbinary.js.map +1 -1
  514. package/singlestore-core/columns/varchar.cjs.map +1 -1
  515. package/singlestore-core/columns/varchar.d.cts +1 -0
  516. package/singlestore-core/columns/varchar.d.ts +1 -0
  517. package/singlestore-core/columns/varchar.js.map +1 -1
  518. package/singlestore-core/columns/vector.cjs.map +1 -1
  519. package/singlestore-core/columns/vector.d.cts +2 -0
  520. package/singlestore-core/columns/vector.d.ts +2 -0
  521. package/singlestore-core/columns/vector.js.map +1 -1
  522. package/singlestore-core/columns/year.cjs.map +1 -1
  523. package/singlestore-core/columns/year.d.cts +1 -0
  524. package/singlestore-core/columns/year.d.ts +1 -0
  525. package/singlestore-core/columns/year.js.map +1 -1
  526. package/singlestore-core/query-builders/insert.cjs.map +1 -1
  527. package/singlestore-core/query-builders/insert.d.cts +1 -1
  528. package/singlestore-core/query-builders/insert.d.ts +1 -1
  529. package/singlestore-core/query-builders/insert.js.map +1 -1
  530. package/singlestore-core/query-builders/update.cjs.map +1 -1
  531. package/singlestore-core/query-builders/update.d.cts +1 -1
  532. package/singlestore-core/query-builders/update.d.ts +1 -1
  533. package/singlestore-core/query-builders/update.js.map +1 -1
  534. package/sql/sql.cjs +3 -10
  535. package/sql/sql.cjs.map +1 -1
  536. package/sql/sql.d.cts +1 -1
  537. package/sql/sql.d.ts +1 -1
  538. package/sql/sql.js +3 -10
  539. package/sql/sql.js.map +1 -1
  540. package/sqlite-core/columns/blob.cjs.map +1 -1
  541. package/sqlite-core/columns/blob.d.cts +3 -0
  542. package/sqlite-core/columns/blob.d.ts +3 -0
  543. package/sqlite-core/columns/blob.js.map +1 -1
  544. package/sqlite-core/columns/custom.cjs.map +1 -1
  545. package/sqlite-core/columns/custom.d.cts +1 -0
  546. package/sqlite-core/columns/custom.d.ts +1 -0
  547. package/sqlite-core/columns/custom.js.map +1 -1
  548. package/sqlite-core/columns/integer.cjs.map +1 -1
  549. package/sqlite-core/columns/integer.d.cts +3 -0
  550. package/sqlite-core/columns/integer.d.ts +3 -0
  551. package/sqlite-core/columns/integer.js.map +1 -1
  552. package/sqlite-core/columns/numeric.cjs.map +1 -1
  553. package/sqlite-core/columns/numeric.d.cts +3 -0
  554. package/sqlite-core/columns/numeric.d.ts +3 -0
  555. package/sqlite-core/columns/numeric.js.map +1 -1
  556. package/sqlite-core/columns/real.cjs.map +1 -1
  557. package/sqlite-core/columns/real.d.cts +1 -0
  558. package/sqlite-core/columns/real.d.ts +1 -0
  559. package/sqlite-core/columns/real.js.map +1 -1
  560. package/sqlite-core/columns/text.cjs.map +1 -1
  561. package/sqlite-core/columns/text.d.cts +2 -0
  562. package/sqlite-core/columns/text.d.ts +2 -0
  563. package/sqlite-core/columns/text.js.map +1 -1
  564. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  565. package/sqlite-core/query-builders/insert.d.cts +2 -2
  566. package/sqlite-core/query-builders/insert.d.ts +2 -2
  567. package/sqlite-core/query-builders/insert.js.map +1 -1
  568. package/sqlite-core/query-builders/update.cjs.map +1 -1
  569. package/sqlite-core/query-builders/update.d.cts +1 -1
  570. package/sqlite-core/query-builders/update.d.ts +1 -1
  571. package/sqlite-core/query-builders/update.js.map +1 -1
  572. package/version.cjs +1 -1
  573. package/version.d.cts +1 -1
  574. package/version.d.ts +1 -1
  575. package/version.js +1 -1
  576. package/cockroach/driver.cjs +0 -113
  577. package/cockroach/driver.cjs.map +0 -1
  578. package/cockroach/driver.d.cts +0 -42
  579. package/cockroach/driver.d.ts +0 -42
  580. package/cockroach/driver.js +0 -77
  581. package/cockroach/driver.js.map +0 -1
  582. package/cockroach/index.cjs +0 -25
  583. package/cockroach/index.cjs.map +0 -1
  584. package/cockroach/index.d.cts +0 -2
  585. package/cockroach/index.d.ts +0 -2
  586. package/cockroach/index.js +0 -3
  587. package/cockroach/index.js.map +0 -1
  588. package/cockroach/migrator.cjs +0 -33
  589. package/cockroach/migrator.cjs.map +0 -1
  590. package/cockroach/migrator.d.cts +0 -3
  591. package/cockroach/migrator.d.ts +0 -3
  592. package/cockroach/migrator.js +0 -9
  593. package/cockroach/migrator.js.map +0 -1
  594. package/cockroach/session.cjs +0 -253
  595. package/cockroach/session.cjs.map +0 -1
  596. package/cockroach/session.d.cts +0 -48
  597. package/cockroach/session.d.ts +0 -48
  598. package/cockroach/session.js +0 -217
  599. package/cockroach/session.js.map +0 -1
  600. package/cockroach-core/alias.cjs +0 -32
  601. package/cockroach-core/alias.cjs.map +0 -1
  602. package/cockroach-core/alias.d.cts +0 -4
  603. package/cockroach-core/alias.d.ts +0 -4
  604. package/cockroach-core/alias.js +0 -8
  605. package/cockroach-core/alias.js.map +0 -1
  606. package/cockroach-core/checks.cjs +0 -58
  607. package/cockroach-core/checks.cjs.map +0 -1
  608. package/cockroach-core/checks.d.cts +0 -18
  609. package/cockroach-core/checks.d.ts +0 -18
  610. package/cockroach-core/checks.js +0 -32
  611. package/cockroach-core/checks.js.map +0 -1
  612. package/cockroach-core/columns/all.cjs +0 -81
  613. package/cockroach-core/columns/all.cjs.map +0 -1
  614. package/cockroach-core/columns/all.d.cts +0 -52
  615. package/cockroach-core/columns/all.d.ts +0 -52
  616. package/cockroach-core/columns/all.js +0 -57
  617. package/cockroach-core/columns/all.js.map +0 -1
  618. package/cockroach-core/columns/bigint.cjs +0 -104
  619. package/cockroach-core/columns/bigint.cjs.map +0 -1
  620. package/cockroach-core/columns/bigint.d.cts +0 -37
  621. package/cockroach-core/columns/bigint.d.ts +0 -37
  622. package/cockroach-core/columns/bigint.js +0 -75
  623. package/cockroach-core/columns/bigint.js.map +0 -1
  624. package/cockroach-core/columns/bit.cjs +0 -61
  625. package/cockroach-core/columns/bit.cjs.map +0 -1
  626. package/cockroach-core/columns/bit.d.cts +0 -29
  627. package/cockroach-core/columns/bit.d.ts +0 -29
  628. package/cockroach-core/columns/bit.js +0 -35
  629. package/cockroach-core/columns/bit.js.map +0 -1
  630. package/cockroach-core/columns/bool.cjs +0 -56
  631. package/cockroach-core/columns/bool.cjs.map +0 -1
  632. package/cockroach-core/columns/bool.d.cts +0 -16
  633. package/cockroach-core/columns/bool.d.ts +0 -16
  634. package/cockroach-core/columns/bool.js +0 -30
  635. package/cockroach-core/columns/bool.js.map +0 -1
  636. package/cockroach-core/columns/char.cjs +0 -62
  637. package/cockroach-core/columns/char.cjs.map +0 -1
  638. package/cockroach-core/columns/char.d.cts +0 -31
  639. package/cockroach-core/columns/char.d.ts +0 -31
  640. package/cockroach-core/columns/char.js +0 -36
  641. package/cockroach-core/columns/char.js.map +0 -1
  642. package/cockroach-core/columns/common.cjs +0 -199
  643. package/cockroach-core/columns/common.cjs.map +0 -1
  644. package/cockroach-core/columns/common.d.cts +0 -98
  645. package/cockroach-core/columns/common.d.ts +0 -98
  646. package/cockroach-core/columns/common.js +0 -169
  647. package/cockroach-core/columns/common.js.map +0 -1
  648. package/cockroach-core/columns/custom.cjs +0 -102
  649. package/cockroach-core/columns/custom.cjs.map +0 -1
  650. package/cockroach-core/columns/custom.d.cts +0 -261
  651. package/cockroach-core/columns/custom.d.ts +0 -261
  652. package/cockroach-core/columns/custom.js +0 -76
  653. package/cockroach-core/columns/custom.js.map +0 -1
  654. package/cockroach-core/columns/date.cjs +0 -91
  655. package/cockroach-core/columns/date.cjs.map +0 -1
  656. package/cockroach-core/columns/date.common.cjs +0 -37
  657. package/cockroach-core/columns/date.common.cjs.map +0 -1
  658. package/cockroach-core/columns/date.common.d.cts +0 -7
  659. package/cockroach-core/columns/date.common.d.ts +0 -7
  660. package/cockroach-core/columns/date.common.js +0 -13
  661. package/cockroach-core/columns/date.common.js.map +0 -1
  662. package/cockroach-core/columns/date.d.cts +0 -36
  663. package/cockroach-core/columns/date.d.ts +0 -36
  664. package/cockroach-core/columns/date.js +0 -63
  665. package/cockroach-core/columns/date.js.map +0 -1
  666. package/cockroach-core/columns/decimal.cjs +0 -164
  667. package/cockroach-core/columns/decimal.cjs.map +0 -1
  668. package/cockroach-core/columns/decimal.d.cts +0 -80
  669. package/cockroach-core/columns/decimal.d.ts +0 -80
  670. package/cockroach-core/columns/decimal.js +0 -133
  671. package/cockroach-core/columns/decimal.js.map +0 -1
  672. package/cockroach-core/columns/enum.cjs +0 -127
  673. package/cockroach-core/columns/enum.cjs.map +0 -1
  674. package/cockroach-core/columns/enum.d.cts +0 -64
  675. package/cockroach-core/columns/enum.d.ts +0 -64
  676. package/cockroach-core/columns/enum.js +0 -96
  677. package/cockroach-core/columns/enum.js.map +0 -1
  678. package/cockroach-core/columns/float.cjs +0 -65
  679. package/cockroach-core/columns/float.cjs.map +0 -1
  680. package/cockroach-core/columns/float.d.cts +0 -18
  681. package/cockroach-core/columns/float.d.ts +0 -18
  682. package/cockroach-core/columns/float.js +0 -38
  683. package/cockroach-core/columns/float.js.map +0 -1
  684. package/cockroach-core/columns/geometry.cjs +0 -98
  685. package/cockroach-core/columns/geometry.cjs.map +0 -1
  686. package/cockroach-core/columns/geometry.d.cts +0 -48
  687. package/cockroach-core/columns/geometry.d.ts +0 -48
  688. package/cockroach-core/columns/geometry.js +0 -70
  689. package/cockroach-core/columns/geometry.js.map +0 -1
  690. package/cockroach-core/columns/index.cjs +0 -71
  691. package/cockroach-core/columns/index.cjs.map +0 -1
  692. package/cockroach-core/columns/index.d.cts +0 -25
  693. package/cockroach-core/columns/index.d.ts +0 -25
  694. package/cockroach-core/columns/index.js +0 -26
  695. package/cockroach-core/columns/index.js.map +0 -1
  696. package/cockroach-core/columns/inet.cjs +0 -56
  697. package/cockroach-core/columns/inet.cjs.map +0 -1
  698. package/cockroach-core/columns/inet.d.cts +0 -16
  699. package/cockroach-core/columns/inet.d.ts +0 -16
  700. package/cockroach-core/columns/inet.js +0 -30
  701. package/cockroach-core/columns/inet.js.map +0 -1
  702. package/cockroach-core/columns/int.common.cjs +0 -55
  703. package/cockroach-core/columns/int.common.cjs.map +0 -1
  704. package/cockroach-core/columns/int.common.d.cts +0 -11
  705. package/cockroach-core/columns/int.common.d.ts +0 -11
  706. package/cockroach-core/columns/int.common.js +0 -31
  707. package/cockroach-core/columns/int.common.js.map +0 -1
  708. package/cockroach-core/columns/integer.cjs +0 -63
  709. package/cockroach-core/columns/integer.cjs.map +0 -1
  710. package/cockroach-core/columns/integer.d.cts +0 -18
  711. package/cockroach-core/columns/integer.d.ts +0 -18
  712. package/cockroach-core/columns/integer.js +0 -37
  713. package/cockroach-core/columns/integer.js.map +0 -1
  714. package/cockroach-core/columns/interval.cjs +0 -63
  715. package/cockroach-core/columns/interval.cjs.map +0 -1
  716. package/cockroach-core/columns/interval.d.cts +0 -28
  717. package/cockroach-core/columns/interval.d.ts +0 -28
  718. package/cockroach-core/columns/interval.js +0 -37
  719. package/cockroach-core/columns/interval.js.map +0 -1
  720. package/cockroach-core/columns/jsonb.cjs +0 -72
  721. package/cockroach-core/columns/jsonb.cjs.map +0 -1
  722. package/cockroach-core/columns/jsonb.d.cts +0 -20
  723. package/cockroach-core/columns/jsonb.d.ts +0 -20
  724. package/cockroach-core/columns/jsonb.js +0 -46
  725. package/cockroach-core/columns/jsonb.js.map +0 -1
  726. package/cockroach-core/columns/real.cjs +0 -66
  727. package/cockroach-core/columns/real.cjs.map +0 -1
  728. package/cockroach-core/columns/real.d.cts +0 -21
  729. package/cockroach-core/columns/real.d.ts +0 -21
  730. package/cockroach-core/columns/real.js +0 -40
  731. package/cockroach-core/columns/real.js.map +0 -1
  732. package/cockroach-core/columns/smallint.cjs +0 -68
  733. package/cockroach-core/columns/smallint.cjs.map +0 -1
  734. package/cockroach-core/columns/smallint.d.cts +0 -19
  735. package/cockroach-core/columns/smallint.d.ts +0 -19
  736. package/cockroach-core/columns/smallint.js +0 -41
  737. package/cockroach-core/columns/smallint.js.map +0 -1
  738. package/cockroach-core/columns/string.cjs +0 -66
  739. package/cockroach-core/columns/string.cjs.map +0 -1
  740. package/cockroach-core/columns/string.d.cts +0 -35
  741. package/cockroach-core/columns/string.d.ts +0 -35
  742. package/cockroach-core/columns/string.js +0 -39
  743. package/cockroach-core/columns/string.js.map +0 -1
  744. package/cockroach-core/columns/time.cjs +0 -70
  745. package/cockroach-core/columns/time.cjs.map +0 -1
  746. package/cockroach-core/columns/time.d.cts +0 -31
  747. package/cockroach-core/columns/time.d.ts +0 -31
  748. package/cockroach-core/columns/time.js +0 -44
  749. package/cockroach-core/columns/time.js.map +0 -1
  750. package/cockroach-core/columns/timestamp.cjs +0 -111
  751. package/cockroach-core/columns/timestamp.cjs.map +0 -1
  752. package/cockroach-core/columns/timestamp.d.cts +0 -52
  753. package/cockroach-core/columns/timestamp.d.ts +0 -52
  754. package/cockroach-core/columns/timestamp.js +0 -83
  755. package/cockroach-core/columns/timestamp.js.map +0 -1
  756. package/cockroach-core/columns/utils.cjs +0 -65
  757. package/cockroach-core/columns/utils.cjs.map +0 -1
  758. package/cockroach-core/columns/utils.d.cts +0 -1
  759. package/cockroach-core/columns/utils.d.ts +0 -1
  760. package/cockroach-core/columns/utils.js +0 -41
  761. package/cockroach-core/columns/utils.js.map +0 -1
  762. package/cockroach-core/columns/uuid.cjs +0 -63
  763. package/cockroach-core/columns/uuid.cjs.map +0 -1
  764. package/cockroach-core/columns/uuid.d.cts +0 -20
  765. package/cockroach-core/columns/uuid.d.ts +0 -20
  766. package/cockroach-core/columns/uuid.js +0 -37
  767. package/cockroach-core/columns/uuid.js.map +0 -1
  768. package/cockroach-core/columns/varbit.cjs +0 -59
  769. package/cockroach-core/columns/varbit.cjs.map +0 -1
  770. package/cockroach-core/columns/varbit.d.cts +0 -24
  771. package/cockroach-core/columns/varbit.d.ts +0 -24
  772. package/cockroach-core/columns/varbit.js +0 -33
  773. package/cockroach-core/columns/varbit.js.map +0 -1
  774. package/cockroach-core/columns/varchar.cjs +0 -61
  775. package/cockroach-core/columns/varchar.cjs.map +0 -1
  776. package/cockroach-core/columns/varchar.d.cts +0 -30
  777. package/cockroach-core/columns/varchar.d.ts +0 -30
  778. package/cockroach-core/columns/varchar.js +0 -35
  779. package/cockroach-core/columns/varchar.js.map +0 -1
  780. package/cockroach-core/columns/vector.cjs +0 -65
  781. package/cockroach-core/columns/vector.cjs.map +0 -1
  782. package/cockroach-core/columns/vector.d.cts +0 -26
  783. package/cockroach-core/columns/vector.d.ts +0 -26
  784. package/cockroach-core/columns/vector.js +0 -39
  785. package/cockroach-core/columns/vector.js.map +0 -1
  786. package/cockroach-core/db.cjs +0 -346
  787. package/cockroach-core/db.cjs.map +0 -1
  788. package/cockroach-core/db.d.cts +0 -282
  789. package/cockroach-core/db.d.ts +0 -282
  790. package/cockroach-core/db.js +0 -327
  791. package/cockroach-core/db.js.map +0 -1
  792. package/cockroach-core/dialect.cjs +0 -1146
  793. package/cockroach-core/dialect.cjs.map +0 -1
  794. package/cockroach-core/dialect.d.cts +0 -65
  795. package/cockroach-core/dialect.d.ts +0 -65
  796. package/cockroach-core/dialect.js +0 -1126
  797. package/cockroach-core/dialect.js.map +0 -1
  798. package/cockroach-core/expressions.cjs +0 -49
  799. package/cockroach-core/expressions.cjs.map +0 -1
  800. package/cockroach-core/expressions.d.cts +0 -8
  801. package/cockroach-core/expressions.d.ts +0 -8
  802. package/cockroach-core/expressions.js +0 -22
  803. package/cockroach-core/expressions.js.map +0 -1
  804. package/cockroach-core/foreign-keys.cjs +0 -92
  805. package/cockroach-core/foreign-keys.cjs.map +0 -1
  806. package/cockroach-core/foreign-keys.d.cts +0 -52
  807. package/cockroach-core/foreign-keys.d.ts +0 -52
  808. package/cockroach-core/foreign-keys.js +0 -66
  809. package/cockroach-core/foreign-keys.js.map +0 -1
  810. package/cockroach-core/index.cjs +0 -61
  811. package/cockroach-core/index.cjs.map +0 -1
  812. package/cockroach-core/index.d.cts +0 -20
  813. package/cockroach-core/index.d.ts +0 -20
  814. package/cockroach-core/index.js +0 -21
  815. package/cockroach-core/index.js.map +0 -1
  816. package/cockroach-core/indexes.cjs +0 -137
  817. package/cockroach-core/indexes.cjs.map +0 -1
  818. package/cockroach-core/indexes.d.cts +0 -64
  819. package/cockroach-core/indexes.d.ts +0 -64
  820. package/cockroach-core/indexes.js +0 -109
  821. package/cockroach-core/indexes.js.map +0 -1
  822. package/cockroach-core/policies.cjs +0 -58
  823. package/cockroach-core/policies.cjs.map +0 -1
  824. package/cockroach-core/policies.d.cts +0 -24
  825. package/cockroach-core/policies.d.ts +0 -24
  826. package/cockroach-core/policies.js +0 -33
  827. package/cockroach-core/policies.js.map +0 -1
  828. package/cockroach-core/primary-keys.cjs +0 -64
  829. package/cockroach-core/primary-keys.cjs.map +0 -1
  830. package/cockroach-core/primary-keys.d.cts +0 -23
  831. package/cockroach-core/primary-keys.d.ts +0 -23
  832. package/cockroach-core/primary-keys.js +0 -38
  833. package/cockroach-core/primary-keys.js.map +0 -1
  834. package/cockroach-core/query-builders/count.cjs +0 -79
  835. package/cockroach-core/query-builders/count.cjs.map +0 -1
  836. package/cockroach-core/query-builders/count.d.cts +0 -29
  837. package/cockroach-core/query-builders/count.d.ts +0 -29
  838. package/cockroach-core/query-builders/count.js +0 -55
  839. package/cockroach-core/query-builders/count.js.map +0 -1
  840. package/cockroach-core/query-builders/delete.cjs +0 -124
  841. package/cockroach-core/query-builders/delete.cjs.map +0 -1
  842. package/cockroach-core/query-builders/delete.d.cts +0 -103
  843. package/cockroach-core/query-builders/delete.d.ts +0 -103
  844. package/cockroach-core/query-builders/delete.js +0 -100
  845. package/cockroach-core/query-builders/delete.js.map +0 -1
  846. package/cockroach-core/query-builders/index.cjs +0 -35
  847. package/cockroach-core/query-builders/index.cjs.map +0 -1
  848. package/cockroach-core/query-builders/index.d.cts +0 -7
  849. package/cockroach-core/query-builders/index.d.ts +0 -7
  850. package/cockroach-core/query-builders/index.js +0 -8
  851. package/cockroach-core/query-builders/index.js.map +0 -1
  852. package/cockroach-core/query-builders/insert.cjs +0 -213
  853. package/cockroach-core/query-builders/insert.cjs.map +0 -1
  854. package/cockroach-core/query-builders/insert.d.cts +0 -168
  855. package/cockroach-core/query-builders/insert.d.ts +0 -168
  856. package/cockroach-core/query-builders/insert.js +0 -188
  857. package/cockroach-core/query-builders/insert.js.map +0 -1
  858. package/cockroach-core/query-builders/query-builder.cjs +0 -118
  859. package/cockroach-core/query-builders/query-builder.cjs.map +0 -1
  860. package/cockroach-core/query-builders/query-builder.d.cts +0 -37
  861. package/cockroach-core/query-builders/query-builder.d.ts +0 -37
  862. package/cockroach-core/query-builders/query-builder.js +0 -94
  863. package/cockroach-core/query-builders/query-builder.js.map +0 -1
  864. package/cockroach-core/query-builders/query.cjs +0 -145
  865. package/cockroach-core/query-builders/query.cjs.map +0 -1
  866. package/cockroach-core/query-builders/query.d.cts +0 -47
  867. package/cockroach-core/query-builders/query.d.ts +0 -47
  868. package/cockroach-core/query-builders/query.js +0 -122
  869. package/cockroach-core/query-builders/query.js.map +0 -1
  870. package/cockroach-core/query-builders/raw.cjs +0 -57
  871. package/cockroach-core/query-builders/raw.cjs.map +0 -1
  872. package/cockroach-core/query-builders/raw.d.cts +0 -22
  873. package/cockroach-core/query-builders/raw.d.ts +0 -22
  874. package/cockroach-core/query-builders/raw.js +0 -33
  875. package/cockroach-core/query-builders/raw.js.map +0 -1
  876. package/cockroach-core/query-builders/refresh-materialized-view.cjs +0 -83
  877. package/cockroach-core/query-builders/refresh-materialized-view.cjs.map +0 -1
  878. package/cockroach-core/query-builders/refresh-materialized-view.d.cts +0 -28
  879. package/cockroach-core/query-builders/refresh-materialized-view.d.ts +0 -28
  880. package/cockroach-core/query-builders/refresh-materialized-view.js +0 -59
  881. package/cockroach-core/query-builders/refresh-materialized-view.js.map +0 -1
  882. package/cockroach-core/query-builders/select.cjs +0 -848
  883. package/cockroach-core/query-builders/select.cjs.map +0 -1
  884. package/cockroach-core/query-builders/select.d.cts +0 -787
  885. package/cockroach-core/query-builders/select.d.ts +0 -787
  886. package/cockroach-core/query-builders/select.js +0 -821
  887. package/cockroach-core/query-builders/select.js.map +0 -1
  888. package/cockroach-core/query-builders/select.types.cjs +0 -17
  889. package/cockroach-core/query-builders/select.types.cjs.map +0 -1
  890. package/cockroach-core/query-builders/select.types.d.cts +0 -140
  891. package/cockroach-core/query-builders/select.types.d.ts +0 -140
  892. package/cockroach-core/query-builders/select.types.js +0 -1
  893. package/cockroach-core/query-builders/select.types.js.map +0 -1
  894. package/cockroach-core/query-builders/update.cjs +0 -240
  895. package/cockroach-core/query-builders/update.cjs.map +0 -1
  896. package/cockroach-core/query-builders/update.d.cts +0 -170
  897. package/cockroach-core/query-builders/update.d.ts +0 -170
  898. package/cockroach-core/query-builders/update.js +0 -219
  899. package/cockroach-core/query-builders/update.js.map +0 -1
  900. package/cockroach-core/roles.cjs +0 -54
  901. package/cockroach-core/roles.cjs.map +0 -1
  902. package/cockroach-core/roles.d.cts +0 -12
  903. package/cockroach-core/roles.d.ts +0 -12
  904. package/cockroach-core/roles.js +0 -29
  905. package/cockroach-core/roles.js.map +0 -1
  906. package/cockroach-core/schema.cjs +0 -80
  907. package/cockroach-core/schema.cjs.map +0 -1
  908. package/cockroach-core/schema.d.cts +0 -22
  909. package/cockroach-core/schema.d.ts +0 -22
  910. package/cockroach-core/schema.js +0 -60
  911. package/cockroach-core/schema.js.map +0 -1
  912. package/cockroach-core/sequence.cjs +0 -52
  913. package/cockroach-core/sequence.cjs.map +0 -1
  914. package/cockroach-core/sequence.d.cts +0 -17
  915. package/cockroach-core/sequence.d.ts +0 -17
  916. package/cockroach-core/sequence.js +0 -25
  917. package/cockroach-core/sequence.js.map +0 -1
  918. package/cockroach-core/session.cjs +0 -120
  919. package/cockroach-core/session.cjs.map +0 -1
  920. package/cockroach-core/session.d.cts +0 -62
  921. package/cockroach-core/session.d.ts +0 -62
  922. package/cockroach-core/session.js +0 -94
  923. package/cockroach-core/session.js.map +0 -1
  924. package/cockroach-core/subquery.cjs +0 -17
  925. package/cockroach-core/subquery.cjs.map +0 -1
  926. package/cockroach-core/subquery.d.cts +0 -18
  927. package/cockroach-core/subquery.d.ts +0 -18
  928. package/cockroach-core/subquery.js +0 -1
  929. package/cockroach-core/subquery.js.map +0 -1
  930. package/cockroach-core/table.cjs +0 -100
  931. package/cockroach-core/table.cjs.map +0 -1
  932. package/cockroach-core/table.d.cts +0 -37
  933. package/cockroach-core/table.d.ts +0 -37
  934. package/cockroach-core/table.js +0 -73
  935. package/cockroach-core/table.js.map +0 -1
  936. package/cockroach-core/unique-constraint.cjs +0 -77
  937. package/cockroach-core/unique-constraint.cjs.map +0 -1
  938. package/cockroach-core/unique-constraint.d.cts +0 -23
  939. package/cockroach-core/unique-constraint.d.ts +0 -23
  940. package/cockroach-core/unique-constraint.js +0 -50
  941. package/cockroach-core/unique-constraint.js.map +0 -1
  942. package/cockroach-core/utils/array.cjs +0 -106
  943. package/cockroach-core/utils/array.cjs.map +0 -1
  944. package/cockroach-core/utils/array.d.cts +0 -3
  945. package/cockroach-core/utils/array.d.ts +0 -3
  946. package/cockroach-core/utils/array.js +0 -80
  947. package/cockroach-core/utils/array.js.map +0 -1
  948. package/cockroach-core/utils/index.cjs +0 -23
  949. package/cockroach-core/utils/index.cjs.map +0 -1
  950. package/cockroach-core/utils/index.d.cts +0 -1
  951. package/cockroach-core/utils/index.d.ts +0 -1
  952. package/cockroach-core/utils/index.js +0 -2
  953. package/cockroach-core/utils/index.js.map +0 -1
  954. package/cockroach-core/utils.cjs +0 -98
  955. package/cockroach-core/utils.cjs.map +0 -1
  956. package/cockroach-core/utils.d.cts +0 -47
  957. package/cockroach-core/utils.d.ts +0 -47
  958. package/cockroach-core/utils.js +0 -72
  959. package/cockroach-core/utils.js.map +0 -1
  960. package/cockroach-core/view-base.cjs +0 -33
  961. package/cockroach-core/view-base.cjs.map +0 -1
  962. package/cockroach-core/view-base.d.cts +0 -8
  963. package/cockroach-core/view-base.d.ts +0 -8
  964. package/cockroach-core/view-base.js +0 -9
  965. package/cockroach-core/view-base.js.map +0 -1
  966. package/cockroach-core/view.cjs +0 -271
  967. package/cockroach-core/view.cjs.map +0 -1
  968. package/cockroach-core/view.d.cts +0 -106
  969. package/cockroach-core/view.d.ts +0 -106
  970. package/cockroach-core/view.js +0 -233
  971. package/cockroach-core/view.js.map +0 -1
  972. package/mssql-core/alias.cjs +0 -32
  973. package/mssql-core/alias.cjs.map +0 -1
  974. package/mssql-core/alias.d.cts +0 -4
  975. package/mssql-core/alias.d.ts +0 -4
  976. package/mssql-core/alias.js +0 -8
  977. package/mssql-core/alias.js.map +0 -1
  978. package/mssql-core/checks.cjs +0 -58
  979. package/mssql-core/checks.cjs.map +0 -1
  980. package/mssql-core/checks.d.cts +0 -18
  981. package/mssql-core/checks.d.ts +0 -18
  982. package/mssql-core/checks.js +0 -32
  983. package/mssql-core/checks.js.map +0 -1
  984. package/mssql-core/columns/all.cjs +0 -74
  985. package/mssql-core/columns/all.cjs.map +0 -1
  986. package/mssql-core/columns/all.d.cts +0 -45
  987. package/mssql-core/columns/all.d.ts +0 -45
  988. package/mssql-core/columns/all.js +0 -50
  989. package/mssql-core/columns/all.js.map +0 -1
  990. package/mssql-core/columns/bigint.cjs +0 -72
  991. package/mssql-core/columns/bigint.cjs.map +0 -1
  992. package/mssql-core/columns/bigint.d.cts +0 -25
  993. package/mssql-core/columns/bigint.d.ts +0 -25
  994. package/mssql-core/columns/bigint.js +0 -46
  995. package/mssql-core/columns/bigint.js.map +0 -1
  996. package/mssql-core/columns/binary.cjs +0 -57
  997. package/mssql-core/columns/binary.cjs.map +0 -1
  998. package/mssql-core/columns/binary.d.cts +0 -24
  999. package/mssql-core/columns/binary.d.ts +0 -24
  1000. package/mssql-core/columns/binary.js +0 -31
  1001. package/mssql-core/columns/binary.js.map +0 -1
  1002. package/mssql-core/columns/bit.cjs +0 -54
  1003. package/mssql-core/columns/bit.cjs.map +0 -1
  1004. package/mssql-core/columns/bit.d.cts +0 -17
  1005. package/mssql-core/columns/bit.d.ts +0 -17
  1006. package/mssql-core/columns/bit.js +0 -28
  1007. package/mssql-core/columns/bit.js.map +0 -1
  1008. package/mssql-core/columns/char.cjs +0 -73
  1009. package/mssql-core/columns/char.cjs.map +0 -1
  1010. package/mssql-core/columns/char.d.cts +0 -29
  1011. package/mssql-core/columns/char.d.ts +0 -29
  1012. package/mssql-core/columns/char.js +0 -46
  1013. package/mssql-core/columns/char.js.map +0 -1
  1014. package/mssql-core/columns/common.cjs +0 -112
  1015. package/mssql-core/columns/common.cjs.map +0 -1
  1016. package/mssql-core/columns/common.d.cts +0 -57
  1017. package/mssql-core/columns/common.d.ts +0 -57
  1018. package/mssql-core/columns/common.js +0 -85
  1019. package/mssql-core/columns/common.js.map +0 -1
  1020. package/mssql-core/columns/custom.cjs +0 -105
  1021. package/mssql-core/columns/custom.cjs.map +0 -1
  1022. package/mssql-core/columns/custom.d.cts +0 -261
  1023. package/mssql-core/columns/custom.d.ts +0 -261
  1024. package/mssql-core/columns/custom.js +0 -79
  1025. package/mssql-core/columns/custom.js.map +0 -1
  1026. package/mssql-core/columns/date.cjs +0 -94
  1027. package/mssql-core/columns/date.cjs.map +0 -1
  1028. package/mssql-core/columns/date.common.cjs +0 -37
  1029. package/mssql-core/columns/date.common.cjs.map +0 -1
  1030. package/mssql-core/columns/date.common.d.cts +0 -12
  1031. package/mssql-core/columns/date.common.d.ts +0 -12
  1032. package/mssql-core/columns/date.common.js +0 -13
  1033. package/mssql-core/columns/date.common.js.map +0 -1
  1034. package/mssql-core/columns/date.d.cts +0 -39
  1035. package/mssql-core/columns/date.d.ts +0 -39
  1036. package/mssql-core/columns/date.js +0 -66
  1037. package/mssql-core/columns/date.js.map +0 -1
  1038. package/mssql-core/columns/datetime.cjs +0 -94
  1039. package/mssql-core/columns/datetime.cjs.map +0 -1
  1040. package/mssql-core/columns/datetime.d.cts +0 -38
  1041. package/mssql-core/columns/datetime.d.ts +0 -38
  1042. package/mssql-core/columns/datetime.js +0 -66
  1043. package/mssql-core/columns/datetime.js.map +0 -1
  1044. package/mssql-core/columns/datetime2.cjs +0 -102
  1045. package/mssql-core/columns/datetime2.cjs.map +0 -1
  1046. package/mssql-core/columns/datetime2.d.cts +0 -38
  1047. package/mssql-core/columns/datetime2.d.ts +0 -38
  1048. package/mssql-core/columns/datetime2.js +0 -74
  1049. package/mssql-core/columns/datetime2.js.map +0 -1
  1050. package/mssql-core/columns/datetimeoffset.cjs +0 -102
  1051. package/mssql-core/columns/datetimeoffset.cjs.map +0 -1
  1052. package/mssql-core/columns/datetimeoffset.d.cts +0 -39
  1053. package/mssql-core/columns/datetimeoffset.d.ts +0 -39
  1054. package/mssql-core/columns/datetimeoffset.js +0 -74
  1055. package/mssql-core/columns/datetimeoffset.js.map +0 -1
  1056. package/mssql-core/columns/decimal.cjs +0 -146
  1057. package/mssql-core/columns/decimal.cjs.map +0 -1
  1058. package/mssql-core/columns/decimal.d.cts +0 -58
  1059. package/mssql-core/columns/decimal.d.ts +0 -58
  1060. package/mssql-core/columns/decimal.js +0 -116
  1061. package/mssql-core/columns/decimal.js.map +0 -1
  1062. package/mssql-core/columns/float.cjs +0 -58
  1063. package/mssql-core/columns/float.cjs.map +0 -1
  1064. package/mssql-core/columns/float.d.cts +0 -21
  1065. package/mssql-core/columns/float.d.ts +0 -21
  1066. package/mssql-core/columns/float.js +0 -32
  1067. package/mssql-core/columns/float.js.map +0 -1
  1068. package/mssql-core/columns/index.cjs +0 -63
  1069. package/mssql-core/columns/index.cjs.map +0 -1
  1070. package/mssql-core/columns/index.d.cts +0 -21
  1071. package/mssql-core/columns/index.d.ts +0 -21
  1072. package/mssql-core/columns/index.js +0 -22
  1073. package/mssql-core/columns/index.js.map +0 -1
  1074. package/mssql-core/columns/int.cjs +0 -53
  1075. package/mssql-core/columns/int.cjs.map +0 -1
  1076. package/mssql-core/columns/int.d.cts +0 -16
  1077. package/mssql-core/columns/int.d.ts +0 -16
  1078. package/mssql-core/columns/int.js +0 -27
  1079. package/mssql-core/columns/int.js.map +0 -1
  1080. package/mssql-core/columns/numeric.cjs +0 -146
  1081. package/mssql-core/columns/numeric.cjs.map +0 -1
  1082. package/mssql-core/columns/numeric.d.cts +0 -58
  1083. package/mssql-core/columns/numeric.d.ts +0 -58
  1084. package/mssql-core/columns/numeric.js +0 -116
  1085. package/mssql-core/columns/numeric.js.map +0 -1
  1086. package/mssql-core/columns/real.cjs +0 -53
  1087. package/mssql-core/columns/real.cjs.map +0 -1
  1088. package/mssql-core/columns/real.d.cts +0 -16
  1089. package/mssql-core/columns/real.d.ts +0 -16
  1090. package/mssql-core/columns/real.js +0 -27
  1091. package/mssql-core/columns/real.js.map +0 -1
  1092. package/mssql-core/columns/smallint.cjs +0 -62
  1093. package/mssql-core/columns/smallint.cjs.map +0 -1
  1094. package/mssql-core/columns/smallint.d.cts +0 -17
  1095. package/mssql-core/columns/smallint.d.ts +0 -17
  1096. package/mssql-core/columns/smallint.js +0 -36
  1097. package/mssql-core/columns/smallint.js.map +0 -1
  1098. package/mssql-core/columns/text.cjs +0 -68
  1099. package/mssql-core/columns/text.cjs.map +0 -1
  1100. package/mssql-core/columns/text.d.cts +0 -36
  1101. package/mssql-core/columns/text.d.ts +0 -36
  1102. package/mssql-core/columns/text.js +0 -41
  1103. package/mssql-core/columns/text.js.map +0 -1
  1104. package/mssql-core/columns/time.cjs +0 -90
  1105. package/mssql-core/columns/time.cjs.map +0 -1
  1106. package/mssql-core/columns/time.d.cts +0 -37
  1107. package/mssql-core/columns/time.d.ts +0 -37
  1108. package/mssql-core/columns/time.js +0 -62
  1109. package/mssql-core/columns/time.js.map +0 -1
  1110. package/mssql-core/columns/tinyint.cjs +0 -62
  1111. package/mssql-core/columns/tinyint.cjs.map +0 -1
  1112. package/mssql-core/columns/tinyint.d.cts +0 -17
  1113. package/mssql-core/columns/tinyint.d.ts +0 -17
  1114. package/mssql-core/columns/tinyint.js +0 -36
  1115. package/mssql-core/columns/tinyint.js.map +0 -1
  1116. package/mssql-core/columns/varbinary.cjs +0 -61
  1117. package/mssql-core/columns/varbinary.cjs.map +0 -1
  1118. package/mssql-core/columns/varbinary.d.cts +0 -23
  1119. package/mssql-core/columns/varbinary.d.ts +0 -23
  1120. package/mssql-core/columns/varbinary.js +0 -35
  1121. package/mssql-core/columns/varbinary.js.map +0 -1
  1122. package/mssql-core/columns/varchar.cjs +0 -117
  1123. package/mssql-core/columns/varchar.cjs.map +0 -1
  1124. package/mssql-core/columns/varchar.d.cts +0 -59
  1125. package/mssql-core/columns/varchar.d.ts +0 -59
  1126. package/mssql-core/columns/varchar.js +0 -88
  1127. package/mssql-core/columns/varchar.js.map +0 -1
  1128. package/mssql-core/db.cjs +0 -254
  1129. package/mssql-core/db.cjs.map +0 -1
  1130. package/mssql-core/db.d.cts +0 -228
  1131. package/mssql-core/db.d.ts +0 -228
  1132. package/mssql-core/db.js +0 -235
  1133. package/mssql-core/db.js.map +0 -1
  1134. package/mssql-core/dialect.cjs +0 -633
  1135. package/mssql-core/dialect.cjs.map +0 -1
  1136. package/mssql-core/dialect.d.cts +0 -58
  1137. package/mssql-core/dialect.d.ts +0 -58
  1138. package/mssql-core/dialect.js +0 -599
  1139. package/mssql-core/dialect.js.map +0 -1
  1140. package/mssql-core/expressions.cjs +0 -49
  1141. package/mssql-core/expressions.cjs.map +0 -1
  1142. package/mssql-core/expressions.d.cts +0 -8
  1143. package/mssql-core/expressions.d.ts +0 -8
  1144. package/mssql-core/expressions.js +0 -22
  1145. package/mssql-core/expressions.js.map +0 -1
  1146. package/mssql-core/foreign-keys.cjs +0 -91
  1147. package/mssql-core/foreign-keys.cjs.map +0 -1
  1148. package/mssql-core/foreign-keys.d.cts +0 -51
  1149. package/mssql-core/foreign-keys.d.ts +0 -51
  1150. package/mssql-core/foreign-keys.js +0 -65
  1151. package/mssql-core/foreign-keys.js.map +0 -1
  1152. package/mssql-core/index.cjs +0 -55
  1153. package/mssql-core/index.cjs.map +0 -1
  1154. package/mssql-core/index.d.cts +0 -17
  1155. package/mssql-core/index.d.ts +0 -17
  1156. package/mssql-core/index.js +0 -18
  1157. package/mssql-core/index.js.map +0 -1
  1158. package/mssql-core/indexes.cjs +0 -80
  1159. package/mssql-core/indexes.cjs.map +0 -1
  1160. package/mssql-core/indexes.d.cts +0 -49
  1161. package/mssql-core/indexes.d.ts +0 -49
  1162. package/mssql-core/indexes.js +0 -52
  1163. package/mssql-core/indexes.js.map +0 -1
  1164. package/mssql-core/primary-keys.cjs +0 -64
  1165. package/mssql-core/primary-keys.cjs.map +0 -1
  1166. package/mssql-core/primary-keys.d.cts +0 -23
  1167. package/mssql-core/primary-keys.d.ts +0 -23
  1168. package/mssql-core/primary-keys.js +0 -38
  1169. package/mssql-core/primary-keys.js.map +0 -1
  1170. package/mssql-core/query-builders/delete.cjs +0 -107
  1171. package/mssql-core/query-builders/delete.cjs.map +0 -1
  1172. package/mssql-core/query-builders/delete.d.cts +0 -98
  1173. package/mssql-core/query-builders/delete.d.ts +0 -98
  1174. package/mssql-core/query-builders/delete.js +0 -83
  1175. package/mssql-core/query-builders/delete.js.map +0 -1
  1176. package/mssql-core/query-builders/index.cjs +0 -33
  1177. package/mssql-core/query-builders/index.cjs.map +0 -1
  1178. package/mssql-core/query-builders/index.d.cts +0 -6
  1179. package/mssql-core/query-builders/index.d.ts +0 -6
  1180. package/mssql-core/query-builders/index.js +0 -7
  1181. package/mssql-core/query-builders/index.js.map +0 -1
  1182. package/mssql-core/query-builders/insert.cjs +0 -105
  1183. package/mssql-core/query-builders/insert.cjs.map +0 -1
  1184. package/mssql-core/query-builders/insert.d.cts +0 -79
  1185. package/mssql-core/query-builders/insert.d.ts +0 -79
  1186. package/mssql-core/query-builders/insert.js +0 -80
  1187. package/mssql-core/query-builders/insert.js.map +0 -1
  1188. package/mssql-core/query-builders/query-builder.cjs +0 -95
  1189. package/mssql-core/query-builders/query-builder.cjs.map +0 -1
  1190. package/mssql-core/query-builders/query-builder.d.cts +0 -32
  1191. package/mssql-core/query-builders/query-builder.d.ts +0 -32
  1192. package/mssql-core/query-builders/query-builder.js +0 -71
  1193. package/mssql-core/query-builders/query-builder.js.map +0 -1
  1194. package/mssql-core/query-builders/query.cjs +0 -126
  1195. package/mssql-core/query-builders/query.cjs.map +0 -1
  1196. package/mssql-core/query-builders/query.d.cts +0 -42
  1197. package/mssql-core/query-builders/query.d.ts +0 -42
  1198. package/mssql-core/query-builders/query.js +0 -103
  1199. package/mssql-core/query-builders/query.js.map +0 -1
  1200. package/mssql-core/query-builders/select.cjs +0 -679
  1201. package/mssql-core/query-builders/select.cjs.map +0 -1
  1202. package/mssql-core/query-builders/select.d.cts +0 -549
  1203. package/mssql-core/query-builders/select.d.ts +0 -549
  1204. package/mssql-core/query-builders/select.js +0 -649
  1205. package/mssql-core/query-builders/select.js.map +0 -1
  1206. package/mssql-core/query-builders/select.types.cjs +0 -17
  1207. package/mssql-core/query-builders/select.types.cjs.map +0 -1
  1208. package/mssql-core/query-builders/select.types.d.cts +0 -142
  1209. package/mssql-core/query-builders/select.types.d.ts +0 -142
  1210. package/mssql-core/query-builders/select.types.js +0 -1
  1211. package/mssql-core/query-builders/select.types.js.map +0 -1
  1212. package/mssql-core/query-builders/update.cjs +0 -138
  1213. package/mssql-core/query-builders/update.cjs.map +0 -1
  1214. package/mssql-core/query-builders/update.d.cts +0 -142
  1215. package/mssql-core/query-builders/update.d.ts +0 -142
  1216. package/mssql-core/query-builders/update.js +0 -113
  1217. package/mssql-core/query-builders/update.js.map +0 -1
  1218. package/mssql-core/schema.cjs +0 -51
  1219. package/mssql-core/schema.cjs.map +0 -1
  1220. package/mssql-core/schema.d.cts +0 -22
  1221. package/mssql-core/schema.d.ts +0 -22
  1222. package/mssql-core/schema.js +0 -25
  1223. package/mssql-core/schema.js.map +0 -1
  1224. package/mssql-core/session.cjs +0 -74
  1225. package/mssql-core/session.cjs.map +0 -1
  1226. package/mssql-core/session.d.cts +0 -63
  1227. package/mssql-core/session.d.ts +0 -63
  1228. package/mssql-core/session.js +0 -48
  1229. package/mssql-core/session.js.map +0 -1
  1230. package/mssql-core/subquery.cjs +0 -17
  1231. package/mssql-core/subquery.cjs.map +0 -1
  1232. package/mssql-core/subquery.d.cts +0 -18
  1233. package/mssql-core/subquery.d.ts +0 -18
  1234. package/mssql-core/subquery.js +0 -1
  1235. package/mssql-core/subquery.js.map +0 -1
  1236. package/mssql-core/table.cjs +0 -81
  1237. package/mssql-core/table.cjs.map +0 -1
  1238. package/mssql-core/table.d.cts +0 -40
  1239. package/mssql-core/table.d.ts +0 -40
  1240. package/mssql-core/table.js +0 -55
  1241. package/mssql-core/table.js.map +0 -1
  1242. package/mssql-core/unique-constraint.cjs +0 -76
  1243. package/mssql-core/unique-constraint.cjs.map +0 -1
  1244. package/mssql-core/unique-constraint.d.cts +0 -23
  1245. package/mssql-core/unique-constraint.d.ts +0 -23
  1246. package/mssql-core/unique-constraint.js +0 -49
  1247. package/mssql-core/unique-constraint.js.map +0 -1
  1248. package/mssql-core/utils.cjs +0 -85
  1249. package/mssql-core/utils.cjs.map +0 -1
  1250. package/mssql-core/utils.d.cts +0 -31
  1251. package/mssql-core/utils.d.ts +0 -31
  1252. package/mssql-core/utils.js +0 -60
  1253. package/mssql-core/utils.js.map +0 -1
  1254. package/mssql-core/view-base.cjs +0 -33
  1255. package/mssql-core/view-base.cjs.map +0 -1
  1256. package/mssql-core/view-base.d.cts +0 -9
  1257. package/mssql-core/view-base.d.ts +0 -9
  1258. package/mssql-core/view-base.js +0 -9
  1259. package/mssql-core/view-base.js.map +0 -1
  1260. package/mssql-core/view-common.cjs +0 -29
  1261. package/mssql-core/view-common.cjs.map +0 -1
  1262. package/mssql-core/view-common.d.cts +0 -1
  1263. package/mssql-core/view-common.d.ts +0 -1
  1264. package/mssql-core/view-common.js +0 -5
  1265. package/mssql-core/view-common.js.map +0 -1
  1266. package/mssql-core/view.cjs +0 -154
  1267. package/mssql-core/view.cjs.map +0 -1
  1268. package/mssql-core/view.d.cts +0 -63
  1269. package/mssql-core/view.d.ts +0 -63
  1270. package/mssql-core/view.js +0 -125
  1271. package/mssql-core/view.js.map +0 -1
  1272. package/node-mssql/driver.cjs +0 -117
  1273. package/node-mssql/driver.cjs.map +0 -1
  1274. package/node-mssql/driver.d.cts +0 -46
  1275. package/node-mssql/driver.d.ts +0 -46
  1276. package/node-mssql/driver.js +0 -81
  1277. package/node-mssql/driver.js.map +0 -1
  1278. package/node-mssql/index.cjs +0 -25
  1279. package/node-mssql/index.cjs.map +0 -1
  1280. package/node-mssql/index.d.cts +0 -2
  1281. package/node-mssql/index.d.ts +0 -2
  1282. package/node-mssql/index.js +0 -3
  1283. package/node-mssql/index.js.map +0 -1
  1284. package/node-mssql/migrator.cjs +0 -33
  1285. package/node-mssql/migrator.cjs.map +0 -1
  1286. package/node-mssql/migrator.d.cts +0 -3
  1287. package/node-mssql/migrator.d.ts +0 -3
  1288. package/node-mssql/migrator.js +0 -9
  1289. package/node-mssql/migrator.js.map +0 -1
  1290. package/node-mssql/pool.cjs +0 -54
  1291. package/node-mssql/pool.cjs.map +0 -1
  1292. package/node-mssql/pool.d.cts +0 -8
  1293. package/node-mssql/pool.d.ts +0 -8
  1294. package/node-mssql/pool.js +0 -20
  1295. package/node-mssql/pool.js.map +0 -1
  1296. package/node-mssql/session.cjs +0 -256
  1297. package/node-mssql/session.cjs.map +0 -1
  1298. package/node-mssql/session.d.cts +0 -48
  1299. package/node-mssql/session.d.ts +0 -48
  1300. package/node-mssql/session.js +0 -224
  1301. package/node-mssql/session.js.map +0 -1
package/_relations.cjs CHANGED
@@ -29,7 +29,6 @@ __export(relations_exports, {
29
29
  getOperators: () => getOperators,
30
30
  getOrderByOperators: () => getOrderByOperators,
31
31
  mapRelationalRow: () => mapRelationalRow,
32
- mapRelationalRowFromObj: () => mapRelationalRowFromObj,
33
32
  normalizeRelation: () => normalizeRelation,
34
33
  relations: () => relations
35
34
  });
@@ -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":"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","names":["relations"]}
package/_relations.d.cts CHANGED
@@ -213,4 +213,3 @@ export interface BuildRelationalQueryResult<TTable extends Table = Table, TColum
213
213
  sql: TTable | SQL;
214
214
  }
215
215
  export declare function mapRelationalRow(tablesConfig: TablesRelationalConfig, tableConfig: TableRelationalConfig, row: unknown[], buildQueryResultSelection: BuildRelationalQueryResult['selection'], mapColumnValue?: (value: unknown) => unknown): Record<string, unknown>;
216
- export declare function mapRelationalRowFromObj(tablesConfig: TablesRelationalConfig, tableConfig: TableRelationalConfig, row: unknown[], buildQueryResultSelection: BuildRelationalQueryResult['selection'], mapColumnValue?: (value: unknown) => unknown): Record<string, unknown>;
package/_relations.d.ts CHANGED
@@ -213,4 +213,3 @@ export interface BuildRelationalQueryResult<TTable extends Table = Table, TColum
213
213
  sql: TTable | SQL;
214
214
  }
215
215
  export declare function mapRelationalRow(tablesConfig: TablesRelationalConfig, tableConfig: TableRelationalConfig, row: unknown[], buildQueryResultSelection: BuildRelationalQueryResult['selection'], mapColumnValue?: (value: unknown) => unknown): Record<string, unknown>;
216
- export declare function mapRelationalRowFromObj(tablesConfig: TablesRelationalConfig, tableConfig: TableRelationalConfig, row: unknown[], buildQueryResultSelection: BuildRelationalQueryResult['selection'], mapColumnValue?: (value: unknown) => unknown): Record<string, unknown>;
package/_relations.js CHANGED
@@ -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;