@fragno-dev/db 0.2.2 → 0.3.0

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 (355) hide show
  1. package/.turbo/turbo-build.log +202 -140
  2. package/CHANGELOG.md +35 -0
  3. package/README.md +30 -9
  4. package/dist/adapters/adapters.d.ts +23 -21
  5. package/dist/adapters/adapters.d.ts.map +1 -1
  6. package/dist/adapters/adapters.js.map +1 -1
  7. package/dist/adapters/generic-sql/driver-config.d.ts +16 -1
  8. package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -1
  9. package/dist/adapters/generic-sql/driver-config.js +23 -1
  10. package/dist/adapters/generic-sql/driver-config.js.map +1 -1
  11. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +27 -9
  12. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -1
  13. package/dist/adapters/generic-sql/generic-sql-adapter.js +55 -16
  14. package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -1
  15. package/dist/adapters/generic-sql/generic-sql-uow-executor.js +129 -3
  16. package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -1
  17. package/dist/adapters/generic-sql/migration/dialect/mysql.js +24 -5
  18. package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -1
  19. package/dist/adapters/generic-sql/migration/dialect/postgres.js +6 -5
  20. package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -1
  21. package/dist/adapters/generic-sql/migration/dialect/sqlite.js +21 -10
  22. package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -1
  23. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -1
  24. package/dist/adapters/generic-sql/migration/prepared-migrations.js +8 -8
  25. package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -1
  26. package/dist/adapters/generic-sql/migration/sql-generator.js +74 -51
  27. package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -1
  28. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +6 -5
  29. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -1
  30. package/dist/adapters/generic-sql/query/cursor-utils.js +42 -4
  31. package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -1
  32. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +25 -17
  33. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -1
  34. package/dist/adapters/generic-sql/query/select-builder.js +5 -3
  35. package/dist/adapters/generic-sql/query/select-builder.js.map +1 -1
  36. package/dist/adapters/generic-sql/query/sql-query-compiler.js +15 -12
  37. package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -1
  38. package/dist/adapters/generic-sql/query/where-builder.js +39 -29
  39. package/dist/adapters/generic-sql/query/where-builder.js.map +1 -1
  40. package/dist/adapters/generic-sql/sqlite-storage.d.ts +13 -0
  41. package/dist/adapters/generic-sql/sqlite-storage.d.ts.map +1 -0
  42. package/dist/adapters/generic-sql/sqlite-storage.js +15 -0
  43. package/dist/adapters/generic-sql/sqlite-storage.js.map +1 -0
  44. package/dist/adapters/generic-sql/uow-decoder.js +7 -3
  45. package/dist/adapters/generic-sql/uow-decoder.js.map +1 -1
  46. package/dist/adapters/generic-sql/uow-encoder.js +28 -8
  47. package/dist/adapters/generic-sql/uow-encoder.js.map +1 -1
  48. package/dist/adapters/in-memory/condition-evaluator.js +131 -0
  49. package/dist/adapters/in-memory/condition-evaluator.js.map +1 -0
  50. package/dist/adapters/in-memory/errors.d.ts +13 -0
  51. package/dist/adapters/in-memory/errors.d.ts.map +1 -0
  52. package/dist/adapters/in-memory/errors.js +23 -0
  53. package/dist/adapters/in-memory/errors.js.map +1 -0
  54. package/dist/adapters/in-memory/in-memory-adapter.d.ts +27 -0
  55. package/dist/adapters/in-memory/in-memory-adapter.d.ts.map +1 -0
  56. package/dist/adapters/in-memory/in-memory-adapter.js +176 -0
  57. package/dist/adapters/in-memory/in-memory-adapter.js.map +1 -0
  58. package/dist/adapters/in-memory/in-memory-uow.js +648 -0
  59. package/dist/adapters/in-memory/in-memory-uow.js.map +1 -0
  60. package/dist/adapters/in-memory/index.d.ts +4 -0
  61. package/dist/adapters/in-memory/index.js +4 -0
  62. package/dist/adapters/in-memory/options.d.ts +28 -0
  63. package/dist/adapters/in-memory/options.d.ts.map +1 -0
  64. package/dist/adapters/in-memory/options.js +61 -0
  65. package/dist/adapters/in-memory/options.js.map +1 -0
  66. package/dist/adapters/in-memory/reference-resolution.js +26 -0
  67. package/dist/adapters/in-memory/reference-resolution.js.map +1 -0
  68. package/dist/adapters/in-memory/sorted-array-index.js +129 -0
  69. package/dist/adapters/in-memory/sorted-array-index.js.map +1 -0
  70. package/dist/adapters/in-memory/store.js +71 -0
  71. package/dist/adapters/in-memory/store.js.map +1 -0
  72. package/dist/adapters/in-memory/value-comparison.js +28 -0
  73. package/dist/adapters/in-memory/value-comparison.js.map +1 -0
  74. package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -1
  75. package/dist/adapters/shared/uow-operation-compiler.js +11 -11
  76. package/dist/adapters/shared/uow-operation-compiler.js.map +1 -1
  77. package/dist/adapters/sql/index.d.ts +5 -0
  78. package/dist/adapters/sql/index.js +4 -0
  79. package/dist/db-fragment-definition-builder.d.ts +18 -7
  80. package/dist/db-fragment-definition-builder.d.ts.map +1 -1
  81. package/dist/db-fragment-definition-builder.js +116 -54
  82. package/dist/db-fragment-definition-builder.js.map +1 -1
  83. package/dist/dispatchers/cloudflare-do/index.d.ts +26 -0
  84. package/dist/dispatchers/cloudflare-do/index.d.ts.map +1 -0
  85. package/dist/dispatchers/cloudflare-do/index.js +63 -0
  86. package/dist/dispatchers/cloudflare-do/index.js.map +1 -0
  87. package/dist/dispatchers/node/index.d.ts +17 -0
  88. package/dist/dispatchers/node/index.d.ts.map +1 -0
  89. package/dist/dispatchers/node/index.js +59 -0
  90. package/dist/dispatchers/node/index.js.map +1 -0
  91. package/dist/fragments/internal-fragment.d.ts +79 -2
  92. package/dist/fragments/internal-fragment.d.ts.map +1 -1
  93. package/dist/fragments/internal-fragment.js +150 -32
  94. package/dist/fragments/internal-fragment.js.map +1 -1
  95. package/dist/fragments/internal-fragment.routes.js +29 -0
  96. package/dist/fragments/internal-fragment.routes.js.map +1 -0
  97. package/dist/fragments/internal-fragment.schema.d.ts +9 -0
  98. package/dist/fragments/internal-fragment.schema.d.ts.map +1 -0
  99. package/dist/fragments/internal-fragment.schema.js +22 -0
  100. package/dist/fragments/internal-fragment.schema.js.map +1 -0
  101. package/dist/hooks/durable-hooks-processor.d.ts +14 -0
  102. package/dist/hooks/durable-hooks-processor.d.ts.map +1 -0
  103. package/dist/hooks/durable-hooks-processor.js +32 -0
  104. package/dist/hooks/durable-hooks-processor.js.map +1 -0
  105. package/dist/hooks/hooks.d.ts +42 -1
  106. package/dist/hooks/hooks.d.ts.map +1 -1
  107. package/dist/hooks/hooks.js +72 -6
  108. package/dist/hooks/hooks.js.map +1 -1
  109. package/dist/migration-engine/auto-from-schema.js +14 -11
  110. package/dist/migration-engine/auto-from-schema.js.map +1 -1
  111. package/dist/migration-engine/generation-engine.d.ts +16 -10
  112. package/dist/migration-engine/generation-engine.d.ts.map +1 -1
  113. package/dist/migration-engine/generation-engine.js +72 -33
  114. package/dist/migration-engine/generation-engine.js.map +1 -1
  115. package/dist/migration-engine/shared.js.map +1 -1
  116. package/dist/mod.d.ts +15 -8
  117. package/dist/mod.d.ts.map +1 -1
  118. package/dist/mod.js +14 -8
  119. package/dist/mod.js.map +1 -1
  120. package/dist/naming/sql-naming.d.ts +19 -0
  121. package/dist/naming/sql-naming.d.ts.map +1 -0
  122. package/dist/naming/sql-naming.js +116 -0
  123. package/dist/naming/sql-naming.js.map +1 -0
  124. package/dist/node_modules/.pnpm/{rou3@0.7.10 → rou3@0.7.12}/node_modules/rou3/dist/index.js +8 -5
  125. package/dist/node_modules/.pnpm/rou3@0.7.12/node_modules/rou3/dist/index.js.map +1 -0
  126. package/dist/outbox/outbox-builder.js +156 -0
  127. package/dist/outbox/outbox-builder.js.map +1 -0
  128. package/dist/outbox/outbox.d.ts +52 -0
  129. package/dist/outbox/outbox.d.ts.map +1 -0
  130. package/dist/outbox/outbox.js +37 -0
  131. package/dist/outbox/outbox.js.map +1 -0
  132. package/dist/packages/fragno/dist/api/fragment-definition-builder.js +3 -2
  133. package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +1 -1
  134. package/dist/packages/fragno/dist/api/fragment-instantiator.js +164 -20
  135. package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -1
  136. package/dist/packages/fragno/dist/api/request-input-context.js +67 -0
  137. package/dist/packages/fragno/dist/api/request-input-context.js.map +1 -1
  138. package/dist/packages/fragno/dist/api/route.js +14 -1
  139. package/dist/packages/fragno/dist/api/route.js.map +1 -1
  140. package/dist/packages/fragno/dist/internal/trace-context.js +12 -0
  141. package/dist/packages/fragno/dist/internal/trace-context.js.map +1 -0
  142. package/dist/query/column-defaults.js +20 -4
  143. package/dist/query/column-defaults.js.map +1 -1
  144. package/dist/query/cursor.d.ts +3 -1
  145. package/dist/query/cursor.d.ts.map +1 -1
  146. package/dist/query/cursor.js +45 -14
  147. package/dist/query/cursor.js.map +1 -1
  148. package/dist/query/db-now.d.ts +8 -0
  149. package/dist/query/db-now.d.ts.map +1 -0
  150. package/dist/query/db-now.js +7 -0
  151. package/dist/query/db-now.js.map +1 -0
  152. package/dist/query/serialize/create-sql-serializer.js +3 -2
  153. package/dist/query/serialize/create-sql-serializer.js.map +1 -1
  154. package/dist/query/serialize/dialect/mysql-serializer.js +12 -6
  155. package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -1
  156. package/dist/query/serialize/dialect/postgres-serializer.js +25 -7
  157. package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -1
  158. package/dist/query/serialize/dialect/sqlite-serializer.js +55 -11
  159. package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -1
  160. package/dist/query/serialize/sql-serializer.js +2 -2
  161. package/dist/query/serialize/sql-serializer.js.map +1 -1
  162. package/dist/query/simple-query-interface.d.ts +6 -1
  163. package/dist/query/simple-query-interface.d.ts.map +1 -1
  164. package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -1
  165. package/dist/query/unit-of-work/execute-unit-of-work.js +11 -6
  166. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -1
  167. package/dist/query/unit-of-work/unit-of-work.d.ts +50 -14
  168. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
  169. package/dist/query/unit-of-work/unit-of-work.js +86 -5
  170. package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
  171. package/dist/query/value-decoding.js +9 -6
  172. package/dist/query/value-decoding.js.map +1 -1
  173. package/dist/query/value-encoding.js +29 -9
  174. package/dist/query/value-encoding.js.map +1 -1
  175. package/dist/schema/create.d.ts +38 -14
  176. package/dist/schema/create.d.ts.map +1 -1
  177. package/dist/schema/create.js +81 -42
  178. package/dist/schema/create.js.map +1 -1
  179. package/dist/schema/generate-id.js +2 -2
  180. package/dist/schema/generate-id.js.map +1 -1
  181. package/dist/schema/type-conversion/create-sql-type-mapper.js +3 -2
  182. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -1
  183. package/dist/schema/type-conversion/dialect/sqlite.js +9 -0
  184. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -1
  185. package/dist/schema/validator.d.ts +10 -0
  186. package/dist/schema/validator.d.ts.map +1 -0
  187. package/dist/schema/validator.js +123 -0
  188. package/dist/schema/validator.js.map +1 -0
  189. package/dist/schema-output/drizzle.d.ts +30 -0
  190. package/dist/schema-output/drizzle.d.ts.map +1 -0
  191. package/dist/{adapters/drizzle/generate.js → schema-output/drizzle.js} +82 -56
  192. package/dist/schema-output/drizzle.js.map +1 -0
  193. package/dist/schema-output/prisma.d.ts +17 -0
  194. package/dist/schema-output/prisma.d.ts.map +1 -0
  195. package/dist/schema-output/prisma.js +296 -0
  196. package/dist/schema-output/prisma.js.map +1 -0
  197. package/dist/util/default-database-adapter.js +61 -0
  198. package/dist/util/default-database-adapter.js.map +1 -0
  199. package/dist/with-database.d.ts +1 -1
  200. package/dist/with-database.d.ts.map +1 -1
  201. package/dist/with-database.js +12 -3
  202. package/dist/with-database.js.map +1 -1
  203. package/package.json +43 -28
  204. package/src/adapters/adapters.ts +30 -24
  205. package/src/adapters/drizzle/migrate-drizzle.test.ts +54 -33
  206. package/src/adapters/drizzle/migration-parity-drizzle-kit.test.ts +599 -0
  207. package/src/adapters/drizzle/test-utils.ts +12 -8
  208. package/src/adapters/generic-sql/driver-config.ts +38 -0
  209. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +5 -5
  210. package/src/adapters/generic-sql/generic-sql-adapter.ts +110 -24
  211. package/src/adapters/generic-sql/generic-sql-uow-executor.test.ts +54 -0
  212. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +231 -3
  213. package/src/adapters/generic-sql/migration/adapter-migration-parity.test.ts +118 -0
  214. package/src/adapters/generic-sql/migration/dialect/mysql.test.ts +26 -8
  215. package/src/adapters/generic-sql/migration/dialect/mysql.ts +46 -8
  216. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +25 -7
  217. package/src/adapters/generic-sql/migration/dialect/postgres.ts +8 -4
  218. package/src/adapters/generic-sql/migration/dialect/sqlite.test.ts +47 -8
  219. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +27 -12
  220. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +128 -39
  221. package/src/adapters/generic-sql/migration/prepared-migrations.ts +15 -8
  222. package/src/adapters/generic-sql/migration/sql-generator.ts +142 -65
  223. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +9 -6
  224. package/src/adapters/generic-sql/query/cursor-utils.test.ts +271 -0
  225. package/src/adapters/generic-sql/query/cursor-utils.ts +41 -6
  226. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +27 -27
  227. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +38 -24
  228. package/src/adapters/generic-sql/query/select-builder.test.ts +15 -11
  229. package/src/adapters/generic-sql/query/select-builder.ts +6 -2
  230. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +52 -2
  231. package/src/adapters/generic-sql/query/sql-query-compiler.ts +50 -15
  232. package/src/adapters/generic-sql/query/where-builder.test.ts +91 -17
  233. package/src/adapters/generic-sql/query/where-builder.ts +90 -38
  234. package/src/adapters/{kysely/kysely-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-migrations.test.ts} +6 -6
  235. package/src/adapters/generic-sql/sql-adapter-pglite-pagination.test.ts +806 -0
  236. package/src/adapters/{drizzle/drizzle-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-queries.test.ts} +11 -11
  237. package/src/adapters/generic-sql/{test/generic-drizzle-adapter-sqlite3.test.ts → sql-adapter-sqlite3-driver.test.ts} +10 -10
  238. package/src/adapters/{drizzle/drizzle-adapter-sqlite3.test.ts → generic-sql/sql-adapter-sqlite3-uow.test.ts} +7 -7
  239. package/src/adapters/{kysely/kysely-adapter-sqlocal.test.ts → generic-sql/sql-adapter-sqlocal.test.ts} +6 -6
  240. package/src/adapters/generic-sql/sqlite-storage.ts +20 -0
  241. package/src/adapters/generic-sql/uow-decoder.test.ts +1 -1
  242. package/src/adapters/generic-sql/uow-decoder.ts +21 -3
  243. package/src/adapters/generic-sql/uow-encoder.test.ts +33 -2
  244. package/src/adapters/generic-sql/uow-encoder.ts +50 -11
  245. package/src/adapters/in-memory/condition-evaluator.test.ts +193 -0
  246. package/src/adapters/in-memory/condition-evaluator.ts +275 -0
  247. package/src/adapters/in-memory/errors.ts +20 -0
  248. package/src/adapters/in-memory/in-memory-adapter.ts +277 -0
  249. package/src/adapters/in-memory/in-memory-uow.mutations.test.ts +296 -0
  250. package/src/adapters/in-memory/in-memory-uow.retrieval.test.ts +100 -0
  251. package/src/adapters/in-memory/in-memory-uow.ts +1348 -0
  252. package/src/adapters/in-memory/index.ts +3 -0
  253. package/src/adapters/in-memory/options.test.ts +41 -0
  254. package/src/adapters/in-memory/options.ts +87 -0
  255. package/src/adapters/in-memory/reference-resolution.test.ts +50 -0
  256. package/src/adapters/in-memory/reference-resolution.ts +67 -0
  257. package/src/adapters/in-memory/sorted-array-index.test.ts +123 -0
  258. package/src/adapters/in-memory/sorted-array-index.ts +228 -0
  259. package/src/adapters/in-memory/store.test.ts +68 -0
  260. package/src/adapters/in-memory/store.ts +145 -0
  261. package/src/adapters/in-memory/value-comparison.ts +53 -0
  262. package/src/adapters/in-memory/value-normalization.test.ts +57 -0
  263. package/src/adapters/prisma/prisma-adapter-sqlite3.test.ts +1163 -0
  264. package/src/adapters/shared/from-unit-of-work-compiler.ts +3 -1
  265. package/src/adapters/shared/uow-operation-compiler.ts +26 -16
  266. package/src/adapters/sql/index.ts +12 -0
  267. package/src/db-fragment-definition-builder.test.ts +30 -12
  268. package/src/db-fragment-definition-builder.ts +142 -73
  269. package/src/db-fragment-instantiator.test.ts +105 -13
  270. package/src/db-fragment-integration.test.ts +9 -7
  271. package/src/dispatchers/cloudflare-do/index.test.ts +73 -0
  272. package/src/dispatchers/cloudflare-do/index.ts +104 -0
  273. package/src/dispatchers/node/index.test.ts +91 -0
  274. package/src/dispatchers/node/index.ts +87 -0
  275. package/src/fragments/internal-fragment.routes.ts +42 -0
  276. package/src/fragments/internal-fragment.schema.ts +51 -0
  277. package/src/fragments/internal-fragment.test.ts +458 -8
  278. package/src/fragments/internal-fragment.ts +322 -63
  279. package/src/hooks/durable-hooks-processor.test.ts +117 -0
  280. package/src/hooks/durable-hooks-processor.ts +67 -0
  281. package/src/hooks/hooks.test.ts +165 -5
  282. package/src/hooks/hooks.ts +197 -9
  283. package/src/migration-engine/auto-from-schema.test.ts +14 -14
  284. package/src/migration-engine/auto-from-schema.ts +5 -2
  285. package/src/migration-engine/create.test.ts +2 -2
  286. package/src/migration-engine/generation-engine.test.ts +229 -104
  287. package/src/migration-engine/generation-engine.ts +94 -64
  288. package/src/migration-engine/shared.ts +1 -0
  289. package/src/mod.ts +64 -26
  290. package/src/naming/sql-naming.ts +180 -0
  291. package/src/outbox/outbox-builder.ts +241 -0
  292. package/src/outbox/outbox.test.ts +253 -0
  293. package/src/outbox/outbox.ts +137 -0
  294. package/src/query/column-defaults.ts +41 -3
  295. package/src/query/condition-builder.test.ts +3 -3
  296. package/src/query/cursor.test.ts +116 -18
  297. package/src/query/cursor.ts +75 -26
  298. package/src/query/db-now.ts +6 -0
  299. package/src/query/query-type.test.ts +2 -2
  300. package/src/query/serialize/create-sql-serializer.ts +7 -2
  301. package/src/query/serialize/dialect/mysql-serializer.ts +12 -4
  302. package/src/query/serialize/dialect/postgres-serializer.ts +34 -4
  303. package/src/query/serialize/dialect/sqlite-serializer.test.ts +51 -1
  304. package/src/query/serialize/dialect/sqlite-serializer.ts +92 -9
  305. package/src/query/serialize/sql-serializer.ts +4 -4
  306. package/src/query/simple-query-interface.ts +5 -0
  307. package/src/query/unit-of-work/execute-unit-of-work.test.ts +25 -1
  308. package/src/query/unit-of-work/execute-unit-of-work.ts +25 -8
  309. package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +12 -12
  310. package/src/query/unit-of-work/unit-of-work-types.test.ts +1 -1
  311. package/src/query/unit-of-work/unit-of-work.test.ts +168 -37
  312. package/src/query/unit-of-work/unit-of-work.ts +203 -18
  313. package/src/query/value-decoding.test.ts +13 -2
  314. package/src/query/value-decoding.ts +17 -4
  315. package/src/query/value-encoding.test.ts +85 -2
  316. package/src/query/value-encoding.ts +56 -6
  317. package/src/schema/create.test.ts +129 -42
  318. package/src/schema/create.ts +185 -47
  319. package/src/schema/generate-id.test.ts +2 -2
  320. package/src/schema/generate-id.ts +2 -2
  321. package/src/schema/serialize.test.ts +14 -2
  322. package/src/schema/type-conversion/create-sql-type-mapper.ts +7 -2
  323. package/src/schema/type-conversion/dialect/sqlite.ts +18 -0
  324. package/src/schema/type-conversion/type-mapping.test.ts +25 -1
  325. package/src/schema/validator.test.ts +197 -0
  326. package/src/schema/validator.ts +231 -0
  327. package/src/{adapters/drizzle/generate.test.ts → schema-output/drizzle.test.ts} +179 -129
  328. package/src/{adapters/drizzle/generate.ts → schema-output/drizzle.ts} +143 -93
  329. package/src/schema-output/prisma.test.ts +536 -0
  330. package/src/schema-output/prisma.ts +573 -0
  331. package/src/util/default-database-adapter.ts +106 -0
  332. package/src/with-database.ts +22 -3
  333. package/tsdown.config.ts +6 -4
  334. package/dist/adapters/drizzle/drizzle-adapter.d.ts +0 -20
  335. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +0 -1
  336. package/dist/adapters/drizzle/drizzle-adapter.js +0 -27
  337. package/dist/adapters/drizzle/drizzle-adapter.js.map +0 -1
  338. package/dist/adapters/drizzle/generate.d.ts +0 -30
  339. package/dist/adapters/drizzle/generate.d.ts.map +0 -1
  340. package/dist/adapters/drizzle/generate.js.map +0 -1
  341. package/dist/adapters/kysely/kysely-adapter.d.ts +0 -19
  342. package/dist/adapters/kysely/kysely-adapter.d.ts.map +0 -1
  343. package/dist/adapters/kysely/kysely-adapter.js +0 -17
  344. package/dist/adapters/kysely/kysely-adapter.js.map +0 -1
  345. package/dist/adapters/shared/table-name-mapper.d.ts +0 -12
  346. package/dist/adapters/shared/table-name-mapper.d.ts.map +0 -1
  347. package/dist/adapters/shared/table-name-mapper.js +0 -43
  348. package/dist/adapters/shared/table-name-mapper.js.map +0 -1
  349. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +0 -1
  350. package/dist/schema-generator/schema-generator.d.ts +0 -15
  351. package/dist/schema-generator/schema-generator.d.ts.map +0 -1
  352. package/src/adapters/drizzle/drizzle-adapter.ts +0 -39
  353. package/src/adapters/kysely/kysely-adapter.ts +0 -27
  354. package/src/adapters/shared/table-name-mapper.ts +0 -50
  355. package/src/schema-generator/schema-generator.ts +0 -12
@@ -1,5 +1,5 @@
1
- import { createSQLSerializer } from "./serialize/create-sql-serializer.js";
2
1
  import { FragnoId, FragnoReference } from "../schema/create.js";
2
+ import { createSQLSerializer } from "./serialize/create-sql-serializer.js";
3
3
 
4
4
  //#region src/query/value-decoding.ts
5
5
  /**
@@ -14,6 +14,7 @@ import { FragnoId, FragnoReference } from "../schema/create.js";
14
14
  * @param result - The raw database result record
15
15
  * @param table - The table schema definition containing column and relation information
16
16
  * @param driverConfig - The driver configuration containing database type information
17
+ * @param sqliteStorageMode - Optional SQLite storage mode override
17
18
  * @returns A record in application format with deserialized values
18
19
  *
19
20
  * @example
@@ -26,18 +27,20 @@ import { FragnoId, FragnoReference } from "../schema/create.js";
26
27
  * // Returns: { userId: 123, createdAt: Date, posts: { title: 'Hello' } }
27
28
  * ```
28
29
  */
29
- function decodeResult(result, table, driverConfig) {
30
- const serializer = createSQLSerializer(driverConfig);
30
+ function decodeResult(result, table, driverConfig, sqliteStorageMode, resolver) {
31
+ const serializer = createSQLSerializer(driverConfig, sqliteStorageMode);
31
32
  const output = {};
32
33
  const columnValues = {};
34
+ const columnMap = resolver ? resolver.getColumnNameMap(table) : void 0;
33
35
  const relationData = {};
34
36
  for (const k in result) {
35
37
  const colonIndex = k.indexOf(":");
36
38
  const value = result[k];
37
39
  if (colonIndex === -1) {
38
- const col = table.columns[k];
40
+ const logicalName = columnMap?.[k] ?? k;
41
+ const col = table.columns[logicalName];
39
42
  if (!col) continue;
40
- columnValues[k] = serializer.deserialize(value, col);
43
+ columnValues[logicalName] = serializer.deserialize(value, col);
41
44
  continue;
42
45
  }
43
46
  const relationName = k.slice(0, colonIndex);
@@ -49,7 +52,7 @@ function decodeResult(result, table, driverConfig) {
49
52
  for (const relationName in relationData) {
50
53
  const relation = table.relations[relationName];
51
54
  if (!relation) continue;
52
- output[relationName] = decodeResult(relationData[relationName], relation.table, driverConfig);
55
+ output[relationName] = decodeResult(relationData[relationName], relation.table, driverConfig, sqliteStorageMode, resolver);
53
56
  }
54
57
  for (const k in columnValues) {
55
58
  const col = table.columns[k];
@@ -1 +1 @@
1
- {"version":3,"file":"value-decoding.js","names":["output: Record<string, unknown>","columnValues: Record<string, unknown>","relationData: Record<string, Record<string, unknown>>"],"sources":["../../src/query/value-decoding.ts"],"sourcesContent":["import type { AnyTable } from \"../schema/create\";\nimport { createSQLSerializer } from \"./serialize/create-sql-serializer\";\nimport { FragnoId, FragnoReference } from \"../schema/create\";\nimport type { DriverConfig } from \"../adapters/generic-sql/driver-config\";\n\n/**\n * Decodes a database result record to application format.\n *\n * This function transforms database column names back to application property names\n * and deserializes values according to the database provider's format (e.g., converting\n * SQLite integers back to JavaScript Date objects).\n *\n * Supports relation data encoded with the pattern `relationName:columnName`.\n *\n * @param result - The raw database result record\n * @param table - The table schema definition containing column and relation information\n * @param driverConfig - The driver configuration containing database type information\n * @returns A record in application format with deserialized values\n *\n * @example\n * ```ts\n * const decoded = decodeResult(\n * { user_id: 123, created_at: 1234567890, 'posts:title': 'Hello' },\n * userTable,\n * driverConfig\n * );\n * // Returns: { userId: 123, createdAt: Date, posts: { title: 'Hello' } }\n * ```\n */\nexport function decodeResult(\n result: Record<string, unknown>,\n table: AnyTable,\n driverConfig: DriverConfig,\n): Record<string, unknown> {\n const serializer = createSQLSerializer(driverConfig);\n const output: Record<string, unknown> = {};\n // First pass: collect all column values\n const columnValues: Record<string, unknown> = {};\n\n // Collect all relation data (including nested) keyed by relation name\n const relationData: Record<string, Record<string, unknown>> = {};\n\n for (const k in result) {\n const colonIndex = k.indexOf(\":\");\n const value = result[k];\n\n // Direct column (no colon)\n if (colonIndex === -1) {\n const col = table.columns[k];\n if (!col) {\n continue;\n }\n\n // Store all column values (including hidden ones for FragnoId creation)\n columnValues[k] = serializer.deserialize(value, col);\n continue;\n }\n\n // Relation column (has colon)\n const relationName = k.slice(0, colonIndex);\n const remainder = k.slice(colonIndex + 1);\n\n const relation = table.relations[relationName];\n if (relation === undefined) {\n continue;\n }\n\n // Collect relation data with the remaining key path\n relationData[relationName] ??= {};\n relationData[relationName][remainder] = value;\n }\n\n // Process each relation's data recursively\n for (const relationName in relationData) {\n const relation = table.relations[relationName];\n if (!relation) {\n continue;\n }\n\n // Recursively decode the relation data\n output[relationName] = decodeResult(relationData[relationName], relation.table, driverConfig);\n }\n\n // Second pass: create output with FragnoId objects where appropriate\n for (const k in columnValues) {\n const col = table.columns[k];\n if (!col) {\n continue;\n }\n\n // Filter out hidden columns (like _internalId, _version) from results\n if (col.isHidden) {\n continue;\n }\n\n // For external ID columns, create FragnoId if we have both external and internal IDs\n if (col.role === \"external-id\" && columnValues[\"_internalId\"] !== undefined) {\n output[k] = new FragnoId({\n externalId: columnValues[k] as string,\n internalId: columnValues[\"_internalId\"] as bigint,\n // _version is always selected as a hidden column, so it should always be present\n version: columnValues[\"_version\"] as number,\n });\n } else if (col.role === \"reference\") {\n // For reference columns, create FragnoReference with internal ID\n output[k] = FragnoReference.fromInternal(columnValues[k] as bigint);\n } else {\n output[k] = columnValues[k];\n }\n }\n\n return output;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAgB,aACd,QACA,OACA,cACyB;CACzB,MAAM,aAAa,oBAAoB,aAAa;CACpD,MAAMA,SAAkC,EAAE;CAE1C,MAAMC,eAAwC,EAAE;CAGhD,MAAMC,eAAwD,EAAE;AAEhE,MAAK,MAAM,KAAK,QAAQ;EACtB,MAAM,aAAa,EAAE,QAAQ,IAAI;EACjC,MAAM,QAAQ,OAAO;AAGrB,MAAI,eAAe,IAAI;GACrB,MAAM,MAAM,MAAM,QAAQ;AAC1B,OAAI,CAAC,IACH;AAIF,gBAAa,KAAK,WAAW,YAAY,OAAO,IAAI;AACpD;;EAIF,MAAM,eAAe,EAAE,MAAM,GAAG,WAAW;EAC3C,MAAM,YAAY,EAAE,MAAM,aAAa,EAAE;AAGzC,MADiB,MAAM,UAAU,kBAChB,OACf;AAIF,eAAa,kBAAkB,EAAE;AACjC,eAAa,cAAc,aAAa;;AAI1C,MAAK,MAAM,gBAAgB,cAAc;EACvC,MAAM,WAAW,MAAM,UAAU;AACjC,MAAI,CAAC,SACH;AAIF,SAAO,gBAAgB,aAAa,aAAa,eAAe,SAAS,OAAO,aAAa;;AAI/F,MAAK,MAAM,KAAK,cAAc;EAC5B,MAAM,MAAM,MAAM,QAAQ;AAC1B,MAAI,CAAC,IACH;AAIF,MAAI,IAAI,SACN;AAIF,MAAI,IAAI,SAAS,iBAAiB,aAAa,mBAAmB,OAChE,QAAO,KAAK,IAAI,SAAS;GACvB,YAAY,aAAa;GACzB,YAAY,aAAa;GAEzB,SAAS,aAAa;GACvB,CAAC;WACO,IAAI,SAAS,YAEtB,QAAO,KAAK,gBAAgB,aAAa,aAAa,GAAa;MAEnE,QAAO,KAAK,aAAa;;AAI7B,QAAO"}
1
+ {"version":3,"file":"value-decoding.js","names":["output: Record<string, unknown>","columnValues: Record<string, unknown>","relationData: Record<string, Record<string, unknown>>"],"sources":["../../src/query/value-decoding.ts"],"sourcesContent":["import type { AnyTable } from \"../schema/create\";\nimport { createSQLSerializer } from \"./serialize/create-sql-serializer\";\nimport { FragnoId, FragnoReference } from \"../schema/create\";\nimport type { DriverConfig } from \"../adapters/generic-sql/driver-config\";\nimport type { SQLiteStorageMode } from \"../adapters/generic-sql/sqlite-storage\";\nimport type { NamingResolver } from \"../naming/sql-naming\";\n\n/**\n * Decodes a database result record to application format.\n *\n * This function transforms database column names back to application property names\n * and deserializes values according to the database provider's format (e.g., converting\n * SQLite integers back to JavaScript Date objects).\n *\n * Supports relation data encoded with the pattern `relationName:columnName`.\n *\n * @param result - The raw database result record\n * @param table - The table schema definition containing column and relation information\n * @param driverConfig - The driver configuration containing database type information\n * @param sqliteStorageMode - Optional SQLite storage mode override\n * @returns A record in application format with deserialized values\n *\n * @example\n * ```ts\n * const decoded = decodeResult(\n * { user_id: 123, created_at: 1234567890, 'posts:title': 'Hello' },\n * userTable,\n * driverConfig\n * );\n * // Returns: { userId: 123, createdAt: Date, posts: { title: 'Hello' } }\n * ```\n */\nexport function decodeResult(\n result: Record<string, unknown>,\n table: AnyTable,\n driverConfig: DriverConfig,\n sqliteStorageMode?: SQLiteStorageMode,\n resolver?: NamingResolver,\n): Record<string, unknown> {\n const serializer = createSQLSerializer(driverConfig, sqliteStorageMode);\n const output: Record<string, unknown> = {};\n // First pass: collect all column values\n const columnValues: Record<string, unknown> = {};\n const columnMap = resolver ? resolver.getColumnNameMap(table) : undefined;\n\n // Collect all relation data (including nested) keyed by relation name\n const relationData: Record<string, Record<string, unknown>> = {};\n\n for (const k in result) {\n const colonIndex = k.indexOf(\":\");\n const value = result[k];\n\n // Direct column (no colon)\n if (colonIndex === -1) {\n const logicalName = columnMap?.[k] ?? k;\n const col = table.columns[logicalName];\n if (!col) {\n continue;\n }\n\n // Store all column values (including hidden ones for FragnoId creation)\n columnValues[logicalName] = serializer.deserialize(value, col);\n continue;\n }\n\n // Relation column (has colon)\n const relationName = k.slice(0, colonIndex);\n const remainder = k.slice(colonIndex + 1);\n\n const relation = table.relations[relationName];\n if (relation === undefined) {\n continue;\n }\n\n // Collect relation data with the remaining key path\n relationData[relationName] ??= {};\n relationData[relationName][remainder] = value;\n }\n\n // Process each relation's data recursively\n for (const relationName in relationData) {\n const relation = table.relations[relationName];\n if (!relation) {\n continue;\n }\n\n // Recursively decode the relation data\n output[relationName] = decodeResult(\n relationData[relationName],\n relation.table,\n driverConfig,\n sqliteStorageMode,\n resolver,\n );\n }\n\n // Second pass: create output with FragnoId objects where appropriate\n for (const k in columnValues) {\n const col = table.columns[k];\n if (!col) {\n continue;\n }\n\n // Filter out hidden columns (like _internalId, _version) from results\n if (col.isHidden) {\n continue;\n }\n\n // For external ID columns, create FragnoId if we have both external and internal IDs\n if (col.role === \"external-id\" && columnValues[\"_internalId\"] !== undefined) {\n output[k] = new FragnoId({\n externalId: columnValues[k] as string,\n internalId: columnValues[\"_internalId\"] as bigint,\n // _version is always selected as a hidden column, so it should always be present\n version: columnValues[\"_version\"] as number,\n });\n } else if (col.role === \"reference\") {\n // For reference columns, create FragnoReference with internal ID\n output[k] = FragnoReference.fromInternal(columnValues[k] as bigint);\n } else {\n output[k] = columnValues[k];\n }\n }\n\n return output;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,SAAgB,aACd,QACA,OACA,cACA,mBACA,UACyB;CACzB,MAAM,aAAa,oBAAoB,cAAc,kBAAkB;CACvE,MAAMA,SAAkC,EAAE;CAE1C,MAAMC,eAAwC,EAAE;CAChD,MAAM,YAAY,WAAW,SAAS,iBAAiB,MAAM,GAAG;CAGhE,MAAMC,eAAwD,EAAE;AAEhE,MAAK,MAAM,KAAK,QAAQ;EACtB,MAAM,aAAa,EAAE,QAAQ,IAAI;EACjC,MAAM,QAAQ,OAAO;AAGrB,MAAI,eAAe,IAAI;GACrB,MAAM,cAAc,YAAY,MAAM;GACtC,MAAM,MAAM,MAAM,QAAQ;AAC1B,OAAI,CAAC,IACH;AAIF,gBAAa,eAAe,WAAW,YAAY,OAAO,IAAI;AAC9D;;EAIF,MAAM,eAAe,EAAE,MAAM,GAAG,WAAW;EAC3C,MAAM,YAAY,EAAE,MAAM,aAAa,EAAE;AAGzC,MADiB,MAAM,UAAU,kBAChB,OACf;AAIF,eAAa,kBAAkB,EAAE;AACjC,eAAa,cAAc,aAAa;;AAI1C,MAAK,MAAM,gBAAgB,cAAc;EACvC,MAAM,WAAW,MAAM,UAAU;AACjC,MAAI,CAAC,SACH;AAIF,SAAO,gBAAgB,aACrB,aAAa,eACb,SAAS,OACT,cACA,mBACA,SACD;;AAIH,MAAK,MAAM,KAAK,cAAc;EAC5B,MAAM,MAAM,MAAM,QAAQ;AAC1B,MAAI,CAAC,IACH;AAIF,MAAI,IAAI,SACN;AAIF,MAAI,IAAI,SAAS,iBAAiB,aAAa,mBAAmB,OAChE,QAAO,KAAK,IAAI,SAAS;GACvB,YAAY,aAAa;GACzB,YAAY,aAAa;GAEzB,SAAS,aAAa;GACvB,CAAC;WACO,IAAI,SAAS,YAEtB,QAAO,KAAK,gBAAgB,aAAa,aAAa,GAAa;MAEnE,QAAO,KAAK,aAAa;;AAI7B,QAAO"}
@@ -1,5 +1,5 @@
1
1
  import { FragnoId, FragnoReference } from "../schema/create.js";
2
- import { generateRuntimeDefault } from "./column-defaults.js";
2
+ import { generateDatabaseDefault, generateRuntimeDefault } from "./column-defaults.js";
3
3
 
4
4
  //#region src/query/value-encoding.ts
5
5
  /**
@@ -79,14 +79,15 @@ function resolveFragnoIdValue(value, col) {
79
79
  * // Returns: { user_id: 123, created_at: Date } (not yet serialized)
80
80
  * ```
81
81
  */
82
- function encodeValues(values, table, generateDefault) {
82
+ function encodeValues(values, table, generateDefault, runtimeDefaults = {}, resolver) {
83
83
  const result = {};
84
84
  for (const k in table.columns) {
85
85
  const col = table.columns[k];
86
86
  if (col.role === "internal-id") continue;
87
87
  let value = values[k];
88
- if (generateDefault && value === void 0) value = generateRuntimeDefault(col);
88
+ if (generateDefault && value === void 0) value = generateRuntimeDefault(col, runtimeDefaults);
89
89
  if (value !== void 0) {
90
+ const physicalColumnName = resolver ? resolver.getColumnName(table.name, col.name) : col.name;
90
91
  if (col.role === "reference") {
91
92
  let needsSubquery = false;
92
93
  let externalIdForSubquery;
@@ -97,28 +98,47 @@ function encodeValues(values, table, generateDefault) {
97
98
  needsSubquery = true;
98
99
  externalIdForSubquery = value.externalId;
99
100
  } else if (value instanceof FragnoId && value.internalId !== void 0) {
100
- result[col.name] = value.internalId;
101
+ result[physicalColumnName] = value.internalId;
101
102
  continue;
102
103
  } else if (value instanceof FragnoReference) {
103
- result[col.name] = value.internalId;
104
+ result[physicalColumnName] = value.internalId;
104
105
  continue;
105
106
  }
106
107
  if (needsSubquery) {
107
108
  const relation = Object.values(table.relations).find((rel) => rel.on.some(([localCol]) => localCol === k));
108
109
  if (relation) {
109
- result[col.name] = new ReferenceSubquery(relation.table, externalIdForSubquery);
110
+ result[physicalColumnName] = new ReferenceSubquery(relation.table, externalIdForSubquery);
110
111
  continue;
111
112
  }
112
113
  throw new Error(`Reference column ${k} not found in table ${table.name}`);
113
114
  }
114
115
  }
115
- const resolvedValue = resolveFragnoIdValue(value, col);
116
- result[col.name] = resolvedValue;
116
+ result[physicalColumnName] = resolveFragnoIdValue(value, col);
117
117
  }
118
118
  }
119
119
  return result;
120
120
  }
121
+ /**
122
+ * Encode values and apply database defaults in-process.
123
+ *
124
+ * This is intended for adapters that cannot rely on database DEFAULT constraints,
125
+ * such as the in-memory adapter.
126
+ *
127
+ * @internal
128
+ */
129
+ function encodeValuesWithDbDefaults(values, table, runtimeDefaults = {}, resolver) {
130
+ const resolved = encodeValues(values, table, true, runtimeDefaults, resolver);
131
+ for (const columnKey of Object.keys(table.columns)) {
132
+ const column = table.columns[columnKey];
133
+ if (column.role === "internal-id") continue;
134
+ const physicalColumnName = resolver ? resolver.getColumnName(table.name, column.name) : column.name;
135
+ if (Object.prototype.hasOwnProperty.call(resolved, physicalColumnName)) continue;
136
+ const fallback = generateDatabaseDefault(column, runtimeDefaults);
137
+ if (fallback !== void 0) resolved[physicalColumnName] = fallback;
138
+ }
139
+ return resolved;
140
+ }
121
141
 
122
142
  //#endregion
123
- export { ReferenceSubquery, encodeValues, resolveFragnoIdValue };
143
+ export { ReferenceSubquery, encodeValues, encodeValuesWithDbDefaults, resolveFragnoIdValue };
124
144
  //# sourceMappingURL=value-encoding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"value-encoding.js","names":["#referencedTable","#externalIdValue","result: Record<string, unknown>","externalIdForSubquery: string | undefined"],"sources":["../../src/query/value-encoding.ts"],"sourcesContent":["import type { AnyTable, AnyColumn } from \"../schema/create\";\nimport { FragnoId, FragnoReference } from \"../schema/create\";\nimport { generateRuntimeDefault } from \"./column-defaults\";\n\n/**\n * Marker class for reference column values that need subquery resolution.\n * When a reference column receives a string (external ID), this marker tells\n * the query builder to generate a subquery to look up the internal ID.\n * @internal\n */\nexport class ReferenceSubquery {\n #referencedTable: AnyTable;\n #externalIdValue: string;\n\n constructor(referencedTable: AnyTable, externalIdValue: string) {\n this.#referencedTable = referencedTable;\n this.#externalIdValue = externalIdValue;\n }\n\n get referencedTable() {\n return this.#referencedTable;\n }\n\n get externalIdValue() {\n return this.#externalIdValue;\n }\n}\n\n/**\n * Resolves FragnoId or FragnoReference objects to their appropriate primitive values.\n *\n * This function handles the Fragno ID system's conversion to database values:\n * - FragnoReference objects are resolved to their internal IDs\n * - FragnoId objects are resolved based on the column role:\n * - external-id: uses the external ID\n * - internal-id: uses the internal ID (must be present)\n * - reference: uses databaseId (internal ID if available, else external ID)\n * - other: uses the external ID by default\n *\n * @param value - The value to resolve (may be FragnoId, FragnoReference, or any other value)\n * @param col - The column schema definition\n * @returns The resolved primitive value, or the original value if not a FragnoId/FragnoReference\n * @throws Error if internal ID is required but not available\n * @internal\n */\nexport function resolveFragnoIdValue(value: unknown, col: AnyColumn): unknown {\n // Handle FragnoReference objects (for reference columns)\n if (value instanceof FragnoReference) {\n return value.internalId;\n }\n\n // Handle FragnoId objects\n if (value instanceof FragnoId) {\n // For external ID columns, use the external ID\n if (col.role === \"external-id\") {\n return value.externalId;\n }\n // For internal ID columns, use the internal ID (must be present)\n if (col.role === \"internal-id\") {\n if (value.internalId === undefined) {\n throw new Error(`FragnoId must have internalId for internal-id column ${col.name}`);\n }\n return value.internalId;\n }\n // For reference columns, prefer internal ID if available, else external ID\n if (col.role === \"reference\") {\n return value.databaseId;\n }\n // Default to external ID for other columns\n return value.externalId;\n }\n\n return value;\n}\n\n/**\n * Encodes a record of values from the application format to resolved format.\n *\n * This function:\n * - Transforms object keys from ORM names to database column names\n * - Resolves FragnoId/FragnoReference objects to primitive values\n * - Generates default values for undefined columns\n * - Creates ReferenceSubquery markers for external ID lookups\n *\n * Note: This function does NOT serialize values (Date → number, bigint → Buffer, etc.).\n * Use UnitOfWorkEncoder.encode() to apply driver-specific serialization after this step.\n *\n * @param values - The record of values to encode in application format\n * @param table - The table schema definition containing column information\n * @param generateDefault - Whether to generate default values for undefined columns\n * @returns A record with database column names and resolved (but not serialized) values\n *\n * @example\n * ```ts\n * const encoded = encodeValues(\n * { userId: 123, createdAt: new Date() },\n * userTable,\n * true\n * );\n * // Returns: { user_id: 123, created_at: Date } (not yet serialized)\n * ```\n */\nexport function encodeValues(\n values: Record<string, unknown>,\n table: AnyTable,\n generateDefault: boolean,\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const k in table.columns) {\n const col = table.columns[k];\n\n // Skip internal ID - never provided by user, auto-generated by database\n if (col.role === \"internal-id\") {\n continue;\n }\n let value = values[k];\n\n if (generateDefault && value === undefined) {\n // Only generate runtime defaults (defaultTo$), not static defaults (defaultTo).\n // Static defaults should be handled by the database via DEFAULT constraints.\n value = generateRuntimeDefault(col);\n }\n\n if (value !== undefined) {\n // Handle reference columns: strings or FragnoIds without internal IDs need subqueries\n if (col.role === \"reference\") {\n let needsSubquery = false;\n let externalIdForSubquery: string | undefined;\n\n if (typeof value === \"string\") {\n // String external ID - needs subquery\n needsSubquery = true;\n externalIdForSubquery = value;\n } else if (value instanceof FragnoId && value.internalId === undefined) {\n // FragnoId without internal ID - needs subquery\n needsSubquery = true;\n externalIdForSubquery = value.externalId;\n } else if (value instanceof FragnoId && value.internalId !== undefined) {\n // FragnoId with internal ID - use it directly (will be serialized later)\n result[col.name] = value.internalId;\n continue;\n } else if (value instanceof FragnoReference) {\n // FragnoReference - use internal ID directly (will be serialized later)\n result[col.name] = value.internalId;\n continue;\n }\n\n if (needsSubquery) {\n const relation = Object.values(table.relations).find((rel) =>\n rel.on.some(([localCol]) => localCol === k),\n );\n if (relation) {\n result[col.name] = new ReferenceSubquery(relation.table, externalIdForSubquery!);\n continue;\n }\n throw new Error(`Reference column ${k} not found in table ${table.name}`);\n }\n }\n\n // Resolve FragnoId/FragnoReference to primitive values (serialization happens later)\n const resolvedValue = resolveFragnoIdValue(value, col);\n result[col.name] = resolvedValue;\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;AAUA,IAAa,oBAAb,MAA+B;CAC7B;CACA;CAEA,YAAY,iBAA2B,iBAAyB;AAC9D,QAAKA,kBAAmB;AACxB,QAAKC,kBAAmB;;CAG1B,IAAI,kBAAkB;AACpB,SAAO,MAAKD;;CAGd,IAAI,kBAAkB;AACpB,SAAO,MAAKC;;;;;;;;;;;;;;;;;;;;AAqBhB,SAAgB,qBAAqB,OAAgB,KAAyB;AAE5E,KAAI,iBAAiB,gBACnB,QAAO,MAAM;AAIf,KAAI,iBAAiB,UAAU;AAE7B,MAAI,IAAI,SAAS,cACf,QAAO,MAAM;AAGf,MAAI,IAAI,SAAS,eAAe;AAC9B,OAAI,MAAM,eAAe,OACvB,OAAM,IAAI,MAAM,wDAAwD,IAAI,OAAO;AAErF,UAAO,MAAM;;AAGf,MAAI,IAAI,SAAS,YACf,QAAO,MAAM;AAGf,SAAO,MAAM;;AAGf,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,SAAgB,aACd,QACA,OACA,iBACyB;CACzB,MAAMC,SAAkC,EAAE;AAE1C,MAAK,MAAM,KAAK,MAAM,SAAS;EAC7B,MAAM,MAAM,MAAM,QAAQ;AAG1B,MAAI,IAAI,SAAS,cACf;EAEF,IAAI,QAAQ,OAAO;AAEnB,MAAI,mBAAmB,UAAU,OAG/B,SAAQ,uBAAuB,IAAI;AAGrC,MAAI,UAAU,QAAW;AAEvB,OAAI,IAAI,SAAS,aAAa;IAC5B,IAAI,gBAAgB;IACpB,IAAIC;AAEJ,QAAI,OAAO,UAAU,UAAU;AAE7B,qBAAgB;AAChB,6BAAwB;eACf,iBAAiB,YAAY,MAAM,eAAe,QAAW;AAEtE,qBAAgB;AAChB,6BAAwB,MAAM;eACrB,iBAAiB,YAAY,MAAM,eAAe,QAAW;AAEtE,YAAO,IAAI,QAAQ,MAAM;AACzB;eACS,iBAAiB,iBAAiB;AAE3C,YAAO,IAAI,QAAQ,MAAM;AACzB;;AAGF,QAAI,eAAe;KACjB,MAAM,WAAW,OAAO,OAAO,MAAM,UAAU,CAAC,MAAM,QACpD,IAAI,GAAG,MAAM,CAAC,cAAc,aAAa,EAAE,CAC5C;AACD,SAAI,UAAU;AACZ,aAAO,IAAI,QAAQ,IAAI,kBAAkB,SAAS,OAAO,sBAAuB;AAChF;;AAEF,WAAM,IAAI,MAAM,oBAAoB,EAAE,sBAAsB,MAAM,OAAO;;;GAK7E,MAAM,gBAAgB,qBAAqB,OAAO,IAAI;AACtD,UAAO,IAAI,QAAQ;;;AAIvB,QAAO"}
1
+ {"version":3,"file":"value-encoding.js","names":["#referencedTable","#externalIdValue","result: Record<string, unknown>","externalIdForSubquery: string | undefined"],"sources":["../../src/query/value-encoding.ts"],"sourcesContent":["import type { AnyTable, AnyColumn } from \"../schema/create\";\nimport { FragnoId, FragnoReference } from \"../schema/create\";\nimport {\n generateDatabaseDefault,\n generateRuntimeDefault,\n type RuntimeDefaultContext,\n} from \"./column-defaults\";\nimport type { NamingResolver } from \"../naming/sql-naming\";\n\n/**\n * Marker class for reference column values that need subquery resolution.\n * When a reference column receives a string (external ID), this marker tells\n * the query builder to generate a subquery to look up the internal ID.\n * @internal\n */\nexport class ReferenceSubquery {\n #referencedTable: AnyTable;\n #externalIdValue: string;\n\n constructor(referencedTable: AnyTable, externalIdValue: string) {\n this.#referencedTable = referencedTable;\n this.#externalIdValue = externalIdValue;\n }\n\n get referencedTable() {\n return this.#referencedTable;\n }\n\n get externalIdValue() {\n return this.#externalIdValue;\n }\n}\n\n/**\n * Resolves FragnoId or FragnoReference objects to their appropriate primitive values.\n *\n * This function handles the Fragno ID system's conversion to database values:\n * - FragnoReference objects are resolved to their internal IDs\n * - FragnoId objects are resolved based on the column role:\n * - external-id: uses the external ID\n * - internal-id: uses the internal ID (must be present)\n * - reference: uses databaseId (internal ID if available, else external ID)\n * - other: uses the external ID by default\n *\n * @param value - The value to resolve (may be FragnoId, FragnoReference, or any other value)\n * @param col - The column schema definition\n * @returns The resolved primitive value, or the original value if not a FragnoId/FragnoReference\n * @throws Error if internal ID is required but not available\n * @internal\n */\nexport function resolveFragnoIdValue(value: unknown, col: AnyColumn): unknown {\n // Handle FragnoReference objects (for reference columns)\n if (value instanceof FragnoReference) {\n return value.internalId;\n }\n\n // Handle FragnoId objects\n if (value instanceof FragnoId) {\n // For external ID columns, use the external ID\n if (col.role === \"external-id\") {\n return value.externalId;\n }\n // For internal ID columns, use the internal ID (must be present)\n if (col.role === \"internal-id\") {\n if (value.internalId === undefined) {\n throw new Error(`FragnoId must have internalId for internal-id column ${col.name}`);\n }\n return value.internalId;\n }\n // For reference columns, prefer internal ID if available, else external ID\n if (col.role === \"reference\") {\n return value.databaseId;\n }\n // Default to external ID for other columns\n return value.externalId;\n }\n\n return value;\n}\n\n/**\n * Encodes a record of values from the application format to resolved format.\n *\n * This function:\n * - Transforms object keys from ORM names to database column names\n * - Resolves FragnoId/FragnoReference objects to primitive values\n * - Generates default values for undefined columns\n * - Creates ReferenceSubquery markers for external ID lookups\n *\n * Note: This function does NOT serialize values (Date → number, bigint → Buffer, etc.).\n * Use UnitOfWorkEncoder.encode() to apply driver-specific serialization after this step.\n *\n * @param values - The record of values to encode in application format\n * @param table - The table schema definition containing column information\n * @param generateDefault - Whether to generate default values for undefined columns\n * @returns A record with database column names and resolved (but not serialized) values\n *\n * @example\n * ```ts\n * const encoded = encodeValues(\n * { userId: 123, createdAt: new Date() },\n * userTable,\n * true\n * );\n * // Returns: { user_id: 123, created_at: Date } (not yet serialized)\n * ```\n */\nexport function encodeValues(\n values: Record<string, unknown>,\n table: AnyTable,\n generateDefault: boolean,\n runtimeDefaults: RuntimeDefaultContext = {},\n resolver?: NamingResolver,\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const k in table.columns) {\n const col = table.columns[k];\n\n // Skip internal ID - never provided by user, auto-generated by database\n if (col.role === \"internal-id\") {\n continue;\n }\n let value = values[k];\n\n if (generateDefault && value === undefined) {\n // Only generate runtime defaults (defaultTo$), not static defaults (defaultTo).\n // Static defaults should be handled by the database via DEFAULT constraints.\n value = generateRuntimeDefault(col, runtimeDefaults);\n }\n\n if (value !== undefined) {\n const physicalColumnName = resolver ? resolver.getColumnName(table.name, col.name) : col.name;\n\n // Handle reference columns: strings or FragnoIds without internal IDs need subqueries\n if (col.role === \"reference\") {\n let needsSubquery = false;\n let externalIdForSubquery: string | undefined;\n\n if (typeof value === \"string\") {\n // String external ID - needs subquery\n needsSubquery = true;\n externalIdForSubquery = value;\n } else if (value instanceof FragnoId && value.internalId === undefined) {\n // FragnoId without internal ID - needs subquery\n needsSubquery = true;\n externalIdForSubquery = value.externalId;\n } else if (value instanceof FragnoId && value.internalId !== undefined) {\n // FragnoId with internal ID - use it directly (will be serialized later)\n result[physicalColumnName] = value.internalId;\n continue;\n } else if (value instanceof FragnoReference) {\n // FragnoReference - use internal ID directly (will be serialized later)\n result[physicalColumnName] = value.internalId;\n continue;\n }\n\n if (needsSubquery) {\n const relation = Object.values(table.relations).find((rel) =>\n rel.on.some(([localCol]) => localCol === k),\n );\n if (relation) {\n result[physicalColumnName] = new ReferenceSubquery(\n relation.table,\n externalIdForSubquery!,\n );\n continue;\n }\n throw new Error(`Reference column ${k} not found in table ${table.name}`);\n }\n }\n\n // Resolve FragnoId/FragnoReference to primitive values (serialization happens later)\n const resolvedValue = resolveFragnoIdValue(value, col);\n result[physicalColumnName] = resolvedValue;\n }\n }\n\n return result;\n}\n\n/**\n * Encode values and apply database defaults in-process.\n *\n * This is intended for adapters that cannot rely on database DEFAULT constraints,\n * such as the in-memory adapter.\n *\n * @internal\n */\nexport function encodeValuesWithDbDefaults(\n values: Record<string, unknown>,\n table: AnyTable,\n runtimeDefaults: RuntimeDefaultContext = {},\n resolver?: NamingResolver,\n): Record<string, unknown> {\n const resolved = encodeValues(values, table, true, runtimeDefaults, resolver);\n\n for (const columnKey of Object.keys(table.columns)) {\n const column = table.columns[columnKey];\n if (column.role === \"internal-id\") {\n continue;\n }\n\n const physicalColumnName = resolver\n ? resolver.getColumnName(table.name, column.name)\n : column.name;\n if (Object.prototype.hasOwnProperty.call(resolved, physicalColumnName)) {\n continue;\n }\n\n const fallback = generateDatabaseDefault(column, runtimeDefaults);\n if (fallback !== undefined) {\n resolved[physicalColumnName] = fallback;\n }\n }\n\n return resolved;\n}\n"],"mappings":";;;;;;;;;;AAeA,IAAa,oBAAb,MAA+B;CAC7B;CACA;CAEA,YAAY,iBAA2B,iBAAyB;AAC9D,QAAKA,kBAAmB;AACxB,QAAKC,kBAAmB;;CAG1B,IAAI,kBAAkB;AACpB,SAAO,MAAKD;;CAGd,IAAI,kBAAkB;AACpB,SAAO,MAAKC;;;;;;;;;;;;;;;;;;;;AAqBhB,SAAgB,qBAAqB,OAAgB,KAAyB;AAE5E,KAAI,iBAAiB,gBACnB,QAAO,MAAM;AAIf,KAAI,iBAAiB,UAAU;AAE7B,MAAI,IAAI,SAAS,cACf,QAAO,MAAM;AAGf,MAAI,IAAI,SAAS,eAAe;AAC9B,OAAI,MAAM,eAAe,OACvB,OAAM,IAAI,MAAM,wDAAwD,IAAI,OAAO;AAErF,UAAO,MAAM;;AAGf,MAAI,IAAI,SAAS,YACf,QAAO,MAAM;AAGf,SAAO,MAAM;;AAGf,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,SAAgB,aACd,QACA,OACA,iBACA,kBAAyC,EAAE,EAC3C,UACyB;CACzB,MAAMC,SAAkC,EAAE;AAE1C,MAAK,MAAM,KAAK,MAAM,SAAS;EAC7B,MAAM,MAAM,MAAM,QAAQ;AAG1B,MAAI,IAAI,SAAS,cACf;EAEF,IAAI,QAAQ,OAAO;AAEnB,MAAI,mBAAmB,UAAU,OAG/B,SAAQ,uBAAuB,KAAK,gBAAgB;AAGtD,MAAI,UAAU,QAAW;GACvB,MAAM,qBAAqB,WAAW,SAAS,cAAc,MAAM,MAAM,IAAI,KAAK,GAAG,IAAI;AAGzF,OAAI,IAAI,SAAS,aAAa;IAC5B,IAAI,gBAAgB;IACpB,IAAIC;AAEJ,QAAI,OAAO,UAAU,UAAU;AAE7B,qBAAgB;AAChB,6BAAwB;eACf,iBAAiB,YAAY,MAAM,eAAe,QAAW;AAEtE,qBAAgB;AAChB,6BAAwB,MAAM;eACrB,iBAAiB,YAAY,MAAM,eAAe,QAAW;AAEtE,YAAO,sBAAsB,MAAM;AACnC;eACS,iBAAiB,iBAAiB;AAE3C,YAAO,sBAAsB,MAAM;AACnC;;AAGF,QAAI,eAAe;KACjB,MAAM,WAAW,OAAO,OAAO,MAAM,UAAU,CAAC,MAAM,QACpD,IAAI,GAAG,MAAM,CAAC,cAAc,aAAa,EAAE,CAC5C;AACD,SAAI,UAAU;AACZ,aAAO,sBAAsB,IAAI,kBAC/B,SAAS,OACT,sBACD;AACD;;AAEF,WAAM,IAAI,MAAM,oBAAoB,EAAE,sBAAsB,MAAM,OAAO;;;AAM7E,UAAO,sBADe,qBAAqB,OAAO,IAAI;;;AAK1D,QAAO;;;;;;;;;;AAWT,SAAgB,2BACd,QACA,OACA,kBAAyC,EAAE,EAC3C,UACyB;CACzB,MAAM,WAAW,aAAa,QAAQ,OAAO,MAAM,iBAAiB,SAAS;AAE7E,MAAK,MAAM,aAAa,OAAO,KAAK,MAAM,QAAQ,EAAE;EAClD,MAAM,SAAS,MAAM,QAAQ;AAC7B,MAAI,OAAO,SAAS,cAClB;EAGF,MAAM,qBAAqB,WACvB,SAAS,cAAc,MAAM,MAAM,OAAO,KAAK,GAC/C,OAAO;AACX,MAAI,OAAO,UAAU,eAAe,KAAK,UAAU,mBAAmB,CACpE;EAGF,MAAM,WAAW,wBAAwB,QAAQ,gBAAgB;AACjE,MAAI,aAAa,OACf,UAAS,sBAAsB;;AAInC,QAAO"}
@@ -1,4 +1,8 @@
1
+ import { DbNow } from "../query/db-now.js";
2
+ import { Prettify } from "../util/types.js";
1
3
  import { generateId } from "./generate-id.js";
4
+ import { FragnoDbValidationError } from "./validator.js";
5
+ import { StandardSchemaV1 } from "@standard-schema/spec";
2
6
 
3
7
  //#region src/schema/create.d.ts
4
8
  type AnySchema = Schema<Record<string, AnyTable>>;
@@ -74,7 +78,7 @@ interface Index<TColumns extends AnyColumn[] = AnyColumn[], TColumnNames extends
74
78
  unique: boolean;
75
79
  }
76
80
  declare class ExplicitRelationInit<TRelationType extends RelationType, TTables extends Record<string, AnyTable>, TTableName extends keyof TTables> extends RelationInit<TRelationType, TTables, TTableName> {
77
- init(ormName: string): Relation<TRelationType, TTables[TTableName]>;
81
+ init(name: string): Relation<TRelationType, TTables[TTableName]>;
78
82
  }
79
83
  interface Relation<TRelationType extends RelationType = RelationType, TTable extends AnyTable = AnyTable> {
80
84
  id: string;
@@ -84,12 +88,28 @@ interface Relation<TRelationType extends RelationType = RelationType, TTable ext
84
88
  referencer: AnyTable;
85
89
  on: [string, string][];
86
90
  }
91
+ type PickNullable<T> = { [P in keyof T as null extends T[P] ? P : never]: T[P] };
92
+ type PickNotNullable<T> = { [P in keyof T as null extends T[P] ? never : P]: T[P] };
93
+ type RawInsertValuesFromColumns<TColumns extends Record<string, AnyColumn>> = { [K in keyof TColumns as string extends K ? never : K]: TColumns[K]["$in"] };
94
+ type TableInsertValuesFromColumns<TColumns extends Record<string, AnyColumn>> = Prettify<Partial<PickNullable<RawInsertValuesFromColumns<TColumns>>> & PickNotNullable<RawInsertValuesFromColumns<TColumns>>>;
95
+ type TableInsertValues<T extends AnyTable> = TableInsertValuesFromColumns<T["columns"]>;
96
+ type TableUnknownKeysMode = "strip" | "strict";
97
+ type TableValidationOptions = {
98
+ unknownKeys?: TableUnknownKeysMode;
99
+ };
87
100
  interface Table<TColumns extends Record<string, AnyColumn> = Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation> = Record<string, AnyRelation>, TIndexes extends Record<string, Index> = Record<string, Index>> {
101
+ /**
102
+ * Standard Schema-compatible validator for insert values.
103
+ */
104
+ "~standard": StandardSchemaV1.Props<TableInsertValuesFromColumns<TColumns>, TableInsertValuesFromColumns<TColumns>>;
88
105
  name: string;
89
- ormName: string;
90
106
  columns: TColumns;
91
107
  relations: TRelations;
92
108
  indexes: TIndexes;
109
+ /**
110
+ * Validate insert values at runtime.
111
+ */
112
+ validate: (value: unknown, options?: TableValidationOptions) => TableInsertValuesFromColumns<TColumns>;
93
113
  /**
94
114
  * Get column by name
95
115
  */
@@ -149,7 +169,6 @@ type TypeMap = {
149
169
  declare class Column<TType extends keyof TypeMap, TIn = unknown, TOut = unknown> {
150
170
  type: TType;
151
171
  name: string;
152
- ormName: string;
153
172
  isNullable: boolean;
154
173
  role: "external-id" | "internal-id" | "version" | "reference" | "regular";
155
174
  isHidden: boolean;
@@ -248,7 +267,8 @@ declare class VersionColumn<TIn = unknown, TOut = unknown> extends Column<"integ
248
267
  role: "version";
249
268
  constructor();
250
269
  }
251
- declare function column<TType extends keyof TypeMap>(type: TType): Column<TType, TypeMap[TType], TypeMap[TType]>;
270
+ type ColumnInput<TType extends keyof TypeMap> = TypeMap[TType] | (TType extends "timestamp" | "date" ? DbNow : never);
271
+ declare function column<TType extends keyof TypeMap>(type: TType): Column<TType, ColumnInput<TType>, TypeMap[TType]>;
252
272
  /**
253
273
  * Create a reference column that points to another table's internal ID.
254
274
  * This is used for foreign key relationships.
@@ -342,11 +362,11 @@ declare class TableBuilder<TColumns extends Record<string, AnyColumn> = Record<s
342
362
  /**
343
363
  * Add a column to the table.
344
364
  */
345
- addColumn<TColumnName extends string, TColumn extends AnyColumn>(ormName: TColumnName, col: TColumn): TableBuilder<TColumns & Record<TColumnName, TColumn>, TRelations, TIndexes>;
365
+ addColumn<TColumnName extends string, TColumn extends AnyColumn>(name: TColumnName, col: TColumn): TableBuilder<TColumns & Record<TColumnName, TColumn>, TRelations, TIndexes>;
346
366
  /**
347
367
  * Add a column to the table with simplified syntax.
348
368
  */
349
- addColumn<TColumnName extends string, TType extends keyof TypeMap>(ormName: TColumnName, type: TType): TableBuilder<TColumns & Record<TColumnName, Column<TType, TypeMap[TType], TypeMap[TType]>>, TRelations, TIndexes>;
369
+ addColumn<TColumnName extends string, TType extends keyof TypeMap>(name: TColumnName, type: TType): TableBuilder<TColumns & Record<TColumnName, Column<TType, ColumnInput<TType>, TypeMap[TType]>>, TRelations, TIndexes>;
350
370
  /**
351
371
  * Create an index on the specified columns.
352
372
  */
@@ -359,6 +379,10 @@ declare class TableBuilder<TColumns extends Record<string, AnyColumn> = Record<s
359
379
  build(): Table<TColumns, TRelations, TIndexes>;
360
380
  }
361
381
  interface Schema<TTables extends Record<string, AnyTable> = Record<string, AnyTable>> {
382
+ /**
383
+ * @description The name of the schema (required).
384
+ */
385
+ name: string;
362
386
  /**
363
387
  * @description The version of the schema, automatically incremented on each change.
364
388
  */
@@ -387,14 +411,14 @@ type UpdateTable<TTables extends Record<string, AnyTable>, TTableName extends ke
387
411
  type ColumnsToTuple<TColumns extends Record<string, AnyColumn>, TColumnNames extends readonly (keyof TColumns)[]> = { [K in keyof TColumnNames]: TColumnNames[K] extends keyof TColumns ? TColumns[TColumnNames[K]] : never } & AnyColumn[];
388
412
  declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
389
413
  #private;
390
- constructor(existingSchema?: Schema<TTables>);
414
+ constructor(name: string, existingSchema?: Schema<TTables>);
391
415
  /**
392
416
  * Add an existing schema to this builder.
393
417
  * Merges tables and operations from the provided schema.
394
418
  *
395
419
  * @example
396
420
  * ```ts
397
- * const builder = new SchemaBuilder()
421
+ * const builder = new SchemaBuilder("combined")
398
422
  * .add(userSchema)
399
423
  * .add(postSchema)
400
424
  * .addTable("comments", ...);
@@ -404,7 +428,7 @@ declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
404
428
  /**
405
429
  * Add a table to the schema. Increments the version counter.
406
430
  */
407
- addTable<TTableName extends string, TColumns extends Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation>, TIndexes extends Record<string, Index> = Record<string, Index>>(ormName: TTableName, callback: (builder: TableBuilder<Record<string, AnyColumn>, Record<string, AnyRelation>, Record<string, Index>>) => TableBuilder<TColumns, TRelations, TIndexes>): SchemaBuilder<TTables & Record<TTableName, Table<TColumns, TRelations, TIndexes>>>;
431
+ addTable<TTableName extends string, TColumns extends Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation>, TIndexes extends Record<string, Index> = Record<string, Index>>(name: TTableName, callback: (builder: TableBuilder<Record<string, AnyColumn>, Record<string, AnyRelation>, Record<string, Index>>) => TableBuilder<TColumns, TRelations, TIndexes>): SchemaBuilder<TTables & Record<TTableName, Table<TColumns, TRelations, TIndexes>>>;
408
432
  /**
409
433
  * Add a relation between two tables.
410
434
  *
@@ -414,7 +438,7 @@ declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
414
438
  * @example
415
439
  * ```ts
416
440
  * // One-to-one or many-to-one: post -> user
417
- * schema(s => s
441
+ * schema("blog", s => s
418
442
  * .addTable("users", t => t.addColumn("id", idColumn()))
419
443
  * .addTable("posts", t => t
420
444
  * .addColumn("id", idColumn())
@@ -462,7 +486,7 @@ declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
462
486
  * @example
463
487
  * ```ts
464
488
  * // Add a new column to an existing table
465
- * schema(s => s
489
+ * schema("blog", s => s
466
490
  * .addTable("users", t => t
467
491
  * .addColumn("id", idColumn())
468
492
  * .addColumn("name", column("string")))
@@ -486,8 +510,8 @@ declare class SchemaBuilder<TTables extends Record<string, AnyTable> = {}> {
486
510
  /**
487
511
  * Create a new schema with callback pattern.
488
512
  */
489
- declare function schema<const TTables extends Record<string, AnyTable> = {}>(callback: (builder: SchemaBuilder<{}>) => SchemaBuilder<TTables>): Schema<TTables>;
490
- declare function compileForeignKey(key: ForeignKey, nameType?: "sql" | "orm"): {
513
+ declare function schema<const TTables extends Record<string, AnyTable> = {}>(name: string, callback: (builder: SchemaBuilder<{}>) => SchemaBuilder<TTables>): Schema<TTables>;
514
+ declare function compileForeignKey(key: ForeignKey): {
491
515
  name: string;
492
516
  table: string;
493
517
  referencedTable: string;
@@ -495,5 +519,5 @@ declare function compileForeignKey(key: ForeignKey, nameType?: "sql" | "orm"): {
495
519
  columns: string[];
496
520
  };
497
521
  //#endregion
498
- export { AnyColumn, AnyRelation, AnySchema, AnyTable, Column, DefaultBuilder, ExplicitRelationInit, ForeignKey, FragnoId, FragnoReference, IdColumn, Index, InternalIdColumn, Relation, RuntimeDefaultBuilder, Schema, SchemaBuilder, SchemaOperation, Table, TableBuilder, TableSubOperation, TypeMap, VersionColumn, column, compileForeignKey, generateId, idColumn, internalIdColumn, referenceColumn, schema, versionColumn };
522
+ export { AnyColumn, AnyRelation, AnySchema, AnyTable, Column, DefaultBuilder, ExplicitRelationInit, ForeignKey, FragnoDbValidationError, FragnoId, FragnoReference, IdColumn, Index, InternalIdColumn, Relation, RuntimeDefaultBuilder, Schema, SchemaBuilder, SchemaOperation, Table, TableBuilder, TableInsertValues, TableSubOperation, TableUnknownKeysMode, TableValidationOptions, TypeMap, VersionColumn, column, compileForeignKey, generateId, idColumn, internalIdColumn, referenceColumn, schema, versionColumn };
499
523
  //# sourceMappingURL=create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","names":[],"sources":["../../src/schema/create.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"create.d.ts","names":[],"sources":["../../src/schema/create.ts"],"sourcesContent":[],"mappings":"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"}