@fragno-dev/db 0.2.2 → 0.4.1

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 (587) hide show
  1. package/.turbo/turbo-build.log +404 -175
  2. package/CHANGELOG.md +109 -0
  3. package/README.md +54 -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 +24 -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 +60 -22
  14. package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -1
  15. package/dist/adapters/generic-sql/generic-sql-uow-executor.js +169 -3
  16. package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -1
  17. package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -1
  18. package/dist/adapters/generic-sql/migration/dialect/mysql.js +25 -6
  19. package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -1
  20. package/dist/adapters/generic-sql/migration/dialect/postgres.js +7 -6
  21. package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -1
  22. package/dist/adapters/generic-sql/migration/dialect/sqlite.js +193 -16
  23. package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -1
  24. package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -1
  25. package/dist/adapters/generic-sql/migration/executor.js +30 -3
  26. package/dist/adapters/generic-sql/migration/executor.js.map +1 -1
  27. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -1
  28. package/dist/adapters/generic-sql/migration/prepared-migrations.js +9 -9
  29. package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -1
  30. package/dist/adapters/generic-sql/migration/sql-generator.js +75 -52
  31. package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -1
  32. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +7 -6
  33. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -1
  34. package/dist/adapters/generic-sql/query/cursor-utils.js +42 -4
  35. package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -1
  36. package/dist/adapters/generic-sql/query/db-now-sql.js +27 -0
  37. package/dist/adapters/generic-sql/query/db-now-sql.js.map +1 -0
  38. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +32 -21
  39. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -1
  40. package/dist/adapters/generic-sql/query/select-builder.js +5 -3
  41. package/dist/adapters/generic-sql/query/select-builder.js.map +1 -1
  42. package/dist/adapters/generic-sql/query/sql-query-compiler.js +49 -18
  43. package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -1
  44. package/dist/adapters/generic-sql/query/where-builder.js +43 -29
  45. package/dist/adapters/generic-sql/query/where-builder.js.map +1 -1
  46. package/dist/adapters/generic-sql/sqlite-storage.d.ts +13 -0
  47. package/dist/adapters/generic-sql/sqlite-storage.d.ts.map +1 -0
  48. package/dist/adapters/generic-sql/sqlite-storage.js +15 -0
  49. package/dist/adapters/generic-sql/sqlite-storage.js.map +1 -0
  50. package/dist/adapters/generic-sql/uow-decoder.js +6 -2
  51. package/dist/adapters/generic-sql/uow-decoder.js.map +1 -1
  52. package/dist/adapters/generic-sql/uow-encoder.js +27 -8
  53. package/dist/adapters/generic-sql/uow-encoder.js.map +1 -1
  54. package/dist/adapters/in-memory/condition-evaluator.js +135 -0
  55. package/dist/adapters/in-memory/condition-evaluator.js.map +1 -0
  56. package/dist/adapters/in-memory/errors.d.ts +13 -0
  57. package/dist/adapters/in-memory/errors.d.ts.map +1 -0
  58. package/dist/adapters/in-memory/errors.js +23 -0
  59. package/dist/adapters/in-memory/errors.js.map +1 -0
  60. package/dist/adapters/in-memory/in-memory-adapter.d.ts +27 -0
  61. package/dist/adapters/in-memory/in-memory-adapter.d.ts.map +1 -0
  62. package/dist/adapters/in-memory/in-memory-adapter.js +196 -0
  63. package/dist/adapters/in-memory/in-memory-adapter.js.map +1 -0
  64. package/dist/adapters/in-memory/in-memory-uow.js +871 -0
  65. package/dist/adapters/in-memory/in-memory-uow.js.map +1 -0
  66. package/dist/adapters/in-memory/index.d.ts +4 -0
  67. package/dist/adapters/in-memory/index.js +4 -0
  68. package/dist/adapters/in-memory/options.d.ts +30 -0
  69. package/dist/adapters/in-memory/options.d.ts.map +1 -0
  70. package/dist/adapters/in-memory/options.js +62 -0
  71. package/dist/adapters/in-memory/options.js.map +1 -0
  72. package/dist/adapters/in-memory/reference-resolution.js +26 -0
  73. package/dist/adapters/in-memory/reference-resolution.js.map +1 -0
  74. package/dist/adapters/in-memory/sorted-array-index.js +129 -0
  75. package/dist/adapters/in-memory/sorted-array-index.js.map +1 -0
  76. package/dist/adapters/in-memory/store.js +71 -0
  77. package/dist/adapters/in-memory/store.js.map +1 -0
  78. package/dist/adapters/in-memory/value-comparison.js +28 -0
  79. package/dist/adapters/in-memory/value-comparison.js.map +1 -0
  80. package/dist/adapters/shared/from-unit-of-work-compiler.js +51 -24
  81. package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -1
  82. package/dist/adapters/shared/uow-operation-compiler.js +11 -11
  83. package/dist/adapters/shared/uow-operation-compiler.js.map +1 -1
  84. package/dist/adapters/sql/index.d.ts +5 -0
  85. package/dist/adapters/sql/index.js +4 -0
  86. package/dist/browser/adapters/adapters.d.ts +61 -0
  87. package/dist/browser/adapters/adapters.d.ts.map +1 -0
  88. package/dist/browser/adapters/generic-sql/migration/executor.d.ts +15 -0
  89. package/dist/browser/adapters/generic-sql/migration/executor.d.ts.map +1 -0
  90. package/dist/browser/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
  91. package/dist/browser/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
  92. package/dist/browser/adapters/generic-sql/sqlite-storage.d.ts +11 -0
  93. package/dist/browser/adapters/generic-sql/sqlite-storage.d.ts.map +1 -0
  94. package/dist/browser/adapters/in-memory/in-memory-adapter.d.ts +5 -0
  95. package/dist/browser/adapters/in-memory/index.d.ts +2 -0
  96. package/dist/browser/adapters/in-memory/options.d.ts +1 -0
  97. package/dist/browser/db-fragment-definition-builder.d.ts +237 -0
  98. package/dist/browser/db-fragment-definition-builder.d.ts.map +1 -0
  99. package/dist/browser/durable-hooks.d.ts +3 -0
  100. package/dist/browser/fragments/internal-fragment.d.ts +317 -0
  101. package/dist/browser/fragments/internal-fragment.d.ts.map +1 -0
  102. package/dist/browser/fragments/internal-fragment.schema.d.ts +1 -0
  103. package/dist/browser/hooks/durable-hooks-logger.d.ts +10 -0
  104. package/dist/browser/hooks/durable-hooks-logger.d.ts.map +1 -0
  105. package/dist/browser/hooks/hooks.d.ts +146 -0
  106. package/dist/browser/hooks/hooks.d.ts.map +1 -0
  107. package/dist/browser/id.js +1 -0
  108. package/dist/browser/internal/adapter-registry.d.ts +4 -0
  109. package/dist/browser/internal/outbox-state.d.ts +2 -0
  110. package/dist/browser/mod.d.ts +15 -0
  111. package/dist/browser/mod.d.ts.map +1 -0
  112. package/dist/browser/mod.js +17 -0
  113. package/dist/browser/mod.js.map +1 -0
  114. package/dist/browser/mod2.d.ts +48 -0
  115. package/dist/browser/mod2.d.ts.map +1 -0
  116. package/dist/browser/naming/sql-naming.d.ts +19 -0
  117. package/dist/browser/naming/sql-naming.d.ts.map +1 -0
  118. package/dist/browser/outbox/outbox.d.ts +21 -0
  119. package/dist/browser/outbox/outbox.d.ts.map +1 -0
  120. package/dist/browser/query/column-defaults.js +1 -0
  121. package/dist/browser/query/condition-builder.d.ts +44 -0
  122. package/dist/browser/query/condition-builder.d.ts.map +1 -0
  123. package/dist/browser/query/condition-builder.js +97 -0
  124. package/dist/browser/query/condition-builder.js.map +1 -0
  125. package/dist/browser/query/cursor.d.ts +105 -0
  126. package/dist/browser/query/cursor.d.ts.map +1 -0
  127. package/dist/browser/query/cursor.js +150 -0
  128. package/dist/browser/query/cursor.js.map +1 -0
  129. package/dist/browser/query/db-now.d.ts +22 -0
  130. package/dist/browser/query/db-now.d.ts.map +1 -0
  131. package/dist/browser/query/db-now.js +33 -0
  132. package/dist/browser/query/db-now.js.map +1 -0
  133. package/dist/browser/query/orm/orm.d.ts +18 -0
  134. package/dist/browser/query/orm/orm.d.ts.map +1 -0
  135. package/dist/browser/query/simple-query-interface.d.ts +108 -0
  136. package/dist/browser/query/simple-query-interface.d.ts.map +1 -0
  137. package/dist/browser/query/unit-of-work/execute-unit-of-work.d.ts +423 -0
  138. package/dist/browser/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
  139. package/dist/browser/query/unit-of-work/execute-unit-of-work.js +507 -0
  140. package/dist/browser/query/unit-of-work/execute-unit-of-work.js.map +1 -0
  141. package/dist/browser/query/unit-of-work/retry-policy.d.ts +23 -0
  142. package/dist/browser/query/unit-of-work/retry-policy.d.ts.map +1 -0
  143. package/dist/browser/query/unit-of-work/retry-policy.js +40 -0
  144. package/dist/browser/query/unit-of-work/retry-policy.js.map +1 -0
  145. package/dist/browser/query/unit-of-work/unit-of-work.d.ts +703 -0
  146. package/dist/browser/query/unit-of-work/unit-of-work.d.ts.map +1 -0
  147. package/dist/browser/query/unit-of-work/unit-of-work.js +1206 -0
  148. package/dist/browser/query/unit-of-work/unit-of-work.js.map +1 -0
  149. package/dist/browser/query/value-encoding.js +38 -0
  150. package/dist/browser/query/value-encoding.js.map +1 -0
  151. package/dist/browser/schema/create.d.ts +326 -0
  152. package/dist/browser/schema/create.d.ts.map +1 -0
  153. package/dist/browser/schema/create.js +89 -0
  154. package/dist/browser/schema/create.js.map +1 -0
  155. package/dist/browser/schema/generate-id.js +28 -0
  156. package/dist/browser/schema/generate-id.js.map +1 -0
  157. package/dist/browser/shared/providers.d.ts +6 -0
  158. package/dist/browser/shared/providers.d.ts.map +1 -0
  159. package/dist/browser/sql-driver/connection/connection-provider.d.ts +13 -0
  160. package/dist/browser/sql-driver/connection/connection-provider.d.ts.map +1 -0
  161. package/dist/browser/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
  162. package/dist/browser/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
  163. package/dist/browser/sql-driver/driver/runtime-driver.d.ts +23 -0
  164. package/dist/browser/sql-driver/driver/runtime-driver.d.ts.map +1 -0
  165. package/dist/browser/sql-driver/query-executor/plugin.d.ts +17 -0
  166. package/dist/browser/sql-driver/query-executor/plugin.d.ts.map +1 -0
  167. package/dist/browser/sql-driver/query-executor/query-executor.d.ts +36 -0
  168. package/dist/browser/sql-driver/query-executor/query-executor.d.ts.map +1 -0
  169. package/dist/browser/sql-driver/sql-driver-adapter.d.ts +29 -0
  170. package/dist/browser/sql-driver/sql-driver-adapter.d.ts.map +1 -0
  171. package/dist/browser/sql-driver/sql-driver.d.ts +38 -0
  172. package/dist/browser/sql-driver/sql-driver.d.ts.map +1 -0
  173. package/dist/browser/sync/commands.d.ts +15 -0
  174. package/dist/browser/sync/commands.d.ts.map +1 -0
  175. package/dist/browser/sync/commands.js +27 -0
  176. package/dist/browser/sync/commands.js.map +1 -0
  177. package/dist/browser/sync/types.d.ts +63 -0
  178. package/dist/browser/sync/types.d.ts.map +1 -0
  179. package/dist/browser/util/types.d.ts +8 -0
  180. package/dist/browser/util/types.d.ts.map +1 -0
  181. package/dist/browser/with-database.d.ts +29 -0
  182. package/dist/browser/with-database.d.ts.map +1 -0
  183. package/dist/client.d.ts +4 -0
  184. package/dist/client.js +5 -0
  185. package/dist/db-fragment-definition-builder.d.ts +101 -33
  186. package/dist/db-fragment-definition-builder.d.ts.map +1 -1
  187. package/dist/db-fragment-definition-builder.js +450 -60
  188. package/dist/db-fragment-definition-builder.js.map +1 -1
  189. package/dist/dispatchers/cloudflare-do/dispatcher.d.ts +20 -0
  190. package/dist/dispatchers/cloudflare-do/dispatcher.d.ts.map +1 -0
  191. package/dist/dispatchers/cloudflare-do/dispatcher.js +147 -0
  192. package/dist/dispatchers/cloudflare-do/dispatcher.js.map +1 -0
  193. package/dist/dispatchers/cloudflare-do/index.d.ts +11 -0
  194. package/dist/dispatchers/cloudflare-do/index.d.ts.map +1 -0
  195. package/dist/dispatchers/cloudflare-do/index.js +31 -0
  196. package/dist/dispatchers/cloudflare-do/index.js.map +1 -0
  197. package/dist/dispatchers/node/dispatcher.d.ts +14 -0
  198. package/dist/dispatchers/node/dispatcher.d.ts.map +1 -0
  199. package/dist/dispatchers/node/dispatcher.js +80 -0
  200. package/dist/dispatchers/node/dispatcher.js.map +1 -0
  201. package/dist/dispatchers/node/index.d.ts +12 -0
  202. package/dist/dispatchers/node/index.d.ts.map +1 -0
  203. package/dist/dispatchers/node/index.js +27 -0
  204. package/dist/dispatchers/node/index.js.map +1 -0
  205. package/dist/durable-hooks.d.ts +31 -0
  206. package/dist/durable-hooks.d.ts.map +1 -0
  207. package/dist/durable-hooks.js +23 -0
  208. package/dist/durable-hooks.js.map +1 -0
  209. package/dist/fragments/internal-fragment.d.ts +186 -8
  210. package/dist/fragments/internal-fragment.d.ts.map +1 -1
  211. package/dist/fragments/internal-fragment.js +203 -38
  212. package/dist/fragments/internal-fragment.js.map +1 -1
  213. package/dist/fragments/internal-fragment.routes.js +164 -0
  214. package/dist/fragments/internal-fragment.routes.js.map +1 -0
  215. package/dist/fragments/internal-fragment.schema.d.ts +15 -0
  216. package/dist/fragments/internal-fragment.schema.d.ts.map +1 -0
  217. package/dist/fragments/internal-fragment.schema.js +39 -0
  218. package/dist/fragments/internal-fragment.schema.js.map +1 -0
  219. package/dist/hooks/durable-hooks-logger.d.ts +10 -0
  220. package/dist/hooks/durable-hooks-logger.d.ts.map +1 -0
  221. package/dist/hooks/durable-hooks-logger.js +75 -0
  222. package/dist/hooks/durable-hooks-logger.js.map +1 -0
  223. package/dist/hooks/durable-hooks-processor.d.ts +1 -0
  224. package/dist/hooks/durable-hooks-processor.js +80 -0
  225. package/dist/hooks/durable-hooks-processor.js.map +1 -0
  226. package/dist/hooks/durable-hooks-runtime.js +44 -0
  227. package/dist/hooks/durable-hooks-runtime.js.map +1 -0
  228. package/dist/hooks/hooks.d.ts +100 -1
  229. package/dist/hooks/hooks.d.ts.map +1 -1
  230. package/dist/hooks/hooks.js +254 -27
  231. package/dist/hooks/hooks.js.map +1 -1
  232. package/dist/id.d.ts +2 -2
  233. package/dist/id.js +2 -2
  234. package/dist/internal/adapter-registry.d.ts +11 -0
  235. package/dist/internal/adapter-registry.d.ts.map +1 -0
  236. package/dist/internal/adapter-registry.js +135 -0
  237. package/dist/internal/adapter-registry.js.map +1 -0
  238. package/dist/internal/outbox-state.d.ts +2 -0
  239. package/dist/internal/outbox-state.js +26 -0
  240. package/dist/internal/outbox-state.js.map +1 -0
  241. package/dist/migration-engine/auto-from-schema.d.ts +33 -0
  242. package/dist/migration-engine/auto-from-schema.d.ts.map +1 -0
  243. package/dist/migration-engine/auto-from-schema.js +223 -37
  244. package/dist/migration-engine/auto-from-schema.js.map +1 -1
  245. package/dist/migration-engine/generation-engine.d.ts +16 -10
  246. package/dist/migration-engine/generation-engine.d.ts.map +1 -1
  247. package/dist/migration-engine/generation-engine.js +86 -35
  248. package/dist/migration-engine/generation-engine.js.map +1 -1
  249. package/dist/migration-engine/shared.d.ts +113 -0
  250. package/dist/migration-engine/shared.d.ts.map +1 -0
  251. package/dist/migration-engine/shared.js.map +1 -1
  252. package/dist/mod.d.ts +20 -12
  253. package/dist/mod.d.ts.map +1 -1
  254. package/dist/mod.js +18 -12
  255. package/dist/mod.js.map +1 -1
  256. package/dist/naming/sql-naming.d.ts +19 -0
  257. package/dist/naming/sql-naming.d.ts.map +1 -0
  258. package/dist/naming/sql-naming.js +116 -0
  259. package/dist/naming/sql-naming.js.map +1 -0
  260. package/dist/outbox/outbox-builder.js +156 -0
  261. package/dist/outbox/outbox-builder.js.map +1 -0
  262. package/dist/outbox/outbox.d.ts +54 -0
  263. package/dist/outbox/outbox.d.ts.map +1 -0
  264. package/dist/outbox/outbox.js +37 -0
  265. package/dist/outbox/outbox.js.map +1 -0
  266. package/dist/query/column-defaults.js +20 -4
  267. package/dist/query/column-defaults.js.map +1 -1
  268. package/dist/query/condition-builder.d.ts +7 -1
  269. package/dist/query/condition-builder.d.ts.map +1 -1
  270. package/dist/query/condition-builder.js +5 -1
  271. package/dist/query/condition-builder.js.map +1 -1
  272. package/dist/query/cursor-client.d.ts +105 -0
  273. package/dist/query/cursor-client.d.ts.map +1 -0
  274. package/dist/query/cursor-client.js +165 -0
  275. package/dist/query/cursor-client.js.map +1 -0
  276. package/dist/query/cursor.d.ts +3 -1
  277. package/dist/query/cursor.d.ts.map +1 -1
  278. package/dist/query/cursor.js +51 -14
  279. package/dist/query/cursor.js.map +1 -1
  280. package/dist/query/db-now.d.ts +22 -0
  281. package/dist/query/db-now.d.ts.map +1 -0
  282. package/dist/query/db-now.js +35 -0
  283. package/dist/query/db-now.js.map +1 -0
  284. package/dist/query/orm/orm.js.map +1 -1
  285. package/dist/query/serialize/create-sql-serializer.js +5 -4
  286. package/dist/query/serialize/create-sql-serializer.js.map +1 -1
  287. package/dist/query/serialize/dialect/mysql-serializer.js +12 -6
  288. package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -1
  289. package/dist/query/serialize/dialect/postgres-serializer.js +25 -7
  290. package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -1
  291. package/dist/query/serialize/dialect/sqlite-serializer.js +60 -12
  292. package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -1
  293. package/dist/query/serialize/sql-serializer.js +2 -2
  294. package/dist/query/serialize/sql-serializer.js.map +1 -1
  295. package/dist/query/simple-query-interface.d.ts +13 -4
  296. package/dist/query/simple-query-interface.d.ts.map +1 -1
  297. package/dist/query/unit-of-work/execute-unit-of-work.d.ts +37 -2
  298. package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -1
  299. package/dist/query/unit-of-work/execute-unit-of-work.js +50 -24
  300. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -1
  301. package/dist/query/unit-of-work/unit-of-work.d.ts +92 -30
  302. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
  303. package/dist/query/unit-of-work/unit-of-work.js +136 -11
  304. package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
  305. package/dist/query/value-decoding.js +16 -6
  306. package/dist/query/value-decoding.js.map +1 -1
  307. package/dist/query/value-encoding.js +29 -9
  308. package/dist/query/value-encoding.js.map +1 -1
  309. package/dist/schema/create.d.ts +103 -35
  310. package/dist/schema/create.d.ts.map +1 -1
  311. package/dist/schema/create.js +172 -58
  312. package/dist/schema/create.js.map +1 -1
  313. package/dist/schema/generate-id.js +2 -2
  314. package/dist/schema/generate-id.js.map +1 -1
  315. package/dist/schema/type-conversion/create-sql-type-mapper.js +4 -3
  316. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -1
  317. package/dist/schema/type-conversion/dialect/sqlite.js +9 -0
  318. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -1
  319. package/dist/schema/validator.d.ts +10 -0
  320. package/dist/schema/validator.d.ts.map +1 -0
  321. package/dist/schema/validator.js +123 -0
  322. package/dist/schema/validator.js.map +1 -0
  323. package/dist/schema-output/drizzle.d.ts +30 -0
  324. package/dist/schema-output/drizzle.d.ts.map +1 -0
  325. package/dist/{adapters/drizzle/generate.js → schema-output/drizzle.js} +88 -60
  326. package/dist/schema-output/drizzle.js.map +1 -0
  327. package/dist/schema-output/prisma.d.ts +17 -0
  328. package/dist/schema-output/prisma.d.ts.map +1 -0
  329. package/dist/schema-output/prisma.js +307 -0
  330. package/dist/schema-output/prisma.js.map +1 -0
  331. package/dist/sql-driver/dialects/durable-object-dialect.js +3 -9
  332. package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -1
  333. package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -1
  334. package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -1
  335. package/dist/sql-driver/sql-driver-adapter.js.map +1 -1
  336. package/dist/sql-driver/sql.js.map +1 -1
  337. package/dist/sync/commands.d.ts +15 -0
  338. package/dist/sync/commands.d.ts.map +1 -0
  339. package/dist/sync/commands.js +27 -0
  340. package/dist/sync/commands.js.map +1 -0
  341. package/dist/sync/index.d.ts +4 -0
  342. package/dist/sync/index.js +4 -0
  343. package/dist/sync/read-tracking.d.ts +25 -0
  344. package/dist/sync/read-tracking.d.ts.map +1 -0
  345. package/dist/sync/read-tracking.js +148 -0
  346. package/dist/sync/read-tracking.js.map +1 -0
  347. package/dist/sync/submit.js +213 -0
  348. package/dist/sync/submit.js.map +1 -0
  349. package/dist/sync/types.d.ts +63 -0
  350. package/dist/sync/types.d.ts.map +1 -0
  351. package/dist/util/default-database-adapter.js +66 -0
  352. package/dist/util/default-database-adapter.js.map +1 -0
  353. package/dist/with-database.d.ts +3 -6
  354. package/dist/with-database.d.ts.map +1 -1
  355. package/dist/with-database.js +8 -7
  356. package/dist/with-database.js.map +1 -1
  357. package/package.json +62 -55
  358. package/src/adapters/adapters.ts +33 -26
  359. package/src/adapters/drizzle/migrate-drizzle.test.ts +99 -41
  360. package/src/adapters/drizzle/migration-parity-drizzle-kit.test.ts +601 -0
  361. package/src/adapters/drizzle/test-utils.ts +13 -8
  362. package/src/adapters/generic-sql/driver-config.ts +38 -0
  363. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +10 -8
  364. package/src/adapters/generic-sql/generic-sql-adapter.ts +117 -34
  365. package/src/adapters/generic-sql/generic-sql-uow-executor.test.ts +55 -0
  366. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +297 -3
  367. package/src/adapters/generic-sql/migration/adapter-migration-parity.test.ts +120 -0
  368. package/src/adapters/generic-sql/migration/cold-kysely.ts +1 -0
  369. package/src/adapters/generic-sql/migration/dialect/mysql.test.ts +27 -8
  370. package/src/adapters/generic-sql/migration/dialect/mysql.ts +47 -8
  371. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +28 -9
  372. package/src/adapters/generic-sql/migration/dialect/postgres.ts +9 -4
  373. package/src/adapters/generic-sql/migration/dialect/sqlite.test.ts +839 -8
  374. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +396 -53
  375. package/src/adapters/generic-sql/migration/executor.test.ts +52 -0
  376. package/src/adapters/generic-sql/migration/executor.ts +47 -4
  377. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +238 -46
  378. package/src/adapters/generic-sql/migration/prepared-migrations.ts +21 -13
  379. package/src/adapters/generic-sql/migration/sql-generator.ts +145 -66
  380. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +11 -8
  381. package/src/adapters/generic-sql/query/cursor-utils.test.ts +272 -0
  382. package/src/adapters/generic-sql/query/cursor-utils.ts +42 -7
  383. package/src/adapters/generic-sql/query/db-now-sql.ts +49 -0
  384. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +171 -35
  385. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +53 -40
  386. package/src/adapters/generic-sql/query/select-builder.test.ts +16 -11
  387. package/src/adapters/generic-sql/query/select-builder.ts +7 -3
  388. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +75 -6
  389. package/src/adapters/generic-sql/query/sql-query-compiler.ts +129 -24
  390. package/src/adapters/generic-sql/query/where-builder.test.ts +96 -20
  391. package/src/adapters/generic-sql/query/where-builder.ts +112 -41
  392. package/src/adapters/{kysely/kysely-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-migrations.test.ts} +11 -20
  393. package/src/adapters/generic-sql/sql-adapter-pglite-pagination.test.ts +851 -0
  394. package/src/adapters/{drizzle/drizzle-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-queries.test.ts} +18 -15
  395. package/src/adapters/generic-sql/{test/generic-drizzle-adapter-sqlite3.test.ts → sql-adapter-sqlite3-driver.test.ts} +282 -14
  396. package/src/adapters/{drizzle/drizzle-adapter-sqlite3.test.ts → generic-sql/sql-adapter-sqlite3-uow.test.ts} +129 -12
  397. package/src/adapters/{kysely/kysely-adapter-sqlocal.test.ts → generic-sql/sql-adapter-sqlocal.test.ts} +9 -7
  398. package/src/adapters/generic-sql/sqlite-storage.ts +20 -0
  399. package/src/adapters/generic-sql/uow-decoder.test.ts +5 -4
  400. package/src/adapters/generic-sql/uow-decoder.ts +23 -5
  401. package/src/adapters/generic-sql/uow-encoder.test.ts +36 -3
  402. package/src/adapters/generic-sql/uow-encoder.ts +48 -13
  403. package/src/adapters/in-memory/condition-evaluator.test.ts +194 -0
  404. package/src/adapters/in-memory/condition-evaluator.ts +280 -0
  405. package/src/adapters/in-memory/errors.ts +20 -0
  406. package/src/adapters/in-memory/in-memory-adapter.ts +388 -0
  407. package/src/adapters/in-memory/in-memory-uow.mutations.test.ts +344 -0
  408. package/src/adapters/in-memory/in-memory-uow.retrieval.test.ts +255 -0
  409. package/src/adapters/in-memory/in-memory-uow.ts +1724 -0
  410. package/src/adapters/in-memory/index.ts +3 -0
  411. package/src/adapters/in-memory/options.test.ts +42 -0
  412. package/src/adapters/in-memory/options.ts +91 -0
  413. package/src/adapters/in-memory/outbox.test.ts +361 -0
  414. package/src/adapters/in-memory/reference-resolution.test.ts +51 -0
  415. package/src/adapters/in-memory/reference-resolution.ts +67 -0
  416. package/src/adapters/in-memory/sorted-array-index.test.ts +124 -0
  417. package/src/adapters/in-memory/sorted-array-index.ts +228 -0
  418. package/src/adapters/in-memory/store.test.ts +69 -0
  419. package/src/adapters/in-memory/store.ts +145 -0
  420. package/src/adapters/in-memory/value-comparison.ts +53 -0
  421. package/src/adapters/in-memory/value-normalization.test.ts +58 -0
  422. package/src/adapters/prisma/prisma-adapter-sqlite3.test.ts +1207 -0
  423. package/src/adapters/shared/from-unit-of-work-compiler.ts +159 -47
  424. package/src/adapters/shared/uow-operation-compiler.ts +28 -18
  425. package/src/adapters/sql/index.ts +12 -0
  426. package/src/browser/mod.ts +64 -0
  427. package/src/client.ts +19 -0
  428. package/src/db-fragment-definition-builder.test.ts +845 -53
  429. package/src/db-fragment-definition-builder.ts +911 -95
  430. package/src/db-fragment-instantiator.test.ts +210 -94
  431. package/src/db-fragment-integration.test.ts +17 -12
  432. package/src/dispatchers/cloudflare-do/dispatcher.ts +204 -0
  433. package/src/dispatchers/cloudflare-do/index.test.ts +206 -0
  434. package/src/dispatchers/cloudflare-do/index.ts +63 -0
  435. package/src/dispatchers/node/dispatcher.ts +112 -0
  436. package/src/dispatchers/node/index.test.ts +120 -0
  437. package/src/dispatchers/node/index.ts +50 -0
  438. package/src/durable-hooks.test.ts +80 -0
  439. package/src/durable-hooks.ts +67 -0
  440. package/src/fragments/internal-fragment.routes.test.ts +570 -0
  441. package/src/fragments/internal-fragment.routes.ts +334 -0
  442. package/src/fragments/internal-fragment.schema.ts +95 -0
  443. package/src/fragments/internal-fragment.test.ts +505 -83
  444. package/src/fragments/internal-fragment.ts +453 -70
  445. package/src/hooks/durable-hooks-logger.ts +126 -0
  446. package/src/hooks/durable-hooks-processor.pglite.test.ts +87 -0
  447. package/src/hooks/durable-hooks-processor.test.ts +282 -0
  448. package/src/hooks/durable-hooks-processor.ts +173 -0
  449. package/src/hooks/durable-hooks-runtime.test.ts +65 -0
  450. package/src/hooks/durable-hooks-runtime.ts +81 -0
  451. package/src/hooks/hooks.test.ts +455 -34
  452. package/src/hooks/hooks.ts +501 -34
  453. package/src/id.test.ts +34 -0
  454. package/src/id.ts +1 -3
  455. package/src/internal/adapter-registry.test.ts +93 -0
  456. package/src/internal/adapter-registry.ts +239 -0
  457. package/src/internal/outbox-state.ts +43 -0
  458. package/src/migration-engine/auto-from-schema.test.ts +107 -14
  459. package/src/migration-engine/auto-from-schema.ts +365 -44
  460. package/src/migration-engine/create.test.ts +4 -3
  461. package/src/migration-engine/create.ts +1 -1
  462. package/src/migration-engine/generation-engine.test.ts +292 -110
  463. package/src/migration-engine/generation-engine.ts +117 -66
  464. package/src/migration-engine/shared.ts +14 -0
  465. package/src/mod.ts +95 -39
  466. package/src/naming/sql-naming.ts +181 -0
  467. package/src/outbox/outbox-builder.ts +241 -0
  468. package/src/outbox/outbox.test.ts +424 -0
  469. package/src/outbox/outbox.ts +139 -0
  470. package/src/query/column-defaults.ts +42 -4
  471. package/src/query/condition-builder.test.ts +18 -3
  472. package/src/query/condition-builder.ts +7 -0
  473. package/src/query/cursor-client.test.ts +70 -0
  474. package/src/query/cursor-client.ts +263 -0
  475. package/src/query/cursor.test.ts +119 -20
  476. package/src/query/cursor.ts +88 -27
  477. package/src/query/db-now.ts +73 -0
  478. package/src/query/orm/orm.ts +2 -2
  479. package/src/query/query-type.test.ts +4 -3
  480. package/src/query/serialize/create-sql-serializer.ts +10 -5
  481. package/src/query/serialize/dialect/mysql-serializer.ts +13 -5
  482. package/src/query/serialize/dialect/postgres-serializer.ts +35 -5
  483. package/src/query/serialize/dialect/sqlite-serializer.test.ts +90 -3
  484. package/src/query/serialize/dialect/sqlite-serializer.ts +108 -12
  485. package/src/query/serialize/sql-serializer.ts +4 -4
  486. package/src/query/simple-query-interface.ts +15 -4
  487. package/src/query/unit-of-work/execute-unit-of-work.test.ts +372 -10
  488. package/src/query/unit-of-work/execute-unit-of-work.ts +87 -27
  489. package/src/query/unit-of-work/retry-policy.test.ts +1 -0
  490. package/src/query/unit-of-work/tx-builder.test.ts +73 -1
  491. package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +17 -16
  492. package/src/query/unit-of-work/unit-of-work-types.test.ts +42 -12
  493. package/src/query/unit-of-work/unit-of-work.test.ts +196 -39
  494. package/src/query/unit-of-work/unit-of-work.ts +309 -38
  495. package/src/query/value-decoding.test.ts +63 -4
  496. package/src/query/value-decoding.ts +32 -6
  497. package/src/query/value-encoding.test.ts +86 -2
  498. package/src/query/value-encoding.ts +56 -6
  499. package/src/schema/create.test.ts +293 -47
  500. package/src/schema/create.ts +406 -70
  501. package/src/schema/generate-id.test.ts +3 -2
  502. package/src/schema/generate-id.ts +2 -2
  503. package/src/schema/serialize.test.ts +18 -5
  504. package/src/schema/type-conversion/create-sql-type-mapper.ts +8 -3
  505. package/src/schema/type-conversion/dialect/sqlite.ts +18 -0
  506. package/src/schema/type-conversion/type-mapping.test.ts +26 -1
  507. package/src/schema/validator.test.ts +199 -0
  508. package/src/schema/validator.ts +232 -0
  509. package/src/{adapters/drizzle/generate.test.ts → schema-output/drizzle.test.ts} +232 -129
  510. package/src/{adapters/drizzle/generate.ts → schema-output/drizzle.ts} +155 -99
  511. package/src/schema-output/prisma.test.ts +694 -0
  512. package/src/schema-output/prisma.ts +593 -0
  513. package/src/sql-driver/better-sqlite3.test.ts +5 -3
  514. package/src/sql-driver/dialects/durable-object-dialect.ts +3 -8
  515. package/src/sql-driver/query-executor/default-query-executor.ts +1 -1
  516. package/src/sql-driver/query-executor/query-executor-base.ts +1 -1
  517. package/src/sql-driver/query-executor/query-executor.ts +1 -1
  518. package/src/sql-driver/sql-driver-adapter.ts +2 -2
  519. package/src/sql-driver/sql.ts +2 -1
  520. package/src/sql-driver/sqlocal.test.ts +4 -2
  521. package/src/sync/commands.test.ts +39 -0
  522. package/src/sync/commands.ts +51 -0
  523. package/src/sync/conflict-checker.test.ts +450 -0
  524. package/src/sync/conflict-checker.ts +248 -0
  525. package/src/sync/index.ts +14 -0
  526. package/src/sync/plan.ts +9 -0
  527. package/src/sync/read-tracking.test.ts +177 -0
  528. package/src/sync/read-tracking.ts +287 -0
  529. package/src/sync/submit.test.ts +205 -0
  530. package/src/sync/submit.ts +328 -0
  531. package/src/sync/types.ts +80 -0
  532. package/src/util/default-database-adapter.ts +119 -0
  533. package/src/with-database.ts +20 -31
  534. package/tsconfig.json +1 -1
  535. package/tsdown.config.ts +38 -24
  536. package/vitest.config.ts +1 -0
  537. package/dist/adapters/drizzle/drizzle-adapter.d.ts +0 -20
  538. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +0 -1
  539. package/dist/adapters/drizzle/drizzle-adapter.js +0 -27
  540. package/dist/adapters/drizzle/drizzle-adapter.js.map +0 -1
  541. package/dist/adapters/drizzle/generate.d.ts +0 -30
  542. package/dist/adapters/drizzle/generate.d.ts.map +0 -1
  543. package/dist/adapters/drizzle/generate.js.map +0 -1
  544. package/dist/adapters/kysely/kysely-adapter.d.ts +0 -19
  545. package/dist/adapters/kysely/kysely-adapter.d.ts.map +0 -1
  546. package/dist/adapters/kysely/kysely-adapter.js +0 -17
  547. package/dist/adapters/kysely/kysely-adapter.js.map +0 -1
  548. package/dist/adapters/shared/table-name-mapper.d.ts +0 -12
  549. package/dist/adapters/shared/table-name-mapper.d.ts.map +0 -1
  550. package/dist/adapters/shared/table-name-mapper.js +0 -43
  551. package/dist/adapters/shared/table-name-mapper.js.map +0 -1
  552. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js +0 -165
  553. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +0 -1
  554. package/dist/packages/fragno/dist/api/bind-services.js +0 -20
  555. package/dist/packages/fragno/dist/api/bind-services.js.map +0 -1
  556. package/dist/packages/fragno/dist/api/error.js +0 -48
  557. package/dist/packages/fragno/dist/api/error.js.map +0 -1
  558. package/dist/packages/fragno/dist/api/fragment-definition-builder.js +0 -320
  559. package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +0 -1
  560. package/dist/packages/fragno/dist/api/fragment-instantiator.js +0 -525
  561. package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +0 -1
  562. package/dist/packages/fragno/dist/api/fragno-response.js +0 -73
  563. package/dist/packages/fragno/dist/api/fragno-response.js.map +0 -1
  564. package/dist/packages/fragno/dist/api/internal/response-stream.js +0 -81
  565. package/dist/packages/fragno/dist/api/internal/response-stream.js.map +0 -1
  566. package/dist/packages/fragno/dist/api/internal/route.js +0 -10
  567. package/dist/packages/fragno/dist/api/internal/route.js.map +0 -1
  568. package/dist/packages/fragno/dist/api/mutable-request-state.js +0 -97
  569. package/dist/packages/fragno/dist/api/mutable-request-state.js.map +0 -1
  570. package/dist/packages/fragno/dist/api/request-context-storage.js +0 -43
  571. package/dist/packages/fragno/dist/api/request-context-storage.js.map +0 -1
  572. package/dist/packages/fragno/dist/api/request-input-context.js +0 -118
  573. package/dist/packages/fragno/dist/api/request-input-context.js.map +0 -1
  574. package/dist/packages/fragno/dist/api/request-middleware.js +0 -83
  575. package/dist/packages/fragno/dist/api/request-middleware.js.map +0 -1
  576. package/dist/packages/fragno/dist/api/request-output-context.js +0 -119
  577. package/dist/packages/fragno/dist/api/request-output-context.js.map +0 -1
  578. package/dist/packages/fragno/dist/api/route.js +0 -17
  579. package/dist/packages/fragno/dist/api/route.js.map +0 -1
  580. package/dist/packages/fragno/dist/internal/symbols.js +0 -10
  581. package/dist/packages/fragno/dist/internal/symbols.js.map +0 -1
  582. package/dist/schema-generator/schema-generator.d.ts +0 -15
  583. package/dist/schema-generator/schema-generator.d.ts.map +0 -1
  584. package/src/adapters/drizzle/drizzle-adapter.ts +0 -39
  585. package/src/adapters/kysely/kysely-adapter.ts +0 -27
  586. package/src/adapters/shared/table-name-mapper.ts +0 -50
  587. package/src/schema-generator/schema-generator.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"with-database.js","names":[],"sources":["../src/with-database.ts"],"sourcesContent":["import type { AnySchema } from \"./schema/create\";\nimport type {\n RequestThisContext,\n FragnoPublicConfig,\n AnyFragnoInstantiatedFragment,\n} from \"@fragno-dev/core\";\nimport { FragmentDefinitionBuilder, instantiate } from \"@fragno-dev/core\";\nimport {\n DatabaseFragmentDefinitionBuilder,\n type DatabaseServiceContext,\n type DatabaseHandlerContext,\n type ImplicitDatabaseDependencies,\n type FragnoPublicConfigWithDatabase,\n type DatabaseRequestStorage,\n} from \"./db-fragment-definition-builder\";\nimport { internalFragmentDef, type InternalFragmentInstance } from \"./fragments/internal-fragment\";\nimport type { HooksMap } from \"./hooks/hooks\";\n\n/**\n * Helper to add database support to a fragment builder.\n * Automatically links the internal fragment and adds ImplicitDatabaseDependencies to the TDeps type.\n *\n * @example\n * ```typescript\n * // With .extend() - recommended\n * const def = defineFragment(\"my-frag\")\n * .extend(withDatabase(mySchema))\n * .withDependencies(...)\n * .build();\n *\n * // Or as a function wrapper\n * const def = withDatabase(mySchema)(defineFragment(\"my-frag\"))\n * .withDependencies(...)\n * .build();\n * ```\n */\nexport function withDatabase<TSchema extends AnySchema>(\n schema: TSchema,\n namespace?: string,\n): <\n TConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage,\n TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>,\n>(\n builder: FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >,\n) => DatabaseFragmentDefinitionBuilder<\n TSchema,\n TConfig,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n HooksMap,\n DatabaseServiceContext<HooksMap>,\n DatabaseHandlerContext,\n TLinkedFragments & { _fragno_internal: InternalFragmentInstance }\n> {\n return <\n TConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage,\n TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>,\n >(\n builder: FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >,\n ) => {\n const builderWithInternal = builder.withLinkedFragment(\n \"_fragno_internal\",\n ({ config, options }) => {\n // Cast is safe: by the time this callback is invoked during fragment instantiation,\n // the options will be FragnoPublicConfigWithDatabase (enforced by DatabaseFragmentDefinitionBuilder)\n return instantiate(internalFragmentDef)\n .withConfig(config as {})\n .withOptions(options as FragnoPublicConfigWithDatabase)\n .build();\n },\n );\n\n // Cast is safe: we're creating a DatabaseFragmentDefinitionBuilder which internally uses\n // FragnoPublicConfigWithDatabase, but the input builder uses FragnoPublicConfig.\n // The database builder's build() method will enforce FragnoPublicConfigWithDatabase at the end.\n // We also add ImplicitDatabaseDependencies to TDeps so they're available in service constructors.\n // Note: We discard TRequestStorage here because database fragments manage their own storage (DatabaseRequestStorage).\n // We set TServiceThisContext to DatabaseServiceContext (restricted) and THandlerThisContext to DatabaseHandlerContext (full).\n return new DatabaseFragmentDefinitionBuilder<\n TSchema,\n TConfig,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n {}, // Start with empty hooks, provideHooks() will update this\n DatabaseServiceContext<{}>,\n DatabaseHandlerContext,\n TLinkedFragments & { _fragno_internal: InternalFragmentInstance }\n >(\n builderWithInternal as unknown as FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfigWithDatabase,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n DatabaseServiceContext<{}>,\n DatabaseHandlerContext,\n DatabaseRequestStorage,\n TLinkedFragments & { _fragno_internal: InternalFragmentInstance }\n >,\n schema,\n namespace,\n );\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAgB,aACd,QACA,WAsCA;AACA,SAYE,YAaG;AAmBH,SAAO,IAAI,kCAlBiB,QAAQ,mBAClC,qBACC,EAAE,QAAQ,cAAc;AAGvB,UAAO,YAAY,oBAAoB,CACpC,WAAW,OAAa,CACxB,YAAY,QAA0C,CACtD,OAAO;IAEb,EAkCC,QACA,UACD"}
1
+ {"version":3,"file":"with-database.js","names":[],"sources":["../src/with-database.ts"],"sourcesContent":["import type { RequestThisContext, FragnoPublicConfig, AnyRouteOrFactory } from \"@fragno-dev/core\";\nimport { FragmentDefinitionBuilder } from \"@fragno-dev/core\";\n\nimport {\n DatabaseFragmentDefinitionBuilder,\n type DatabaseServiceContext,\n type DatabaseHandlerContext,\n type ImplicitDatabaseDependencies,\n type FragnoPublicConfigWithDatabase,\n type DatabaseRequestStorage,\n} from \"./db-fragment-definition-builder\";\nimport type { HooksMap } from \"./hooks/hooks\";\nimport { getInternalFragment, getRegistryForAdapterSync } from \"./internal/adapter-registry\";\nimport type { AnySchema } from \"./schema/create\";\n\n/**\n * Helper to add database support to a fragment builder.\n * Registers the schema with the adapter registry and adds ImplicitDatabaseDependencies to the TDeps type.\n *\n * @example\n * ```typescript\n * // With .extend() - recommended\n * const def = defineFragment(\"my-frag\")\n * .extend(withDatabase(mySchema))\n * .withDependencies(...)\n * .build();\n *\n * // Or as a function wrapper\n * const def = withDatabase(mySchema)(defineFragment(\"my-frag\"))\n * .withDependencies(...)\n * .build();\n * ```\n */\nexport function withDatabase<TSchema extends AnySchema>(\n schema: TSchema,\n): <\n TConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage,\n TInternalRoutes extends readonly AnyRouteOrFactory[],\n>(\n builder: FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TInternalRoutes\n >,\n) => DatabaseFragmentDefinitionBuilder<\n TSchema,\n TConfig,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n HooksMap,\n DatabaseServiceContext<HooksMap>,\n DatabaseHandlerContext,\n TInternalRoutes\n> {\n return <\n TConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage,\n TInternalRoutes extends readonly AnyRouteOrFactory[],\n >(\n builder: FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TInternalRoutes\n >,\n ) => {\n // Cast is safe: we're creating a DatabaseFragmentDefinitionBuilder which internally uses\n // FragnoPublicConfigWithDatabase, but the input builder uses FragnoPublicConfig.\n // The database builder's build() method will enforce FragnoPublicConfigWithDatabase at the end.\n // We also add ImplicitDatabaseDependencies to TDeps so they're available in service constructors.\n // Note: We discard TRequestStorage here because database fragments manage their own storage (DatabaseRequestStorage).\n // We set TServiceThisContext to DatabaseServiceContext (restricted) and THandlerThisContext to DatabaseHandlerContext (full).\n return new DatabaseFragmentDefinitionBuilder<\n TSchema,\n TConfig,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n {}, // Start with empty hooks, provideHooks() will update this\n DatabaseServiceContext<{}>,\n DatabaseHandlerContext,\n TInternalRoutes\n >(\n builder as unknown as FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfigWithDatabase,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n DatabaseServiceContext<{}>,\n DatabaseHandlerContext,\n DatabaseRequestStorage,\n TInternalRoutes\n >,\n schema,\n undefined,\n undefined,\n {\n getRegistryForAdapterSync,\n getInternalFragment,\n },\n );\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAgB,aACd,QAsCA;AACA,SAYE,YAaG;AAOH,SAAO,IAAI,kCAaT,SAaA,QACA,QACA,QACA;GACE;GACA;GACD,CACF"}
package/package.json CHANGED
@@ -1,127 +1,134 @@
1
1
  {
2
2
  "name": "@fragno-dev/db",
3
- "version": "0.2.2",
3
+ "version": "0.4.1",
4
+ "homepage": "https://fragno.dev",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/rejot-dev/fragno.git",
9
+ "directory": "packages/fragno-db"
10
+ },
4
11
  "type": "module",
5
12
  "exports": {
6
13
  ".": {
7
- "development": "./src/mod.ts",
14
+ "workerd": "./dist/mod.js",
15
+ "worker": "./dist/mod.js",
16
+ "browser": "./dist/browser/mod.js",
8
17
  "types": "./dist/mod.d.ts",
9
18
  "default": "./dist/mod.js"
10
19
  },
11
20
  "./id": {
12
- "development": "./src/id.ts",
13
21
  "types": "./dist/id.d.ts",
14
22
  "default": "./dist/id.js"
15
23
  },
16
24
  "./schema": {
17
- "development": "./src/schema/create.ts",
18
25
  "types": "./dist/schema/create.d.ts",
19
26
  "default": "./dist/schema/create.js"
20
27
  },
21
28
  "./drivers": {
22
- "development": "./src/adapters/generic-sql/driver-config.ts",
23
29
  "types": "./dist/adapters/generic-sql/driver-config.d.ts",
24
30
  "default": "./dist/adapters/generic-sql/driver-config.js"
25
31
  },
26
32
  "./sql-driver": {
27
- "development": "./src/sql-driver/sql-driver.ts",
28
33
  "types": "./dist/sql-driver/sql-driver.d.ts",
29
34
  "default": "./dist/sql-driver/sql-driver.js"
30
35
  },
31
36
  "./dialects": {
32
- "development": "./src/sql-driver/dialects/dialects.ts",
33
37
  "types": "./dist/sql-driver/dialects/dialects.d.ts",
34
38
  "default": "./dist/sql-driver/dialects/dialects.js"
35
39
  },
36
40
  "./dialects/durable-object": {
37
- "development": "./src/sql-driver/dialects/durable-object-dialect.ts",
38
41
  "types": "./dist/sql-driver/dialects/durable-object-dialect.d.ts",
39
42
  "default": "./dist/sql-driver/dialects/durable-object-dialect.js"
40
43
  },
41
44
  "./query": {
42
- "development": "./src/query/simple-query-interface.ts",
43
45
  "types": "./dist/query/simple-query-interface.d.ts",
44
46
  "default": "./dist/query/simple-query-interface.js"
45
47
  },
46
48
  "./adapters": {
47
- "development": "./src/adapters/adapters.ts",
48
49
  "types": "./dist/adapters/adapters.d.ts",
49
50
  "default": "./dist/adapters/adapters.js"
50
51
  },
51
- "./adapters/kysely": {
52
- "development": "./src/adapters/kysely/kysely-adapter.ts",
53
- "types": "./dist/adapters/kysely/kysely-adapter.d.ts",
54
- "default": "./dist/adapters/kysely/kysely-adapter.js"
52
+ "./adapters/in-memory": {
53
+ "types": "./dist/adapters/in-memory/index.d.ts",
54
+ "default": "./dist/adapters/in-memory/index.js"
55
+ },
56
+ "./adapters/sql": {
57
+ "types": "./dist/adapters/sql/index.d.ts",
58
+ "default": "./dist/adapters/sql/index.js"
59
+ },
60
+ "./schema-output/drizzle": {
61
+ "types": "./dist/schema-output/drizzle.d.ts",
62
+ "default": "./dist/schema-output/drizzle.js"
55
63
  },
56
- "./adapters/drizzle": {
57
- "development": "./src/adapters/drizzle/drizzle-adapter.ts",
58
- "types": "./dist/adapters/drizzle/drizzle-adapter.d.ts",
59
- "default": "./dist/adapters/drizzle/drizzle-adapter.js"
64
+ "./schema-output/prisma": {
65
+ "types": "./dist/schema-output/prisma.d.ts",
66
+ "default": "./dist/schema-output/prisma.js"
60
67
  },
61
- "./adapters/drizzle/generate": {
62
- "development": "./src/adapters/drizzle/generate.ts",
63
- "types": "./dist/adapters/drizzle/generate.d.ts",
64
- "default": "./dist/adapters/drizzle/generate.js"
68
+ "./client": {
69
+ "types": "./dist/client.d.ts",
70
+ "default": "./dist/client.js"
65
71
  },
66
- "./adapters/generic-sql": {
67
- "development": "./src/adapters/generic-sql/generic-sql-adapter.ts",
68
- "types": "./dist/adapters/generic-sql/generic-sql-adapter.d.ts",
69
- "default": "./dist/adapters/generic-sql/generic-sql-adapter.js"
72
+ "./sync": {
73
+ "browser": "./dist/browser/mod.js",
74
+ "types": "./dist/sync/index.d.ts",
75
+ "default": "./dist/sync/index.js"
70
76
  },
71
77
  "./unit-of-work": {
72
- "development": "./src/query/unit-of-work/unit-of-work.ts",
73
78
  "types": "./dist/query/unit-of-work/unit-of-work.d.ts",
74
79
  "default": "./dist/query/unit-of-work/unit-of-work.js"
75
80
  },
76
81
  "./cursor": {
77
- "development": "./src/query/cursor.ts",
78
82
  "types": "./dist/query/cursor.d.ts",
79
83
  "default": "./dist/query/cursor.js"
80
84
  },
81
85
  "./fragment": {
82
- "development": "./src/fragment.ts",
83
86
  "types": "./dist/fragment.d.ts",
84
87
  "default": "./dist/fragment.js"
85
88
  },
86
89
  "./fragment-definition-builder": {
87
- "development": "./src/db-fragment-definition-builder.ts",
88
90
  "types": "./dist/db-fragment-definition-builder.d.ts",
89
91
  "default": "./dist/db-fragment-definition-builder.js"
90
92
  },
93
+ "./durable-hooks": {
94
+ "types": "./dist/durable-hooks.d.ts",
95
+ "default": "./dist/durable-hooks.js"
96
+ },
97
+ "./dispatchers/node": {
98
+ "types": "./dist/dispatchers/node/index.d.ts",
99
+ "default": "./dist/dispatchers/node/index.js"
100
+ },
101
+ "./dispatchers/cloudflare-do": {
102
+ "types": "./dist/dispatchers/cloudflare-do/index.d.ts",
103
+ "default": "./dist/dispatchers/cloudflare-do/index.js"
104
+ },
91
105
  "./generation-engine": {
92
- "development": "./src/migration-engine/generation-engine.ts",
93
106
  "types": "./dist/migration-engine/generation-engine.d.ts",
94
107
  "default": "./dist/migration-engine/generation-engine.js"
95
108
  }
96
109
  },
110
+ "dependencies": {
111
+ "@standard-schema/spec": "^1.1.0",
112
+ "kysely": "^0.28.10",
113
+ "superjson": "^2.2.1",
114
+ "@fragno-dev/core": "0.2.2"
115
+ },
97
116
  "devDependencies": {
98
- "@electric-sql/pglite": "^0.3.10",
117
+ "@electric-sql/pglite": "^0.3.15",
99
118
  "@libsql/client": "^0.15.15",
100
119
  "@types/better-sqlite3": "^7.6.13",
101
- "@types/node": "^22",
102
- "@vitest/coverage-istanbul": "^3.2.4",
103
- "better-sqlite3": "^12.5.0",
104
- "drizzle-kit": "^0.31.5",
105
- "drizzle-orm": "^0.44.6",
120
+ "@types/node": "^22.19.7",
121
+ "@vitest/coverage-istanbul": "^4.1.0",
122
+ "better-sqlite3": "^12.6.2",
123
+ "drizzle-kit": "^0.31.8",
124
+ "drizzle-orm": "^0.44.7",
106
125
  "kysely-pglite": "^0.6.1",
107
- "mysql2": "^3.11.5",
126
+ "mysql2": "^3.16.1",
108
127
  "sqlocal": "^0.15.2",
109
- "vitest": "^3.2.4",
110
- "zod": "^4.1.12",
111
- "@fragno-dev/core": "0.1.11",
112
- "@fragno-private/vitest-config": "0.0.0",
113
- "@fragno-private/typescript-config": "0.0.1"
114
- },
115
- "repository": {
116
- "type": "git",
117
- "url": "https://github.com/rejot-dev/fragno.git",
118
- "directory": "packages/fragno-db"
119
- },
120
- "homepage": "https://fragno.dev",
121
- "license": "MIT",
122
- "dependencies": {
123
- "@paralleldrive/cuid2": "^2.3.1",
124
- "kysely": "^0.28.7"
128
+ "vitest": "^4.1.4",
129
+ "zod": "^4.3.5",
130
+ "@fragno-private/typescript-config": "0.0.1",
131
+ "@fragno-private/vitest-config": "0.0.0"
125
132
  },
126
133
  "peerDependencies": {
127
134
  "drizzle-orm": "^0.44.6"
@@ -134,7 +141,7 @@
134
141
  "scripts": {
135
142
  "build": "tsdown",
136
143
  "build:watch": "tsdown --watch",
137
- "types:check": "tsc --noEmit",
144
+ "types:check": "tsgo --noEmit",
138
145
  "test": "vitest run",
139
146
  "test:watch": "vitest --watch"
140
147
  }
@@ -1,9 +1,12 @@
1
- import type { SimpleQueryInterface } from "../query/simple-query-interface";
2
- import type { SchemaGenerator } from "../schema-generator/schema-generator";
3
- import type { AnySchema } from "../schema/create";
4
1
  import type { RequestContextStorage } from "@fragno-dev/core/internal/request-context-storage";
2
+
3
+ import type { SqlNamingStrategy } from "../naming/sql-naming";
4
+ import type { SimpleQueryInterface } from "../query/simple-query-interface";
5
5
  import type { IUnitOfWork } from "../query/unit-of-work/unit-of-work";
6
+ import type { AnySchema } from "../schema/create";
7
+ import type { SQLProvider } from "../shared/providers";
6
8
  import type { PreparedMigrations } from "./generic-sql/migration/prepared-migrations";
9
+ import type { SQLiteStorageMode } from "./generic-sql/sqlite-storage";
7
10
 
8
11
  export const fragnoDatabaseAdapterNameFakeSymbol = "$fragno-database-adapter-name" as const;
9
12
  export const fragnoDatabaseAdapterVersionFakeSymbol = "$fragno-database-adapter-version" as const;
@@ -16,12 +19,12 @@ export type DatabaseContextStorage = {
16
19
  uow: IUnitOfWork;
17
20
  };
18
21
 
19
- /**
20
- * Maps logical table names (used by fragment authors) to physical table names (with namespace suffix)
21
- */
22
- export interface TableNameMapper {
23
- toPhysical(logicalName: string): string;
24
- toLogical(physicalName: string): string;
22
+ export type SQLiteProfile = "default" | "prisma";
23
+
24
+ export interface DatabaseAdapterMetadata {
25
+ databaseType?: SQLProvider;
26
+ sqliteProfile?: SQLiteProfile;
27
+ sqliteStorageMode?: SQLiteStorageMode;
25
28
  }
26
29
 
27
30
  export interface DatabaseAdapter<TUOWConfig = void> {
@@ -34,36 +37,40 @@ export interface DatabaseAdapter<TUOWConfig = void> {
34
37
  */
35
38
  readonly contextStorage: RequestContextStorage<DatabaseContextStorage>;
36
39
 
40
+ /**
41
+ * Optional adapter override used for durable hook processing.
42
+ * Use this when the public adapter wraps another adapter (e.g. model checker).
43
+ */
44
+ getHookProcessingAdapter?: () => DatabaseAdapter<TUOWConfig>;
45
+
37
46
  /**
38
47
  * Get current schema version, undefined if not initialized.
39
48
  */
40
49
  getSchemaVersion(namespace: string): Promise<string | undefined>;
41
50
 
51
+ /**
52
+ * Optional metadata used by schema output tooling.
53
+ */
54
+ readonly adapterMetadata?: DatabaseAdapterMetadata;
55
+
56
+ /**
57
+ * Naming strategy used for physical SQL identifiers.
58
+ */
59
+ readonly namingStrategy: SqlNamingStrategy;
60
+
61
+ /**
62
+ * @deprecated Avoid using query engines directly in fragment code. Prefer handlerTx/serviceTx.
63
+ */
42
64
  createQueryEngine: <const T extends AnySchema>(
43
65
  schema: T,
44
- namespace: string,
66
+ namespace: string | null,
45
67
  ) => SimpleQueryInterface<T, TUOWConfig>;
46
68
 
47
69
  prepareMigrations?: <const T extends AnySchema>(
48
70
  schema: T,
49
- namespace: string,
71
+ namespace: string | null,
50
72
  ) => PreparedMigrations;
51
73
 
52
- /**
53
- * Generate a combined schema file from one or more fragments.
54
- * If not implemented, schema generation is not supported for this adapter.
55
- */
56
- createSchemaGenerator?: (
57
- fragments: { schema: AnySchema; namespace: string }[],
58
- options?: { path?: string },
59
- ) => SchemaGenerator;
60
-
61
- /**
62
- * Creates a table name mapper for the given namespace.
63
- * Used to convert between logical table names and physical table names.
64
- */
65
- createTableNameMapper: (namespace: string) => TableNameMapper;
66
-
67
74
  isConnectionHealthy: () => Promise<boolean>;
68
75
 
69
76
  close: () => Promise<void>;
@@ -1,6 +1,8 @@
1
1
  import { beforeAll, describe, expect, it } from "vitest";
2
- import { column, idColumn, referenceColumn, schema } from "../../schema/create";
2
+
3
3
  import { createRequire } from "node:module";
4
+
5
+ import { column, idColumn, referenceColumn, schema } from "../../schema/create";
4
6
  import { writeAndLoadSchema } from "./test-utils";
5
7
 
6
8
  // I dunno
@@ -9,7 +11,7 @@ const { generateDrizzleJson, generateMigration } =
9
11
  require("drizzle-kit/api") as typeof import("drizzle-kit/api");
10
12
 
11
13
  describe("generateSchema and migrate", () => {
12
- const testSchema = schema((s) => {
14
+ const testSchema = schema("test", (s) => {
13
15
  return s
14
16
  .addTable("users", (t) => {
15
17
  return t
@@ -151,15 +153,16 @@ describe("generateSchema and migrate", () => {
151
153
 
152
154
  expect(migrationStatements.join("\n")).toMatchInlineSnapshot(`
153
155
  "CREATE TABLE "fragno_db_settings" (
154
- "id" varchar(30) NOT NULL,
156
+ "id" varchar(128) NOT NULL,
155
157
  "key" text NOT NULL,
156
158
  "value" text NOT NULL,
157
159
  "_internalId" bigserial PRIMARY KEY NOT NULL,
158
- "_version" integer DEFAULT 0 NOT NULL
160
+ "_version" integer DEFAULT 0 NOT NULL,
161
+ CONSTRAINT "fragno_db_settings_id_unique" UNIQUE("id")
159
162
  );
160
163
 
161
164
  CREATE TABLE "fragno_hooks" (
162
- "id" varchar(30) NOT NULL,
165
+ "id" varchar(128) NOT NULL,
163
166
  "namespace" text NOT NULL,
164
167
  "hookName" text NOT NULL,
165
168
  "payload" json NOT NULL,
@@ -172,11 +175,53 @@ describe("generateSchema and migrate", () => {
172
175
  "createdAt" timestamp DEFAULT now() NOT NULL,
173
176
  "nonce" text NOT NULL,
174
177
  "_internalId" bigserial PRIMARY KEY NOT NULL,
175
- "_version" integer DEFAULT 0 NOT NULL
178
+ "_version" integer DEFAULT 0 NOT NULL,
179
+ CONSTRAINT "fragno_hooks_id_unique" UNIQUE("id")
180
+ );
181
+
182
+ CREATE TABLE "fragno_db_outbox" (
183
+ "id" varchar(128) NOT NULL,
184
+ "versionstamp" text NOT NULL,
185
+ "uowId" text NOT NULL,
186
+ "payload" json NOT NULL,
187
+ "refMap" json,
188
+ "createdAt" timestamp DEFAULT now() NOT NULL,
189
+ "_internalId" bigserial PRIMARY KEY NOT NULL,
190
+ "_version" integer DEFAULT 0 NOT NULL,
191
+ CONSTRAINT "fragno_db_outbox_id_unique" UNIQUE("id")
192
+ );
193
+
194
+ CREATE TABLE "fragno_db_outbox_mutations" (
195
+ "id" varchar(128) NOT NULL,
196
+ "entryVersionstamp" text NOT NULL,
197
+ "mutationVersionstamp" text NOT NULL,
198
+ "uowId" text NOT NULL,
199
+ "schema" text NOT NULL,
200
+ "table" text NOT NULL,
201
+ "externalId" text NOT NULL,
202
+ "op" text NOT NULL,
203
+ "createdAt" timestamp DEFAULT now() NOT NULL,
204
+ "_internalId" bigserial PRIMARY KEY NOT NULL,
205
+ "_version" integer DEFAULT 0 NOT NULL,
206
+ CONSTRAINT "fragno_db_outbox_mutations_id_unique" UNIQUE("id")
207
+ );
208
+
209
+ CREATE TABLE "fragno_db_sync_requests" (
210
+ "id" varchar(128) NOT NULL,
211
+ "requestId" text NOT NULL,
212
+ "status" text NOT NULL,
213
+ "confirmedCommandIds" json NOT NULL,
214
+ "conflictCommandId" text,
215
+ "baseVersionstamp" text,
216
+ "lastVersionstamp" text,
217
+ "createdAt" timestamp DEFAULT now() NOT NULL,
218
+ "_internalId" bigserial PRIMARY KEY NOT NULL,
219
+ "_version" integer DEFAULT 0 NOT NULL,
220
+ CONSTRAINT "fragno_db_sync_requests_id_unique" UNIQUE("id")
176
221
  );
177
222
 
178
- CREATE TABLE "users" (
179
- "id" varchar(30) NOT NULL,
223
+ CREATE TABLE "test"."users" (
224
+ "id" varchar(128) NOT NULL,
180
225
  "name" text NOT NULL,
181
226
  "email" text NOT NULL,
182
227
  "age" integer,
@@ -185,11 +230,12 @@ describe("generateSchema and migrate", () => {
185
230
  "createdAt" timestamp DEFAULT now() NOT NULL,
186
231
  "updatedAt" timestamp DEFAULT now() NOT NULL,
187
232
  "_internalId" bigserial PRIMARY KEY NOT NULL,
188
- "_version" integer DEFAULT 0 NOT NULL
233
+ "_version" integer DEFAULT 0 NOT NULL,
234
+ CONSTRAINT "users_id_unique" UNIQUE("id")
189
235
  );
190
236
 
191
- CREATE TABLE "posts" (
192
- "id" varchar(30) NOT NULL,
237
+ CREATE TABLE "test"."posts" (
238
+ "id" varchar(128) NOT NULL,
193
239
  "title" text NOT NULL,
194
240
  "slug" varchar(255) NOT NULL,
195
241
  "content" text NOT NULL,
@@ -204,11 +250,12 @@ describe("generateSchema and migrate", () => {
204
250
  "thumbnail" "bytea",
205
251
  "createdAt" timestamp DEFAULT now() NOT NULL,
206
252
  "_internalId" bigserial PRIMARY KEY NOT NULL,
207
- "_version" integer DEFAULT 0 NOT NULL
253
+ "_version" integer DEFAULT 0 NOT NULL,
254
+ CONSTRAINT "posts_id_unique" UNIQUE("id")
208
255
  );
209
256
 
210
- CREATE TABLE "comments" (
211
- "id" varchar(30) NOT NULL,
257
+ CREATE TABLE "test"."comments" (
258
+ "id" varchar(128) NOT NULL,
212
259
  "content" text NOT NULL,
213
260
  "postId" bigint NOT NULL,
214
261
  "userId" bigint NOT NULL,
@@ -217,53 +264,64 @@ describe("generateSchema and migrate", () => {
217
264
  "editedAt" timestamp,
218
265
  "isDeleted" boolean DEFAULT false NOT NULL,
219
266
  "_internalId" bigserial PRIMARY KEY NOT NULL,
220
- "_version" integer DEFAULT 0 NOT NULL
267
+ "_version" integer DEFAULT 0 NOT NULL,
268
+ CONSTRAINT "comments_id_unique" UNIQUE("id")
221
269
  );
222
270
 
223
- CREATE TABLE "tags" (
224
- "id" varchar(30) NOT NULL,
271
+ CREATE TABLE "test"."tags" (
272
+ "id" varchar(128) NOT NULL,
225
273
  "name" text NOT NULL,
226
274
  "slug" varchar(100) NOT NULL,
227
275
  "description" text,
228
276
  "color" varchar(7),
229
277
  "usageCount" bigint DEFAULT 0 NOT NULL,
230
278
  "_internalId" bigserial PRIMARY KEY NOT NULL,
231
- "_version" integer DEFAULT 0 NOT NULL
279
+ "_version" integer DEFAULT 0 NOT NULL,
280
+ CONSTRAINT "tags_id_unique" UNIQUE("id")
232
281
  );
233
282
 
234
- CREATE TABLE "postTags" (
235
- "id" varchar(30) NOT NULL,
283
+ CREATE TABLE "test"."postTags" (
284
+ "id" varchar(128) NOT NULL,
236
285
  "postId" bigint NOT NULL,
237
286
  "tagId" bigint NOT NULL,
238
287
  "order" integer DEFAULT 0 NOT NULL,
239
288
  "createdAt" timestamp DEFAULT now() NOT NULL,
240
289
  "_internalId" bigserial PRIMARY KEY NOT NULL,
241
- "_version" integer DEFAULT 0 NOT NULL
290
+ "_version" integer DEFAULT 0 NOT NULL,
291
+ CONSTRAINT "postTags_id_unique" UNIQUE("id")
242
292
  );
243
293
 
244
- ALTER TABLE "posts" ADD CONSTRAINT "posts_users_author_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("_internalId") ON DELETE no action ON UPDATE no action;
245
- ALTER TABLE "comments" ADD CONSTRAINT "comments_posts_post_fk" FOREIGN KEY ("postId") REFERENCES "public"."posts"("_internalId") ON DELETE no action ON UPDATE no action;
246
- ALTER TABLE "comments" ADD CONSTRAINT "comments_users_author_fk" FOREIGN KEY ("userId") REFERENCES "public"."users"("_internalId") ON DELETE no action ON UPDATE no action;
247
- ALTER TABLE "comments" ADD CONSTRAINT "comments_comments_parent_fk" FOREIGN KEY ("parentId") REFERENCES "public"."comments"("_internalId") ON DELETE no action ON UPDATE no action;
248
- ALTER TABLE "postTags" ADD CONSTRAINT "postTags_posts_post_fk" FOREIGN KEY ("postId") REFERENCES "public"."posts"("_internalId") ON DELETE no action ON UPDATE no action;
249
- ALTER TABLE "postTags" ADD CONSTRAINT "postTags_tags_tag_fk" FOREIGN KEY ("tagId") REFERENCES "public"."tags"("_internalId") ON DELETE no action ON UPDATE no action;
294
+ ALTER TABLE "test"."posts" ADD CONSTRAINT "fk_posts_users_author" FOREIGN KEY ("userId") REFERENCES "test"."users"("_internalId") ON DELETE no action ON UPDATE no action;
295
+ ALTER TABLE "test"."comments" ADD CONSTRAINT "fk_comments_posts_post" FOREIGN KEY ("postId") REFERENCES "test"."posts"("_internalId") ON DELETE no action ON UPDATE no action;
296
+ ALTER TABLE "test"."comments" ADD CONSTRAINT "fk_comments_users_author" FOREIGN KEY ("userId") REFERENCES "test"."users"("_internalId") ON DELETE no action ON UPDATE no action;
297
+ ALTER TABLE "test"."comments" ADD CONSTRAINT "fk_comments_comments_parent" FOREIGN KEY ("parentId") REFERENCES "test"."comments"("_internalId") ON DELETE no action ON UPDATE no action;
298
+ ALTER TABLE "test"."postTags" ADD CONSTRAINT "fk_postTags_posts_post" FOREIGN KEY ("postId") REFERENCES "test"."posts"("_internalId") ON DELETE no action ON UPDATE no action;
299
+ ALTER TABLE "test"."postTags" ADD CONSTRAINT "fk_postTags_tags_tag" FOREIGN KEY ("tagId") REFERENCES "test"."tags"("_internalId") ON DELETE no action ON UPDATE no action;
250
300
  CREATE UNIQUE INDEX "unique_key" ON "fragno_db_settings" USING btree ("key");
251
301
  CREATE INDEX "idx_namespace_status_retry" ON "fragno_hooks" USING btree ("namespace","status","nextRetryAt");
252
302
  CREATE INDEX "idx_nonce" ON "fragno_hooks" USING btree ("nonce");
253
- CREATE UNIQUE INDEX "idx_users_email" ON "users" USING btree ("email");
254
- CREATE INDEX "idx_users_name" ON "users" USING btree ("name");
255
- CREATE INDEX "idx_users_active" ON "users" USING btree ("isActive");
256
- CREATE INDEX "idx_posts_user" ON "posts" USING btree ("userId");
257
- CREATE INDEX "idx_posts_title" ON "posts" USING btree ("title");
258
- CREATE UNIQUE INDEX "idx_posts_slug" ON "posts" USING btree ("slug");
259
- CREATE INDEX "idx_posts_published" ON "posts" USING btree ("isPublished","publishedAt");
260
- CREATE INDEX "idx_comments_post" ON "comments" USING btree ("postId");
261
- CREATE INDEX "idx_comments_user" ON "comments" USING btree ("userId");
262
- CREATE INDEX "idx_comments_parent" ON "comments" USING btree ("parentId");
263
- CREATE UNIQUE INDEX "idx_tags_slug" ON "tags" USING btree ("slug");
264
- CREATE INDEX "idx_tags_name" ON "tags" USING btree ("name");
265
- CREATE UNIQUE INDEX "idx_postTags_post_tag" ON "postTags" USING btree ("postId","tagId");
266
- CREATE INDEX "idx_postTags_tag" ON "postTags" USING btree ("tagId");"
303
+ CREATE INDEX "idx_namespace_status_last_attempt" ON "fragno_hooks" USING btree ("namespace","status","lastAttemptAt");
304
+ CREATE INDEX "idx_namespace_created_at" ON "fragno_hooks" USING btree ("namespace","createdAt","id");
305
+ CREATE UNIQUE INDEX "idx_outbox_versionstamp" ON "fragno_db_outbox" USING btree ("versionstamp");
306
+ CREATE INDEX "idx_outbox_uow" ON "fragno_db_outbox" USING btree ("uowId");
307
+ CREATE INDEX "idx_outbox_mutations_entry" ON "fragno_db_outbox_mutations" USING btree ("entryVersionstamp");
308
+ CREATE INDEX "idx_outbox_mutations_key" ON "fragno_db_outbox_mutations" USING btree ("schema","table","externalId","entryVersionstamp");
309
+ CREATE INDEX "idx_outbox_mutations_uow" ON "fragno_db_outbox_mutations" USING btree ("uowId");
310
+ CREATE UNIQUE INDEX "idx_sync_request_id" ON "fragno_db_sync_requests" USING btree ("requestId");
311
+ CREATE UNIQUE INDEX "idx_users_email" ON "test"."users" USING btree ("email");
312
+ CREATE INDEX "idx_users_name" ON "test"."users" USING btree ("name");
313
+ CREATE INDEX "idx_users_active" ON "test"."users" USING btree ("isActive");
314
+ CREATE INDEX "idx_posts_user" ON "test"."posts" USING btree ("userId");
315
+ CREATE INDEX "idx_posts_title" ON "test"."posts" USING btree ("title");
316
+ CREATE UNIQUE INDEX "idx_posts_slug" ON "test"."posts" USING btree ("slug");
317
+ CREATE INDEX "idx_posts_published" ON "test"."posts" USING btree ("isPublished","publishedAt");
318
+ CREATE INDEX "idx_comments_post" ON "test"."comments" USING btree ("postId");
319
+ CREATE INDEX "idx_comments_user" ON "test"."comments" USING btree ("userId");
320
+ CREATE INDEX "idx_comments_parent" ON "test"."comments" USING btree ("parentId");
321
+ CREATE UNIQUE INDEX "idx_tags_slug" ON "test"."tags" USING btree ("slug");
322
+ CREATE INDEX "idx_tags_name" ON "test"."tags" USING btree ("name");
323
+ CREATE UNIQUE INDEX "idx_postTags_post_tag" ON "test"."postTags" USING btree ("postId","tagId");
324
+ CREATE INDEX "idx_postTags_tag" ON "test"."postTags" USING btree ("tagId");"
267
325
  `);
268
326
  });
269
327
  });