neoorm 0.8.0 → 0.8.2

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 (380) hide show
  1. package/README.md +13 -6
  2. package/dist/bin/neoorm.d.ts +1 -1
  3. package/dist/bin/neoorm.d.ts.map +1 -1
  4. package/dist/bin/neoorm.js +148 -75
  5. package/dist/bin/neoorm.js.map +1 -1
  6. package/dist/codegen/diff-manifest.d.ts.map +1 -1
  7. package/dist/codegen/diff-manifest.js +106 -4
  8. package/dist/codegen/diff-manifest.js.map +1 -1
  9. package/dist/codegen/generate-summary.d.ts +5 -1
  10. package/dist/codegen/generate-summary.d.ts.map +1 -1
  11. package/dist/codegen/generate-summary.js +10 -1
  12. package/dist/codegen/generate-summary.js.map +1 -1
  13. package/dist/codegen/generate.d.ts +24 -4
  14. package/dist/codegen/generate.d.ts.map +1 -1
  15. package/dist/codegen/generate.js +150 -13
  16. package/dist/codegen/generate.js.map +1 -1
  17. package/dist/codegen/manifest-relations.d.ts +2 -0
  18. package/dist/codegen/manifest-relations.d.ts.map +1 -1
  19. package/dist/codegen/manifest-relations.js +2 -1
  20. package/dist/codegen/manifest-relations.js.map +1 -1
  21. package/dist/codegen/schema-to-manifest.d.ts +1 -1
  22. package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
  23. package/dist/codegen/schema-to-manifest.js +349 -29
  24. package/dist/codegen/schema-to-manifest.js.map +1 -1
  25. package/dist/codegen/validation/emit-elysia.d.ts +4 -0
  26. package/dist/codegen/validation/emit-elysia.d.ts.map +1 -0
  27. package/dist/codegen/validation/emit-elysia.js +304 -0
  28. package/dist/codegen/validation/emit-elysia.js.map +1 -0
  29. package/dist/codegen/validation/emit-typebox.d.ts +4 -0
  30. package/dist/codegen/validation/emit-typebox.d.ts.map +1 -0
  31. package/dist/codegen/validation/emit-typebox.js +360 -0
  32. package/dist/codegen/validation/emit-typebox.js.map +1 -0
  33. package/dist/codegen/validation/emit-zod.d.ts +4 -0
  34. package/dist/codegen/validation/emit-zod.d.ts.map +1 -0
  35. package/dist/codegen/validation/emit-zod.js +288 -0
  36. package/dist/codegen/validation/emit-zod.js.map +1 -0
  37. package/dist/codegen/validation/from-manifest.d.ts +5 -0
  38. package/dist/codegen/validation/from-manifest.d.ts.map +1 -0
  39. package/dist/codegen/validation/from-manifest.js +284 -0
  40. package/dist/codegen/validation/from-manifest.js.map +1 -0
  41. package/dist/codegen/validation/infer.d.ts +47 -0
  42. package/dist/codegen/validation/infer.d.ts.map +1 -0
  43. package/dist/codegen/validation/infer.js +2 -0
  44. package/dist/codegen/validation/infer.js.map +1 -0
  45. package/dist/codegen/validation/json-generic-types.d.ts +7 -0
  46. package/dist/codegen/validation/json-generic-types.d.ts.map +1 -0
  47. package/dist/codegen/validation/json-generic-types.js +295 -0
  48. package/dist/codegen/validation/json-generic-types.js.map +1 -0
  49. package/dist/codegen/validation/types.d.ts +84 -0
  50. package/dist/codegen/validation/types.d.ts.map +1 -0
  51. package/dist/codegen/validation/types.js +6 -0
  52. package/dist/codegen/validation/types.js.map +1 -0
  53. package/dist/config.d.ts +8 -0
  54. package/dist/config.d.ts.map +1 -1
  55. package/dist/config.js +30 -0
  56. package/dist/config.js.map +1 -1
  57. package/dist/datasource-provider.d.ts +5 -1
  58. package/dist/datasource-provider.d.ts.map +1 -1
  59. package/dist/datasource-provider.js +21 -2
  60. package/dist/datasource-provider.js.map +1 -1
  61. package/dist/dialect/column-kind-support.d.ts +9 -0
  62. package/dist/dialect/column-kind-support.d.ts.map +1 -0
  63. package/dist/dialect/column-kind-support.js +25 -0
  64. package/dist/dialect/column-kind-support.js.map +1 -0
  65. package/dist/dialect/fk.d.ts +30 -1
  66. package/dist/dialect/fk.d.ts.map +1 -1
  67. package/dist/dialect/fk.js +113 -0
  68. package/dist/dialect/fk.js.map +1 -1
  69. package/dist/dialect/index.d.ts +6 -1
  70. package/dist/dialect/index.d.ts.map +1 -1
  71. package/dist/dialect/index.js +5 -0
  72. package/dist/dialect/index.js.map +1 -1
  73. package/dist/dialect/mariadb.d.ts +4 -0
  74. package/dist/dialect/mariadb.d.ts.map +1 -0
  75. package/dist/dialect/mariadb.js +15 -0
  76. package/dist/dialect/mariadb.js.map +1 -0
  77. package/dist/dialect/mariadb.test.d.ts +2 -0
  78. package/dist/dialect/mariadb.test.d.ts.map +1 -0
  79. package/dist/dialect/mariadb.test.js +151 -0
  80. package/dist/dialect/mariadb.test.js.map +1 -0
  81. package/dist/dialect/mysql-family.d.ts +14 -0
  82. package/dist/dialect/mysql-family.d.ts.map +1 -0
  83. package/dist/dialect/mysql-family.js +453 -0
  84. package/dist/dialect/mysql-family.js.map +1 -0
  85. package/dist/dialect/mysql.d.ts +6 -0
  86. package/dist/dialect/mysql.d.ts.map +1 -0
  87. package/dist/dialect/mysql.js +16 -0
  88. package/dist/dialect/mysql.js.map +1 -0
  89. package/dist/dialect/mysql.test.d.ts +2 -0
  90. package/dist/dialect/mysql.test.d.ts.map +1 -0
  91. package/dist/dialect/mysql.test.js +211 -0
  92. package/dist/dialect/mysql.test.js.map +1 -0
  93. package/dist/dialect/placeholders.d.ts +7 -0
  94. package/dist/dialect/placeholders.d.ts.map +1 -0
  95. package/dist/dialect/placeholders.js +18 -0
  96. package/dist/dialect/placeholders.js.map +1 -0
  97. package/dist/dialect/postgres.d.ts +2 -1
  98. package/dist/dialect/postgres.d.ts.map +1 -1
  99. package/dist/dialect/postgres.js +93 -30
  100. package/dist/dialect/postgres.js.map +1 -1
  101. package/dist/dialect/resolve.d.ts +13 -0
  102. package/dist/dialect/resolve.d.ts.map +1 -0
  103. package/dist/dialect/resolve.js +66 -0
  104. package/dist/dialect/resolve.js.map +1 -0
  105. package/dist/dialect/shared.d.ts +8 -1
  106. package/dist/dialect/shared.d.ts.map +1 -1
  107. package/dist/dialect/shared.js +37 -0
  108. package/dist/dialect/shared.js.map +1 -1
  109. package/dist/dialect/sqlite.d.ts.map +1 -1
  110. package/dist/dialect/sqlite.js +50 -18
  111. package/dist/dialect/sqlite.js.map +1 -1
  112. package/dist/dialect/sqlite.test.js +43 -1
  113. package/dist/dialect/sqlite.test.js.map +1 -1
  114. package/dist/dialect/types.d.ts +60 -3
  115. package/dist/dialect/types.d.ts.map +1 -1
  116. package/dist/docs/pages.d.ts.map +1 -1
  117. package/dist/docs/pages.js +5 -0
  118. package/dist/docs/pages.js.map +1 -1
  119. package/dist/docs/render.js +1 -1
  120. package/dist/index.d.ts +6 -3
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +5 -2
  123. package/dist/index.js.map +1 -1
  124. package/dist/init/scaffold.d.ts +2 -1
  125. package/dist/init/scaffold.d.ts.map +1 -1
  126. package/dist/init/scaffold.js.map +1 -1
  127. package/dist/init/templates.d.ts +3 -2
  128. package/dist/init/templates.d.ts.map +1 -1
  129. package/dist/init/templates.js +19 -9
  130. package/dist/init/templates.js.map +1 -1
  131. package/dist/introspect/group-fks.d.ts +24 -0
  132. package/dist/introspect/group-fks.d.ts.map +1 -0
  133. package/dist/introspect/group-fks.js +48 -0
  134. package/dist/introspect/group-fks.js.map +1 -0
  135. package/dist/introspect/mysql/to-manifest.d.ts +4 -0
  136. package/dist/introspect/mysql/to-manifest.d.ts.map +1 -0
  137. package/dist/introspect/mysql/to-manifest.js +317 -0
  138. package/dist/introspect/mysql/to-manifest.js.map +1 -0
  139. package/dist/introspect/pull.d.ts +1 -0
  140. package/dist/introspect/pull.d.ts.map +1 -1
  141. package/dist/introspect/pull.js +186 -9
  142. package/dist/introspect/pull.js.map +1 -1
  143. package/dist/introspect/queries.d.ts +11 -1
  144. package/dist/introspect/queries.d.ts.map +1 -1
  145. package/dist/introspect/queries.js +43 -12
  146. package/dist/introspect/queries.js.map +1 -1
  147. package/dist/introspect/sqlite/to-manifest.d.ts.map +1 -1
  148. package/dist/introspect/sqlite/to-manifest.js +99 -26
  149. package/dist/introspect/sqlite/to-manifest.js.map +1 -1
  150. package/dist/introspect/to-manifest.d.ts.map +1 -1
  151. package/dist/introspect/to-manifest.js +154 -28
  152. package/dist/introspect/to-manifest.js.map +1 -1
  153. package/dist/migrate/dev-lock.d.ts +15 -0
  154. package/dist/migrate/dev-lock.d.ts.map +1 -0
  155. package/dist/migrate/dev-lock.js +101 -0
  156. package/dist/migrate/dev-lock.js.map +1 -0
  157. package/dist/migrate/runner.d.ts.map +1 -1
  158. package/dist/migrate/runner.js +143 -51
  159. package/dist/migrate/runner.js.map +1 -1
  160. package/dist/plugins/builtin.d.ts +62 -12
  161. package/dist/plugins/builtin.d.ts.map +1 -1
  162. package/dist/plugins/builtin.js +378 -30
  163. package/dist/plugins/builtin.js.map +1 -1
  164. package/dist/plugins/index.d.ts +1 -0
  165. package/dist/plugins/index.d.ts.map +1 -1
  166. package/dist/plugins/index.js.map +1 -1
  167. package/dist/plugins/json/operators.d.ts.map +1 -1
  168. package/dist/plugins/json/operators.js +69 -3
  169. package/dist/plugins/json/operators.js.map +1 -1
  170. package/dist/plugins/postgis/columns.d.ts.map +1 -1
  171. package/dist/plugins/postgis/columns.js +52 -0
  172. package/dist/plugins/postgis/columns.js.map +1 -1
  173. package/dist/plugins/postgis/columns.test.js +13 -0
  174. package/dist/plugins/postgis/columns.test.js.map +1 -1
  175. package/dist/plugins/postgis/operators.d.ts.map +1 -1
  176. package/dist/plugins/postgis/operators.js +15 -3
  177. package/dist/plugins/postgis/operators.js.map +1 -1
  178. package/dist/plugins/types.d.ts +3 -0
  179. package/dist/plugins/types.d.ts.map +1 -1
  180. package/dist/runtime/client.d.ts +31 -4
  181. package/dist/runtime/client.d.ts.map +1 -1
  182. package/dist/runtime/client.js +131 -6
  183. package/dist/runtime/client.js.map +1 -1
  184. package/dist/runtime/driver.d.ts +2 -0
  185. package/dist/runtime/driver.d.ts.map +1 -1
  186. package/dist/runtime/driver.js +12 -0
  187. package/dist/runtime/driver.js.map +1 -1
  188. package/dist/runtime/error-hints.d.ts.map +1 -1
  189. package/dist/runtime/error-hints.js +37 -10
  190. package/dist/runtime/error-hints.js.map +1 -1
  191. package/dist/runtime/executor.d.ts +1 -0
  192. package/dist/runtime/executor.d.ts.map +1 -1
  193. package/dist/runtime/executor.js +7 -1
  194. package/dist/runtime/executor.js.map +1 -1
  195. package/dist/runtime/mariadb-driver.d.ts +25 -0
  196. package/dist/runtime/mariadb-driver.d.ts.map +1 -0
  197. package/dist/runtime/mariadb-driver.js +103 -0
  198. package/dist/runtime/mariadb-driver.js.map +1 -0
  199. package/dist/runtime/mysql-driver.d.ts +25 -0
  200. package/dist/runtime/mysql-driver.d.ts.map +1 -0
  201. package/dist/runtime/mysql-driver.js +101 -0
  202. package/dist/runtime/mysql-driver.js.map +1 -0
  203. package/dist/runtime/mysql-error.d.ts +15 -0
  204. package/dist/runtime/mysql-error.d.ts.map +1 -0
  205. package/dist/runtime/mysql-error.js +119 -0
  206. package/dist/runtime/mysql-error.js.map +1 -0
  207. package/dist/runtime/mysql-family-pool.d.ts +50 -0
  208. package/dist/runtime/mysql-family-pool.d.ts.map +1 -0
  209. package/dist/runtime/mysql-family-pool.js +52 -0
  210. package/dist/runtime/mysql-family-pool.js.map +1 -0
  211. package/dist/runtime/mysql-family-pool.test.d.ts +2 -0
  212. package/dist/runtime/mysql-family-pool.test.d.ts.map +1 -0
  213. package/dist/runtime/mysql-family-pool.test.js +169 -0
  214. package/dist/runtime/mysql-family-pool.test.js.map +1 -0
  215. package/dist/runtime/mysql-placeholders.d.ts +18 -0
  216. package/dist/runtime/mysql-placeholders.d.ts.map +1 -0
  217. package/dist/runtime/mysql-placeholders.js +133 -0
  218. package/dist/runtime/mysql-placeholders.js.map +1 -0
  219. package/dist/runtime/mysql-placeholders.test.d.ts +2 -0
  220. package/dist/runtime/mysql-placeholders.test.d.ts.map +1 -0
  221. package/dist/runtime/mysql-placeholders.test.js +33 -0
  222. package/dist/runtime/mysql-placeholders.test.js.map +1 -0
  223. package/dist/runtime/query/aggregate.d.ts.map +1 -1
  224. package/dist/runtime/query/aggregate.js +3 -3
  225. package/dist/runtime/query/aggregate.js.map +1 -1
  226. package/dist/runtime/query/compile-aggregate.d.ts +1 -1
  227. package/dist/runtime/query/compile-aggregate.d.ts.map +1 -1
  228. package/dist/runtime/query/compile-aggregate.js +33 -28
  229. package/dist/runtime/query/compile-aggregate.js.map +1 -1
  230. package/dist/runtime/query/compile-where.d.ts +9 -9
  231. package/dist/runtime/query/compile-where.d.ts.map +1 -1
  232. package/dist/runtime/query/compile-where.js +108 -76
  233. package/dist/runtime/query/compile-where.js.map +1 -1
  234. package/dist/runtime/query/compile-write.d.ts +9 -9
  235. package/dist/runtime/query/compile-write.d.ts.map +1 -1
  236. package/dist/runtime/query/compile-write.js +77 -63
  237. package/dist/runtime/query/compile-write.js.map +1 -1
  238. package/dist/runtime/query/count.d.ts.map +1 -1
  239. package/dist/runtime/query/count.js +4 -1
  240. package/dist/runtime/query/count.js.map +1 -1
  241. package/dist/runtime/query/create.d.ts.map +1 -1
  242. package/dist/runtime/query/create.js +38 -12
  243. package/dist/runtime/query/create.js.map +1 -1
  244. package/dist/runtime/query/cursor.d.ts +1 -1
  245. package/dist/runtime/query/cursor.d.ts.map +1 -1
  246. package/dist/runtime/query/cursor.js +6 -7
  247. package/dist/runtime/query/cursor.js.map +1 -1
  248. package/dist/runtime/query/delete.d.ts.map +1 -1
  249. package/dist/runtime/query/delete.js +41 -15
  250. package/dist/runtime/query/delete.js.map +1 -1
  251. package/dist/runtime/query/execute.d.ts +1 -0
  252. package/dist/runtime/query/execute.d.ts.map +1 -1
  253. package/dist/runtime/query/execute.js +23 -8
  254. package/dist/runtime/query/execute.js.map +1 -1
  255. package/dist/runtime/query/find-or-create.d.ts +1 -1
  256. package/dist/runtime/query/find-or-create.d.ts.map +1 -1
  257. package/dist/runtime/query/find-or-create.js +16 -8
  258. package/dist/runtime/query/find-or-create.js.map +1 -1
  259. package/dist/runtime/query/find.d.ts +2 -0
  260. package/dist/runtime/query/find.d.ts.map +1 -1
  261. package/dist/runtime/query/find.js +116 -68
  262. package/dist/runtime/query/find.js.map +1 -1
  263. package/dist/runtime/query/group-by.d.ts.map +1 -1
  264. package/dist/runtime/query/group-by.js.map +1 -1
  265. package/dist/runtime/query/mutation-returning.d.ts +10 -0
  266. package/dist/runtime/query/mutation-returning.d.ts.map +1 -0
  267. package/dist/runtime/query/mutation-returning.js +85 -0
  268. package/dist/runtime/query/mutation-returning.js.map +1 -0
  269. package/dist/runtime/query/paginate.d.ts.map +1 -1
  270. package/dist/runtime/query/paginate.js +3 -3
  271. package/dist/runtime/query/paginate.js.map +1 -1
  272. package/dist/runtime/query/projection.d.ts.map +1 -1
  273. package/dist/runtime/query/projection.js +1 -1
  274. package/dist/runtime/query/projection.js.map +1 -1
  275. package/dist/runtime/query/relation-join.d.ts +5 -0
  276. package/dist/runtime/query/relation-join.d.ts.map +1 -0
  277. package/dist/runtime/query/relation-join.js +26 -0
  278. package/dist/runtime/query/relation-join.js.map +1 -0
  279. package/dist/runtime/query/relation-planner.d.ts +1 -1
  280. package/dist/runtime/query/relation-planner.d.ts.map +1 -1
  281. package/dist/runtime/query/relation-planner.js +72 -58
  282. package/dist/runtime/query/relation-planner.js.map +1 -1
  283. package/dist/runtime/query/relation-writes.d.ts +2 -2
  284. package/dist/runtime/query/relation-writes.d.ts.map +1 -1
  285. package/dist/runtime/query/relation-writes.js +272 -116
  286. package/dist/runtime/query/relation-writes.js.map +1 -1
  287. package/dist/runtime/query/table-index.d.ts +1 -1
  288. package/dist/runtime/query/table-index.d.ts.map +1 -1
  289. package/dist/runtime/query/table-index.js +17 -10
  290. package/dist/runtime/query/table-index.js.map +1 -1
  291. package/dist/runtime/query/unique.d.ts +3 -0
  292. package/dist/runtime/query/unique.d.ts.map +1 -1
  293. package/dist/runtime/query/unique.js +26 -6
  294. package/dist/runtime/query/unique.js.map +1 -1
  295. package/dist/runtime/query/unique.test.js +110 -7
  296. package/dist/runtime/query/unique.test.js.map +1 -1
  297. package/dist/runtime/query/update.d.ts.map +1 -1
  298. package/dist/runtime/query/update.js +89 -23
  299. package/dist/runtime/query/update.js.map +1 -1
  300. package/dist/runtime/query/updated-at.js +2 -2
  301. package/dist/runtime/query/updated-at.js.map +1 -1
  302. package/dist/runtime/query/upsert.d.ts.map +1 -1
  303. package/dist/runtime/query/upsert.js +29 -5
  304. package/dist/runtime/query/upsert.js.map +1 -1
  305. package/dist/runtime/sqlite-open.js +1 -1
  306. package/dist/runtime/sqlite-open.js.map +1 -1
  307. package/dist/runtime/transaction.d.ts +1 -0
  308. package/dist/runtime/transaction.d.ts.map +1 -1
  309. package/dist/runtime/transaction.js +8 -0
  310. package/dist/runtime/transaction.js.map +1 -1
  311. package/dist/runtime/types.d.ts +10 -2
  312. package/dist/runtime/types.d.ts.map +1 -1
  313. package/dist/schema/column-constraints.d.ts +26 -0
  314. package/dist/schema/column-constraints.d.ts.map +1 -0
  315. package/dist/schema/column-constraints.js +143 -0
  316. package/dist/schema/column-constraints.js.map +1 -0
  317. package/dist/schema/column.d.ts +92 -3
  318. package/dist/schema/column.d.ts.map +1 -1
  319. package/dist/schema/column.js +17 -11
  320. package/dist/schema/column.js.map +1 -1
  321. package/dist/schema/index.d.ts +9 -6
  322. package/dist/schema/index.d.ts.map +1 -1
  323. package/dist/schema/index.js +8 -2
  324. package/dist/schema/index.js.map +1 -1
  325. package/dist/schema/json-column.d.ts +9 -0
  326. package/dist/schema/json-column.d.ts.map +1 -0
  327. package/dist/schema/json-column.js +11 -0
  328. package/dist/schema/json-column.js.map +1 -0
  329. package/dist/schema/many-to-many.d.ts +1 -1
  330. package/dist/schema/many-to-many.d.ts.map +1 -1
  331. package/dist/schema/nested-relation-types.d.ts +10 -9
  332. package/dist/schema/nested-relation-types.d.ts.map +1 -1
  333. package/dist/schema/relation-types.d.ts +80 -19
  334. package/dist/schema/relation-types.d.ts.map +1 -1
  335. package/dist/schema/relation.d.ts +11 -1
  336. package/dist/schema/relation.d.ts.map +1 -1
  337. package/dist/schema/relation.js +6 -0
  338. package/dist/schema/relation.js.map +1 -1
  339. package/dist/schema/table.d.ts +74 -11
  340. package/dist/schema/table.d.ts.map +1 -1
  341. package/dist/schema/table.js +93 -7
  342. package/dist/schema/table.js.map +1 -1
  343. package/dist/schema/types.d.ts +7 -6
  344. package/dist/schema/types.d.ts.map +1 -1
  345. package/dist/sql/builder.d.ts +13 -3
  346. package/dist/sql/builder.d.ts.map +1 -1
  347. package/dist/sql/builder.js +155 -5
  348. package/dist/sql/builder.js.map +1 -1
  349. package/dist/sql/index.d.ts +1 -0
  350. package/dist/sql/index.d.ts.map +1 -1
  351. package/dist/sql/index.js.map +1 -1
  352. package/dist/sql/qualify-tables.d.ts +15 -0
  353. package/dist/sql/qualify-tables.d.ts.map +1 -0
  354. package/dist/sql/qualify-tables.js +206 -0
  355. package/dist/sql/qualify-tables.js.map +1 -0
  356. package/dist/sql/template.d.ts +5 -0
  357. package/dist/sql/template.d.ts.map +1 -1
  358. package/dist/sql/template.js +23 -3
  359. package/dist/sql/template.js.map +1 -1
  360. package/dist/utils/load-ts.d.ts +2 -1
  361. package/dist/utils/load-ts.d.ts.map +1 -1
  362. package/dist/utils/load-ts.js +13 -1
  363. package/dist/utils/load-ts.js.map +1 -1
  364. package/docs/cli.md +4 -4
  365. package/docs/configuration.md +12 -5
  366. package/docs/elysia.md +131 -0
  367. package/docs/errors.md +1 -1
  368. package/docs/examples.md +4 -2
  369. package/docs/getting-started.md +28 -2
  370. package/docs/mariadb.md +149 -0
  371. package/docs/migrations.md +5 -3
  372. package/docs/mysql.md +134 -0
  373. package/docs/plugins.md +2 -0
  374. package/docs/queries.md +14 -11
  375. package/docs/relations.md +19 -4
  376. package/docs/schema.md +100 -9
  377. package/docs/sqlite.md +14 -2
  378. package/docs/typebox.md +139 -0
  379. package/docs/zod.md +128 -0
  380. package/package.json +33 -3
@@ -1,16 +1,30 @@
1
1
  import { parseDbJsonValue } from "../runtime/parse-db-json.js";
2
2
  import { createColumnBuilder, createTimestampColumnBuilder, } from "../schema/column.js";
3
+ import { createNumericConstraintExtras, createTextConstraintExtras, } from "../schema/column-constraints.js";
4
+ import { createJsonValidationExtras, } from "../schema/json-column.js";
3
5
  import { jsonWhereOperators } from "./json/operators.js";
6
+ function textSqlType(col) {
7
+ const maxLength = col.typeOptions?.maxLength;
8
+ if (maxLength !== undefined) {
9
+ return `VARCHAR(${maxLength})`;
10
+ }
11
+ return "TEXT";
12
+ }
4
13
  function scalarTsType(col, base) {
5
14
  return col.nullable ? `${base} | null` : base;
6
15
  }
7
16
  function jsonCastKind(kind) {
8
17
  return kind === "json" ? "json" : "jsonb";
9
18
  }
19
+ function isSqliteOrMysqlFamily(dialect) {
20
+ return (dialect?.name === "sqlite" ||
21
+ dialect?.name === "mysql" ||
22
+ dialect?.name === "mariadb");
23
+ }
10
24
  function formatJsonDefault(col, value, dialect) {
11
25
  const cast = jsonCastKind(col.kind);
12
26
  const json = JSON.stringify(value).replace(/'/g, "''");
13
- if (dialect?.name === "sqlite") {
27
+ if (isSqliteOrMysqlFamily(dialect)) {
14
28
  return `'${json}'`;
15
29
  }
16
30
  return `'${json}'::${cast}`;
@@ -64,24 +78,33 @@ const idType = {
64
78
  columnTsType(col) {
65
79
  return scalarTsType(col, "string");
66
80
  },
81
+ columnValidation() {
82
+ return { kind: "string" };
83
+ },
67
84
  };
68
85
  const textType = {
69
86
  kind: "text",
70
- createBuilder() {
87
+ createBuilder(options) {
88
+ const maxLength = options?.maxLength;
89
+ const typeOptions = maxLength !== undefined ? { maxLength } : undefined;
71
90
  return createColumnBuilder({
72
91
  kind: "text",
73
92
  nullable: true,
74
93
  unique: false,
75
94
  primary: false,
76
95
  defaultNow: false,
77
- });
96
+ ...(typeOptions ? { typeOptions } : {}),
97
+ }, (rebuild, meta) => createTextConstraintExtras(meta, rebuild));
78
98
  },
79
- columnType() {
80
- return "TEXT";
99
+ columnType(col) {
100
+ return textSqlType(col);
81
101
  },
82
102
  columnTsType(col) {
83
103
  return scalarTsType(col, "string");
84
104
  },
105
+ columnValidation() {
106
+ return { kind: "string" };
107
+ },
85
108
  introspect(pgDataType) {
86
109
  return pgDataType === "text" || pgDataType === "character varying";
87
110
  },
@@ -103,10 +126,13 @@ const boolType = {
103
126
  columnTsType(col) {
104
127
  return scalarTsType(col, "boolean");
105
128
  },
129
+ columnValidation() {
130
+ return { kind: "boolean" };
131
+ },
106
132
  serializeValue(_col, value, dialect) {
107
133
  if (value === null || value === undefined)
108
134
  return value;
109
- if (dialect?.name === "sqlite")
135
+ if (isSqliteOrMysqlFamily(dialect))
110
136
  return value ? 1 : 0;
111
137
  return value;
112
138
  },
@@ -130,7 +156,7 @@ const intType = {
130
156
  unique: false,
131
157
  primary: false,
132
158
  defaultNow: false,
133
- });
159
+ }, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
134
160
  },
135
161
  columnType() {
136
162
  return "INTEGER";
@@ -138,6 +164,9 @@ const intType = {
138
164
  columnTsType(col) {
139
165
  return scalarTsType(col, "number");
140
166
  },
167
+ columnValidation() {
168
+ return { kind: "number", int: true };
169
+ },
141
170
  introspect(pgDataType) {
142
171
  return pgDataType === "integer" || pgDataType === "smallint";
143
172
  },
@@ -151,7 +180,7 @@ const bigintType = {
151
180
  unique: false,
152
181
  primary: false,
153
182
  defaultNow: false,
154
- });
183
+ }, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
155
184
  },
156
185
  columnType() {
157
186
  return "BIGINT";
@@ -159,6 +188,9 @@ const bigintType = {
159
188
  columnTsType(col) {
160
189
  return scalarTsType(col, "bigint");
161
190
  },
191
+ columnValidation() {
192
+ return { kind: "bigint" };
193
+ },
162
194
  introspect(pgDataType) {
163
195
  return pgDataType === "bigint";
164
196
  },
@@ -186,6 +218,9 @@ const timestampType = {
186
218
  columnTsType(col) {
187
219
  return scalarTsType(col, "Date");
188
220
  },
221
+ columnValidation() {
222
+ return { kind: "date" };
223
+ },
189
224
  serializeValue(_col, value, dialect) {
190
225
  if (value === null || value === undefined)
191
226
  return value;
@@ -201,12 +236,10 @@ const timestampType = {
201
236
  return new Date(dbValue);
202
237
  },
203
238
  introspect(pgDataType) {
204
- return (pgDataType.includes("timestamp") ||
205
- pgDataType === "date" ||
206
- pgDataType === "time without time zone");
239
+ return pgDataType.includes("timestamp");
207
240
  },
208
241
  updatedAtExpression(_col, dialect) {
209
- return dialect?.name === "sqlite" ? "CURRENT_TIMESTAMP" : "NOW()";
242
+ return dialect?.defaultNowExpression() ?? "NOW()";
210
243
  },
211
244
  };
212
245
  const uuidType = {
@@ -228,20 +261,25 @@ const uuidType = {
228
261
  columnTsType(col) {
229
262
  return scalarTsType(col, "string");
230
263
  },
264
+ columnValidation() {
265
+ return { kind: "string", format: "uuid" };
266
+ },
231
267
  introspect(_pgDataType, udtName) {
232
268
  return udtName === "uuid";
233
269
  },
234
270
  };
235
271
  const jsonType = {
236
272
  kind: "json",
237
- createBuilder() {
273
+ createBuilder(options) {
274
+ const validation = options?.validation;
238
275
  return createColumnBuilder({
239
276
  kind: "json",
240
277
  nullable: true,
241
278
  unique: false,
242
279
  primary: false,
243
280
  defaultNow: false,
244
- });
281
+ ...(validation !== undefined ? { validation } : {}),
282
+ }, (rebuild, meta) => createJsonValidationExtras(meta, rebuild));
245
283
  },
246
284
  columnType() {
247
285
  return "JSON";
@@ -249,6 +287,12 @@ const jsonType = {
249
287
  columnTsType(col) {
250
288
  return scalarTsType(col, "unknown");
251
289
  },
290
+ columnValidation(col) {
291
+ return (col.validation ?? {
292
+ kind: "record",
293
+ value: { kind: "unknown" },
294
+ });
295
+ },
252
296
  formatDefault: formatJsonDefault,
253
297
  deserializeValue(col, dbValue) {
254
298
  return parseJsonValue(dbValue, col);
@@ -260,14 +304,16 @@ const jsonType = {
260
304
  };
261
305
  const jsonbType = {
262
306
  kind: "jsonb",
263
- createBuilder() {
307
+ createBuilder(options) {
308
+ const validation = options?.validation;
264
309
  return createColumnBuilder({
265
310
  kind: "jsonb",
266
311
  nullable: true,
267
312
  unique: false,
268
313
  primary: false,
269
314
  defaultNow: false,
270
- });
315
+ ...(validation !== undefined ? { validation } : {}),
316
+ }, (rebuild, meta) => createJsonValidationExtras(meta, rebuild));
271
317
  },
272
318
  columnType() {
273
319
  return "JSONB";
@@ -275,6 +321,12 @@ const jsonbType = {
275
321
  columnTsType(col) {
276
322
  return scalarTsType(col, "unknown");
277
323
  },
324
+ columnValidation(col) {
325
+ return (col.validation ?? {
326
+ kind: "record",
327
+ value: { kind: "unknown" },
328
+ });
329
+ },
278
330
  formatDefault: formatJsonDefault,
279
331
  deserializeValue(col, dbValue) {
280
332
  return parseJsonValue(dbValue, col);
@@ -301,7 +353,7 @@ const decimalType = {
301
353
  primary: false,
302
354
  defaultNow: false,
303
355
  ...(Object.keys(typeOptions).length > 0 ? { typeOptions } : {}),
304
- });
356
+ }, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
305
357
  },
306
358
  columnType(col) {
307
359
  return decimalSqlType(col);
@@ -309,6 +361,9 @@ const decimalType = {
309
361
  columnTsType(col) {
310
362
  return scalarTsType(col, "string");
311
363
  },
364
+ columnValidation() {
365
+ return { kind: "string" };
366
+ },
312
367
  introspect(pgDataType) {
313
368
  return pgDataType === "numeric";
314
369
  },
@@ -322,7 +377,7 @@ const serialType = {
322
377
  unique: false,
323
378
  primary: false,
324
379
  defaultNow: false,
325
- });
380
+ }, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
326
381
  },
327
382
  columnType() {
328
383
  return "INTEGER GENERATED BY DEFAULT AS IDENTITY";
@@ -330,6 +385,9 @@ const serialType = {
330
385
  columnTsType(col) {
331
386
  return scalarTsType(col, "number");
332
387
  },
388
+ columnValidation() {
389
+ return { kind: "number", int: true };
390
+ },
333
391
  };
334
392
  const enumColumnType = {
335
393
  kind: "enum",
@@ -355,6 +413,19 @@ const enumColumnType = {
355
413
  columnTsType(col) {
356
414
  return enumUnionTsType(col);
357
415
  },
416
+ columnValidation(col) {
417
+ const values = col.typeOptions?.values;
418
+ const first = values?.[0];
419
+ if (first === undefined || !values) {
420
+ return { kind: "string" };
421
+ }
422
+ const name = col.typeOptions?.name;
423
+ return {
424
+ kind: "enum",
425
+ values: [first, ...values.slice(1)],
426
+ ...(typeof name === "string" ? { name } : {}),
427
+ };
428
+ },
358
429
  };
359
430
  const byteaType = {
360
431
  kind: "bytea",
@@ -373,6 +444,9 @@ const byteaType = {
373
444
  columnTsType(col) {
374
445
  return scalarTsType(col, "Buffer");
375
446
  },
447
+ columnValidation() {
448
+ return { kind: "instance", tsName: "Buffer" };
449
+ },
376
450
  serializeValue(_col, value) {
377
451
  if (value instanceof Uint8Array && !(value instanceof Buffer)) {
378
452
  return Buffer.from(value);
@@ -408,10 +482,13 @@ const textArrayType = {
408
482
  columnTsType(col) {
409
483
  return col.nullable ? "string[] | null" : "string[]";
410
484
  },
485
+ columnValidation() {
486
+ return { kind: "array", element: { kind: "string" } };
487
+ },
411
488
  serializeValue(_col, value, dialect) {
412
489
  if (value === null || value === undefined)
413
490
  return value;
414
- if (dialect?.name === "sqlite")
491
+ if (isSqliteOrMysqlFamily(dialect))
415
492
  return JSON.stringify(value);
416
493
  return value;
417
494
  },
@@ -443,10 +520,13 @@ const intArrayType = {
443
520
  columnTsType(col) {
444
521
  return col.nullable ? "number[] | null" : "number[]";
445
522
  },
523
+ columnValidation() {
524
+ return { kind: "array", element: { kind: "number", int: true } };
525
+ },
446
526
  serializeValue(_col, value, dialect) {
447
527
  if (value === null || value === undefined)
448
528
  return value;
449
- if (dialect?.name === "sqlite")
529
+ if (isSqliteOrMysqlFamily(dialect))
450
530
  return JSON.stringify(value);
451
531
  return value;
452
532
  },
@@ -461,6 +541,179 @@ const intArrayType = {
461
541
  return pgDataType === "ARRAY" && udtName === "_int4";
462
542
  },
463
543
  };
544
+ function createNumericFloatPlugin(kind, sqlType, introspect) {
545
+ return {
546
+ kind,
547
+ createBuilder() {
548
+ return createColumnBuilder({
549
+ kind,
550
+ nullable: true,
551
+ unique: false,
552
+ primary: false,
553
+ defaultNow: false,
554
+ }, (rebuild, meta) => createNumericConstraintExtras(meta, rebuild));
555
+ },
556
+ columnType() {
557
+ return sqlType;
558
+ },
559
+ columnTsType(col) {
560
+ return scalarTsType(col, "number");
561
+ },
562
+ columnValidation() {
563
+ return { kind: "number" };
564
+ },
565
+ introspect,
566
+ };
567
+ }
568
+ function createStringScalarPlugin(kind, sqlType, introspect) {
569
+ return {
570
+ kind,
571
+ createBuilder() {
572
+ return createColumnBuilder({
573
+ kind,
574
+ nullable: true,
575
+ unique: false,
576
+ primary: false,
577
+ defaultNow: false,
578
+ });
579
+ },
580
+ columnType() {
581
+ return sqlType;
582
+ },
583
+ columnTsType(col) {
584
+ return scalarTsType(col, "string");
585
+ },
586
+ columnValidation() {
587
+ return { kind: "string" };
588
+ },
589
+ introspect,
590
+ };
591
+ }
592
+ const realType = createNumericFloatPlugin("real", "REAL", (pgDataType, udtName) => pgDataType === "real" || udtName === "float4");
593
+ const doubleType = createNumericFloatPlugin("double", "DOUBLE PRECISION", (pgDataType, udtName) => pgDataType === "double precision" || udtName === "float8");
594
+ const dateType = createStringScalarPlugin("date", "DATE", (pgDataType) => pgDataType === "date");
595
+ const timeType = createStringScalarPlugin("time", "TIME", (pgDataType) => pgDataType === "time without time zone" ||
596
+ pgDataType === "time with time zone" ||
597
+ pgDataType === "time");
598
+ const intervalType = createStringScalarPlugin("interval", "INTERVAL", (pgDataType) => pgDataType === "interval");
599
+ const inetType = createStringScalarPlugin("inet", "INET", (pgDataType, udtName) => pgDataType === "inet" || udtName === "inet");
600
+ const cidrType = createStringScalarPlugin("cidr", "CIDR", (pgDataType, udtName) => pgDataType === "cidr" || udtName === "cidr");
601
+ const xmlType = createStringScalarPlugin("xml", "XML", (pgDataType, udtName) => pgDataType === "xml" || udtName === "xml");
602
+ const moneyType = createStringScalarPlugin("money", "MONEY", (pgDataType, udtName) => pgDataType === "money" || udtName === "money");
603
+ const int4RangeType = createStringScalarPlugin("int4Range", "INT4RANGE", (_pg, udtName) => udtName === "int4range");
604
+ const int8RangeType = createStringScalarPlugin("int8Range", "INT8RANGE", (_pg, udtName) => udtName === "int8range");
605
+ const numRangeType = createStringScalarPlugin("numRange", "NUMRANGE", (_pg, udtName) => udtName === "numrange");
606
+ const tsRangeType = createStringScalarPlugin("tsRange", "TSRANGE", (_pg, udtName) => udtName === "tsrange");
607
+ const tstzRangeType = createStringScalarPlugin("tstzRange", "TSTZRANGE", (_pg, udtName) => udtName === "tstzrange");
608
+ const dateRangeType = createStringScalarPlugin("dateRange", "DATERANGE", (_pg, udtName) => udtName === "daterange");
609
+ const uuidArrayType = {
610
+ kind: "uuidArray",
611
+ createBuilder() {
612
+ return createColumnBuilder({
613
+ kind: "uuidArray",
614
+ nullable: true,
615
+ unique: false,
616
+ primary: false,
617
+ defaultNow: false,
618
+ });
619
+ },
620
+ columnType() {
621
+ return "UUID[]";
622
+ },
623
+ columnTsType(col) {
624
+ return col.nullable ? "string[] | null" : "string[]";
625
+ },
626
+ columnValidation() {
627
+ return { kind: "array", element: { kind: "string", format: "uuid" } };
628
+ },
629
+ serializeValue(_col, value, dialect) {
630
+ if (value === null || value === undefined)
631
+ return value;
632
+ if (isSqliteOrMysqlFamily(dialect))
633
+ return JSON.stringify(value);
634
+ return value;
635
+ },
636
+ deserializeValue(col, dbValue) {
637
+ if (dbValue === null || dbValue === undefined)
638
+ return dbValue;
639
+ if (Array.isArray(dbValue))
640
+ return dbValue;
641
+ return parseJsonValue(dbValue, col);
642
+ },
643
+ introspect(pgDataType, udtName) {
644
+ return pgDataType === "ARRAY" && udtName === "_uuid";
645
+ },
646
+ };
647
+ function enumArrayTsType(col) {
648
+ const values = col.typeOptions?.values;
649
+ if (!values || values.length === 0) {
650
+ return col.nullable ? "string[] | null" : "string[]";
651
+ }
652
+ const union = values.map((value) => JSON.stringify(value)).join(" | ");
653
+ return col.nullable ? `(${union})[] | null` : `(${union})[]`;
654
+ }
655
+ function enumArraySqlType(col) {
656
+ const nativeTypeName = col.typeOptions?.nativeTypeName;
657
+ if (nativeTypeName) {
658
+ return `${nativeTypeName}[]`;
659
+ }
660
+ return "TEXT[]";
661
+ }
662
+ const enumArrayType = {
663
+ kind: "enumArray",
664
+ createBuilder(options) {
665
+ const values = options?.values;
666
+ const name = options?.name;
667
+ const typeOptions = { values };
668
+ if (name !== undefined) {
669
+ typeOptions.name = name;
670
+ }
671
+ return createColumnBuilder({
672
+ kind: "enumArray",
673
+ nullable: true,
674
+ unique: false,
675
+ primary: false,
676
+ defaultNow: false,
677
+ typeOptions,
678
+ });
679
+ },
680
+ columnType(col) {
681
+ return enumArraySqlType(col);
682
+ },
683
+ columnTsType(col) {
684
+ return enumArrayTsType(col);
685
+ },
686
+ columnValidation(col) {
687
+ const values = col.typeOptions?.values;
688
+ const first = values?.[0];
689
+ if (first === undefined || !values) {
690
+ return { kind: "array", element: { kind: "string" } };
691
+ }
692
+ const name = col.typeOptions?.name;
693
+ return {
694
+ kind: "array",
695
+ element: {
696
+ kind: "enum",
697
+ values: [first, ...values.slice(1)],
698
+ ...(typeof name === "string" ? { name } : {}),
699
+ },
700
+ };
701
+ },
702
+ serializeValue(_col, value, dialect) {
703
+ if (value === null || value === undefined)
704
+ return value;
705
+ if (isSqliteOrMysqlFamily(dialect))
706
+ return JSON.stringify(value);
707
+ return value;
708
+ },
709
+ deserializeValue(col, dbValue) {
710
+ if (dbValue === null || dbValue === undefined)
711
+ return dbValue;
712
+ if (Array.isArray(dbValue))
713
+ return dbValue;
714
+ return parseJsonValue(dbValue, col);
715
+ },
716
+ };
464
717
  const citextType = {
465
718
  kind: "citext",
466
719
  createBuilder() {
@@ -470,7 +723,7 @@ const citextType = {
470
723
  unique: false,
471
724
  primary: false,
472
725
  defaultNow: false,
473
- });
726
+ }, (rebuild, meta) => createTextConstraintExtras(meta, rebuild));
474
727
  },
475
728
  columnType() {
476
729
  return "CITEXT";
@@ -478,6 +731,9 @@ const citextType = {
478
731
  columnTsType(col) {
479
732
  return scalarTsType(col, "string");
480
733
  },
734
+ columnValidation() {
735
+ return { kind: "string" };
736
+ },
481
737
  introspect(_pgDataType, udtName) {
482
738
  return udtName === "citext";
483
739
  },
@@ -500,6 +756,23 @@ export const builtinPlugin = {
500
756
  byteaType,
501
757
  textArrayType,
502
758
  intArrayType,
759
+ realType,
760
+ doubleType,
761
+ dateType,
762
+ timeType,
763
+ intervalType,
764
+ inetType,
765
+ cidrType,
766
+ xmlType,
767
+ moneyType,
768
+ int4RangeType,
769
+ int8RangeType,
770
+ numRangeType,
771
+ tsRangeType,
772
+ tstzRangeType,
773
+ dateRangeType,
774
+ uuidArrayType,
775
+ enumArrayType,
503
776
  ],
504
777
  };
505
778
  export const citextPlugin = {
@@ -511,9 +784,9 @@ export const citextPlugin = {
511
784
  export function id() {
512
785
  return idType.createBuilder();
513
786
  }
514
- /** `TEXT` column. */
515
- export function text() {
516
- return textType.createBuilder();
787
+ /** `TEXT` column. Pass `{ maxLength: n }` for `VARCHAR(n)` on Postgres. */
788
+ export function text(options) {
789
+ return textType.createBuilder(options);
517
790
  }
518
791
  /** `BOOLEAN` column. */
519
792
  export function bool() {
@@ -539,13 +812,13 @@ export function timestamp() {
539
812
  export function uuid(options) {
540
813
  return uuidType.createBuilder(options);
541
814
  }
542
- /** `JSON` column. */
543
- export function json() {
544
- return jsonType.createBuilder();
815
+ /** `JSON` column. Default Zod shape matches `Record<string, unknown>`. */
816
+ export function json(validation) {
817
+ return jsonType.createBuilder(validation !== undefined ? { validation } : undefined);
545
818
  }
546
- /** `JSONB` column (PostgreSQL; `JSON` on SQLite). */
547
- export function jsonb() {
548
- return jsonbType.createBuilder();
819
+ /** `JSONB` column (PostgreSQL; `JSON` on SQLite). Default Zod shape matches `Record<string, unknown>`. */
820
+ export function jsonb(validation) {
821
+ return jsonbType.createBuilder(validation !== undefined ? { validation } : undefined);
549
822
  }
550
823
  /** `NUMERIC` column — use string values to avoid float loss. */
551
824
  export function decimal(options) {
@@ -578,6 +851,81 @@ export function textArray() {
578
851
  export function intArray() {
579
852
  return intArrayType.createBuilder();
580
853
  }
854
+ /** `REAL` / `float4` column. Maps to `FLOAT` on MySQL. Prisma `Float` is {@link double}. */
855
+ export function real() {
856
+ return realType.createBuilder();
857
+ }
858
+ /** Alias for {@link real}. */
859
+ export function float() {
860
+ return real();
861
+ }
862
+ /** `DOUBLE PRECISION` / `float8` column. Maps to `DOUBLE` on MySQL. Closest to Prisma `Float`. */
863
+ export function double() {
864
+ return doubleType.createBuilder();
865
+ }
866
+ /** `DATE` column (`YYYY-MM-DD` string, not `Date`). */
867
+ export function date() {
868
+ return dateType.createBuilder();
869
+ }
870
+ /** `TIME` column (string). */
871
+ export function time() {
872
+ return timeType.createBuilder();
873
+ }
874
+ /** `INTERVAL` column (string). PostgreSQL native; SQLite `TEXT`; rejected on MySQL/MariaDB. */
875
+ export function interval() {
876
+ return intervalType.createBuilder();
877
+ }
878
+ /** `INET` column (string). PostgreSQL native; SQLite `TEXT`; rejected on MySQL/MariaDB. */
879
+ export function inet() {
880
+ return inetType.createBuilder();
881
+ }
882
+ /** `CIDR` column (string). PostgreSQL native; SQLite `TEXT`; rejected on MySQL/MariaDB. */
883
+ export function cidr() {
884
+ return cidrType.createBuilder();
885
+ }
886
+ /** `XML` column. Maps to `LONGTEXT` on MySQL and `TEXT` on SQLite. */
887
+ export function xml() {
888
+ return xmlType.createBuilder();
889
+ }
890
+ /** `MONEY` column (string). Maps to `DECIMAL(19,4)` on MySQL and `TEXT` on SQLite. */
891
+ export function money() {
892
+ return moneyType.createBuilder();
893
+ }
894
+ /** PostgreSQL `int4range` (string). Rejected on SQLite and MySQL/MariaDB. */
895
+ export function int4Range() {
896
+ return int4RangeType.createBuilder();
897
+ }
898
+ /** PostgreSQL `int8range` (string). Rejected on SQLite and MySQL/MariaDB. */
899
+ export function int8Range() {
900
+ return int8RangeType.createBuilder();
901
+ }
902
+ /** PostgreSQL `numrange` (string). Rejected on SQLite and MySQL/MariaDB. */
903
+ export function numRange() {
904
+ return numRangeType.createBuilder();
905
+ }
906
+ /** PostgreSQL `tsrange` (string). Rejected on SQLite and MySQL/MariaDB. */
907
+ export function tsRange() {
908
+ return tsRangeType.createBuilder();
909
+ }
910
+ /** PostgreSQL `tstzrange` (string). Rejected on SQLite and MySQL/MariaDB. */
911
+ export function tstzRange() {
912
+ return tstzRangeType.createBuilder();
913
+ }
914
+ /** PostgreSQL `daterange` (string). Rejected on SQLite and MySQL/MariaDB. */
915
+ export function dateRange() {
916
+ return dateRangeType.createBuilder();
917
+ }
918
+ /** `UUID[]` array column. JSON on SQLite/MySQL. */
919
+ export function uuidArray() {
920
+ return uuidArrayType.createBuilder();
921
+ }
922
+ /** Enum array column. Native `name[]` or `TEXT[]` on Postgres; JSON on SQLite/MySQL. */
923
+ export function enumArray(values, options) {
924
+ return enumArrayType.createBuilder({
925
+ values,
926
+ ...(options?.name !== undefined ? { name: options.name } : {}),
927
+ });
928
+ }
581
929
  /** `CITEXT` case-insensitive text (requires `citext` extension). */
582
930
  export function citext() {
583
931
  return citextType.createBuilder();