@fragno-dev/db 0.1.14 → 0.2.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 (445) hide show
  1. package/.turbo/turbo-build.log +242 -139
  2. package/CHANGELOG.md +47 -0
  3. package/README.md +123 -8
  4. package/dist/adapters/adapters.d.ts +19 -5
  5. package/dist/adapters/adapters.d.ts.map +1 -1
  6. package/dist/adapters/adapters.js.map +1 -1
  7. package/dist/adapters/drizzle/drizzle-adapter.d.ts +6 -19
  8. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
  9. package/dist/adapters/drizzle/drizzle-adapter.js +7 -47
  10. package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
  11. package/dist/adapters/drizzle/generate.d.ts +7 -1
  12. package/dist/adapters/drizzle/generate.d.ts.map +1 -1
  13. package/dist/adapters/drizzle/generate.js +46 -45
  14. package/dist/adapters/drizzle/generate.js.map +1 -1
  15. package/dist/adapters/generic-sql/driver-config.d.ts +74 -0
  16. package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -0
  17. package/dist/adapters/generic-sql/driver-config.js +94 -0
  18. package/dist/adapters/generic-sql/driver-config.js.map +1 -0
  19. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +43 -0
  20. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -0
  21. package/dist/adapters/generic-sql/generic-sql-adapter.js +87 -0
  22. package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -0
  23. package/dist/adapters/generic-sql/generic-sql-uow-executor.js +67 -0
  24. package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -0
  25. package/dist/adapters/generic-sql/migration/cold-kysely.js +33 -0
  26. package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -0
  27. package/dist/adapters/generic-sql/migration/dialect/mysql.js +60 -0
  28. package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -0
  29. package/dist/adapters/generic-sql/migration/dialect/postgres.js +59 -0
  30. package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -0
  31. package/dist/adapters/generic-sql/migration/dialect/sqlite.js +96 -0
  32. package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -0
  33. package/dist/adapters/generic-sql/migration/executor.d.ts +15 -0
  34. package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -0
  35. package/dist/adapters/generic-sql/migration/executor.js +18 -0
  36. package/dist/adapters/generic-sql/migration/executor.js.map +1 -0
  37. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
  38. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
  39. package/dist/adapters/generic-sql/migration/prepared-migrations.js +68 -0
  40. package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -0
  41. package/dist/adapters/generic-sql/migration/sql-generator.js +212 -0
  42. package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -0
  43. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +32 -0
  44. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -0
  45. package/dist/adapters/generic-sql/query/cursor-utils.js +37 -0
  46. package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -0
  47. package/dist/adapters/generic-sql/query/dialect/mysql.js +33 -0
  48. package/dist/adapters/generic-sql/query/dialect/mysql.js.map +1 -0
  49. package/dist/adapters/generic-sql/query/dialect/postgres.js +32 -0
  50. package/dist/adapters/generic-sql/query/dialect/postgres.js.map +1 -0
  51. package/dist/adapters/generic-sql/query/dialect/sqlite.js +32 -0
  52. package/dist/adapters/generic-sql/query/dialect/sqlite.js.map +1 -0
  53. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +152 -0
  54. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -0
  55. package/dist/adapters/generic-sql/query/select-builder.js +69 -0
  56. package/dist/adapters/generic-sql/query/select-builder.js.map +1 -0
  57. package/dist/adapters/generic-sql/query/sql-query-compiler.js +145 -0
  58. package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -0
  59. package/dist/adapters/generic-sql/query/where-builder.js +129 -0
  60. package/dist/adapters/generic-sql/query/where-builder.js.map +1 -0
  61. package/dist/adapters/generic-sql/result-interpreter.js +74 -0
  62. package/dist/adapters/generic-sql/result-interpreter.js.map +1 -0
  63. package/dist/adapters/generic-sql/uow-decoder.js +105 -0
  64. package/dist/adapters/generic-sql/uow-decoder.js.map +1 -0
  65. package/dist/adapters/generic-sql/uow-encoder.js +93 -0
  66. package/dist/adapters/generic-sql/uow-encoder.js.map +1 -0
  67. package/dist/adapters/kysely/kysely-adapter.d.ts +5 -16
  68. package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
  69. package/dist/adapters/kysely/kysely-adapter.js +6 -159
  70. package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
  71. package/dist/adapters/{drizzle/drizzle-query.js → shared/from-unit-of-work-compiler.js} +48 -62
  72. package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -0
  73. package/dist/adapters/{kysely/kysely-shared.d.ts → shared/table-name-mapper.d.ts} +3 -2
  74. package/dist/adapters/shared/table-name-mapper.d.ts.map +1 -0
  75. package/dist/adapters/shared/table-name-mapper.js +43 -0
  76. package/dist/adapters/shared/table-name-mapper.js.map +1 -0
  77. package/dist/adapters/shared/uow-operation-compiler.js +105 -0
  78. package/dist/adapters/shared/uow-operation-compiler.js.map +1 -0
  79. package/dist/db-fragment-definition-builder.d.ts +186 -0
  80. package/dist/db-fragment-definition-builder.d.ts.map +1 -0
  81. package/dist/db-fragment-definition-builder.js +207 -0
  82. package/dist/db-fragment-definition-builder.js.map +1 -0
  83. package/dist/fragments/internal-fragment.d.ts +53 -0
  84. package/dist/fragments/internal-fragment.d.ts.map +1 -0
  85. package/dist/fragments/internal-fragment.js +111 -0
  86. package/dist/fragments/internal-fragment.js.map +1 -0
  87. package/dist/hooks/hooks.d.ts +51 -0
  88. package/dist/hooks/hooks.d.ts.map +1 -0
  89. package/dist/hooks/hooks.js +88 -0
  90. package/dist/hooks/hooks.js.map +1 -0
  91. package/dist/migration-engine/generation-engine.d.ts +0 -2
  92. package/dist/migration-engine/generation-engine.d.ts.map +1 -1
  93. package/dist/migration-engine/generation-engine.js +38 -56
  94. package/dist/migration-engine/generation-engine.js.map +1 -1
  95. package/dist/mod.d.ts +35 -23
  96. package/dist/mod.d.ts.map +1 -1
  97. package/dist/mod.js +48 -45
  98. package/dist/mod.js.map +1 -1
  99. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js +165 -0
  100. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +1 -0
  101. package/dist/packages/fragno/dist/api/bind-services.js +20 -0
  102. package/dist/packages/fragno/dist/api/bind-services.js.map +1 -0
  103. package/dist/packages/fragno/dist/api/error.js +48 -0
  104. package/dist/packages/fragno/dist/api/error.js.map +1 -0
  105. package/dist/packages/fragno/dist/api/fragment-definition-builder.js +320 -0
  106. package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +1 -0
  107. package/dist/packages/fragno/dist/api/fragment-instantiator.js +525 -0
  108. package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -0
  109. package/dist/packages/fragno/dist/api/fragno-response.js +73 -0
  110. package/dist/packages/fragno/dist/api/fragno-response.js.map +1 -0
  111. package/dist/packages/fragno/dist/api/internal/response-stream.js +81 -0
  112. package/dist/packages/fragno/dist/api/internal/response-stream.js.map +1 -0
  113. package/dist/packages/fragno/dist/api/internal/route.js +10 -0
  114. package/dist/packages/fragno/dist/api/internal/route.js.map +1 -0
  115. package/dist/packages/fragno/dist/api/mutable-request-state.js +97 -0
  116. package/dist/packages/fragno/dist/api/mutable-request-state.js.map +1 -0
  117. package/dist/packages/fragno/dist/api/request-context-storage.js +43 -0
  118. package/dist/packages/fragno/dist/api/request-context-storage.js.map +1 -0
  119. package/dist/packages/fragno/dist/api/request-input-context.js +118 -0
  120. package/dist/packages/fragno/dist/api/request-input-context.js.map +1 -0
  121. package/dist/packages/fragno/dist/api/request-middleware.js +83 -0
  122. package/dist/packages/fragno/dist/api/request-middleware.js.map +1 -0
  123. package/dist/packages/fragno/dist/api/request-output-context.js +119 -0
  124. package/dist/packages/fragno/dist/api/request-output-context.js.map +1 -0
  125. package/dist/packages/fragno/dist/api/route.js +17 -0
  126. package/dist/packages/fragno/dist/api/route.js.map +1 -0
  127. package/dist/packages/fragno/dist/internal/symbols.js +10 -0
  128. package/dist/packages/fragno/dist/internal/symbols.js.map +1 -0
  129. package/dist/query/column-defaults.js +27 -0
  130. package/dist/query/column-defaults.js.map +1 -0
  131. package/dist/query/cursor.d.ts +14 -6
  132. package/dist/query/cursor.d.ts.map +1 -1
  133. package/dist/query/cursor.js +16 -7
  134. package/dist/query/cursor.js.map +1 -1
  135. package/dist/query/orm/orm.d.ts +1 -1
  136. package/dist/query/orm/orm.js.map +1 -1
  137. package/dist/query/serialize/create-sql-serializer.js +30 -0
  138. package/dist/query/serialize/create-sql-serializer.js.map +1 -0
  139. package/dist/query/serialize/dialect/mysql-serializer.js +87 -0
  140. package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -0
  141. package/dist/query/serialize/dialect/postgres-serializer.js +80 -0
  142. package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -0
  143. package/dist/query/serialize/dialect/sqlite-serializer.js +93 -0
  144. package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -0
  145. package/dist/query/serialize/sql-serializer.js +67 -0
  146. package/dist/query/serialize/sql-serializer.js.map +1 -0
  147. package/dist/query/{query.d.ts → simple-query-interface.d.ts} +6 -6
  148. package/dist/query/simple-query-interface.d.ts.map +1 -0
  149. package/dist/query/unit-of-work/execute-unit-of-work.d.ts +133 -0
  150. package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
  151. package/dist/query/unit-of-work/execute-unit-of-work.js +197 -0
  152. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -0
  153. package/dist/query/unit-of-work/retry-policy.d.ts +88 -0
  154. package/dist/query/unit-of-work/retry-policy.d.ts.map +1 -0
  155. package/dist/query/unit-of-work/retry-policy.js +61 -0
  156. package/dist/query/unit-of-work/retry-policy.js.map +1 -0
  157. package/dist/query/{unit-of-work.d.ts → unit-of-work/unit-of-work.d.ts} +145 -58
  158. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -0
  159. package/dist/query/{unit-of-work.js → unit-of-work/unit-of-work.js} +435 -198
  160. package/dist/query/unit-of-work/unit-of-work.js.map +1 -0
  161. package/dist/query/value-decoding.js +71 -0
  162. package/dist/query/value-decoding.js.map +1 -0
  163. package/dist/query/value-encoding.js +124 -0
  164. package/dist/query/value-encoding.js.map +1 -0
  165. package/dist/schema/create.d.ts +3 -0
  166. package/dist/schema/create.d.ts.map +1 -1
  167. package/dist/schema/create.js +4 -0
  168. package/dist/schema/create.js.map +1 -1
  169. package/dist/schema/type-conversion/create-sql-type-mapper.js +29 -0
  170. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -0
  171. package/dist/schema/type-conversion/dialect/mysql.js +57 -0
  172. package/dist/schema/type-conversion/dialect/mysql.js.map +1 -0
  173. package/dist/schema/type-conversion/dialect/postgres.js +56 -0
  174. package/dist/schema/type-conversion/dialect/postgres.js.map +1 -0
  175. package/dist/schema/type-conversion/dialect/sqlite.js +52 -0
  176. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -0
  177. package/dist/schema/type-conversion/type-mapping.js +63 -0
  178. package/dist/schema/type-conversion/type-mapping.js.map +1 -0
  179. package/dist/sql-driver/connection/connection-provider.d.ts +13 -0
  180. package/dist/sql-driver/connection/connection-provider.d.ts.map +1 -0
  181. package/dist/sql-driver/connection/connection-provider.js +19 -0
  182. package/dist/sql-driver/connection/connection-provider.js.map +1 -0
  183. package/dist/sql-driver/connection/single-connection-provider.js +23 -0
  184. package/dist/sql-driver/connection/single-connection-provider.js.map +1 -0
  185. package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
  186. package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
  187. package/dist/sql-driver/dialects/dialects.d.ts +2 -0
  188. package/dist/sql-driver/dialects/dialects.js +3 -0
  189. package/dist/sql-driver/dialects/durable-object-dialect.d.ts +72 -0
  190. package/dist/sql-driver/dialects/durable-object-dialect.d.ts.map +1 -0
  191. package/dist/sql-driver/dialects/durable-object-dialect.js +130 -0
  192. package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -0
  193. package/dist/sql-driver/driver/runtime-driver.d.ts +23 -0
  194. package/dist/sql-driver/driver/runtime-driver.d.ts.map +1 -0
  195. package/dist/sql-driver/driver/runtime-driver.js +56 -0
  196. package/dist/sql-driver/driver/runtime-driver.js.map +1 -0
  197. package/dist/sql-driver/query-executor/default-query-executor.js +26 -0
  198. package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -0
  199. package/dist/sql-driver/query-executor/plugin.d.ts +17 -0
  200. package/dist/sql-driver/query-executor/plugin.d.ts.map +1 -0
  201. package/dist/sql-driver/query-executor/query-executor-base.js +25 -0
  202. package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -0
  203. package/dist/sql-driver/query-executor/query-executor.d.ts +36 -0
  204. package/dist/sql-driver/query-executor/query-executor.d.ts.map +1 -0
  205. package/dist/sql-driver/sql-driver-adapter.d.ts +29 -0
  206. package/dist/sql-driver/sql-driver-adapter.d.ts.map +1 -0
  207. package/dist/sql-driver/sql-driver-adapter.js +68 -0
  208. package/dist/sql-driver/sql-driver-adapter.js.map +1 -0
  209. package/dist/sql-driver/sql-driver.d.ts +38 -0
  210. package/dist/sql-driver/sql-driver.d.ts.map +1 -0
  211. package/dist/sql-driver/sql-driver.js +1 -0
  212. package/dist/sql-driver/sql.js +50 -0
  213. package/dist/sql-driver/sql.js.map +1 -0
  214. package/dist/with-database.d.ts +32 -0
  215. package/dist/with-database.d.ts.map +1 -0
  216. package/dist/with-database.js +34 -0
  217. package/dist/with-database.js.map +1 -0
  218. package/package.json +43 -9
  219. package/src/adapters/adapters.ts +23 -4
  220. package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +140 -185
  221. package/src/adapters/drizzle/{drizzle-adapter-sqlite.test.ts → drizzle-adapter-sqlite3.test.ts} +187 -55
  222. package/src/adapters/drizzle/drizzle-adapter.ts +14 -93
  223. package/src/adapters/drizzle/generate.test.ts +102 -269
  224. package/src/adapters/drizzle/generate.ts +89 -63
  225. package/src/adapters/drizzle/migrate-drizzle.test.ts +19 -0
  226. package/src/adapters/drizzle/shared.ts +0 -34
  227. package/src/adapters/drizzle/test-utils.ts +36 -5
  228. package/src/adapters/generic-sql/README.md +14 -0
  229. package/src/adapters/generic-sql/driver-config.ts +144 -0
  230. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +50 -0
  231. package/src/adapters/generic-sql/generic-sql-adapter.ts +146 -0
  232. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +130 -0
  233. package/src/adapters/generic-sql/migration/cold-kysely.ts +55 -0
  234. package/src/adapters/{kysely/migration/execute-mysql.test.ts → generic-sql/migration/dialect/mysql.test.ts} +342 -484
  235. package/src/adapters/generic-sql/migration/dialect/mysql.ts +104 -0
  236. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +1008 -0
  237. package/src/adapters/generic-sql/migration/dialect/postgres.ts +113 -0
  238. package/src/adapters/{kysely/migration/execute-sqlite.test.ts → generic-sql/migration/dialect/sqlite.test.ts} +307 -510
  239. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +189 -0
  240. package/src/adapters/generic-sql/migration/executor.ts +33 -0
  241. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +661 -0
  242. package/src/adapters/generic-sql/migration/prepared-migrations.ts +214 -0
  243. package/src/adapters/generic-sql/migration/sql-generator.ts +413 -0
  244. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +36 -0
  245. package/src/adapters/generic-sql/query/cursor-utils.ts +56 -0
  246. package/src/adapters/generic-sql/query/dialect/mysql.ts +34 -0
  247. package/src/adapters/generic-sql/query/dialect/postgres.ts +32 -0
  248. package/src/adapters/generic-sql/query/dialect/sqlite.ts +32 -0
  249. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +1568 -0
  250. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +314 -0
  251. package/src/adapters/generic-sql/query/select-builder.test.ts +256 -0
  252. package/src/adapters/generic-sql/query/select-builder.ts +137 -0
  253. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +195 -0
  254. package/src/adapters/generic-sql/query/sql-query-compiler.ts +367 -0
  255. package/src/adapters/generic-sql/query/where-builder.test.ts +744 -0
  256. package/src/adapters/generic-sql/query/where-builder.ts +211 -0
  257. package/src/adapters/generic-sql/result-interpreter.ts +102 -0
  258. package/src/adapters/generic-sql/test/generic-drizzle-adapter-sqlite3.test.ts +899 -0
  259. package/src/adapters/generic-sql/uow-decoder.test.ts +399 -0
  260. package/src/adapters/generic-sql/uow-decoder.ts +152 -0
  261. package/src/adapters/generic-sql/uow-encoder.test.ts +183 -0
  262. package/src/adapters/generic-sql/uow-encoder.ts +131 -0
  263. package/src/adapters/kysely/kysely-adapter-pglite.test.ts +90 -96
  264. package/src/adapters/kysely/kysely-adapter-sqlocal.test.ts +215 -0
  265. package/src/adapters/kysely/kysely-adapter.ts +10 -242
  266. package/src/adapters/{drizzle/drizzle-query.ts → shared/from-unit-of-work-compiler.ts} +111 -106
  267. package/src/adapters/shared/table-name-mapper.ts +50 -0
  268. package/src/adapters/shared/uow-operation-compiler.ts +211 -0
  269. package/src/db-fragment-definition-builder.test.ts +887 -0
  270. package/src/db-fragment-definition-builder.ts +737 -0
  271. package/src/db-fragment-instantiator.test.ts +543 -0
  272. package/src/db-fragment-integration.test.ts +406 -0
  273. package/src/fragments/internal-fragment.test.ts +549 -0
  274. package/src/fragments/internal-fragment.ts +249 -0
  275. package/src/hooks/hooks.test.ts +575 -0
  276. package/src/hooks/hooks.ts +179 -0
  277. package/src/migration-engine/generation-engine.test.ts +60 -27
  278. package/src/migration-engine/generation-engine.ts +99 -92
  279. package/src/mod.ts +139 -78
  280. package/src/query/column-defaults.ts +49 -0
  281. package/src/query/cursor.test.ts +147 -3
  282. package/src/query/cursor.ts +25 -8
  283. package/src/query/orm/orm.ts +1 -1
  284. package/src/query/query-type.test.ts +9 -9
  285. package/src/query/serialize/create-sql-serializer.ts +34 -0
  286. package/src/query/serialize/dialect/mysql-serializer.ts +142 -0
  287. package/src/query/serialize/dialect/postgres-serializer.ts +129 -0
  288. package/src/query/serialize/dialect/sqlite-serializer.test.ts +251 -0
  289. package/src/query/serialize/dialect/sqlite-serializer.ts +156 -0
  290. package/src/query/serialize/sql-serializer.ts +143 -0
  291. package/src/query/{query.ts → simple-query-interface.ts} +4 -4
  292. package/src/query/unit-of-work/execute-unit-of-work.test.ts +1310 -0
  293. package/src/query/unit-of-work/execute-unit-of-work.ts +504 -0
  294. package/src/query/unit-of-work/retry-policy.test.ts +217 -0
  295. package/src/query/unit-of-work/retry-policy.ts +141 -0
  296. package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +831 -0
  297. package/src/query/{unit-of-work-types.test.ts → unit-of-work/unit-of-work-types.test.ts} +7 -5
  298. package/src/query/unit-of-work/unit-of-work.test.ts +1716 -0
  299. package/src/query/{unit-of-work.ts → unit-of-work/unit-of-work.ts} +716 -420
  300. package/src/query/{result-transform.test.ts → value-decoding.test.ts} +45 -298
  301. package/src/query/value-decoding.ts +113 -0
  302. package/src/query/value-encoding.test.ts +390 -0
  303. package/src/query/value-encoding.ts +168 -0
  304. package/src/schema/create.test.ts +5 -1
  305. package/src/schema/create.ts +5 -0
  306. package/src/schema/serialize.test.ts +165 -407
  307. package/src/schema/type-conversion/create-sql-type-mapper.ts +28 -0
  308. package/src/schema/type-conversion/dialect/mysql.ts +64 -0
  309. package/src/schema/type-conversion/dialect/postgres.ts +62 -0
  310. package/src/schema/type-conversion/dialect/sqlite.ts +63 -0
  311. package/src/schema/type-conversion/type-mapping.test.ts +137 -0
  312. package/src/schema/type-conversion/type-mapping.ts +153 -0
  313. package/src/shared/connection-pool.ts +5 -5
  314. package/src/sql-driver/better-sqlite3.test.ts +126 -0
  315. package/src/sql-driver/connection/connection-provider.ts +27 -0
  316. package/src/sql-driver/connection/single-connection-provider.ts +42 -0
  317. package/src/sql-driver/dialect-adapter/dialect-adapter.ts +9 -0
  318. package/src/sql-driver/dialect-adapter/sqlite-dialect-adapter.ts +7 -0
  319. package/src/sql-driver/dialects/dialects.ts +1 -0
  320. package/src/sql-driver/dialects/durable-object-dialect.ts +260 -0
  321. package/src/sql-driver/driver/runtime-driver.ts +91 -0
  322. package/src/sql-driver/query-executor/default-query-executor.ts +38 -0
  323. package/src/sql-driver/query-executor/plugin.ts +22 -0
  324. package/src/sql-driver/query-executor/query-executor-base.ts +53 -0
  325. package/src/sql-driver/query-executor/query-executor.ts +44 -0
  326. package/src/sql-driver/sql-driver-adapter.ts +96 -0
  327. package/src/sql-driver/sql-driver.ts +53 -0
  328. package/src/sql-driver/sql.ts +57 -0
  329. package/src/sql-driver/sqlocal.test.ts +117 -0
  330. package/src/with-database.ts +152 -0
  331. package/tsdown.config.ts +8 -2
  332. package/dist/adapters/drizzle/drizzle-connection-pool.js +0 -40
  333. package/dist/adapters/drizzle/drizzle-connection-pool.js.map +0 -1
  334. package/dist/adapters/drizzle/drizzle-query.d.ts +0 -23
  335. package/dist/adapters/drizzle/drizzle-query.d.ts.map +0 -1
  336. package/dist/adapters/drizzle/drizzle-query.js.map +0 -1
  337. package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts +0 -10
  338. package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts.map +0 -1
  339. package/dist/adapters/drizzle/drizzle-uow-compiler.js +0 -315
  340. package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +0 -1
  341. package/dist/adapters/drizzle/drizzle-uow-decoder.js +0 -116
  342. package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +0 -1
  343. package/dist/adapters/drizzle/drizzle-uow-executor.js +0 -149
  344. package/dist/adapters/drizzle/drizzle-uow-executor.js.map +0 -1
  345. package/dist/adapters/drizzle/join-column-utils.js +0 -28
  346. package/dist/adapters/drizzle/join-column-utils.js.map +0 -1
  347. package/dist/adapters/drizzle/shared.d.ts +0 -14
  348. package/dist/adapters/drizzle/shared.d.ts.map +0 -1
  349. package/dist/adapters/drizzle/shared.js +0 -35
  350. package/dist/adapters/drizzle/shared.js.map +0 -1
  351. package/dist/adapters/kysely/kysely-connection-pool.js +0 -41
  352. package/dist/adapters/kysely/kysely-connection-pool.js.map +0 -1
  353. package/dist/adapters/kysely/kysely-query-builder.js +0 -321
  354. package/dist/adapters/kysely/kysely-query-builder.js.map +0 -1
  355. package/dist/adapters/kysely/kysely-query-compiler.js +0 -66
  356. package/dist/adapters/kysely/kysely-query-compiler.js.map +0 -1
  357. package/dist/adapters/kysely/kysely-query.d.ts +0 -22
  358. package/dist/adapters/kysely/kysely-query.d.ts.map +0 -1
  359. package/dist/adapters/kysely/kysely-query.js +0 -223
  360. package/dist/adapters/kysely/kysely-query.js.map +0 -1
  361. package/dist/adapters/kysely/kysely-shared.d.ts.map +0 -1
  362. package/dist/adapters/kysely/kysely-shared.js +0 -18
  363. package/dist/adapters/kysely/kysely-shared.js.map +0 -1
  364. package/dist/adapters/kysely/kysely-uow-compiler.js +0 -170
  365. package/dist/adapters/kysely/kysely-uow-compiler.js.map +0 -1
  366. package/dist/adapters/kysely/kysely-uow-executor.js +0 -89
  367. package/dist/adapters/kysely/kysely-uow-executor.js.map +0 -1
  368. package/dist/adapters/kysely/migration/execute-base.js +0 -128
  369. package/dist/adapters/kysely/migration/execute-base.js.map +0 -1
  370. package/dist/adapters/kysely/migration/execute-factory.js +0 -34
  371. package/dist/adapters/kysely/migration/execute-factory.js.map +0 -1
  372. package/dist/adapters/kysely/migration/execute-mssql.js +0 -112
  373. package/dist/adapters/kysely/migration/execute-mssql.js.map +0 -1
  374. package/dist/adapters/kysely/migration/execute-mysql.js +0 -93
  375. package/dist/adapters/kysely/migration/execute-mysql.js.map +0 -1
  376. package/dist/adapters/kysely/migration/execute-postgres.js +0 -104
  377. package/dist/adapters/kysely/migration/execute-postgres.js.map +0 -1
  378. package/dist/adapters/kysely/migration/execute-sqlite.js +0 -123
  379. package/dist/adapters/kysely/migration/execute-sqlite.js.map +0 -1
  380. package/dist/adapters/kysely/migration/execute.js +0 -34
  381. package/dist/adapters/kysely/migration/execute.js.map +0 -1
  382. package/dist/bind-services.d.ts +0 -7
  383. package/dist/bind-services.d.ts.map +0 -1
  384. package/dist/bind-services.js +0 -14
  385. package/dist/bind-services.js.map +0 -1
  386. package/dist/fragment.d.ts +0 -173
  387. package/dist/fragment.d.ts.map +0 -1
  388. package/dist/fragment.js +0 -191
  389. package/dist/fragment.js.map +0 -1
  390. package/dist/migration-engine/create.d.ts +0 -37
  391. package/dist/migration-engine/create.d.ts.map +0 -1
  392. package/dist/migration-engine/create.js +0 -58
  393. package/dist/migration-engine/create.js.map +0 -1
  394. package/dist/migration-engine/shared.d.ts +0 -112
  395. package/dist/migration-engine/shared.d.ts.map +0 -1
  396. package/dist/query/query.d.ts.map +0 -1
  397. package/dist/query/result-transform.js +0 -168
  398. package/dist/query/result-transform.js.map +0 -1
  399. package/dist/query/unit-of-work.d.ts.map +0 -1
  400. package/dist/query/unit-of-work.js.map +0 -1
  401. package/dist/schema/serialize.js +0 -106
  402. package/dist/schema/serialize.js.map +0 -1
  403. package/dist/shared/settings-schema.js +0 -36
  404. package/dist/shared/settings-schema.js.map +0 -1
  405. package/src/adapters/drizzle/drizzle-adapter.test.ts +0 -170
  406. package/src/adapters/drizzle/drizzle-connection-pool.ts +0 -66
  407. package/src/adapters/drizzle/drizzle-query.test.ts +0 -499
  408. package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +0 -1383
  409. package/src/adapters/drizzle/drizzle-uow-compiler.ts +0 -636
  410. package/src/adapters/drizzle/drizzle-uow-decoder.ts +0 -218
  411. package/src/adapters/drizzle/drizzle-uow-executor.ts +0 -276
  412. package/src/adapters/drizzle/join-column-utils.test.ts +0 -79
  413. package/src/adapters/drizzle/join-column-utils.ts +0 -39
  414. package/src/adapters/kysely/kysely-connection-pool.ts +0 -70
  415. package/src/adapters/kysely/kysely-query-builder.test.ts +0 -1344
  416. package/src/adapters/kysely/kysely-query-builder.ts +0 -666
  417. package/src/adapters/kysely/kysely-query-compiler.ts +0 -132
  418. package/src/adapters/kysely/kysely-query.test.ts +0 -498
  419. package/src/adapters/kysely/kysely-query.ts +0 -390
  420. package/src/adapters/kysely/kysely-shared.ts +0 -23
  421. package/src/adapters/kysely/kysely-uow-compiler.test.ts +0 -998
  422. package/src/adapters/kysely/kysely-uow-compiler.ts +0 -318
  423. package/src/adapters/kysely/kysely-uow-executor.ts +0 -145
  424. package/src/adapters/kysely/kysely-uow-joins.test.ts +0 -811
  425. package/src/adapters/kysely/migration/execute-base.ts +0 -256
  426. package/src/adapters/kysely/migration/execute-factory.ts +0 -53
  427. package/src/adapters/kysely/migration/execute-mssql.ts +0 -250
  428. package/src/adapters/kysely/migration/execute-mysql.ts +0 -211
  429. package/src/adapters/kysely/migration/execute-postgres.test.ts +0 -2657
  430. package/src/adapters/kysely/migration/execute-postgres.ts +0 -234
  431. package/src/adapters/kysely/migration/execute-sqlite.ts +0 -247
  432. package/src/adapters/kysely/migration/execute.ts +0 -50
  433. package/src/adapters/kysely/migration/kysely-migrator.test.ts +0 -261
  434. package/src/bind-services.test.ts +0 -214
  435. package/src/bind-services.ts +0 -37
  436. package/src/db-fragment.test.ts +0 -800
  437. package/src/fragment.ts +0 -727
  438. package/src/query/result-transform.ts +0 -271
  439. package/src/query/unit-of-work-multi-schema.test.ts +0 -64
  440. package/src/query/unit-of-work.test.ts +0 -943
  441. package/src/schema/serialize.ts +0 -396
  442. package/src/shared/settings-schema.ts +0 -61
  443. package/src/uow-context-integration.test.ts +0 -102
  444. package/src/uow-context.test.ts +0 -182
  445. /package/dist/query/{query.js → simple-query-interface.js} +0 -0
@@ -0,0 +1,50 @@
1
+ import { sql } from "kysely";
2
+
3
+ //#region src/sql-driver/sql.ts
4
+ /**
5
+ * Wrapper around Kysely's RawBuilder that provides a compile() method with a dialect parameter.
6
+ */
7
+ var RawBuilder = class {
8
+ #kyselyBuilder;
9
+ constructor(kyselyBuilder) {
10
+ this.#kyselyBuilder = kyselyBuilder;
11
+ }
12
+ /**
13
+ * Compiles the SQL query using the provided Kysely dialect.
14
+ * Creates a minimal query executor with the dialect's adapter and query compiler.
15
+ *
16
+ * @param dialect - Kysely dialect (e.g., SqliteDialect, PostgresDialect, MysqlDialect)
17
+ * @returns Compiled query with SQL string and parameters
18
+ */
19
+ compile(dialect) {
20
+ const queryCompiler = dialect.createQueryCompiler();
21
+ return this.#kyselyBuilder.compile({ getExecutor() {
22
+ return {
23
+ transformQuery(node, _queryId) {
24
+ return node;
25
+ },
26
+ compileQuery(node, queryId) {
27
+ return queryCompiler.compileQuery(node, queryId);
28
+ }
29
+ };
30
+ } });
31
+ }
32
+ };
33
+ /**
34
+ * Tagged template function for building SQL queries with parameters.
35
+ * Wraps Kysely's sql function to provide a compile() method without arguments.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const userId = 123;
40
+ * const query = sql`SELECT * FROM users WHERE id = ${userId}`;
41
+ * const compiled = query.compile();
42
+ * ```
43
+ */
44
+ function sql$1(strings, ...values) {
45
+ return new RawBuilder(sql(strings, ...values));
46
+ }
47
+
48
+ //#endregion
49
+ export { sql$1 as sql };
50
+ //# sourceMappingURL=sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.js","names":["#kyselyBuilder","sql","kyselySql"],"sources":["../../src/sql-driver/sql.ts"],"sourcesContent":["import type { CompiledQuery, Dialect } from \"./sql-driver\";\nimport {\n sql as kyselySql,\n type QueryExecutor,\n type CompiledQuery as KyselyCompiledQuery,\n} from \"kysely\";\n\n/**\n * Wrapper around Kysely's RawBuilder that provides a compile() method with a dialect parameter.\n */\nexport class RawBuilder {\n #kyselyBuilder: ReturnType<typeof kyselySql>;\n\n constructor(kyselyBuilder: ReturnType<typeof kyselySql>) {\n this.#kyselyBuilder = kyselyBuilder;\n }\n\n /**\n * Compiles the SQL query using the provided Kysely dialect.\n * Creates a minimal query executor with the dialect's adapter and query compiler.\n *\n * @param dialect - Kysely dialect (e.g., SqliteDialect, PostgresDialect, MysqlDialect)\n * @returns Compiled query with SQL string and parameters\n */\n compile(dialect: Dialect): CompiledQuery {\n const queryCompiler = dialect.createQueryCompiler();\n\n return this.#kyselyBuilder.compile({\n getExecutor(): QueryExecutor {\n return {\n transformQuery(node, _queryId) {\n return node;\n },\n compileQuery(node, queryId) {\n return queryCompiler.compileQuery(node, queryId) as KyselyCompiledQuery;\n },\n } as QueryExecutor;\n },\n });\n }\n}\n\n/**\n * Tagged template function for building SQL queries with parameters.\n * Wraps Kysely's sql function to provide a compile() method without arguments.\n *\n * @example\n * ```ts\n * const userId = 123;\n * const query = sql`SELECT * FROM users WHERE id = ${userId}`;\n * const compiled = query.compile();\n * ```\n */\nexport function sql(strings: TemplateStringsArray, ...values: unknown[]): RawBuilder {\n const kyselyBuilder = kyselySql(strings, ...values);\n return new RawBuilder(kyselyBuilder);\n}\n"],"mappings":";;;;;;AAUA,IAAa,aAAb,MAAwB;CACtB;CAEA,YAAY,eAA6C;AACvD,QAAKA,gBAAiB;;;;;;;;;CAUxB,QAAQ,SAAiC;EACvC,MAAM,gBAAgB,QAAQ,qBAAqB;AAEnD,SAAO,MAAKA,cAAe,QAAQ,EACjC,cAA6B;AAC3B,UAAO;IACL,eAAe,MAAM,UAAU;AAC7B,YAAO;;IAET,aAAa,MAAM,SAAS;AAC1B,YAAO,cAAc,aAAa,MAAM,QAAQ;;IAEnD;KAEJ,CAAC;;;;;;;;;;;;;;AAeN,SAAgBC,MAAI,SAA+B,GAAG,QAA+B;AAEnF,QAAO,IAAI,WADWC,IAAU,SAAS,GAAG,OAAO,CACf"}
@@ -0,0 +1,32 @@
1
+ import { AnySchema } from "./schema/create.js";
2
+ import { DatabaseFragmentDefinitionBuilder, DatabaseHandlerContext, DatabaseServiceContext, ImplicitDatabaseDependencies } from "./db-fragment-definition-builder.js";
3
+ import { InternalFragmentInstance } from "./fragments/internal-fragment.js";
4
+ import { HooksMap } from "./hooks/hooks.js";
5
+ import { AnyFragnoInstantiatedFragment, FragmentDefinitionBuilder, FragnoPublicConfig, RequestThisContext } from "@fragno-dev/core";
6
+
7
+ //#region src/with-database.d.ts
8
+
9
+ /**
10
+ * Helper to add database support to a fragment builder.
11
+ * Automatically links the internal fragment and adds ImplicitDatabaseDependencies to the TDeps type.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // With .extend() - recommended
16
+ * const def = defineFragment("my-frag")
17
+ * .extend(withDatabase(mySchema))
18
+ * .withDependencies(...)
19
+ * .build();
20
+ *
21
+ * // Or as a function wrapper
22
+ * const def = withDatabase(mySchema)(defineFragment("my-frag"))
23
+ * .withDependencies(...)
24
+ * .build();
25
+ * ```
26
+ */
27
+ declare function withDatabase<TSchema extends AnySchema>(schema: TSchema, namespace?: string): <TConfig, TDeps, TBaseServices, TServices, TServiceDeps, TPrivateServices, TServiceThisContext extends RequestThisContext, THandlerThisContext extends RequestThisContext, TRequestStorage, TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>>(builder: FragmentDefinitionBuilder<TConfig, FragnoPublicConfig, TDeps, TBaseServices, TServices, TServiceDeps, TPrivateServices, TServiceThisContext, THandlerThisContext, TRequestStorage, TLinkedFragments>) => DatabaseFragmentDefinitionBuilder<TSchema, TConfig, TDeps & ImplicitDatabaseDependencies<TSchema>, TBaseServices, TServices, TServiceDeps, TPrivateServices, HooksMap, DatabaseServiceContext<HooksMap>, DatabaseHandlerContext, TLinkedFragments & {
28
+ _fragno_internal: InternalFragmentInstance;
29
+ }>;
30
+ //#endregion
31
+ export { withDatabase };
32
+ //# sourceMappingURL=with-database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-database.d.ts","names":[],"sources":["../src/with-database.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAoCA;;;;;;;;;;;;;;;;;AA0BI,iBA1BY,YA0BZ,CAAA,gBA1ByC,SA0BzC,CAAA,CAAA,MAAA,EAzBM,OAyBN,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,4BAhB0B,kBAgB1B,EAAA,4BAf0B,kBAe1B,EAAA,eAAA,EAAA,yBAbuB,MAavB,CAAA,MAAA,EAbsC,6BAatC,CAAA,CAAA,CAAA,OAAA,EAXO,yBAWP,CAVA,OAUA,EATA,kBASA,EARA,KAQA,EAPA,aAOA,EANA,SAMA,EALA,YAKA,EAJA,gBAIA,EAHA,mBAGA,EAFA,mBAEA,EADA,eACA,EAAA,gBAAA,CAAA,EAAA,GAEC,iCAFD,CAGF,OAHE,EAIF,OAJE,EAKF,KALE,GAKM,4BALN,CAKmC,OALnC,CAAA,EAMF,aANE,EAOF,SAPE,EAQF,YARE,EASF,gBATE,EAUF,QAVE,EAWF,sBAXE,CAWqB,QAXrB,CAAA,EAYF,sBAZE,EAaF,gBAbE,GAAA;EAXO,gBAAA,EAwB8B,wBAxB9B;CAcT,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { instantiate } from "./packages/fragno/dist/api/fragment-instantiator.js";
2
+ import { DatabaseFragmentDefinitionBuilder } from "./db-fragment-definition-builder.js";
3
+ import { internalFragmentDef } from "./fragments/internal-fragment.js";
4
+
5
+ //#region src/with-database.ts
6
+ /**
7
+ * Helper to add database support to a fragment builder.
8
+ * Automatically links the internal fragment and adds ImplicitDatabaseDependencies to the TDeps type.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * // With .extend() - recommended
13
+ * const def = defineFragment("my-frag")
14
+ * .extend(withDatabase(mySchema))
15
+ * .withDependencies(...)
16
+ * .build();
17
+ *
18
+ * // Or as a function wrapper
19
+ * const def = withDatabase(mySchema)(defineFragment("my-frag"))
20
+ * .withDependencies(...)
21
+ * .build();
22
+ * ```
23
+ */
24
+ function withDatabase(schema, namespace) {
25
+ return (builder) => {
26
+ return new DatabaseFragmentDefinitionBuilder(builder.withLinkedFragment("_fragno_internal", ({ config, options }) => {
27
+ return instantiate(internalFragmentDef).withConfig(config).withOptions(options).build();
28
+ }), schema, namespace);
29
+ };
30
+ }
31
+
32
+ //#endregion
33
+ export { withDatabase };
34
+ //# sourceMappingURL=with-database.js.map
@@ -0,0 +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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fragno-dev/db",
3
- "version": "0.1.14",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -18,10 +18,30 @@
18
18
  "types": "./dist/schema/create.d.ts",
19
19
  "default": "./dist/schema/create.js"
20
20
  },
21
+ "./drivers": {
22
+ "development": "./src/adapters/generic-sql/driver-config.ts",
23
+ "types": "./dist/adapters/generic-sql/driver-config.d.ts",
24
+ "default": "./dist/adapters/generic-sql/driver-config.js"
25
+ },
26
+ "./sql-driver": {
27
+ "development": "./src/sql-driver/sql-driver.ts",
28
+ "types": "./dist/sql-driver/sql-driver.d.ts",
29
+ "default": "./dist/sql-driver/sql-driver.js"
30
+ },
31
+ "./dialects": {
32
+ "development": "./src/sql-driver/dialects/dialects.ts",
33
+ "types": "./dist/sql-driver/dialects/dialects.d.ts",
34
+ "default": "./dist/sql-driver/dialects/dialects.js"
35
+ },
36
+ "./dialects/durable-object": {
37
+ "development": "./src/sql-driver/dialects/durable-object-dialect.ts",
38
+ "types": "./dist/sql-driver/dialects/durable-object-dialect.d.ts",
39
+ "default": "./dist/sql-driver/dialects/durable-object-dialect.js"
40
+ },
21
41
  "./query": {
22
- "development": "./src/query/query.ts",
23
- "types": "./dist/query/query.d.ts",
24
- "default": "./dist/query/query.js"
42
+ "development": "./src/query/simple-query-interface.ts",
43
+ "types": "./dist/query/simple-query-interface.d.ts",
44
+ "default": "./dist/query/simple-query-interface.js"
25
45
  },
26
46
  "./adapters": {
27
47
  "development": "./src/adapters/adapters.ts",
@@ -43,10 +63,15 @@
43
63
  "types": "./dist/adapters/drizzle/generate.d.ts",
44
64
  "default": "./dist/adapters/drizzle/generate.js"
45
65
  },
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"
70
+ },
46
71
  "./unit-of-work": {
47
- "development": "./src/query/unit-of-work.ts",
48
- "types": "./dist/query/unit-of-work.d.ts",
49
- "default": "./dist/query/unit-of-work.js"
72
+ "development": "./src/query/unit-of-work/unit-of-work.ts",
73
+ "types": "./dist/query/unit-of-work/unit-of-work.d.ts",
74
+ "default": "./dist/query/unit-of-work/unit-of-work.js"
50
75
  },
51
76
  "./cursor": {
52
77
  "development": "./src/query/cursor.ts",
@@ -58,6 +83,11 @@
58
83
  "types": "./dist/fragment.d.ts",
59
84
  "default": "./dist/fragment.js"
60
85
  },
86
+ "./fragment-definition-builder": {
87
+ "development": "./src/db-fragment-definition-builder.ts",
88
+ "types": "./dist/db-fragment-definition-builder.d.ts",
89
+ "default": "./dist/db-fragment-definition-builder.js"
90
+ },
61
91
  "./generation-engine": {
62
92
  "development": "./src/migration-engine/generation-engine.ts",
63
93
  "types": "./dist/migration-engine/generation-engine.d.ts",
@@ -67,14 +97,18 @@
67
97
  "devDependencies": {
68
98
  "@electric-sql/pglite": "^0.3.10",
69
99
  "@libsql/client": "^0.15.15",
100
+ "@types/better-sqlite3": "^7.6.13",
70
101
  "@types/node": "^22",
71
102
  "@vitest/coverage-istanbul": "^3.2.4",
103
+ "better-sqlite3": "^12.5.0",
72
104
  "drizzle-kit": "^0.31.5",
73
105
  "drizzle-orm": "^0.44.6",
74
106
  "kysely-pglite": "^0.6.1",
107
+ "mysql2": "^3.11.5",
108
+ "sqlocal": "^0.15.2",
75
109
  "vitest": "^3.2.4",
76
110
  "zod": "^4.1.12",
77
- "@fragno-dev/core": "0.1.8",
111
+ "@fragno-dev/core": "0.1.11",
78
112
  "@fragno-private/typescript-config": "0.0.1",
79
113
  "@fragno-private/vitest-config": "0.0.0"
80
114
  },
@@ -86,7 +120,7 @@
86
120
  "homepage": "https://fragno.dev",
87
121
  "license": "MIT",
88
122
  "dependencies": {
89
- "@paralleldrive/cuid2": "^2.2.2",
123
+ "@paralleldrive/cuid2": "^2.3.1",
90
124
  "kysely": "^0.28.7"
91
125
  },
92
126
  "peerDependencies": {
@@ -1,11 +1,21 @@
1
- import type { Migrator } from "../migration-engine/create";
2
- import type { AbstractQuery } from "../query/query";
1
+ import type { SimpleQueryInterface } from "../query/simple-query-interface";
3
2
  import type { SchemaGenerator } from "../schema-generator/schema-generator";
4
3
  import type { AnySchema } from "../schema/create";
4
+ import type { RequestContextStorage } from "@fragno-dev/core/internal/request-context-storage";
5
+ import type { IUnitOfWork } from "../query/unit-of-work/unit-of-work";
6
+ import type { PreparedMigrations } from "./generic-sql/migration/prepared-migrations";
5
7
 
6
8
  export const fragnoDatabaseAdapterNameFakeSymbol = "$fragno-database-adapter-name" as const;
7
9
  export const fragnoDatabaseAdapterVersionFakeSymbol = "$fragno-database-adapter-version" as const;
8
10
 
11
+ /**
12
+ * Storage type for database context - stores the Unit of Work.
13
+ * This is shared across all fragments using the same adapter.
14
+ */
15
+ export type DatabaseContextStorage = {
16
+ uow: IUnitOfWork;
17
+ };
18
+
9
19
  /**
10
20
  * Maps logical table names (used by fragment authors) to physical table names (with namespace suffix)
11
21
  */
@@ -18,6 +28,12 @@ export interface DatabaseAdapter<TUOWConfig = void> {
18
28
  [fragnoDatabaseAdapterNameFakeSymbol]: string;
19
29
  [fragnoDatabaseAdapterVersionFakeSymbol]: number;
20
30
 
31
+ /**
32
+ * Request context storage shared across all fragments using this adapter.
33
+ * This allows multiple fragments to participate in the same Unit of Work.
34
+ */
35
+ readonly contextStorage: RequestContextStorage<DatabaseContextStorage>;
36
+
21
37
  /**
22
38
  * Get current schema version, undefined if not initialized.
23
39
  */
@@ -26,9 +42,12 @@ export interface DatabaseAdapter<TUOWConfig = void> {
26
42
  createQueryEngine: <const T extends AnySchema>(
27
43
  schema: T,
28
44
  namespace: string,
29
- ) => AbstractQuery<T, TUOWConfig>;
45
+ ) => SimpleQueryInterface<T, TUOWConfig>;
30
46
 
31
- createMigrationEngine?: <const T extends AnySchema>(schema: T, namespace: string) => Migrator;
47
+ prepareMigrations?: <const T extends AnySchema>(
48
+ schema: T,
49
+ namespace: string,
50
+ ) => PreparedMigrations;
32
51
 
33
52
  /**
34
53
  * Generate a combined schema file from one or more fragments.