pipework 0.7.13 → 0.7.18

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 (733) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +3 -2
  3. package/REFERENCE.md +327 -296
  4. package/dist/REFERENCE.md +396 -431
  5. package/dist/auth/tenant/scope.d.ts +1 -1
  6. package/dist/auth/tenant/scope.d.ts.map +1 -1
  7. package/dist/cli/commands/check.d.ts +2 -1
  8. package/dist/cli/commands/check.d.ts.map +1 -1
  9. package/dist/cli/commands/check.js +52 -17
  10. package/dist/cli/commands/check.js.map +1 -1
  11. package/dist/cli/commands/migrate.d.ts.map +1 -1
  12. package/dist/cli/commands/migrate.js +3 -6
  13. package/dist/cli/commands/migrate.js.map +1 -1
  14. package/dist/cli/commands/scope.d.ts +12 -0
  15. package/dist/cli/commands/scope.d.ts.map +1 -0
  16. package/dist/cli/commands/scope.js +25 -0
  17. package/dist/cli/commands/scope.js.map +1 -0
  18. package/dist/cli/commands/test.d.ts +3 -0
  19. package/dist/cli/commands/test.d.ts.map +1 -1
  20. package/dist/cli/commands/test.js +65 -1
  21. package/dist/cli/commands/test.js.map +1 -1
  22. package/dist/cli/index.d.ts.map +1 -1
  23. package/dist/cli/index.js +21 -2
  24. package/dist/cli/index.js.map +1 -1
  25. package/dist/config/discover.d.ts.map +1 -1
  26. package/dist/config/discover.js +0 -14
  27. package/dist/config/discover.js.map +1 -1
  28. package/dist/core/config/namespace.d.ts +123 -120
  29. package/dist/core/config/namespace.d.ts.map +1 -1
  30. package/dist/core/config/schema.d.ts +8 -0
  31. package/dist/core/config/schema.d.ts.map +1 -1
  32. package/dist/core/config/schema.js +2 -0
  33. package/dist/core/config/schema.js.map +1 -1
  34. package/dist/data/db/col/index.d.ts +1 -1
  35. package/dist/data/db/col/index.d.ts.map +1 -1
  36. package/dist/data/db/col/index.js +1 -1
  37. package/dist/data/db/col/index.js.map +1 -1
  38. package/dist/data/db/excluded.js +2 -2
  39. package/dist/data/db/excluded.js.map +1 -1
  40. package/dist/data/db/filter.d.ts +12 -12
  41. package/dist/data/db/generated/drizzle-orm/aggregate.d.ts +1 -1
  42. package/dist/data/db/generated/drizzle-orm/aggregate.d.ts.map +1 -1
  43. package/dist/data/db/generated/drizzle-orm/aggregate.js +1 -1
  44. package/dist/data/db/generated/drizzle-orm/aggregate.js.map +1 -1
  45. package/dist/data/db/generated/drizzle-orm/introspection.d.ts +1 -1
  46. package/dist/data/db/generated/drizzle-orm/introspection.d.ts.map +1 -1
  47. package/dist/data/db/generated/drizzle-orm/introspection.js +1 -1
  48. package/dist/data/db/generated/drizzle-orm/introspection.js.map +1 -1
  49. package/dist/data/db/generated/drizzle-orm/operator.d.ts +1 -1
  50. package/dist/data/db/generated/drizzle-orm/operator.d.ts.map +1 -1
  51. package/dist/data/db/generated/drizzle-orm/operator.js +1 -1
  52. package/dist/data/db/generated/drizzle-orm/operator.js.map +1 -1
  53. package/dist/data/db/generated/drizzle-orm/relation.d.ts +1 -1
  54. package/dist/data/db/generated/drizzle-orm/relation.d.ts.map +1 -1
  55. package/dist/data/db/generated/drizzle-orm/relation.js +1 -1
  56. package/dist/data/db/generated/drizzle-orm/relation.js.map +1 -1
  57. package/dist/data/db/generated/drizzle-orm/type.d.ts +2 -2
  58. package/dist/data/db/generated/drizzle-orm/type.d.ts.map +1 -1
  59. package/dist/data/db/generated/drizzle-orm/type.js +1 -1
  60. package/dist/data/db/generated/drizzle-orm/type.js.map +1 -1
  61. package/dist/data/db/generated/pg-core/introspection.d.ts +1 -1
  62. package/dist/data/db/generated/pg-core/introspection.d.ts.map +1 -1
  63. package/dist/data/db/generated/pg-core/introspection.js +1 -1
  64. package/dist/data/db/generated/pg-core/introspection.js.map +1 -1
  65. package/dist/data/db/generated/pg-core/set-operation.d.ts +1 -1
  66. package/dist/data/db/generated/pg-core/set-operation.d.ts.map +1 -1
  67. package/dist/data/db/generated/pg-core/set-operation.js +1 -1
  68. package/dist/data/db/generated/pg-core/set-operation.js.map +1 -1
  69. package/dist/data/db/generated/pg-core/type.d.ts +2 -2
  70. package/dist/data/db/generated/pg-core/type.d.ts.map +1 -1
  71. package/dist/data/db/generated/pg-core/type.js +1 -1
  72. package/dist/data/db/generated/pg-core/type.js.map +1 -1
  73. package/dist/data/db/idx/index.d.ts +1 -1
  74. package/dist/data/db/idx/index.d.ts.map +1 -1
  75. package/dist/data/db/idx/index.js +1 -1
  76. package/dist/data/db/idx/index.js.map +1 -1
  77. package/dist/data/db/namespace.d.ts +43 -43
  78. package/dist/data/db/pool.d.ts +1 -1
  79. package/dist/data/db/pool.d.ts.map +1 -1
  80. package/dist/data/db/pool.js +1 -1
  81. package/dist/data/db/pool.js.map +1 -1
  82. package/dist/data/db/schema-features.d.ts +1 -1
  83. package/dist/data/db/schema-features.d.ts.map +1 -1
  84. package/dist/data/db/schema-features.js +1 -1
  85. package/dist/data/db/schema-features.js.map +1 -1
  86. package/dist/data/db/sql.d.ts +1 -1
  87. package/dist/data/db/sql.d.ts.map +1 -1
  88. package/dist/data/db/sql.js +1 -1
  89. package/dist/data/db/sql.js.map +1 -1
  90. package/dist/data/db/types.d.ts +3 -3
  91. package/dist/data/db/types.d.ts.map +1 -1
  92. package/dist/data/domain/project-table.d.ts +2 -2
  93. package/dist/data/domain/project-table.js +2 -2
  94. package/dist/data/domain/project-table.js.map +1 -1
  95. package/dist/data/domain/types.d.ts +1 -1
  96. package/dist/data/domain/types.d.ts.map +1 -1
  97. package/dist/data/migrate/apply.d.ts +8 -0
  98. package/dist/data/migrate/apply.d.ts.map +1 -0
  99. package/dist/data/migrate/apply.js +91 -0
  100. package/dist/data/migrate/apply.js.map +1 -0
  101. package/dist/data/migrate/diff.d.ts +118 -0
  102. package/dist/data/migrate/diff.d.ts.map +1 -0
  103. package/dist/data/migrate/diff.js +215 -0
  104. package/dist/data/migrate/diff.js.map +1 -0
  105. package/dist/data/migrate/generate.d.ts.map +1 -1
  106. package/dist/data/migrate/generate.js +12 -22
  107. package/dist/data/migrate/generate.js.map +1 -1
  108. package/dist/data/migrate/run.d.ts.map +1 -1
  109. package/dist/data/migrate/run.js +5 -16
  110. package/dist/data/migrate/run.js.map +1 -1
  111. package/dist/data/migrate/snapshot.d.ts +87 -0
  112. package/dist/data/migrate/snapshot.d.ts.map +1 -0
  113. package/dist/data/migrate/snapshot.js +204 -0
  114. package/dist/data/migrate/snapshot.js.map +1 -0
  115. package/dist/data/migrate/sql-emit.d.ts +3 -0
  116. package/dist/data/migrate/sql-emit.d.ts.map +1 -0
  117. package/dist/data/migrate/sql-emit.js +220 -0
  118. package/dist/data/migrate/sql-emit.js.map +1 -0
  119. package/dist/data/query/alias.d.ts +32 -0
  120. package/dist/data/query/alias.d.ts.map +1 -0
  121. package/dist/data/query/alias.js +101 -0
  122. package/dist/data/query/alias.js.map +1 -0
  123. package/dist/data/query/batch.d.ts +7 -0
  124. package/dist/data/query/batch.d.ts.map +1 -0
  125. package/dist/data/query/batch.js +2 -0
  126. package/dist/data/query/batch.js.map +1 -0
  127. package/dist/data/query/cache/core/cache.d.ts +37 -0
  128. package/dist/data/query/cache/core/cache.d.ts.map +1 -0
  129. package/dist/data/query/cache/core/cache.js +29 -0
  130. package/dist/data/query/cache/core/cache.js.map +1 -0
  131. package/dist/data/query/cache/core/index.d.ts +2 -0
  132. package/dist/data/query/cache/core/index.d.ts.map +1 -0
  133. package/dist/data/query/cache/core/index.js +2 -0
  134. package/dist/data/query/cache/core/index.js.map +1 -0
  135. package/dist/data/query/cache/core/types.d.ts +34 -0
  136. package/dist/data/query/cache/core/types.d.ts.map +1 -0
  137. package/dist/data/query/cache/core/types.js +2 -0
  138. package/dist/data/query/cache/core/types.js.map +1 -0
  139. package/dist/data/query/casing.d.ts +17 -0
  140. package/dist/data/query/casing.d.ts.map +1 -0
  141. package/dist/data/query/casing.js +62 -0
  142. package/dist/data/query/casing.js.map +1 -0
  143. package/dist/data/query/column-builder.d.ts +241 -0
  144. package/dist/data/query/column-builder.d.ts.map +1 -0
  145. package/dist/data/query/column-builder.js +105 -0
  146. package/dist/data/query/column-builder.js.map +1 -0
  147. package/dist/data/query/column.d.ts +70 -0
  148. package/dist/data/query/column.d.ts.map +1 -0
  149. package/dist/data/query/column.js +57 -0
  150. package/dist/data/query/column.js.map +1 -0
  151. package/dist/data/query/entity.d.ts +8 -0
  152. package/dist/data/query/entity.d.ts.map +1 -0
  153. package/dist/data/query/entity.js +25 -0
  154. package/dist/data/query/entity.js.map +1 -0
  155. package/dist/data/query/errors.d.ts +19 -0
  156. package/dist/data/query/errors.d.ts.map +1 -0
  157. package/dist/data/query/errors.js +31 -0
  158. package/dist/data/query/errors.js.map +1 -0
  159. package/dist/data/query/index.d.ts +15 -0
  160. package/dist/data/query/index.d.ts.map +1 -0
  161. package/dist/data/query/index.js +15 -0
  162. package/dist/data/query/index.js.map +1 -0
  163. package/dist/data/query/logger.d.ts +24 -0
  164. package/dist/data/query/logger.d.ts.map +1 -0
  165. package/dist/data/query/logger.js +33 -0
  166. package/dist/data/query/logger.js.map +1 -0
  167. package/dist/data/query/operations.d.ts +25 -0
  168. package/dist/data/query/operations.d.ts.map +1 -0
  169. package/dist/data/query/operations.js +2 -0
  170. package/dist/data/query/operations.js.map +1 -0
  171. package/dist/data/query/pg-core/alias.d.ts +5 -0
  172. package/dist/data/query/pg-core/alias.d.ts.map +1 -0
  173. package/dist/data/query/pg-core/alias.js +5 -0
  174. package/dist/data/query/pg-core/alias.js.map +1 -0
  175. package/dist/data/query/pg-core/checks.d.ts +21 -0
  176. package/dist/data/query/pg-core/checks.d.ts.map +1 -0
  177. package/dist/data/query/pg-core/checks.js +30 -0
  178. package/dist/data/query/pg-core/checks.js.map +1 -0
  179. package/dist/data/query/pg-core/columns/all.d.ts +68 -0
  180. package/dist/data/query/pg-core/columns/all.d.ts.map +1 -0
  181. package/dist/data/query/pg-core/columns/all.js +69 -0
  182. package/dist/data/query/pg-core/columns/all.js.map +1 -0
  183. package/dist/data/query/pg-core/columns/bigint.d.ts +54 -0
  184. package/dist/data/query/pg-core/columns/bigint.d.ts.map +1 -0
  185. package/dist/data/query/pg-core/columns/bigint.js +54 -0
  186. package/dist/data/query/pg-core/columns/bigint.js.map +1 -0
  187. package/dist/data/query/pg-core/columns/bigserial.d.ts +53 -0
  188. package/dist/data/query/pg-core/columns/bigserial.d.ts.map +1 -0
  189. package/dist/data/query/pg-core/columns/bigserial.js +56 -0
  190. package/dist/data/query/pg-core/columns/bigserial.js.map +1 -0
  191. package/dist/data/query/pg-core/columns/boolean.d.ts +28 -0
  192. package/dist/data/query/pg-core/columns/boolean.d.ts.map +1 -0
  193. package/dist/data/query/pg-core/columns/boolean.js +22 -0
  194. package/dist/data/query/pg-core/columns/boolean.js.map +1 -0
  195. package/dist/data/query/pg-core/columns/char.d.ts +53 -0
  196. package/dist/data/query/pg-core/columns/char.d.ts.map +1 -0
  197. package/dist/data/query/pg-core/columns/char.js +28 -0
  198. package/dist/data/query/pg-core/columns/char.js.map +1 -0
  199. package/dist/data/query/pg-core/columns/cidr.d.ts +28 -0
  200. package/dist/data/query/pg-core/columns/cidr.d.ts.map +1 -0
  201. package/dist/data/query/pg-core/columns/cidr.js +22 -0
  202. package/dist/data/query/pg-core/columns/cidr.js.map +1 -0
  203. package/dist/data/query/pg-core/columns/common.d.ts +167 -0
  204. package/dist/data/query/pg-core/columns/common.d.ts.map +1 -0
  205. package/dist/data/query/pg-core/columns/common.js +190 -0
  206. package/dist/data/query/pg-core/columns/common.js.map +1 -0
  207. package/dist/data/query/pg-core/columns/custom.d.ts +160 -0
  208. package/dist/data/query/pg-core/columns/custom.d.ts.map +1 -0
  209. package/dist/data/query/pg-core/columns/custom.js +46 -0
  210. package/dist/data/query/pg-core/columns/custom.js.map +1 -0
  211. package/dist/data/query/pg-core/columns/date.common.d.ts +8 -0
  212. package/dist/data/query/pg-core/columns/date.common.d.ts.map +1 -0
  213. package/dist/data/query/pg-core/columns/date.common.js +10 -0
  214. package/dist/data/query/pg-core/columns/date.common.js.map +1 -0
  215. package/dist/data/query/pg-core/columns/date.d.ts +57 -0
  216. package/dist/data/query/pg-core/columns/date.d.ts.map +1 -0
  217. package/dist/data/query/pg-core/columns/date.js +57 -0
  218. package/dist/data/query/pg-core/columns/date.js.map +1 -0
  219. package/dist/data/query/pg-core/columns/double-precision.d.ts +29 -0
  220. package/dist/data/query/pg-core/columns/double-precision.d.ts.map +1 -0
  221. package/dist/data/query/pg-core/columns/double-precision.js +28 -0
  222. package/dist/data/query/pg-core/columns/double-precision.js.map +1 -0
  223. package/dist/data/query/pg-core/columns/enum.d.ts +102 -0
  224. package/dist/data/query/pg-core/columns/enum.d.ts.map +1 -0
  225. package/dist/data/query/pg-core/columns/enum.js +78 -0
  226. package/dist/data/query/pg-core/columns/enum.js.map +1 -0
  227. package/dist/data/query/pg-core/columns/index.d.ts +36 -0
  228. package/dist/data/query/pg-core/columns/index.d.ts.map +1 -0
  229. package/dist/data/query/pg-core/columns/index.js +36 -0
  230. package/dist/data/query/pg-core/columns/index.js.map +1 -0
  231. package/dist/data/query/pg-core/columns/inet.d.ts +28 -0
  232. package/dist/data/query/pg-core/columns/inet.d.ts.map +1 -0
  233. package/dist/data/query/pg-core/columns/inet.js +22 -0
  234. package/dist/data/query/pg-core/columns/inet.js.map +1 -0
  235. package/dist/data/query/pg-core/columns/int.common.d.ts +16 -0
  236. package/dist/data/query/pg-core/columns/int.common.d.ts.map +1 -0
  237. package/dist/data/query/pg-core/columns/int.common.js +42 -0
  238. package/dist/data/query/pg-core/columns/int.common.js.map +1 -0
  239. package/dist/data/query/pg-core/columns/integer.d.ts +30 -0
  240. package/dist/data/query/pg-core/columns/integer.d.ts.map +1 -0
  241. package/dist/data/query/pg-core/columns/integer.js +29 -0
  242. package/dist/data/query/pg-core/columns/integer.js.map +1 -0
  243. package/dist/data/query/pg-core/columns/interval.d.ts +40 -0
  244. package/dist/data/query/pg-core/columns/interval.d.ts.map +1 -0
  245. package/dist/data/query/pg-core/columns/interval.js +29 -0
  246. package/dist/data/query/pg-core/columns/interval.js.map +1 -0
  247. package/dist/data/query/pg-core/columns/json.d.ts +33 -0
  248. package/dist/data/query/pg-core/columns/json.d.ts.map +1 -0
  249. package/dist/data/query/pg-core/columns/json.js +39 -0
  250. package/dist/data/query/pg-core/columns/json.js.map +1 -0
  251. package/dist/data/query/pg-core/columns/jsonb.d.ts +33 -0
  252. package/dist/data/query/pg-core/columns/jsonb.d.ts.map +1 -0
  253. package/dist/data/query/pg-core/columns/jsonb.js +39 -0
  254. package/dist/data/query/pg-core/columns/jsonb.js.map +1 -0
  255. package/dist/data/query/pg-core/columns/line.d.ts +69 -0
  256. package/dist/data/query/pg-core/columns/line.d.ts.map +1 -0
  257. package/dist/data/query/pg-core/columns/line.js +57 -0
  258. package/dist/data/query/pg-core/columns/line.js.map +1 -0
  259. package/dist/data/query/pg-core/columns/macaddr.d.ts +28 -0
  260. package/dist/data/query/pg-core/columns/macaddr.d.ts.map +1 -0
  261. package/dist/data/query/pg-core/columns/macaddr.js +22 -0
  262. package/dist/data/query/pg-core/columns/macaddr.js.map +1 -0
  263. package/dist/data/query/pg-core/columns/macaddr8.d.ts +28 -0
  264. package/dist/data/query/pg-core/columns/macaddr8.d.ts.map +1 -0
  265. package/dist/data/query/pg-core/columns/macaddr8.js +22 -0
  266. package/dist/data/query/pg-core/columns/macaddr8.js.map +1 -0
  267. package/dist/data/query/pg-core/columns/numeric.d.ts +112 -0
  268. package/dist/data/query/pg-core/columns/numeric.d.ts.map +1 -0
  269. package/dist/data/query/pg-core/columns/numeric.js +126 -0
  270. package/dist/data/query/pg-core/columns/numeric.js.map +1 -0
  271. package/dist/data/query/pg-core/columns/point.d.ts +72 -0
  272. package/dist/data/query/pg-core/columns/point.d.ts.map +1 -0
  273. package/dist/data/query/pg-core/columns/point.js +63 -0
  274. package/dist/data/query/pg-core/columns/point.js.map +1 -0
  275. package/dist/data/query/pg-core/columns/postgis_extension/geometry.d.ts +68 -0
  276. package/dist/data/query/pg-core/columns/postgis_extension/geometry.d.ts.map +1 -0
  277. package/dist/data/query/pg-core/columns/postgis_extension/geometry.js +57 -0
  278. package/dist/data/query/pg-core/columns/postgis_extension/geometry.js.map +1 -0
  279. package/dist/data/query/pg-core/columns/postgis_extension/utils.d.ts +2 -0
  280. package/dist/data/query/pg-core/columns/postgis_extension/utils.d.ts.map +1 -0
  281. package/dist/data/query/pg-core/columns/postgis_extension/utils.js +39 -0
  282. package/dist/data/query/pg-core/columns/postgis_extension/utils.js.map +1 -0
  283. package/dist/data/query/pg-core/columns/real.d.ts +34 -0
  284. package/dist/data/query/pg-core/columns/real.d.ts.map +1 -0
  285. package/dist/data/query/pg-core/columns/real.js +32 -0
  286. package/dist/data/query/pg-core/columns/real.js.map +1 -0
  287. package/dist/data/query/pg-core/columns/serial.d.ts +28 -0
  288. package/dist/data/query/pg-core/columns/serial.d.ts.map +1 -0
  289. package/dist/data/query/pg-core/columns/serial.js +24 -0
  290. package/dist/data/query/pg-core/columns/serial.js.map +1 -0
  291. package/dist/data/query/pg-core/columns/smallint.d.ts +30 -0
  292. package/dist/data/query/pg-core/columns/smallint.d.ts.map +1 -0
  293. package/dist/data/query/pg-core/columns/smallint.js +29 -0
  294. package/dist/data/query/pg-core/columns/smallint.js.map +1 -0
  295. package/dist/data/query/pg-core/columns/smallserial.d.ts +28 -0
  296. package/dist/data/query/pg-core/columns/smallserial.d.ts.map +1 -0
  297. package/dist/data/query/pg-core/columns/smallserial.js +24 -0
  298. package/dist/data/query/pg-core/columns/smallserial.js.map +1 -0
  299. package/dist/data/query/pg-core/columns/text.d.ts +38 -0
  300. package/dist/data/query/pg-core/columns/text.d.ts.map +1 -0
  301. package/dist/data/query/pg-core/columns/text.js +26 -0
  302. package/dist/data/query/pg-core/columns/text.js.map +1 -0
  303. package/dist/data/query/pg-core/columns/time.d.ts +45 -0
  304. package/dist/data/query/pg-core/columns/time.d.ts.map +1 -0
  305. package/dist/data/query/pg-core/columns/time.js +39 -0
  306. package/dist/data/query/pg-core/columns/time.js.map +1 -0
  307. package/dist/data/query/pg-core/columns/timestamp.d.ts +76 -0
  308. package/dist/data/query/pg-core/columns/timestamp.d.ts.map +1 -0
  309. package/dist/data/query/pg-core/columns/timestamp.js +83 -0
  310. package/dist/data/query/pg-core/columns/timestamp.js.map +1 -0
  311. package/dist/data/query/pg-core/columns/uuid.d.ts +32 -0
  312. package/dist/data/query/pg-core/columns/uuid.d.ts.map +1 -0
  313. package/dist/data/query/pg-core/columns/uuid.js +29 -0
  314. package/dist/data/query/pg-core/columns/uuid.js.map +1 -0
  315. package/dist/data/query/pg-core/columns/varchar.d.ts +53 -0
  316. package/dist/data/query/pg-core/columns/varchar.d.ts.map +1 -0
  317. package/dist/data/query/pg-core/columns/varchar.js +28 -0
  318. package/dist/data/query/pg-core/columns/varchar.js.map +1 -0
  319. package/dist/data/query/pg-core/columns/vector_extension/bit.d.ts +45 -0
  320. package/dist/data/query/pg-core/columns/vector_extension/bit.d.ts.map +1 -0
  321. package/dist/data/query/pg-core/columns/vector_extension/bit.js +26 -0
  322. package/dist/data/query/pg-core/columns/vector_extension/bit.js.map +1 -0
  323. package/dist/data/query/pg-core/columns/vector_extension/halfvec.d.ts +49 -0
  324. package/dist/data/query/pg-core/columns/vector_extension/halfvec.d.ts.map +1 -0
  325. package/dist/data/query/pg-core/columns/vector_extension/halfvec.js +35 -0
  326. package/dist/data/query/pg-core/columns/vector_extension/halfvec.js.map +1 -0
  327. package/dist/data/query/pg-core/columns/vector_extension/sparsevec.d.ts +36 -0
  328. package/dist/data/query/pg-core/columns/vector_extension/sparsevec.d.ts.map +1 -0
  329. package/dist/data/query/pg-core/columns/vector_extension/sparsevec.js +26 -0
  330. package/dist/data/query/pg-core/columns/vector_extension/sparsevec.js.map +1 -0
  331. package/dist/data/query/pg-core/columns/vector_extension/vector.d.ts +49 -0
  332. package/dist/data/query/pg-core/columns/vector_extension/vector.d.ts.map +1 -0
  333. package/dist/data/query/pg-core/columns/vector_extension/vector.js +35 -0
  334. package/dist/data/query/pg-core/columns/vector_extension/vector.js.map +1 -0
  335. package/dist/data/query/pg-core/db.d.ts +292 -0
  336. package/dist/data/query/pg-core/db.d.ts.map +1 -0
  337. package/dist/data/query/pg-core/db.js +377 -0
  338. package/dist/data/query/pg-core/db.js.map +1 -0
  339. package/dist/data/query/pg-core/dialect.d.ts +66 -0
  340. package/dist/data/query/pg-core/dialect.d.ts.map +1 -0
  341. package/dist/data/query/pg-core/dialect.js +1099 -0
  342. package/dist/data/query/pg-core/dialect.js.map +1 -0
  343. package/dist/data/query/pg-core/expressions.d.ts +9 -0
  344. package/dist/data/query/pg-core/expressions.d.ts.map +1 -0
  345. package/dist/data/query/pg-core/expressions.js +18 -0
  346. package/dist/data/query/pg-core/expressions.js.map +1 -0
  347. package/dist/data/query/pg-core/foreign-keys.d.ts +57 -0
  348. package/dist/data/query/pg-core/foreign-keys.d.ts.map +1 -0
  349. package/dist/data/query/pg-core/foreign-keys.js +70 -0
  350. package/dist/data/query/pg-core/foreign-keys.js.map +1 -0
  351. package/dist/data/query/pg-core/index.d.ts +22 -0
  352. package/dist/data/query/pg-core/index.d.ts.map +1 -0
  353. package/dist/data/query/pg-core/index.js +22 -0
  354. package/dist/data/query/pg-core/index.js.map +1 -0
  355. package/dist/data/query/pg-core/indexes.d.ts +84 -0
  356. package/dist/data/query/pg-core/indexes.d.ts.map +1 -0
  357. package/dist/data/query/pg-core/indexes.js +100 -0
  358. package/dist/data/query/pg-core/indexes.js.map +1 -0
  359. package/dist/data/query/pg-core/policies.d.ts +27 -0
  360. package/dist/data/query/pg-core/policies.d.ts.map +1 -0
  361. package/dist/data/query/pg-core/policies.js +30 -0
  362. package/dist/data/query/pg-core/policies.js.map +1 -0
  363. package/dist/data/query/pg-core/primary-keys.d.ts +37 -0
  364. package/dist/data/query/pg-core/primary-keys.d.ts.map +1 -0
  365. package/dist/data/query/pg-core/primary-keys.js +38 -0
  366. package/dist/data/query/pg-core/primary-keys.js.map +1 -0
  367. package/dist/data/query/pg-core/query-builders/count.d.ts +30 -0
  368. package/dist/data/query/pg-core/query-builders/count.d.ts.map +1 -0
  369. package/dist/data/query/pg-core/query-builders/count.js +45 -0
  370. package/dist/data/query/pg-core/query-builders/count.js.map +1 -0
  371. package/dist/data/query/pg-core/query-builders/delete.d.ts +115 -0
  372. package/dist/data/query/pg-core/query-builders/delete.d.ts.map +1 -0
  373. package/dist/data/query/pg-core/query-builders/delete.js +103 -0
  374. package/dist/data/query/pg-core/query-builders/delete.js.map +1 -0
  375. package/dist/data/query/pg-core/query-builders/index.d.ts +8 -0
  376. package/dist/data/query/pg-core/query-builders/index.d.ts.map +1 -0
  377. package/dist/data/query/pg-core/query-builders/index.js +8 -0
  378. package/dist/data/query/pg-core/query-builders/index.js.map +1 -0
  379. package/dist/data/query/pg-core/query-builders/insert.d.ts +189 -0
  380. package/dist/data/query/pg-core/query-builders/insert.d.ts.map +1 -0
  381. package/dist/data/query/pg-core/query-builders/insert.js +201 -0
  382. package/dist/data/query/pg-core/query-builders/insert.js.map +1 -0
  383. package/dist/data/query/pg-core/query-builders/query-builder.d.ts +38 -0
  384. package/dist/data/query/pg-core/query-builders/query-builder.d.ts.map +1 -0
  385. package/dist/data/query/pg-core/query-builders/query-builder.js +83 -0
  386. package/dist/data/query/pg-core/query-builders/query-builder.js.map +1 -0
  387. package/dist/data/query/pg-core/query-builders/query.d.ts +56 -0
  388. package/dist/data/query/pg-core/query-builders/query.d.ts.map +1 -0
  389. package/dist/data/query/pg-core/query-builders/query.js +104 -0
  390. package/dist/data/query/pg-core/query-builders/query.js.map +1 -0
  391. package/dist/data/query/pg-core/query-builders/raw.d.ts +27 -0
  392. package/dist/data/query/pg-core/query-builders/raw.d.ts.map +1 -0
  393. package/dist/data/query/pg-core/query-builders/raw.js +34 -0
  394. package/dist/data/query/pg-core/query-builders/raw.js.map +1 -0
  395. package/dist/data/query/pg-core/query-builders/refresh-materialized-view.d.ts +38 -0
  396. package/dist/data/query/pg-core/query-builders/refresh-materialized-view.d.ts.map +1 -0
  397. package/dist/data/query/pg-core/query-builders/refresh-materialized-view.js +58 -0
  398. package/dist/data/query/pg-core/query-builders/refresh-materialized-view.js.map +1 -0
  399. package/dist/data/query/pg-core/query-builders/select.d.ts +811 -0
  400. package/dist/data/query/pg-core/query-builders/select.d.ts.map +1 -0
  401. package/dist/data/query/pg-core/query-builders/select.js +993 -0
  402. package/dist/data/query/pg-core/query-builders/select.js.map +1 -0
  403. package/dist/data/query/pg-core/query-builders/select.types.d.ts +141 -0
  404. package/dist/data/query/pg-core/query-builders/select.types.d.ts.map +1 -0
  405. package/dist/data/query/pg-core/query-builders/select.types.js +2 -0
  406. package/dist/data/query/pg-core/query-builders/select.types.js.map +1 -0
  407. package/dist/data/query/pg-core/query-builders/update.d.ts +183 -0
  408. package/dist/data/query/pg-core/query-builders/update.d.ts.map +1 -0
  409. package/dist/data/query/pg-core/query-builders/update.js +210 -0
  410. package/dist/data/query/pg-core/query-builders/update.js.map +1 -0
  411. package/dist/data/query/pg-core/roles.d.ts +22 -0
  412. package/dist/data/query/pg-core/roles.d.ts.map +1 -0
  413. package/dist/data/query/pg-core/roles.js +29 -0
  414. package/dist/data/query/pg-core/roles.js.map +1 -0
  415. package/dist/data/query/pg-core/schema.d.ts +23 -0
  416. package/dist/data/query/pg-core/schema.d.ts.map +1 -0
  417. package/dist/data/query/pg-core/schema.js +46 -0
  418. package/dist/data/query/pg-core/schema.js.map +1 -0
  419. package/dist/data/query/pg-core/sequence.d.ts +21 -0
  420. package/dist/data/query/pg-core/sequence.d.ts.map +1 -0
  421. package/dist/data/query/pg-core/sequence.js +23 -0
  422. package/dist/data/query/pg-core/sequence.js.map +1 -0
  423. package/dist/data/query/pg-core/session.d.ts +94 -0
  424. package/dist/data/query/pg-core/session.d.ts.map +1 -0
  425. package/dist/data/query/pg-core/session.js +169 -0
  426. package/dist/data/query/pg-core/session.js.map +1 -0
  427. package/dist/data/query/pg-core/subquery.d.ts +19 -0
  428. package/dist/data/query/pg-core/subquery.d.ts.map +1 -0
  429. package/dist/data/query/pg-core/subquery.js +2 -0
  430. package/dist/data/query/pg-core/subquery.js.map +1 -0
  431. package/dist/data/query/pg-core/table.d.ts +129 -0
  432. package/dist/data/query/pg-core/table.d.ts.map +1 -0
  433. package/dist/data/query/pg-core/table.js +62 -0
  434. package/dist/data/query/pg-core/table.js.map +1 -0
  435. package/dist/data/query/pg-core/unique-constraint.d.ts +34 -0
  436. package/dist/data/query/pg-core/unique-constraint.d.ts.map +1 -0
  437. package/dist/data/query/pg-core/unique-constraint.js +56 -0
  438. package/dist/data/query/pg-core/unique-constraint.js.map +1 -0
  439. package/dist/data/query/pg-core/utils/array.d.ts +4 -0
  440. package/dist/data/query/pg-core/utils/array.d.ts.map +1 -0
  441. package/dist/data/query/pg-core/utils/array.js +75 -0
  442. package/dist/data/query/pg-core/utils/array.js.map +1 -0
  443. package/dist/data/query/pg-core/utils/index.d.ts +2 -0
  444. package/dist/data/query/pg-core/utils/index.d.ts.map +1 -0
  445. package/dist/data/query/pg-core/utils/index.js +2 -0
  446. package/dist/data/query/pg-core/utils/index.js.map +1 -0
  447. package/dist/data/query/pg-core/utils.d.ts +56 -0
  448. package/dist/data/query/pg-core/utils.d.ts.map +1 -0
  449. package/dist/data/query/pg-core/utils.js +88 -0
  450. package/dist/data/query/pg-core/utils.js.map +1 -0
  451. package/dist/data/query/pg-core/view-base.d.ts +9 -0
  452. package/dist/data/query/pg-core/view-base.d.ts.map +1 -0
  453. package/dist/data/query/pg-core/view-base.js +6 -0
  454. package/dist/data/query/pg-core/view-base.js.map +1 -0
  455. package/dist/data/query/pg-core/view-common.d.ts +2 -0
  456. package/dist/data/query/pg-core/view-common.d.ts.map +1 -0
  457. package/dist/data/query/pg-core/view-common.js +2 -0
  458. package/dist/data/query/pg-core/view-common.js.map +1 -0
  459. package/dist/data/query/pg-core/view.d.ts +161 -0
  460. package/dist/data/query/pg-core/view.d.ts.map +1 -0
  461. package/dist/data/query/pg-core/view.js +243 -0
  462. package/dist/data/query/pg-core/view.js.map +1 -0
  463. package/dist/data/query/postgres-js/driver.d.ts +30 -0
  464. package/dist/data/query/postgres-js/driver.d.ts.map +1 -0
  465. package/dist/data/query/postgres-js/driver.js +77 -0
  466. package/dist/data/query/postgres-js/driver.js.map +1 -0
  467. package/dist/data/query/postgres-js/index.d.ts +3 -0
  468. package/dist/data/query/postgres-js/index.d.ts.map +1 -0
  469. package/dist/data/query/postgres-js/index.js +3 -0
  470. package/dist/data/query/postgres-js/index.js.map +1 -0
  471. package/dist/data/query/postgres-js/session.d.ts +67 -0
  472. package/dist/data/query/postgres-js/session.d.ts.map +1 -0
  473. package/dist/data/query/postgres-js/session.js +139 -0
  474. package/dist/data/query/postgres-js/session.js.map +1 -0
  475. package/dist/data/query/primary-key.d.ts +11 -0
  476. package/dist/data/query/primary-key.d.ts.map +1 -0
  477. package/dist/data/query/primary-key.js +11 -0
  478. package/dist/data/query/primary-key.js.map +1 -0
  479. package/dist/data/query/query-builders/query-builder.d.ts +14 -0
  480. package/dist/data/query/query-builders/query-builder.d.ts.map +1 -0
  481. package/dist/data/query/query-builders/query-builder.js +9 -0
  482. package/dist/data/query/query-builders/query-builder.js.map +1 -0
  483. package/dist/data/query/query-builders/select.types.d.ts +59 -0
  484. package/dist/data/query/query-builders/select.types.d.ts.map +1 -0
  485. package/dist/data/query/query-builders/select.types.js +2 -0
  486. package/dist/data/query/query-builders/select.types.js.map +1 -0
  487. package/dist/data/query/query-promise.d.ts +10 -0
  488. package/dist/data/query/query-promise.d.ts.map +1 -0
  489. package/dist/data/query/query-promise.js +21 -0
  490. package/dist/data/query/query-promise.js.map +1 -0
  491. package/dist/data/query/relations.d.ts +216 -0
  492. package/dist/data/query/relations.d.ts.map +1 -0
  493. package/dist/data/query/relations.js +257 -0
  494. package/dist/data/query/relations.js.map +1 -0
  495. package/dist/data/query/runnable-query.d.ts +11 -0
  496. package/dist/data/query/runnable-query.d.ts.map +1 -0
  497. package/dist/data/query/runnable-query.js +2 -0
  498. package/dist/data/query/runnable-query.js.map +1 -0
  499. package/dist/data/query/selection-proxy.d.ts +10 -0
  500. package/dist/data/query/selection-proxy.d.ts.map +1 -0
  501. package/dist/data/query/selection-proxy.js +62 -0
  502. package/dist/data/query/selection-proxy.js.map +1 -0
  503. package/dist/data/query/session.d.ts +8 -0
  504. package/dist/data/query/session.d.ts.map +1 -0
  505. package/dist/data/query/session.js +2 -0
  506. package/dist/data/query/session.js.map +1 -0
  507. package/dist/data/query/sql/expressions/conditions.d.ts +454 -0
  508. package/dist/data/query/sql/expressions/conditions.d.ts.map +1 -0
  509. package/dist/data/query/sql/expressions/conditions.js +393 -0
  510. package/dist/data/query/sql/expressions/conditions.js.map +1 -0
  511. package/dist/data/query/sql/expressions/index.d.ts +3 -0
  512. package/dist/data/query/sql/expressions/index.d.ts.map +1 -0
  513. package/dist/data/query/sql/expressions/index.js +3 -0
  514. package/dist/data/query/sql/expressions/index.js.map +1 -0
  515. package/dist/data/query/sql/expressions/select.d.ts +39 -0
  516. package/dist/data/query/sql/expressions/select.d.ts.map +1 -0
  517. package/dist/data/query/sql/expressions/select.js +42 -0
  518. package/dist/data/query/sql/expressions/select.js.map +1 -0
  519. package/dist/data/query/sql/functions/aggregate.d.ts +105 -0
  520. package/dist/data/query/sql/functions/aggregate.d.ts.map +1 -0
  521. package/dist/data/query/sql/functions/aggregate.js +122 -0
  522. package/dist/data/query/sql/functions/aggregate.js.map +1 -0
  523. package/dist/data/query/sql/functions/index.d.ts +3 -0
  524. package/dist/data/query/sql/functions/index.d.ts.map +1 -0
  525. package/dist/data/query/sql/functions/index.js +3 -0
  526. package/dist/data/query/sql/functions/index.js.map +1 -0
  527. package/dist/data/query/sql/functions/vector.d.ts +121 -0
  528. package/dist/data/query/sql/functions/vector.d.ts.map +1 -0
  529. package/dist/data/query/sql/functions/vector.js +152 -0
  530. package/dist/data/query/sql/functions/vector.js.map +1 -0
  531. package/dist/data/query/sql/index.d.ts +4 -0
  532. package/dist/data/query/sql/index.d.ts.map +1 -0
  533. package/dist/data/query/sql/index.js +4 -0
  534. package/dist/data/query/sql/index.js.map +1 -0
  535. package/dist/data/query/sql/sql.d.ts +254 -0
  536. package/dist/data/query/sql/sql.d.ts.map +1 -0
  537. package/dist/data/query/sql/sql.js +478 -0
  538. package/dist/data/query/sql/sql.js.map +1 -0
  539. package/dist/data/query/subquery.d.ts +21 -0
  540. package/dist/data/query/subquery.d.ts.map +1 -0
  541. package/dist/data/query/subquery.js +18 -0
  542. package/dist/data/query/subquery.js.map +1 -0
  543. package/dist/data/query/table.d.ts +142 -0
  544. package/dist/data/query/table.d.ts.map +1 -0
  545. package/dist/data/query/table.js +73 -0
  546. package/dist/data/query/table.js.map +1 -0
  547. package/dist/data/query/table.utils.d.ts +3 -0
  548. package/dist/data/query/table.utils.d.ts.map +1 -0
  549. package/dist/data/query/table.utils.js +3 -0
  550. package/dist/data/query/table.utils.js.map +1 -0
  551. package/dist/data/query/tracing-utils.d.ts +2 -0
  552. package/dist/data/query/tracing-utils.d.ts.map +1 -0
  553. package/dist/data/query/tracing-utils.js +4 -0
  554. package/dist/data/query/tracing-utils.js.map +1 -0
  555. package/dist/data/query/tracing.d.ts +10 -0
  556. package/dist/data/query/tracing.d.ts.map +1 -0
  557. package/dist/data/query/tracing.js +7 -0
  558. package/dist/data/query/tracing.js.map +1 -0
  559. package/dist/data/query/utils.d.ts +81 -0
  560. package/dist/data/query/utils.d.ts.map +1 -0
  561. package/dist/data/query/utils.js +193 -0
  562. package/dist/data/query/utils.js.map +1 -0
  563. package/dist/data/query/version.d.ts +3 -0
  564. package/dist/data/query/version.d.ts.map +1 -0
  565. package/dist/data/query/version.js +5 -0
  566. package/dist/data/query/version.js.map +1 -0
  567. package/dist/data/query/view-common.d.ts +2 -0
  568. package/dist/data/query/view-common.d.ts.map +1 -0
  569. package/dist/data/query/view-common.js +2 -0
  570. package/dist/data/query/view-common.js.map +1 -0
  571. package/dist/data/schema/namespace.d.ts +2 -2
  572. package/dist/data/temporal/columns.d.ts +4 -4
  573. package/dist/data/vector/types.d.ts +2 -2
  574. package/dist/db/index.d.ts +0 -1
  575. package/dist/db/index.d.ts.map +1 -1
  576. package/dist/db/index.js +0 -1
  577. package/dist/db/index.js.map +1 -1
  578. package/dist/db/namespace.d.ts +0 -5
  579. package/dist/db/namespace.d.ts.map +1 -1
  580. package/dist/db/namespace.js +0 -5
  581. package/dist/db/namespace.js.map +1 -1
  582. package/dist/domain/define.d.ts.map +1 -1
  583. package/dist/domain/define.js.map +1 -1
  584. package/dist/domain/field.d.ts +2 -4
  585. package/dist/domain/field.d.ts.map +1 -1
  586. package/dist/domain/field.js.map +1 -1
  587. package/dist/domain/index.d.ts +1 -1
  588. package/dist/domain/index.d.ts.map +1 -1
  589. package/dist/domain/types.d.ts +9 -37
  590. package/dist/domain/types.d.ts.map +1 -1
  591. package/dist/drizzle/index.d.ts +3 -0
  592. package/dist/drizzle/index.d.ts.map +1 -0
  593. package/dist/drizzle/index.js +3 -0
  594. package/dist/drizzle/index.js.map +1 -0
  595. package/dist/log/namespace.d.ts +1 -1
  596. package/dist/logging/index.d.ts +1 -1
  597. package/dist/logging/index.d.ts.map +1 -1
  598. package/dist/logging/proxy.d.ts +2 -2
  599. package/dist/logging/proxy.d.ts.map +1 -1
  600. package/dist/logging/proxy.js +2 -9
  601. package/dist/logging/proxy.js.map +1 -1
  602. package/dist/logging/types.d.ts +0 -7
  603. package/dist/logging/types.d.ts.map +1 -1
  604. package/dist/resource/batch.d.ts +17 -0
  605. package/dist/resource/batch.d.ts.map +1 -0
  606. package/dist/resource/batch.js +47 -0
  607. package/dist/resource/batch.js.map +1 -0
  608. package/dist/resource/builder.d.ts +11 -0
  609. package/dist/resource/builder.d.ts.map +1 -0
  610. package/dist/resource/builder.js +12 -0
  611. package/dist/resource/builder.js.map +1 -0
  612. package/dist/resource/errors.d.ts +7 -0
  613. package/dist/resource/errors.d.ts.map +1 -0
  614. package/dist/resource/errors.js +9 -0
  615. package/dist/resource/errors.js.map +1 -0
  616. package/dist/resource/index.d.ts +9 -0
  617. package/dist/resource/index.d.ts.map +1 -0
  618. package/dist/resource/index.js +6 -0
  619. package/dist/resource/index.js.map +1 -0
  620. package/dist/resource/paginate.d.ts +13 -0
  621. package/dist/resource/paginate.d.ts.map +1 -0
  622. package/dist/resource/paginate.js +29 -0
  623. package/dist/resource/paginate.js.map +1 -0
  624. package/dist/resource/register.d.ts +16 -0
  625. package/dist/resource/register.d.ts.map +1 -0
  626. package/dist/resource/register.js +181 -0
  627. package/dist/resource/register.js.map +1 -0
  628. package/dist/resource/types.d.ts +69 -0
  629. package/dist/resource/types.d.ts.map +1 -0
  630. package/dist/resource/types.js +2 -0
  631. package/dist/resource/types.js.map +1 -0
  632. package/dist/surface/http.d.ts +2 -2
  633. package/dist/surface/http.d.ts.map +1 -1
  634. package/dist/surface/http.js +8 -25
  635. package/dist/surface/http.js.map +1 -1
  636. package/dist/surface/index.d.ts +1 -1
  637. package/dist/surface/index.d.ts.map +1 -1
  638. package/dist/surface/namespace.d.ts +1 -1
  639. package/dist/surface/namespace.d.ts.map +1 -1
  640. package/dist/surface/namespace.js +1 -1
  641. package/dist/surface/namespace.js.map +1 -1
  642. package/dist/surface/types.d.ts +0 -7
  643. package/dist/surface/types.d.ts.map +1 -1
  644. package/dist/temporal/definition-queries.d.ts +5 -5
  645. package/dist/temporal/definition-queries.d.ts.map +1 -1
  646. package/dist/temporal/definition-queries.js.map +1 -1
  647. package/dist/test/plugin.d.ts +2 -1
  648. package/dist/test/plugin.d.ts.map +1 -1
  649. package/dist/test/plugin.js +10 -2
  650. package/dist/test/plugin.js.map +1 -1
  651. package/dist/test/setup.d.ts.map +1 -1
  652. package/dist/test/setup.js +6 -4
  653. package/dist/test/setup.js.map +1 -1
  654. package/dist/test/vitest.d.ts +2 -2
  655. package/dist/test/vitest.d.ts.map +1 -1
  656. package/dist/test/vitest.js +6 -3
  657. package/dist/test/vitest.js.map +1 -1
  658. package/dist/trunk.d.ts +35 -0
  659. package/dist/trunk.d.ts.map +1 -0
  660. package/dist/trunk.js +102 -0
  661. package/dist/trunk.js.map +1 -0
  662. package/dist/validation/surface.d.ts +4 -0
  663. package/dist/validation/surface.d.ts.map +1 -0
  664. package/dist/validation/surface.js +55 -0
  665. package/dist/validation/surface.js.map +1 -0
  666. package/dist/vector/index.d.ts +1 -2
  667. package/dist/vector/index.d.ts.map +1 -1
  668. package/dist/vector/index.js +1 -1
  669. package/dist/vector/index.js.map +1 -1
  670. package/dist/vector/namespace.d.ts +4 -10
  671. package/dist/vector/namespace.d.ts.map +1 -1
  672. package/dist/vector/namespace.js +4 -10
  673. package/dist/vector/namespace.js.map +1 -1
  674. package/dist/vector/query.d.ts +2 -15
  675. package/dist/vector/query.d.ts.map +1 -1
  676. package/dist/vector/query.js +1 -39
  677. package/dist/vector/query.js.map +1 -1
  678. package/dist/webhook/verify.d.ts +3 -5
  679. package/dist/webhook/verify.d.ts.map +1 -1
  680. package/dist/webhook/verify.js +2 -5
  681. package/dist/webhook/verify.js.map +1 -1
  682. package/dist/workspace/affected.d.ts +17 -0
  683. package/dist/workspace/affected.d.ts.map +1 -0
  684. package/dist/workspace/affected.js +29 -0
  685. package/dist/workspace/affected.js.map +1 -0
  686. package/dist/workspace/changed-files.d.ts +7 -0
  687. package/dist/workspace/changed-files.d.ts.map +1 -0
  688. package/dist/workspace/changed-files.js +38 -0
  689. package/dist/workspace/changed-files.js.map +1 -0
  690. package/dist/workspace/dependency-graph.d.ts +8 -0
  691. package/dist/workspace/dependency-graph.d.ts.map +1 -0
  692. package/dist/workspace/dependency-graph.js +54 -0
  693. package/dist/workspace/dependency-graph.js.map +1 -0
  694. package/dist/workspace/generate.d.ts +1 -0
  695. package/dist/workspace/generate.d.ts.map +1 -1
  696. package/dist/workspace/generate.js +1 -0
  697. package/dist/workspace/generate.js.map +1 -1
  698. package/dist/workspace/index.d.ts +3 -0
  699. package/dist/workspace/index.d.ts.map +1 -1
  700. package/dist/workspace/index.js +3 -0
  701. package/dist/workspace/index.js.map +1 -1
  702. package/dist/workspace/sync.d.ts.map +1 -1
  703. package/dist/workspace/sync.js +1 -0
  704. package/dist/workspace/sync.js.map +1 -1
  705. package/package.json +33 -24
  706. package/dist/config/ts-register.d.ts +0 -2
  707. package/dist/config/ts-register.d.ts.map +0 -1
  708. package/dist/config/ts-register.js +0 -3
  709. package/dist/config/ts-register.js.map +0 -1
  710. package/dist/config/ts-resolve-hooks.d.ts +0 -10
  711. package/dist/config/ts-resolve-hooks.d.ts.map +0 -1
  712. package/dist/config/ts-resolve-hooks.js +0 -14
  713. package/dist/config/ts-resolve-hooks.js.map +0 -1
  714. package/dist/db/excluded.d.ts +0 -7
  715. package/dist/db/excluded.d.ts.map +0 -1
  716. package/dist/db/excluded.js +0 -11
  717. package/dist/db/excluded.js.map +0 -1
  718. package/dist/jsonb/index.d.ts +0 -2
  719. package/dist/jsonb/index.d.ts.map +0 -1
  720. package/dist/jsonb/index.js +0 -2
  721. package/dist/jsonb/index.js.map +0 -1
  722. package/dist/jsonb/namespace.d.ts +0 -11
  723. package/dist/jsonb/namespace.d.ts.map +0 -1
  724. package/dist/jsonb/namespace.js +0 -11
  725. package/dist/jsonb/namespace.js.map +0 -1
  726. package/dist/jsonb/query.d.ts +0 -5
  727. package/dist/jsonb/query.d.ts.map +0 -1
  728. package/dist/jsonb/query.js +0 -11
  729. package/dist/jsonb/query.js.map +0 -1
  730. package/dist/validation/doctrine.d.ts +0 -13
  731. package/dist/validation/doctrine.d.ts.map +0 -1
  732. package/dist/validation/doctrine.js +0 -115
  733. package/dist/validation/doctrine.js.map +0 -1
@@ -0,0 +1,1099 @@
1
+ import { aliasedTable, aliasedTableColumn, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias } from '../alias.js';
2
+ import { CasingCache } from '../casing.js';
3
+ import { Column } from '../column.js';
4
+ import { entityKind, is } from '../entity.js';
5
+ import { DrizzleError } from '../errors.js';
6
+ import { PgColumn, PgDate, PgDateString, PgJson, PgJsonb, PgNumeric, PgTime, PgTimestamp, PgTimestampString, PgUUID, } from './columns/index.js';
7
+ import { PgTable } from './table.js';
8
+ import { getOperators, getOrderByOperators, Many, normalizeRelation, One, } from '../relations.js';
9
+ import { and, eq, View } from '../sql/index.js';
10
+ import { Param, SQL, sql, } from '../sql/sql.js';
11
+ import { Subquery } from '../subquery.js';
12
+ import { getTableName, getTableUniqueName, Table } from '../table.js';
13
+ import { orderSelectedFields } from '../utils.js';
14
+ import { ViewBaseConfig } from '../view-common.js';
15
+ import { PgViewBase } from './view-base.js';
16
+ export class PgDialect {
17
+ static [entityKind] = 'PgDialect';
18
+ /** @internal */
19
+ casing;
20
+ constructor(config) {
21
+ this.casing = new CasingCache(config?.casing);
22
+ }
23
+ escapeName(name) {
24
+ return `"${name.replace(/"/g, '""')}"`;
25
+ }
26
+ escapeParam(num) {
27
+ return `$${num + 1}`;
28
+ }
29
+ escapeString(str) {
30
+ return `'${str.replace(/'/g, "''")}'`;
31
+ }
32
+ buildWithCTE(queries) {
33
+ if (!queries?.length)
34
+ return undefined;
35
+ const withSqlChunks = [sql `with `];
36
+ for (const [i, w] of queries.entries()) {
37
+ withSqlChunks.push(sql `${sql.identifier(w._.alias)} as (${w._.sql})`);
38
+ if (i < queries.length - 1) {
39
+ withSqlChunks.push(sql `, `);
40
+ }
41
+ }
42
+ withSqlChunks.push(sql ` `);
43
+ return sql.join(withSqlChunks);
44
+ }
45
+ buildDeleteQuery({ table, where, returning, withList }) {
46
+ const withSql = this.buildWithCTE(withList);
47
+ const returningSql = returning
48
+ ? sql ` returning ${this.buildSelection(returning, { isSingleTable: true })}`
49
+ : undefined;
50
+ const whereSql = where ? sql ` where ${where}` : undefined;
51
+ return sql `${withSql}delete from ${table}${whereSql}${returningSql}`;
52
+ }
53
+ buildUpdateSet(table, set) {
54
+ const tableColumns = table[Table.Symbol.Columns];
55
+ const columnNames = Object.keys(tableColumns).filter((colName) => set[colName] !== undefined || tableColumns[colName]?.onUpdateFn !== undefined);
56
+ const setSize = columnNames.length;
57
+ return sql.join(columnNames.flatMap((colName, i) => {
58
+ const col = tableColumns[colName];
59
+ const onUpdateFnResult = col.onUpdateFn?.();
60
+ const value = set[colName] ?? (is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col));
61
+ const res = sql `${sql.identifier(this.casing.getColumnCasing(col))} = ${value}`;
62
+ if (i < setSize - 1) {
63
+ return [res, sql.raw(', ')];
64
+ }
65
+ return [res];
66
+ }));
67
+ }
68
+ buildUpdateQuery({ table, set, where, returning, withList, from, joins }) {
69
+ const withSql = this.buildWithCTE(withList);
70
+ const tableName = table[PgTable.Symbol.Name];
71
+ const tableSchema = table[PgTable.Symbol.Schema];
72
+ const origTableName = table[PgTable.Symbol.OriginalName];
73
+ const alias = tableName === origTableName ? undefined : tableName;
74
+ const tableSql = sql `${tableSchema ? sql `${sql.identifier(tableSchema)}.` : undefined}${sql.identifier(origTableName)}${alias && sql ` ${sql.identifier(alias)}`}`;
75
+ const setSql = this.buildUpdateSet(table, set);
76
+ const fromSql = from && sql.join([sql.raw(' from '), this.buildFromTable(from)]);
77
+ const joinsSql = this.buildJoins(joins);
78
+ const returningSql = returning
79
+ ? sql ` returning ${this.buildSelection(returning, { isSingleTable: !from })}`
80
+ : undefined;
81
+ const whereSql = where ? sql ` where ${where}` : undefined;
82
+ return sql `${withSql}update ${tableSql} set ${setSql}${fromSql}${joinsSql}${whereSql}${returningSql}`;
83
+ }
84
+ /**
85
+ * Builds selection SQL with provided fields/expressions
86
+ *
87
+ * Examples:
88
+ *
89
+ * `select <selection> from`
90
+ *
91
+ * `insert ... returning <selection>`
92
+ *
93
+ * If `isSingleTable` is true, then columns won't be prefixed with table name
94
+ */
95
+ buildSelection(fields, { isSingleTable = false } = {}) {
96
+ const columnsLen = fields.length;
97
+ const chunks = fields
98
+ .flatMap(({ field }, i) => {
99
+ const chunk = [];
100
+ if (is(field, SQL.Aliased) && field.isSelectionField) {
101
+ chunk.push(sql.identifier(field.fieldAlias));
102
+ }
103
+ else if (is(field, SQL.Aliased) || is(field, SQL)) {
104
+ const query = is(field, SQL.Aliased) ? field.sql : field;
105
+ if (isSingleTable) {
106
+ chunk.push(new SQL(query.queryChunks.map((c) => {
107
+ if (is(c, PgColumn)) {
108
+ return sql.identifier(this.casing.getColumnCasing(c));
109
+ }
110
+ return c;
111
+ })));
112
+ }
113
+ else {
114
+ chunk.push(query);
115
+ }
116
+ if (is(field, SQL.Aliased)) {
117
+ chunk.push(sql ` as ${sql.identifier(field.fieldAlias)}`);
118
+ }
119
+ }
120
+ else if (is(field, Column)) {
121
+ if (isSingleTable) {
122
+ chunk.push(sql.identifier(this.casing.getColumnCasing(field)));
123
+ }
124
+ else {
125
+ chunk.push(field);
126
+ }
127
+ }
128
+ else if (is(field, Subquery)) {
129
+ const entries = Object.entries(field._.selectedFields);
130
+ if (entries.length === 1) {
131
+ const entry = entries[0][1];
132
+ const fieldDecoder = is(entry, SQL)
133
+ ? entry.decoder
134
+ : is(entry, Column)
135
+ ? { mapFromDriverValue: (v) => entry.mapFromDriverValue(v) }
136
+ : entry.sql.decoder;
137
+ if (fieldDecoder) {
138
+ field._.sql.decoder = fieldDecoder;
139
+ }
140
+ }
141
+ chunk.push(field);
142
+ }
143
+ if (i < columnsLen - 1) {
144
+ chunk.push(sql `, `);
145
+ }
146
+ return chunk;
147
+ });
148
+ return sql.join(chunks);
149
+ }
150
+ buildJoins(joins) {
151
+ if (!joins || joins.length === 0) {
152
+ return undefined;
153
+ }
154
+ const joinsArray = [];
155
+ for (const [index, joinMeta] of joins.entries()) {
156
+ if (index === 0) {
157
+ joinsArray.push(sql ` `);
158
+ }
159
+ const table = joinMeta.table;
160
+ const lateralSql = joinMeta.lateral ? sql ` lateral` : undefined;
161
+ const onSql = joinMeta.on ? sql ` on ${joinMeta.on}` : undefined;
162
+ if (is(table, PgTable)) {
163
+ const tableName = table[PgTable.Symbol.Name];
164
+ const tableSchema = table[PgTable.Symbol.Schema];
165
+ const origTableName = table[PgTable.Symbol.OriginalName];
166
+ const alias = tableName === origTableName ? undefined : joinMeta.alias;
167
+ joinsArray.push(sql `${sql.raw(joinMeta.joinType)} join${lateralSql} ${tableSchema ? sql `${sql.identifier(tableSchema)}.` : undefined}${sql.identifier(origTableName)}${alias && sql ` ${sql.identifier(alias)}`}${onSql}`);
168
+ }
169
+ else if (is(table, View)) {
170
+ const viewName = table[ViewBaseConfig].name;
171
+ const viewSchema = table[ViewBaseConfig].schema;
172
+ const origViewName = table[ViewBaseConfig].originalName;
173
+ const alias = viewName === origViewName ? undefined : joinMeta.alias;
174
+ joinsArray.push(sql `${sql.raw(joinMeta.joinType)} join${lateralSql} ${viewSchema ? sql `${sql.identifier(viewSchema)}.` : undefined}${sql.identifier(origViewName)}${alias && sql ` ${sql.identifier(alias)}`}${onSql}`);
175
+ }
176
+ else {
177
+ joinsArray.push(sql `${sql.raw(joinMeta.joinType)} join${lateralSql} ${table}${onSql}`);
178
+ }
179
+ if (index < joins.length - 1) {
180
+ joinsArray.push(sql ` `);
181
+ }
182
+ }
183
+ return sql.join(joinsArray);
184
+ }
185
+ buildFromTable(table) {
186
+ if (is(table, Table) && table[Table.Symbol.IsAlias]) {
187
+ let fullName = sql `${sql.identifier(table[Table.Symbol.OriginalName])}`;
188
+ if (table[Table.Symbol.Schema]) {
189
+ fullName = sql `${sql.identifier(table[Table.Symbol.Schema])}.${fullName}`;
190
+ }
191
+ return sql `${fullName} ${sql.identifier(table[Table.Symbol.Name])}`;
192
+ }
193
+ return table;
194
+ }
195
+ buildSelectQuery({ withList, fields, fieldsFlat, where, having, table, joins, orderBy, groupBy, limit, offset, lockingClause, distinct, setOperators, }) {
196
+ const fieldsList = fieldsFlat ?? orderSelectedFields(fields);
197
+ for (const f of fieldsList) {
198
+ if (is(f.field, Column)
199
+ && getTableName(f.field.table)
200
+ !== (is(table, Subquery)
201
+ ? table._.alias
202
+ : is(table, PgViewBase)
203
+ ? table[ViewBaseConfig].name
204
+ : is(table, SQL)
205
+ ? undefined
206
+ : getTableName(table))
207
+ && !((table) => joins?.some(({ alias }) => alias === (table[Table.Symbol.IsAlias] ? getTableName(table) : table[Table.Symbol.BaseName])))(f.field.table)) {
208
+ const tableName = getTableName(f.field.table);
209
+ throw new Error(`Your "${f.path.join('->')}" field references a column "${tableName}"."${f.field.name}", but the table "${tableName}" is not part of the query! Did you forget to join it?`);
210
+ }
211
+ }
212
+ const isSingleTable = !joins || joins.length === 0;
213
+ const withSql = this.buildWithCTE(withList);
214
+ let distinctSql;
215
+ if (distinct) {
216
+ distinctSql = distinct === true ? sql ` distinct` : sql ` distinct on (${sql.join(distinct.on, sql `, `)})`;
217
+ }
218
+ const selection = this.buildSelection(fieldsList, { isSingleTable });
219
+ const tableSql = this.buildFromTable(table);
220
+ const joinsSql = this.buildJoins(joins);
221
+ const whereSql = where ? sql ` where ${where}` : undefined;
222
+ const havingSql = having ? sql ` having ${having}` : undefined;
223
+ let orderBySql;
224
+ if (orderBy && orderBy.length > 0) {
225
+ orderBySql = sql ` order by ${sql.join(orderBy, sql `, `)}`;
226
+ }
227
+ let groupBySql;
228
+ if (groupBy && groupBy.length > 0) {
229
+ groupBySql = sql ` group by ${sql.join(groupBy, sql `, `)}`;
230
+ }
231
+ const limitSql = typeof limit === 'object' || (typeof limit === 'number' && limit >= 0)
232
+ ? sql ` limit ${limit}`
233
+ : undefined;
234
+ const offsetSql = offset ? sql ` offset ${offset}` : undefined;
235
+ const lockingClauseSql = sql.empty();
236
+ if (lockingClause) {
237
+ const clauseSql = sql ` for ${sql.raw(lockingClause.strength)}`;
238
+ if (lockingClause.config.of) {
239
+ clauseSql.append(sql ` of ${sql.join(Array.isArray(lockingClause.config.of) ? lockingClause.config.of : [lockingClause.config.of], sql `, `)}`);
240
+ }
241
+ if (lockingClause.config.noWait) {
242
+ clauseSql.append(sql ` nowait`);
243
+ }
244
+ else if (lockingClause.config.skipLocked) {
245
+ clauseSql.append(sql ` skip locked`);
246
+ }
247
+ lockingClauseSql.append(clauseSql);
248
+ }
249
+ const finalQuery = sql `${withSql}select${distinctSql} ${selection} from ${tableSql}${joinsSql}${whereSql}${groupBySql}${havingSql}${orderBySql}${limitSql}${offsetSql}${lockingClauseSql}`;
250
+ if (setOperators.length > 0) {
251
+ return this.buildSetOperations(finalQuery, setOperators);
252
+ }
253
+ return finalQuery;
254
+ }
255
+ buildSetOperations(leftSelect, setOperators) {
256
+ const [setOperator, ...rest] = setOperators;
257
+ if (!setOperator) {
258
+ throw new Error('Cannot pass undefined values to any set operator');
259
+ }
260
+ if (rest.length === 0) {
261
+ return this.buildSetOperationQuery({ leftSelect, setOperator });
262
+ }
263
+ // Some recursive magic here
264
+ return this.buildSetOperations(this.buildSetOperationQuery({ leftSelect, setOperator }), rest);
265
+ }
266
+ buildSetOperationQuery({ leftSelect, setOperator: { type, isAll, rightSelect, limit, orderBy, offset }, }) {
267
+ const leftChunk = sql `(${leftSelect.getSQL()}) `;
268
+ const rightChunk = sql `(${rightSelect.getSQL()})`;
269
+ let orderBySql;
270
+ if (orderBy && orderBy.length > 0) {
271
+ const orderByValues = [];
272
+ // The next bit is necessary because the sql operator replaces ${table.column} with `table`.`column`
273
+ // which is invalid Sql syntax, Table from one of the SELECTs cannot be used in global ORDER clause
274
+ for (const singleOrderBy of orderBy) {
275
+ if (is(singleOrderBy, PgColumn)) {
276
+ orderByValues.push(sql.identifier(singleOrderBy.name));
277
+ }
278
+ else if (is(singleOrderBy, SQL)) {
279
+ for (let i = 0; i < singleOrderBy.queryChunks.length; i++) {
280
+ const chunk = singleOrderBy.queryChunks[i];
281
+ if (is(chunk, PgColumn)) {
282
+ singleOrderBy.queryChunks[i] = sql.identifier(chunk.name);
283
+ }
284
+ }
285
+ orderByValues.push(sql `${singleOrderBy}`);
286
+ }
287
+ else {
288
+ orderByValues.push(sql `${singleOrderBy}`);
289
+ }
290
+ }
291
+ orderBySql = sql ` order by ${sql.join(orderByValues, sql `, `)} `;
292
+ }
293
+ const limitSql = typeof limit === 'object' || (typeof limit === 'number' && limit >= 0)
294
+ ? sql ` limit ${limit}`
295
+ : undefined;
296
+ const operatorChunk = sql.raw(`${type} ${isAll ? 'all ' : ''}`);
297
+ const offsetSql = offset ? sql ` offset ${offset}` : undefined;
298
+ return sql `${leftChunk}${operatorChunk}${rightChunk}${orderBySql}${limitSql}${offsetSql}`;
299
+ }
300
+ buildInsertQuery({ table, values: valuesOrSelect, onConflict, returning, withList, select, overridingSystemValue_ }) {
301
+ const valuesSqlList = [];
302
+ const columns = table[Table.Symbol.Columns];
303
+ const colEntries = Object.entries(columns).filter(([_, col]) => !col.shouldDisableInsert());
304
+ const insertOrder = colEntries.map(([, column]) => sql.identifier(this.casing.getColumnCasing(column)));
305
+ if (select) {
306
+ const select = valuesOrSelect;
307
+ if (is(select, SQL)) {
308
+ valuesSqlList.push(select);
309
+ }
310
+ else {
311
+ valuesSqlList.push(select.getSQL());
312
+ }
313
+ }
314
+ else {
315
+ const values = valuesOrSelect;
316
+ valuesSqlList.push(sql.raw('values '));
317
+ for (const [valueIndex, value] of values.entries()) {
318
+ const valueList = [];
319
+ for (const [fieldName, col] of colEntries) {
320
+ const colValue = value[fieldName];
321
+ if (colValue === undefined || (is(colValue, Param) && colValue.value === undefined)) {
322
+ // eslint-disable-next-line unicorn/no-negated-condition
323
+ if (col.defaultFn !== undefined) {
324
+ const defaultFnResult = col.defaultFn();
325
+ const defaultValue = is(defaultFnResult, SQL) ? defaultFnResult : sql.param(defaultFnResult, col);
326
+ valueList.push(defaultValue);
327
+ // eslint-disable-next-line unicorn/no-negated-condition
328
+ }
329
+ else if (!col.default && col.onUpdateFn !== undefined) {
330
+ const onUpdateFnResult = col.onUpdateFn();
331
+ const newValue = is(onUpdateFnResult, SQL) ? onUpdateFnResult : sql.param(onUpdateFnResult, col);
332
+ valueList.push(newValue);
333
+ }
334
+ else {
335
+ valueList.push(sql `default`);
336
+ }
337
+ }
338
+ else {
339
+ valueList.push(colValue);
340
+ }
341
+ }
342
+ valuesSqlList.push(valueList);
343
+ if (valueIndex < values.length - 1) {
344
+ valuesSqlList.push(sql `, `);
345
+ }
346
+ }
347
+ }
348
+ const withSql = this.buildWithCTE(withList);
349
+ const valuesSql = sql.join(valuesSqlList);
350
+ const returningSql = returning
351
+ ? sql ` returning ${this.buildSelection(returning, { isSingleTable: true })}`
352
+ : undefined;
353
+ const onConflictSql = onConflict ? sql ` on conflict ${onConflict}` : undefined;
354
+ const overridingSql = overridingSystemValue_ === true ? sql `overriding system value ` : undefined;
355
+ return sql `${withSql}insert into ${table} ${insertOrder} ${overridingSql}${valuesSql}${onConflictSql}${returningSql}`;
356
+ }
357
+ buildRefreshMaterializedViewQuery({ view, concurrently, withNoData }) {
358
+ const concurrentlySql = concurrently ? sql ` concurrently` : undefined;
359
+ const withNoDataSql = withNoData ? sql ` with no data` : undefined;
360
+ return sql `refresh materialized view${concurrentlySql} ${view}${withNoDataSql}`;
361
+ }
362
+ prepareTyping(encoder) {
363
+ if (is(encoder, PgJsonb) || is(encoder, PgJson)) {
364
+ return 'json';
365
+ }
366
+ else if (is(encoder, PgNumeric)) {
367
+ return 'decimal';
368
+ }
369
+ else if (is(encoder, PgTime)) {
370
+ return 'time';
371
+ }
372
+ else if (is(encoder, PgTimestamp) || is(encoder, PgTimestampString)) {
373
+ return 'timestamp';
374
+ }
375
+ else if (is(encoder, PgDate) || is(encoder, PgDateString)) {
376
+ return 'date';
377
+ }
378
+ else if (is(encoder, PgUUID)) {
379
+ return 'uuid';
380
+ }
381
+ else {
382
+ return 'none';
383
+ }
384
+ }
385
+ sqlToQuery(sql, invokeSource) {
386
+ return sql.toQuery({
387
+ casing: this.casing,
388
+ escapeName: this.escapeName,
389
+ escapeParam: this.escapeParam,
390
+ escapeString: this.escapeString,
391
+ prepareTyping: this.prepareTyping,
392
+ invokeSource,
393
+ });
394
+ }
395
+ // buildRelationalQueryWithPK({
396
+ // fullSchema,
397
+ // schema,
398
+ // tableNamesMap,
399
+ // table,
400
+ // tableConfig,
401
+ // queryConfig: config,
402
+ // tableAlias,
403
+ // isRoot = false,
404
+ // joinOn,
405
+ // }: {
406
+ // fullSchema: Record<string, unknown>;
407
+ // schema: TablesRelationalConfig;
408
+ // tableNamesMap: Record<string, string>;
409
+ // table: PgTable;
410
+ // tableConfig: TableRelationalConfig;
411
+ // queryConfig: true | DBQueryConfig<'many', true>;
412
+ // tableAlias: string;
413
+ // isRoot?: boolean;
414
+ // joinOn?: SQL;
415
+ // }): BuildRelationalQueryResult<PgTable, PgColumn> {
416
+ // // For { "<relation>": true }, return a table with selection of all columns
417
+ // if (config === true) {
418
+ // const selectionEntries = Object.entries(tableConfig.columns);
419
+ // const selection: BuildRelationalQueryResult<PgTable, PgColumn>['selection'] = selectionEntries.map((
420
+ // [key, value],
421
+ // ) => ({
422
+ // dbKey: value.name,
423
+ // tsKey: key,
424
+ // field: value as PgColumn,
425
+ // relationTableTsKey: undefined,
426
+ // isJson: false,
427
+ // selection: [],
428
+ // }));
429
+ // return {
430
+ // tableTsKey: tableConfig.tsName,
431
+ // sql: table,
432
+ // selection,
433
+ // };
434
+ // }
435
+ // // let selection: BuildRelationalQueryResult<PgTable, PgColumn>['selection'] = [];
436
+ // // let selectionForBuild = selection;
437
+ // const aliasedColumns = Object.fromEntries(
438
+ // Object.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)]),
439
+ // );
440
+ // const aliasedRelations = Object.fromEntries(
441
+ // Object.entries(tableConfig.relations).map(([key, value]) => [key, aliasedRelation(value, tableAlias)]),
442
+ // );
443
+ // const aliasedFields = Object.assign({}, aliasedColumns, aliasedRelations);
444
+ // let where, hasUserDefinedWhere;
445
+ // if (config.where) {
446
+ // const whereSql = typeof config.where === 'function' ? config.where(aliasedFields, operators) : config.where;
447
+ // where = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);
448
+ // hasUserDefinedWhere = !!where;
449
+ // }
450
+ // where = and(joinOn, where);
451
+ // // const fieldsSelection: { tsKey: string; value: PgColumn | SQL.Aliased; isExtra?: boolean }[] = [];
452
+ // let joins: Join[] = [];
453
+ // let selectedColumns: string[] = [];
454
+ // // Figure out which columns to select
455
+ // if (config.columns) {
456
+ // let isIncludeMode = false;
457
+ // for (const [field, value] of Object.entries(config.columns)) {
458
+ // if (value === undefined) {
459
+ // continue;
460
+ // }
461
+ // if (field in tableConfig.columns) {
462
+ // if (!isIncludeMode && value === true) {
463
+ // isIncludeMode = true;
464
+ // }
465
+ // selectedColumns.push(field);
466
+ // }
467
+ // }
468
+ // if (selectedColumns.length > 0) {
469
+ // selectedColumns = isIncludeMode
470
+ // ? selectedColumns.filter((c) => config.columns?.[c] === true)
471
+ // : Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));
472
+ // }
473
+ // } else {
474
+ // // Select all columns if selection is not specified
475
+ // selectedColumns = Object.keys(tableConfig.columns);
476
+ // }
477
+ // // for (const field of selectedColumns) {
478
+ // // const column = tableConfig.columns[field]! as PgColumn;
479
+ // // fieldsSelection.push({ tsKey: field, value: column });
480
+ // // }
481
+ // let initiallySelectedRelations: {
482
+ // tsKey: string;
483
+ // queryConfig: true | DBQueryConfig<'many', false>;
484
+ // relation: Relation;
485
+ // }[] = [];
486
+ // // let selectedRelations: BuildRelationalQueryResult<PgTable, PgColumn>['selection'] = [];
487
+ // // Figure out which relations to select
488
+ // if (config.with) {
489
+ // initiallySelectedRelations = Object.entries(config.with)
490
+ // .filter((entry): entry is [typeof entry[0], NonNullable<typeof entry[1]>] => !!entry[1])
491
+ // .map(([tsKey, queryConfig]) => ({ tsKey, queryConfig, relation: tableConfig.relations[tsKey]! }));
492
+ // }
493
+ // const manyRelations = initiallySelectedRelations.filter((r) =>
494
+ // is(r.relation, Many)
495
+ // && (schema[tableNamesMap[r.relation.referencedTable[Table.Symbol.Name]]!]?.primaryKey.length ?? 0) > 0
496
+ // );
497
+ // // If this is the last Many relation (or there are no Many relations), we are on the innermost subquery level
498
+ // const isInnermostQuery = manyRelations.length < 2;
499
+ // const selectedExtras: {
500
+ // tsKey: string;
501
+ // value: SQL.Aliased;
502
+ // }[] = [];
503
+ // // Figure out which extras to select
504
+ // if (isInnermostQuery && config.extras) {
505
+ // const extras = typeof config.extras === 'function'
506
+ // ? config.extras(aliasedFields, { sql })
507
+ // : config.extras;
508
+ // for (const [tsKey, value] of Object.entries(extras)) {
509
+ // selectedExtras.push({
510
+ // tsKey,
511
+ // value: mapColumnsInAliasedSQLToAlias(value, tableAlias),
512
+ // });
513
+ // }
514
+ // }
515
+ // // Transform `fieldsSelection` into `selection`
516
+ // // `fieldsSelection` shouldn't be used after this point
517
+ // // for (const { tsKey, value, isExtra } of fieldsSelection) {
518
+ // // selection.push({
519
+ // // dbKey: is(value, SQL.Aliased) ? value.fieldAlias : tableConfig.columns[tsKey]!.name,
520
+ // // tsKey,
521
+ // // field: is(value, Column) ? aliasedTableColumn(value, tableAlias) : value,
522
+ // // relationTableTsKey: undefined,
523
+ // // isJson: false,
524
+ // // isExtra,
525
+ // // selection: [],
526
+ // // });
527
+ // // }
528
+ // let orderByOrig = typeof config.orderBy === 'function'
529
+ // ? config.orderBy(aliasedFields, orderByOperators)
530
+ // : config.orderBy ?? [];
531
+ // if (!Array.isArray(orderByOrig)) {
532
+ // orderByOrig = [orderByOrig];
533
+ // }
534
+ // const orderBy = orderByOrig.map((orderByValue) => {
535
+ // if (is(orderByValue, Column)) {
536
+ // return aliasedTableColumn(orderByValue, tableAlias) as PgColumn;
537
+ // }
538
+ // return mapColumnsInSQLToAlias(orderByValue, tableAlias);
539
+ // });
540
+ // const limit = isInnermostQuery ? config.limit : undefined;
541
+ // const offset = isInnermostQuery ? config.offset : undefined;
542
+ // // For non-root queries without additional config except columns, return a table with selection
543
+ // if (
544
+ // !isRoot
545
+ // && initiallySelectedRelations.length === 0
546
+ // && selectedExtras.length === 0
547
+ // && !where
548
+ // && orderBy.length === 0
549
+ // && limit === undefined
550
+ // && offset === undefined
551
+ // ) {
552
+ // return {
553
+ // tableTsKey: tableConfig.tsName,
554
+ // sql: table,
555
+ // selection: selectedColumns.map((key) => ({
556
+ // dbKey: tableConfig.columns[key]!.name,
557
+ // tsKey: key,
558
+ // field: tableConfig.columns[key] as PgColumn,
559
+ // relationTableTsKey: undefined,
560
+ // isJson: false,
561
+ // selection: [],
562
+ // })),
563
+ // };
564
+ // }
565
+ // const selectedRelationsWithoutPK:
566
+ // // Process all relations without primary keys, because they need to be joined differently and will all be on the same query level
567
+ // for (
568
+ // const {
569
+ // tsKey: selectedRelationTsKey,
570
+ // queryConfig: selectedRelationConfigValue,
571
+ // relation,
572
+ // } of initiallySelectedRelations
573
+ // ) {
574
+ // const normalizedRelation = normalizeRelation(schema, tableNamesMap, relation);
575
+ // const relationTableName = relation.referencedTable[Table.Symbol.Name];
576
+ // const relationTableTsName = tableNamesMap[relationTableName]!;
577
+ // const relationTable = schema[relationTableTsName]!;
578
+ // if (relationTable.primaryKey.length > 0) {
579
+ // continue;
580
+ // }
581
+ // const relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;
582
+ // const joinOn = and(
583
+ // ...normalizedRelation.fields.map((field, i) =>
584
+ // eq(
585
+ // aliasedTableColumn(normalizedRelation.references[i]!, relationTableAlias),
586
+ // aliasedTableColumn(field, tableAlias),
587
+ // )
588
+ // ),
589
+ // );
590
+ // const builtRelation = this.buildRelationalQueryWithoutPK({
591
+ // fullSchema,
592
+ // schema,
593
+ // tableNamesMap,
594
+ // table: fullSchema[relationTableTsName] as PgTable,
595
+ // tableConfig: schema[relationTableTsName]!,
596
+ // queryConfig: selectedRelationConfigValue,
597
+ // tableAlias: relationTableAlias,
598
+ // joinOn,
599
+ // nestedQueryRelation: relation,
600
+ // });
601
+ // const field = sql`${sql.identifier(relationTableAlias)}.${sql.identifier('data')}`.as(selectedRelationTsKey);
602
+ // joins.push({
603
+ // on: sql`true`,
604
+ // table: new Subquery(builtRelation.sql as SQL, {}, relationTableAlias),
605
+ // alias: relationTableAlias,
606
+ // joinType: 'left',
607
+ // lateral: true,
608
+ // });
609
+ // selectedRelations.push({
610
+ // dbKey: selectedRelationTsKey,
611
+ // tsKey: selectedRelationTsKey,
612
+ // field,
613
+ // relationTableTsKey: relationTableTsName,
614
+ // isJson: true,
615
+ // selection: builtRelation.selection,
616
+ // });
617
+ // }
618
+ // const oneRelations = initiallySelectedRelations.filter((r): r is typeof r & { relation: One } =>
619
+ // is(r.relation, One)
620
+ // );
621
+ // // Process all One relations with PKs, because they can all be joined on the same level
622
+ // for (
623
+ // const {
624
+ // tsKey: selectedRelationTsKey,
625
+ // queryConfig: selectedRelationConfigValue,
626
+ // relation,
627
+ // } of oneRelations
628
+ // ) {
629
+ // const normalizedRelation = normalizeRelation(schema, tableNamesMap, relation);
630
+ // const relationTableName = relation.referencedTable[Table.Symbol.Name];
631
+ // const relationTableTsName = tableNamesMap[relationTableName]!;
632
+ // const relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;
633
+ // const relationTable = schema[relationTableTsName]!;
634
+ // if (relationTable.primaryKey.length === 0) {
635
+ // continue;
636
+ // }
637
+ // const joinOn = and(
638
+ // ...normalizedRelation.fields.map((field, i) =>
639
+ // eq(
640
+ // aliasedTableColumn(normalizedRelation.references[i]!, relationTableAlias),
641
+ // aliasedTableColumn(field, tableAlias),
642
+ // )
643
+ // ),
644
+ // );
645
+ // const builtRelation = this.buildRelationalQueryWithPK({
646
+ // fullSchema,
647
+ // schema,
648
+ // tableNamesMap,
649
+ // table: fullSchema[relationTableTsName] as PgTable,
650
+ // tableConfig: schema[relationTableTsName]!,
651
+ // queryConfig: selectedRelationConfigValue,
652
+ // tableAlias: relationTableAlias,
653
+ // joinOn,
654
+ // });
655
+ // const field = sql`case when ${sql.identifier(relationTableAlias)} is null then null else json_build_array(${
656
+ // sql.join(
657
+ // builtRelation.selection.map(({ field }) =>
658
+ // is(field, SQL.Aliased)
659
+ // ? sql`${sql.identifier(relationTableAlias)}.${sql.identifier(field.fieldAlias)}`
660
+ // : is(field, Column)
661
+ // ? aliasedTableColumn(field, relationTableAlias)
662
+ // : field
663
+ // ),
664
+ // sql`, `,
665
+ // )
666
+ // }) end`.as(selectedRelationTsKey);
667
+ // const isLateralJoin = is(builtRelation.sql, SQL);
668
+ // joins.push({
669
+ // on: isLateralJoin ? sql`true` : joinOn,
670
+ // table: is(builtRelation.sql, SQL)
671
+ // ? new Subquery(builtRelation.sql, {}, relationTableAlias)
672
+ // : aliasedTable(builtRelation.sql, relationTableAlias),
673
+ // alias: relationTableAlias,
674
+ // joinType: 'left',
675
+ // lateral: is(builtRelation.sql, SQL),
676
+ // });
677
+ // selectedRelations.push({
678
+ // dbKey: selectedRelationTsKey,
679
+ // tsKey: selectedRelationTsKey,
680
+ // field,
681
+ // relationTableTsKey: relationTableTsName,
682
+ // isJson: true,
683
+ // selection: builtRelation.selection,
684
+ // });
685
+ // }
686
+ // let distinct: PgSelectConfig['distinct'];
687
+ // let tableFrom: PgTable | Subquery = table;
688
+ // // Process first Many relation - each one requires a nested subquery
689
+ // const manyRelation = manyRelations[0];
690
+ // if (manyRelation) {
691
+ // const {
692
+ // tsKey: selectedRelationTsKey,
693
+ // queryConfig: selectedRelationQueryConfig,
694
+ // relation,
695
+ // } = manyRelation;
696
+ // distinct = {
697
+ // on: tableConfig.primaryKey.map((c) => aliasedTableColumn(c as PgColumn, tableAlias)),
698
+ // };
699
+ // const normalizedRelation = normalizeRelation(schema, tableNamesMap, relation);
700
+ // const relationTableName = relation.referencedTable[Table.Symbol.Name];
701
+ // const relationTableTsName = tableNamesMap[relationTableName]!;
702
+ // const relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;
703
+ // const joinOn = and(
704
+ // ...normalizedRelation.fields.map((field, i) =>
705
+ // eq(
706
+ // aliasedTableColumn(normalizedRelation.references[i]!, relationTableAlias),
707
+ // aliasedTableColumn(field, tableAlias),
708
+ // )
709
+ // ),
710
+ // );
711
+ // const builtRelationJoin = this.buildRelationalQueryWithPK({
712
+ // fullSchema,
713
+ // schema,
714
+ // tableNamesMap,
715
+ // table: fullSchema[relationTableTsName] as PgTable,
716
+ // tableConfig: schema[relationTableTsName]!,
717
+ // queryConfig: selectedRelationQueryConfig,
718
+ // tableAlias: relationTableAlias,
719
+ // joinOn,
720
+ // });
721
+ // const builtRelationSelectionField = sql`case when ${
722
+ // sql.identifier(relationTableAlias)
723
+ // } is null then '[]' else json_agg(json_build_array(${
724
+ // sql.join(
725
+ // builtRelationJoin.selection.map(({ field }) =>
726
+ // is(field, SQL.Aliased)
727
+ // ? sql`${sql.identifier(relationTableAlias)}.${sql.identifier(field.fieldAlias)}`
728
+ // : is(field, Column)
729
+ // ? aliasedTableColumn(field, relationTableAlias)
730
+ // : field
731
+ // ),
732
+ // sql`, `,
733
+ // )
734
+ // })) over (partition by ${sql.join(distinct.on, sql`, `)}) end`.as(selectedRelationTsKey);
735
+ // const isLateralJoin = is(builtRelationJoin.sql, SQL);
736
+ // joins.push({
737
+ // on: isLateralJoin ? sql`true` : joinOn,
738
+ // table: isLateralJoin
739
+ // ? new Subquery(builtRelationJoin.sql as SQL, {}, relationTableAlias)
740
+ // : aliasedTable(builtRelationJoin.sql as PgTable, relationTableAlias),
741
+ // alias: relationTableAlias,
742
+ // joinType: 'left',
743
+ // lateral: isLateralJoin,
744
+ // });
745
+ // // Build the "from" subquery with the remaining Many relations
746
+ // const builtTableFrom = this.buildRelationalQueryWithPK({
747
+ // fullSchema,
748
+ // schema,
749
+ // tableNamesMap,
750
+ // table,
751
+ // tableConfig,
752
+ // queryConfig: {
753
+ // ...config,
754
+ // where: undefined,
755
+ // orderBy: undefined,
756
+ // limit: undefined,
757
+ // offset: undefined,
758
+ // with: manyRelations.slice(1).reduce<NonNullable<typeof config['with']>>(
759
+ // (result, { tsKey, queryConfig: configValue }) => {
760
+ // result[tsKey] = configValue;
761
+ // return result;
762
+ // },
763
+ // {},
764
+ // ),
765
+ // },
766
+ // tableAlias,
767
+ // });
768
+ // selectedRelations.push({
769
+ // dbKey: selectedRelationTsKey,
770
+ // tsKey: selectedRelationTsKey,
771
+ // field: builtRelationSelectionField,
772
+ // relationTableTsKey: relationTableTsName,
773
+ // isJson: true,
774
+ // selection: builtRelationJoin.selection,
775
+ // });
776
+ // // selection = builtTableFrom.selection.map((item) =>
777
+ // // is(item.field, SQL.Aliased)
778
+ // // ? { ...item, field: sql`${sql.identifier(tableAlias)}.${sql.identifier(item.field.fieldAlias)}` }
779
+ // // : item
780
+ // // );
781
+ // // selectionForBuild = [{
782
+ // // dbKey: '*',
783
+ // // tsKey: '*',
784
+ // // field: sql`${sql.identifier(tableAlias)}.*`,
785
+ // // selection: [],
786
+ // // isJson: false,
787
+ // // relationTableTsKey: undefined,
788
+ // // }];
789
+ // // const newSelectionItem: (typeof selection)[number] = {
790
+ // // dbKey: selectedRelationTsKey,
791
+ // // tsKey: selectedRelationTsKey,
792
+ // // field,
793
+ // // relationTableTsKey: relationTableTsName,
794
+ // // isJson: true,
795
+ // // selection: builtRelationJoin.selection,
796
+ // // };
797
+ // // selection.push(newSelectionItem);
798
+ // // selectionForBuild.push(newSelectionItem);
799
+ // tableFrom = is(builtTableFrom.sql, PgTable)
800
+ // ? builtTableFrom.sql
801
+ // : new Subquery(builtTableFrom.sql, {}, tableAlias);
802
+ // }
803
+ // if (selectedColumns.length === 0 && selectedRelations.length === 0 && selectedExtras.length === 0) {
804
+ // throw new DrizzleError(`No fields selected for table "${tableConfig.tsName}" ("${tableAlias}")`);
805
+ // }
806
+ // let selection: BuildRelationalQueryResult<PgTable, PgColumn>['selection'];
807
+ // function prepareSelectedColumns() {
808
+ // return selectedColumns.map((key) => ({
809
+ // dbKey: tableConfig.columns[key]!.name,
810
+ // tsKey: key,
811
+ // field: tableConfig.columns[key] as PgColumn,
812
+ // relationTableTsKey: undefined,
813
+ // isJson: false,
814
+ // selection: [],
815
+ // }));
816
+ // }
817
+ // function prepareSelectedExtras() {
818
+ // return selectedExtras.map((item) => ({
819
+ // dbKey: item.value.fieldAlias,
820
+ // tsKey: item.tsKey,
821
+ // field: item.value,
822
+ // relationTableTsKey: undefined,
823
+ // isJson: false,
824
+ // selection: [],
825
+ // }));
826
+ // }
827
+ // if (isRoot) {
828
+ // selection = [
829
+ // ...prepareSelectedColumns(),
830
+ // ...prepareSelectedExtras(),
831
+ // ];
832
+ // }
833
+ // if (hasUserDefinedWhere || orderBy.length > 0) {
834
+ // tableFrom = new Subquery(
835
+ // this.buildSelectQuery({
836
+ // table: is(tableFrom, PgTable) ? aliasedTable(tableFrom, tableAlias) : tableFrom,
837
+ // fields: {},
838
+ // fieldsFlat: selectionForBuild.map(({ field }) => ({
839
+ // path: [],
840
+ // field: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field,
841
+ // })),
842
+ // joins,
843
+ // distinct,
844
+ // }),
845
+ // {},
846
+ // tableAlias,
847
+ // );
848
+ // selectionForBuild = selection.map((item) =>
849
+ // is(item.field, SQL.Aliased)
850
+ // ? { ...item, field: sql`${sql.identifier(tableAlias)}.${sql.identifier(item.field.fieldAlias)}` }
851
+ // : item
852
+ // );
853
+ // joins = [];
854
+ // distinct = undefined;
855
+ // }
856
+ // const result = this.buildSelectQuery({
857
+ // table: is(tableFrom, PgTable) ? aliasedTable(tableFrom, tableAlias) : tableFrom,
858
+ // fields: {},
859
+ // fieldsFlat: selectionForBuild.map(({ field }) => ({
860
+ // path: [],
861
+ // field: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field,
862
+ // })),
863
+ // where,
864
+ // limit,
865
+ // offset,
866
+ // joins,
867
+ // orderBy,
868
+ // distinct,
869
+ // });
870
+ // return {
871
+ // tableTsKey: tableConfig.tsName,
872
+ // sql: result,
873
+ // selection,
874
+ // };
875
+ // }
876
+ buildRelationalQueryWithoutPK({ fullSchema, schema, tableNamesMap, table, tableConfig, queryConfig: config, tableAlias, nestedQueryRelation, joinOn, }) {
877
+ let selection = [];
878
+ let limit, offset, orderBy = [], where;
879
+ const joins = [];
880
+ if (config === true) {
881
+ const selectionEntries = Object.entries(tableConfig.columns);
882
+ selection = selectionEntries.map(([key, value]) => ({
883
+ dbKey: value.name,
884
+ tsKey: key,
885
+ field: aliasedTableColumn(value, tableAlias),
886
+ relationTableTsKey: undefined,
887
+ isJson: false,
888
+ selection: [],
889
+ }));
890
+ }
891
+ else {
892
+ const aliasedColumns = Object.fromEntries(Object.entries(tableConfig.columns).map(([key, value]) => [key, aliasedTableColumn(value, tableAlias)]));
893
+ if (config.where) {
894
+ const whereSql = typeof config.where === 'function'
895
+ ? config.where(aliasedColumns, getOperators())
896
+ : config.where;
897
+ where = whereSql && mapColumnsInSQLToAlias(whereSql, tableAlias);
898
+ }
899
+ const fieldsSelection = [];
900
+ let selectedColumns = [];
901
+ // Figure out which columns to select
902
+ if (config.columns) {
903
+ let isIncludeMode = false;
904
+ for (const [field, value] of Object.entries(config.columns)) {
905
+ if (value === undefined) {
906
+ continue;
907
+ }
908
+ if (field in tableConfig.columns) {
909
+ if (!isIncludeMode && value === true) {
910
+ isIncludeMode = true;
911
+ }
912
+ selectedColumns.push(field);
913
+ }
914
+ }
915
+ if (selectedColumns.length > 0) {
916
+ selectedColumns = isIncludeMode
917
+ ? selectedColumns.filter((c) => config.columns?.[c] === true)
918
+ : Object.keys(tableConfig.columns).filter((key) => !selectedColumns.includes(key));
919
+ }
920
+ }
921
+ else {
922
+ // Select all columns if selection is not specified
923
+ selectedColumns = Object.keys(tableConfig.columns);
924
+ }
925
+ for (const field of selectedColumns) {
926
+ const column = tableConfig.columns[field];
927
+ fieldsSelection.push({ tsKey: field, value: column });
928
+ }
929
+ let selectedRelations = [];
930
+ // Figure out which relations to select
931
+ if (config.with) {
932
+ selectedRelations = Object.entries(config.with)
933
+ .filter((entry) => !!entry[1])
934
+ .map(([tsKey, queryConfig]) => ({ tsKey, queryConfig, relation: tableConfig.relations[tsKey] }));
935
+ }
936
+ let extras;
937
+ // Figure out which extras to select
938
+ if (config.extras) {
939
+ extras = typeof config.extras === 'function'
940
+ ? config.extras(aliasedColumns, { sql })
941
+ : config.extras;
942
+ for (const [tsKey, value] of Object.entries(extras)) {
943
+ fieldsSelection.push({
944
+ tsKey,
945
+ value: mapColumnsInAliasedSQLToAlias(value, tableAlias),
946
+ });
947
+ }
948
+ }
949
+ // Transform `fieldsSelection` into `selection`
950
+ // `fieldsSelection` shouldn't be used after this point
951
+ for (const { tsKey, value } of fieldsSelection) {
952
+ selection.push({
953
+ dbKey: is(value, SQL.Aliased) ? value.fieldAlias : tableConfig.columns[tsKey].name,
954
+ tsKey,
955
+ field: is(value, Column) ? aliasedTableColumn(value, tableAlias) : value,
956
+ relationTableTsKey: undefined,
957
+ isJson: false,
958
+ selection: [],
959
+ });
960
+ }
961
+ let orderByOrig = typeof config.orderBy === 'function'
962
+ ? config.orderBy(aliasedColumns, getOrderByOperators())
963
+ : config.orderBy ?? [];
964
+ if (!Array.isArray(orderByOrig)) {
965
+ orderByOrig = [orderByOrig];
966
+ }
967
+ orderBy = orderByOrig.map((orderByValue) => {
968
+ if (is(orderByValue, Column)) {
969
+ return aliasedTableColumn(orderByValue, tableAlias);
970
+ }
971
+ return mapColumnsInSQLToAlias(orderByValue, tableAlias);
972
+ });
973
+ limit = config.limit;
974
+ offset = config.offset;
975
+ // Process all relations
976
+ for (const { tsKey: selectedRelationTsKey, queryConfig: selectedRelationConfigValue, relation, } of selectedRelations) {
977
+ const normalizedRelation = normalizeRelation(schema, tableNamesMap, relation);
978
+ const relationTableName = getTableUniqueName(relation.referencedTable);
979
+ const relationTableTsName = tableNamesMap[relationTableName];
980
+ const relationTableAlias = `${tableAlias}_${selectedRelationTsKey}`;
981
+ const joinOn = and(...normalizedRelation.fields.map((field, i) => eq(aliasedTableColumn(normalizedRelation.references[i], relationTableAlias), aliasedTableColumn(field, tableAlias))));
982
+ const builtRelation = this.buildRelationalQueryWithoutPK({
983
+ fullSchema,
984
+ schema,
985
+ tableNamesMap,
986
+ table: fullSchema[relationTableTsName],
987
+ tableConfig: schema[relationTableTsName],
988
+ queryConfig: is(relation, One)
989
+ ? (selectedRelationConfigValue === true
990
+ ? { limit: 1 }
991
+ : { ...selectedRelationConfigValue, limit: 1 })
992
+ : selectedRelationConfigValue,
993
+ tableAlias: relationTableAlias,
994
+ joinOn,
995
+ nestedQueryRelation: relation,
996
+ });
997
+ const field = sql `${sql.identifier(relationTableAlias)}.${sql.identifier('data')}`.as(selectedRelationTsKey);
998
+ joins.push({
999
+ on: sql `true`,
1000
+ table: new Subquery(builtRelation.sql, {}, relationTableAlias),
1001
+ alias: relationTableAlias,
1002
+ joinType: 'left',
1003
+ lateral: true,
1004
+ });
1005
+ selection.push({
1006
+ dbKey: selectedRelationTsKey,
1007
+ tsKey: selectedRelationTsKey,
1008
+ field,
1009
+ relationTableTsKey: relationTableTsName,
1010
+ isJson: true,
1011
+ selection: builtRelation.selection,
1012
+ });
1013
+ }
1014
+ }
1015
+ if (selection.length === 0) {
1016
+ throw new DrizzleError({ message: `No fields selected for table "${tableConfig.tsName}" ("${tableAlias}")` });
1017
+ }
1018
+ let result;
1019
+ where = and(joinOn, where);
1020
+ if (nestedQueryRelation) {
1021
+ let field = sql `json_build_array(${sql.join(selection.map(({ field, tsKey, isJson }) => isJson
1022
+ ? sql `${sql.identifier(`${tableAlias}_${tsKey}`)}.${sql.identifier('data')}`
1023
+ : is(field, SQL.Aliased)
1024
+ ? field.sql
1025
+ : field), sql `, `)})`;
1026
+ if (is(nestedQueryRelation, Many)) {
1027
+ field = sql `coalesce(json_agg(${field}${orderBy.length > 0 ? sql ` order by ${sql.join(orderBy, sql `, `)}` : undefined}), '[]'::json)`;
1028
+ // orderBy = [];
1029
+ }
1030
+ const nestedSelection = [{
1031
+ dbKey: 'data',
1032
+ tsKey: 'data',
1033
+ field: field.as('data'),
1034
+ isJson: true,
1035
+ relationTableTsKey: tableConfig.tsName,
1036
+ selection,
1037
+ }];
1038
+ const needsSubquery = limit !== undefined || offset !== undefined || orderBy.length > 0;
1039
+ if (needsSubquery) {
1040
+ result = this.buildSelectQuery({
1041
+ table: aliasedTable(table, tableAlias),
1042
+ fields: {},
1043
+ fieldsFlat: [{
1044
+ path: [],
1045
+ field: sql.raw('*'),
1046
+ }],
1047
+ where,
1048
+ limit,
1049
+ offset,
1050
+ orderBy,
1051
+ setOperators: [],
1052
+ });
1053
+ where = undefined;
1054
+ limit = undefined;
1055
+ offset = undefined;
1056
+ orderBy = [];
1057
+ }
1058
+ else {
1059
+ result = aliasedTable(table, tableAlias);
1060
+ }
1061
+ result = this.buildSelectQuery({
1062
+ table: is(result, PgTable) ? result : new Subquery(result, {}, tableAlias),
1063
+ fields: {},
1064
+ fieldsFlat: nestedSelection.map(({ field }) => ({
1065
+ path: [],
1066
+ field: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field,
1067
+ })),
1068
+ joins,
1069
+ where,
1070
+ limit,
1071
+ offset,
1072
+ orderBy,
1073
+ setOperators: [],
1074
+ });
1075
+ }
1076
+ else {
1077
+ result = this.buildSelectQuery({
1078
+ table: aliasedTable(table, tableAlias),
1079
+ fields: {},
1080
+ fieldsFlat: selection.map(({ field }) => ({
1081
+ path: [],
1082
+ field: is(field, Column) ? aliasedTableColumn(field, tableAlias) : field,
1083
+ })),
1084
+ joins,
1085
+ where,
1086
+ limit,
1087
+ offset,
1088
+ orderBy,
1089
+ setOperators: [],
1090
+ });
1091
+ }
1092
+ return {
1093
+ tableTsKey: tableConfig.tsName,
1094
+ sql: result,
1095
+ selection,
1096
+ };
1097
+ }
1098
+ }
1099
+ //# sourceMappingURL=dialect.js.map