@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.
- package/.turbo/turbo-build.log +242 -139
- package/CHANGELOG.md +47 -0
- package/README.md +123 -8
- package/dist/adapters/adapters.d.ts +19 -5
- package/dist/adapters/adapters.d.ts.map +1 -1
- package/dist/adapters/adapters.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.d.ts +6 -19
- package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.js +7 -47
- package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
- package/dist/adapters/drizzle/generate.d.ts +7 -1
- package/dist/adapters/drizzle/generate.d.ts.map +1 -1
- package/dist/adapters/drizzle/generate.js +46 -45
- package/dist/adapters/drizzle/generate.js.map +1 -1
- package/dist/adapters/generic-sql/driver-config.d.ts +74 -0
- package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -0
- package/dist/adapters/generic-sql/driver-config.js +94 -0
- package/dist/adapters/generic-sql/driver-config.js.map +1 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +43 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.js +87 -0
- package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -0
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js +67 -0
- package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -0
- package/dist/adapters/generic-sql/migration/cold-kysely.js +33 -0
- package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -0
- package/dist/adapters/generic-sql/migration/dialect/mysql.js +60 -0
- package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -0
- package/dist/adapters/generic-sql/migration/dialect/postgres.js +59 -0
- package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -0
- package/dist/adapters/generic-sql/migration/dialect/sqlite.js +96 -0
- package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -0
- package/dist/adapters/generic-sql/migration/executor.d.ts +15 -0
- package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -0
- package/dist/adapters/generic-sql/migration/executor.js +18 -0
- package/dist/adapters/generic-sql/migration/executor.js.map +1 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.js +68 -0
- package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -0
- package/dist/adapters/generic-sql/migration/sql-generator.js +212 -0
- package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -0
- package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +32 -0
- package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -0
- package/dist/adapters/generic-sql/query/cursor-utils.js +37 -0
- package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -0
- package/dist/adapters/generic-sql/query/dialect/mysql.js +33 -0
- package/dist/adapters/generic-sql/query/dialect/mysql.js.map +1 -0
- package/dist/adapters/generic-sql/query/dialect/postgres.js +32 -0
- package/dist/adapters/generic-sql/query/dialect/postgres.js.map +1 -0
- package/dist/adapters/generic-sql/query/dialect/sqlite.js +32 -0
- package/dist/adapters/generic-sql/query/dialect/sqlite.js.map +1 -0
- package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +152 -0
- package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -0
- package/dist/adapters/generic-sql/query/select-builder.js +69 -0
- package/dist/adapters/generic-sql/query/select-builder.js.map +1 -0
- package/dist/adapters/generic-sql/query/sql-query-compiler.js +145 -0
- package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -0
- package/dist/adapters/generic-sql/query/where-builder.js +129 -0
- package/dist/adapters/generic-sql/query/where-builder.js.map +1 -0
- package/dist/adapters/generic-sql/result-interpreter.js +74 -0
- package/dist/adapters/generic-sql/result-interpreter.js.map +1 -0
- package/dist/adapters/generic-sql/uow-decoder.js +105 -0
- package/dist/adapters/generic-sql/uow-decoder.js.map +1 -0
- package/dist/adapters/generic-sql/uow-encoder.js +93 -0
- package/dist/adapters/generic-sql/uow-encoder.js.map +1 -0
- package/dist/adapters/kysely/kysely-adapter.d.ts +5 -16
- package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
- package/dist/adapters/kysely/kysely-adapter.js +6 -159
- package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
- package/dist/adapters/{drizzle/drizzle-query.js → shared/from-unit-of-work-compiler.js} +48 -62
- package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -0
- package/dist/adapters/{kysely/kysely-shared.d.ts → shared/table-name-mapper.d.ts} +3 -2
- package/dist/adapters/shared/table-name-mapper.d.ts.map +1 -0
- package/dist/adapters/shared/table-name-mapper.js +43 -0
- package/dist/adapters/shared/table-name-mapper.js.map +1 -0
- package/dist/adapters/shared/uow-operation-compiler.js +105 -0
- package/dist/adapters/shared/uow-operation-compiler.js.map +1 -0
- package/dist/db-fragment-definition-builder.d.ts +186 -0
- package/dist/db-fragment-definition-builder.d.ts.map +1 -0
- package/dist/db-fragment-definition-builder.js +207 -0
- package/dist/db-fragment-definition-builder.js.map +1 -0
- package/dist/fragments/internal-fragment.d.ts +53 -0
- package/dist/fragments/internal-fragment.d.ts.map +1 -0
- package/dist/fragments/internal-fragment.js +111 -0
- package/dist/fragments/internal-fragment.js.map +1 -0
- package/dist/hooks/hooks.d.ts +51 -0
- package/dist/hooks/hooks.d.ts.map +1 -0
- package/dist/hooks/hooks.js +88 -0
- package/dist/hooks/hooks.js.map +1 -0
- package/dist/migration-engine/generation-engine.d.ts +0 -2
- package/dist/migration-engine/generation-engine.d.ts.map +1 -1
- package/dist/migration-engine/generation-engine.js +38 -56
- package/dist/migration-engine/generation-engine.js.map +1 -1
- package/dist/mod.d.ts +35 -23
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +48 -45
- package/dist/mod.js.map +1 -1
- package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js +165 -0
- package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +1 -0
- package/dist/packages/fragno/dist/api/bind-services.js +20 -0
- package/dist/packages/fragno/dist/api/bind-services.js.map +1 -0
- package/dist/packages/fragno/dist/api/error.js +48 -0
- package/dist/packages/fragno/dist/api/error.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragment-definition-builder.js +320 -0
- package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragment-instantiator.js +525 -0
- package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -0
- package/dist/packages/fragno/dist/api/fragno-response.js +73 -0
- package/dist/packages/fragno/dist/api/fragno-response.js.map +1 -0
- package/dist/packages/fragno/dist/api/internal/response-stream.js +81 -0
- package/dist/packages/fragno/dist/api/internal/response-stream.js.map +1 -0
- package/dist/packages/fragno/dist/api/internal/route.js +10 -0
- package/dist/packages/fragno/dist/api/internal/route.js.map +1 -0
- package/dist/packages/fragno/dist/api/mutable-request-state.js +97 -0
- package/dist/packages/fragno/dist/api/mutable-request-state.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-context-storage.js +43 -0
- package/dist/packages/fragno/dist/api/request-context-storage.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-input-context.js +118 -0
- package/dist/packages/fragno/dist/api/request-input-context.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-middleware.js +83 -0
- package/dist/packages/fragno/dist/api/request-middleware.js.map +1 -0
- package/dist/packages/fragno/dist/api/request-output-context.js +119 -0
- package/dist/packages/fragno/dist/api/request-output-context.js.map +1 -0
- package/dist/packages/fragno/dist/api/route.js +17 -0
- package/dist/packages/fragno/dist/api/route.js.map +1 -0
- package/dist/packages/fragno/dist/internal/symbols.js +10 -0
- package/dist/packages/fragno/dist/internal/symbols.js.map +1 -0
- package/dist/query/column-defaults.js +27 -0
- package/dist/query/column-defaults.js.map +1 -0
- package/dist/query/cursor.d.ts +14 -6
- package/dist/query/cursor.d.ts.map +1 -1
- package/dist/query/cursor.js +16 -7
- package/dist/query/cursor.js.map +1 -1
- package/dist/query/orm/orm.d.ts +1 -1
- package/dist/query/orm/orm.js.map +1 -1
- package/dist/query/serialize/create-sql-serializer.js +30 -0
- package/dist/query/serialize/create-sql-serializer.js.map +1 -0
- package/dist/query/serialize/dialect/mysql-serializer.js +87 -0
- package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -0
- package/dist/query/serialize/dialect/postgres-serializer.js +80 -0
- package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -0
- package/dist/query/serialize/dialect/sqlite-serializer.js +93 -0
- package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -0
- package/dist/query/serialize/sql-serializer.js +67 -0
- package/dist/query/serialize/sql-serializer.js.map +1 -0
- package/dist/query/{query.d.ts → simple-query-interface.d.ts} +6 -6
- package/dist/query/simple-query-interface.d.ts.map +1 -0
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts +133 -0
- package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
- package/dist/query/unit-of-work/execute-unit-of-work.js +197 -0
- package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -0
- package/dist/query/unit-of-work/retry-policy.d.ts +88 -0
- package/dist/query/unit-of-work/retry-policy.d.ts.map +1 -0
- package/dist/query/unit-of-work/retry-policy.js +61 -0
- package/dist/query/unit-of-work/retry-policy.js.map +1 -0
- package/dist/query/{unit-of-work.d.ts → unit-of-work/unit-of-work.d.ts} +145 -58
- package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -0
- package/dist/query/{unit-of-work.js → unit-of-work/unit-of-work.js} +435 -198
- package/dist/query/unit-of-work/unit-of-work.js.map +1 -0
- package/dist/query/value-decoding.js +71 -0
- package/dist/query/value-decoding.js.map +1 -0
- package/dist/query/value-encoding.js +124 -0
- package/dist/query/value-encoding.js.map +1 -0
- package/dist/schema/create.d.ts +3 -0
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/create.js +4 -0
- package/dist/schema/create.js.map +1 -1
- package/dist/schema/type-conversion/create-sql-type-mapper.js +29 -0
- package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -0
- package/dist/schema/type-conversion/dialect/mysql.js +57 -0
- package/dist/schema/type-conversion/dialect/mysql.js.map +1 -0
- package/dist/schema/type-conversion/dialect/postgres.js +56 -0
- package/dist/schema/type-conversion/dialect/postgres.js.map +1 -0
- package/dist/schema/type-conversion/dialect/sqlite.js +52 -0
- package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -0
- package/dist/schema/type-conversion/type-mapping.js +63 -0
- package/dist/schema/type-conversion/type-mapping.js.map +1 -0
- package/dist/sql-driver/connection/connection-provider.d.ts +13 -0
- package/dist/sql-driver/connection/connection-provider.d.ts.map +1 -0
- package/dist/sql-driver/connection/connection-provider.js +19 -0
- package/dist/sql-driver/connection/connection-provider.js.map +1 -0
- package/dist/sql-driver/connection/single-connection-provider.js +23 -0
- package/dist/sql-driver/connection/single-connection-provider.js.map +1 -0
- package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
- package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
- package/dist/sql-driver/dialects/dialects.d.ts +2 -0
- package/dist/sql-driver/dialects/dialects.js +3 -0
- package/dist/sql-driver/dialects/durable-object-dialect.d.ts +72 -0
- package/dist/sql-driver/dialects/durable-object-dialect.d.ts.map +1 -0
- package/dist/sql-driver/dialects/durable-object-dialect.js +130 -0
- package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -0
- package/dist/sql-driver/driver/runtime-driver.d.ts +23 -0
- package/dist/sql-driver/driver/runtime-driver.d.ts.map +1 -0
- package/dist/sql-driver/driver/runtime-driver.js +56 -0
- package/dist/sql-driver/driver/runtime-driver.js.map +1 -0
- package/dist/sql-driver/query-executor/default-query-executor.js +26 -0
- package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -0
- package/dist/sql-driver/query-executor/plugin.d.ts +17 -0
- package/dist/sql-driver/query-executor/plugin.d.ts.map +1 -0
- package/dist/sql-driver/query-executor/query-executor-base.js +25 -0
- package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -0
- package/dist/sql-driver/query-executor/query-executor.d.ts +36 -0
- package/dist/sql-driver/query-executor/query-executor.d.ts.map +1 -0
- package/dist/sql-driver/sql-driver-adapter.d.ts +29 -0
- package/dist/sql-driver/sql-driver-adapter.d.ts.map +1 -0
- package/dist/sql-driver/sql-driver-adapter.js +68 -0
- package/dist/sql-driver/sql-driver-adapter.js.map +1 -0
- package/dist/sql-driver/sql-driver.d.ts +38 -0
- package/dist/sql-driver/sql-driver.d.ts.map +1 -0
- package/dist/sql-driver/sql-driver.js +1 -0
- package/dist/sql-driver/sql.js +50 -0
- package/dist/sql-driver/sql.js.map +1 -0
- package/dist/with-database.d.ts +32 -0
- package/dist/with-database.d.ts.map +1 -0
- package/dist/with-database.js +34 -0
- package/dist/with-database.js.map +1 -0
- package/package.json +43 -9
- package/src/adapters/adapters.ts +23 -4
- package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +140 -185
- package/src/adapters/drizzle/{drizzle-adapter-sqlite.test.ts → drizzle-adapter-sqlite3.test.ts} +187 -55
- package/src/adapters/drizzle/drizzle-adapter.ts +14 -93
- package/src/adapters/drizzle/generate.test.ts +102 -269
- package/src/adapters/drizzle/generate.ts +89 -63
- package/src/adapters/drizzle/migrate-drizzle.test.ts +19 -0
- package/src/adapters/drizzle/shared.ts +0 -34
- package/src/adapters/drizzle/test-utils.ts +36 -5
- package/src/adapters/generic-sql/README.md +14 -0
- package/src/adapters/generic-sql/driver-config.ts +144 -0
- package/src/adapters/generic-sql/generic-sql-adapter.test.ts +50 -0
- package/src/adapters/generic-sql/generic-sql-adapter.ts +146 -0
- package/src/adapters/generic-sql/generic-sql-uow-executor.ts +130 -0
- package/src/adapters/generic-sql/migration/cold-kysely.ts +55 -0
- package/src/adapters/{kysely/migration/execute-mysql.test.ts → generic-sql/migration/dialect/mysql.test.ts} +342 -484
- package/src/adapters/generic-sql/migration/dialect/mysql.ts +104 -0
- package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +1008 -0
- package/src/adapters/generic-sql/migration/dialect/postgres.ts +113 -0
- package/src/adapters/{kysely/migration/execute-sqlite.test.ts → generic-sql/migration/dialect/sqlite.test.ts} +307 -510
- package/src/adapters/generic-sql/migration/dialect/sqlite.ts +189 -0
- package/src/adapters/generic-sql/migration/executor.ts +33 -0
- package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +661 -0
- package/src/adapters/generic-sql/migration/prepared-migrations.ts +214 -0
- package/src/adapters/generic-sql/migration/sql-generator.ts +413 -0
- package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +36 -0
- package/src/adapters/generic-sql/query/cursor-utils.ts +56 -0
- package/src/adapters/generic-sql/query/dialect/mysql.ts +34 -0
- package/src/adapters/generic-sql/query/dialect/postgres.ts +32 -0
- package/src/adapters/generic-sql/query/dialect/sqlite.ts +32 -0
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +1568 -0
- package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +314 -0
- package/src/adapters/generic-sql/query/select-builder.test.ts +256 -0
- package/src/adapters/generic-sql/query/select-builder.ts +137 -0
- package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +195 -0
- package/src/adapters/generic-sql/query/sql-query-compiler.ts +367 -0
- package/src/adapters/generic-sql/query/where-builder.test.ts +744 -0
- package/src/adapters/generic-sql/query/where-builder.ts +211 -0
- package/src/adapters/generic-sql/result-interpreter.ts +102 -0
- package/src/adapters/generic-sql/test/generic-drizzle-adapter-sqlite3.test.ts +899 -0
- package/src/adapters/generic-sql/uow-decoder.test.ts +399 -0
- package/src/adapters/generic-sql/uow-decoder.ts +152 -0
- package/src/adapters/generic-sql/uow-encoder.test.ts +183 -0
- package/src/adapters/generic-sql/uow-encoder.ts +131 -0
- package/src/adapters/kysely/kysely-adapter-pglite.test.ts +90 -96
- package/src/adapters/kysely/kysely-adapter-sqlocal.test.ts +215 -0
- package/src/adapters/kysely/kysely-adapter.ts +10 -242
- package/src/adapters/{drizzle/drizzle-query.ts → shared/from-unit-of-work-compiler.ts} +111 -106
- package/src/adapters/shared/table-name-mapper.ts +50 -0
- package/src/adapters/shared/uow-operation-compiler.ts +211 -0
- package/src/db-fragment-definition-builder.test.ts +887 -0
- package/src/db-fragment-definition-builder.ts +737 -0
- package/src/db-fragment-instantiator.test.ts +543 -0
- package/src/db-fragment-integration.test.ts +406 -0
- package/src/fragments/internal-fragment.test.ts +549 -0
- package/src/fragments/internal-fragment.ts +249 -0
- package/src/hooks/hooks.test.ts +575 -0
- package/src/hooks/hooks.ts +179 -0
- package/src/migration-engine/generation-engine.test.ts +60 -27
- package/src/migration-engine/generation-engine.ts +99 -92
- package/src/mod.ts +139 -78
- package/src/query/column-defaults.ts +49 -0
- package/src/query/cursor.test.ts +147 -3
- package/src/query/cursor.ts +25 -8
- package/src/query/orm/orm.ts +1 -1
- package/src/query/query-type.test.ts +9 -9
- package/src/query/serialize/create-sql-serializer.ts +34 -0
- package/src/query/serialize/dialect/mysql-serializer.ts +142 -0
- package/src/query/serialize/dialect/postgres-serializer.ts +129 -0
- package/src/query/serialize/dialect/sqlite-serializer.test.ts +251 -0
- package/src/query/serialize/dialect/sqlite-serializer.ts +156 -0
- package/src/query/serialize/sql-serializer.ts +143 -0
- package/src/query/{query.ts → simple-query-interface.ts} +4 -4
- package/src/query/unit-of-work/execute-unit-of-work.test.ts +1310 -0
- package/src/query/unit-of-work/execute-unit-of-work.ts +504 -0
- package/src/query/unit-of-work/retry-policy.test.ts +217 -0
- package/src/query/unit-of-work/retry-policy.ts +141 -0
- package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +831 -0
- package/src/query/{unit-of-work-types.test.ts → unit-of-work/unit-of-work-types.test.ts} +7 -5
- package/src/query/unit-of-work/unit-of-work.test.ts +1716 -0
- package/src/query/{unit-of-work.ts → unit-of-work/unit-of-work.ts} +716 -420
- package/src/query/{result-transform.test.ts → value-decoding.test.ts} +45 -298
- package/src/query/value-decoding.ts +113 -0
- package/src/query/value-encoding.test.ts +390 -0
- package/src/query/value-encoding.ts +168 -0
- package/src/schema/create.test.ts +5 -1
- package/src/schema/create.ts +5 -0
- package/src/schema/serialize.test.ts +165 -407
- package/src/schema/type-conversion/create-sql-type-mapper.ts +28 -0
- package/src/schema/type-conversion/dialect/mysql.ts +64 -0
- package/src/schema/type-conversion/dialect/postgres.ts +62 -0
- package/src/schema/type-conversion/dialect/sqlite.ts +63 -0
- package/src/schema/type-conversion/type-mapping.test.ts +137 -0
- package/src/schema/type-conversion/type-mapping.ts +153 -0
- package/src/shared/connection-pool.ts +5 -5
- package/src/sql-driver/better-sqlite3.test.ts +126 -0
- package/src/sql-driver/connection/connection-provider.ts +27 -0
- package/src/sql-driver/connection/single-connection-provider.ts +42 -0
- package/src/sql-driver/dialect-adapter/dialect-adapter.ts +9 -0
- package/src/sql-driver/dialect-adapter/sqlite-dialect-adapter.ts +7 -0
- package/src/sql-driver/dialects/dialects.ts +1 -0
- package/src/sql-driver/dialects/durable-object-dialect.ts +260 -0
- package/src/sql-driver/driver/runtime-driver.ts +91 -0
- package/src/sql-driver/query-executor/default-query-executor.ts +38 -0
- package/src/sql-driver/query-executor/plugin.ts +22 -0
- package/src/sql-driver/query-executor/query-executor-base.ts +53 -0
- package/src/sql-driver/query-executor/query-executor.ts +44 -0
- package/src/sql-driver/sql-driver-adapter.ts +96 -0
- package/src/sql-driver/sql-driver.ts +53 -0
- package/src/sql-driver/sql.ts +57 -0
- package/src/sql-driver/sqlocal.test.ts +117 -0
- package/src/with-database.ts +152 -0
- package/tsdown.config.ts +8 -2
- package/dist/adapters/drizzle/drizzle-connection-pool.js +0 -40
- package/dist/adapters/drizzle/drizzle-connection-pool.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-query.d.ts +0 -23
- package/dist/adapters/drizzle/drizzle-query.d.ts.map +0 -1
- package/dist/adapters/drizzle/drizzle-query.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts +0 -10
- package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.js +0 -315
- package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-decoder.js +0 -116
- package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +0 -1
- package/dist/adapters/drizzle/drizzle-uow-executor.js +0 -149
- package/dist/adapters/drizzle/drizzle-uow-executor.js.map +0 -1
- package/dist/adapters/drizzle/join-column-utils.js +0 -28
- package/dist/adapters/drizzle/join-column-utils.js.map +0 -1
- package/dist/adapters/drizzle/shared.d.ts +0 -14
- package/dist/adapters/drizzle/shared.d.ts.map +0 -1
- package/dist/adapters/drizzle/shared.js +0 -35
- package/dist/adapters/drizzle/shared.js.map +0 -1
- package/dist/adapters/kysely/kysely-connection-pool.js +0 -41
- package/dist/adapters/kysely/kysely-connection-pool.js.map +0 -1
- package/dist/adapters/kysely/kysely-query-builder.js +0 -321
- package/dist/adapters/kysely/kysely-query-builder.js.map +0 -1
- package/dist/adapters/kysely/kysely-query-compiler.js +0 -66
- package/dist/adapters/kysely/kysely-query-compiler.js.map +0 -1
- package/dist/adapters/kysely/kysely-query.d.ts +0 -22
- package/dist/adapters/kysely/kysely-query.d.ts.map +0 -1
- package/dist/adapters/kysely/kysely-query.js +0 -223
- package/dist/adapters/kysely/kysely-query.js.map +0 -1
- package/dist/adapters/kysely/kysely-shared.d.ts.map +0 -1
- package/dist/adapters/kysely/kysely-shared.js +0 -18
- package/dist/adapters/kysely/kysely-shared.js.map +0 -1
- package/dist/adapters/kysely/kysely-uow-compiler.js +0 -170
- package/dist/adapters/kysely/kysely-uow-compiler.js.map +0 -1
- package/dist/adapters/kysely/kysely-uow-executor.js +0 -89
- package/dist/adapters/kysely/kysely-uow-executor.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-base.js +0 -128
- package/dist/adapters/kysely/migration/execute-base.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-factory.js +0 -34
- package/dist/adapters/kysely/migration/execute-factory.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-mssql.js +0 -112
- package/dist/adapters/kysely/migration/execute-mssql.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-mysql.js +0 -93
- package/dist/adapters/kysely/migration/execute-mysql.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-postgres.js +0 -104
- package/dist/adapters/kysely/migration/execute-postgres.js.map +0 -1
- package/dist/adapters/kysely/migration/execute-sqlite.js +0 -123
- package/dist/adapters/kysely/migration/execute-sqlite.js.map +0 -1
- package/dist/adapters/kysely/migration/execute.js +0 -34
- package/dist/adapters/kysely/migration/execute.js.map +0 -1
- package/dist/bind-services.d.ts +0 -7
- package/dist/bind-services.d.ts.map +0 -1
- package/dist/bind-services.js +0 -14
- package/dist/bind-services.js.map +0 -1
- package/dist/fragment.d.ts +0 -173
- package/dist/fragment.d.ts.map +0 -1
- package/dist/fragment.js +0 -191
- package/dist/fragment.js.map +0 -1
- package/dist/migration-engine/create.d.ts +0 -37
- package/dist/migration-engine/create.d.ts.map +0 -1
- package/dist/migration-engine/create.js +0 -58
- package/dist/migration-engine/create.js.map +0 -1
- package/dist/migration-engine/shared.d.ts +0 -112
- package/dist/migration-engine/shared.d.ts.map +0 -1
- package/dist/query/query.d.ts.map +0 -1
- package/dist/query/result-transform.js +0 -168
- package/dist/query/result-transform.js.map +0 -1
- package/dist/query/unit-of-work.d.ts.map +0 -1
- package/dist/query/unit-of-work.js.map +0 -1
- package/dist/schema/serialize.js +0 -106
- package/dist/schema/serialize.js.map +0 -1
- package/dist/shared/settings-schema.js +0 -36
- package/dist/shared/settings-schema.js.map +0 -1
- package/src/adapters/drizzle/drizzle-adapter.test.ts +0 -170
- package/src/adapters/drizzle/drizzle-connection-pool.ts +0 -66
- package/src/adapters/drizzle/drizzle-query.test.ts +0 -499
- package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +0 -1383
- package/src/adapters/drizzle/drizzle-uow-compiler.ts +0 -636
- package/src/adapters/drizzle/drizzle-uow-decoder.ts +0 -218
- package/src/adapters/drizzle/drizzle-uow-executor.ts +0 -276
- package/src/adapters/drizzle/join-column-utils.test.ts +0 -79
- package/src/adapters/drizzle/join-column-utils.ts +0 -39
- package/src/adapters/kysely/kysely-connection-pool.ts +0 -70
- package/src/adapters/kysely/kysely-query-builder.test.ts +0 -1344
- package/src/adapters/kysely/kysely-query-builder.ts +0 -666
- package/src/adapters/kysely/kysely-query-compiler.ts +0 -132
- package/src/adapters/kysely/kysely-query.test.ts +0 -498
- package/src/adapters/kysely/kysely-query.ts +0 -390
- package/src/adapters/kysely/kysely-shared.ts +0 -23
- package/src/adapters/kysely/kysely-uow-compiler.test.ts +0 -998
- package/src/adapters/kysely/kysely-uow-compiler.ts +0 -318
- package/src/adapters/kysely/kysely-uow-executor.ts +0 -145
- package/src/adapters/kysely/kysely-uow-joins.test.ts +0 -811
- package/src/adapters/kysely/migration/execute-base.ts +0 -256
- package/src/adapters/kysely/migration/execute-factory.ts +0 -53
- package/src/adapters/kysely/migration/execute-mssql.ts +0 -250
- package/src/adapters/kysely/migration/execute-mysql.ts +0 -211
- package/src/adapters/kysely/migration/execute-postgres.test.ts +0 -2657
- package/src/adapters/kysely/migration/execute-postgres.ts +0 -234
- package/src/adapters/kysely/migration/execute-sqlite.ts +0 -247
- package/src/adapters/kysely/migration/execute.ts +0 -50
- package/src/adapters/kysely/migration/kysely-migrator.test.ts +0 -261
- package/src/bind-services.test.ts +0 -214
- package/src/bind-services.ts +0 -37
- package/src/db-fragment.test.ts +0 -800
- package/src/fragment.ts +0 -727
- package/src/query/result-transform.ts +0 -271
- package/src/query/unit-of-work-multi-schema.test.ts +0 -64
- package/src/query/unit-of-work.test.ts +0 -943
- package/src/schema/serialize.ts +0 -396
- package/src/shared/settings-schema.ts +0 -61
- package/src/uow-context-integration.test.ts +0 -102
- package/src/uow-context.test.ts +0 -182
- /package/dist/query/{query.js → simple-query-interface.js} +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* These interfaces are adapted from Kysely.
|
|
3
|
+
* Modified from: https://github.com/kysely-org/kysely
|
|
4
|
+
* License: MIT
|
|
5
|
+
* Date obtained: December 3 2025
|
|
6
|
+
* Copyright (c) 2022 Sami Koskimäki
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { DialectAdapter } from "./dialect-adapter/dialect-adapter";
|
|
10
|
+
|
|
11
|
+
export interface CompiledQuery {
|
|
12
|
+
readonly sql: string;
|
|
13
|
+
readonly parameters: ReadonlyArray<unknown>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface DatabaseConnection {
|
|
17
|
+
executeQuery<R>(compiledQuery: CompiledQuery): Promise<QueryResult<R>>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface QueryResult<O> {
|
|
21
|
+
readonly numAffectedRows?: bigint;
|
|
22
|
+
readonly numChangedRows?: bigint;
|
|
23
|
+
readonly insertId?: bigint;
|
|
24
|
+
|
|
25
|
+
readonly rows: O[];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface TransactionSettings {
|
|
29
|
+
//
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface Driver {
|
|
33
|
+
init(): Promise<void>;
|
|
34
|
+
|
|
35
|
+
acquireConnection(): Promise<DatabaseConnection>;
|
|
36
|
+
releaseConnection(connection: DatabaseConnection): Promise<void>;
|
|
37
|
+
|
|
38
|
+
beginTransaction(connection: DatabaseConnection, settings: TransactionSettings): Promise<void>;
|
|
39
|
+
commitTransaction(connection: DatabaseConnection): Promise<void>;
|
|
40
|
+
rollbackTransaction(connection: DatabaseConnection): Promise<void>;
|
|
41
|
+
|
|
42
|
+
destroy(): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface QueryCompiler {
|
|
46
|
+
compileQuery(node: unknown, queryId: unknown): CompiledQuery;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface Dialect {
|
|
50
|
+
createDriver(): Driver;
|
|
51
|
+
createAdapter(): DialectAdapter;
|
|
52
|
+
createQueryCompiler(): QueryCompiler;
|
|
53
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { CompiledQuery, Dialect } from "./sql-driver";
|
|
2
|
+
import {
|
|
3
|
+
sql as kyselySql,
|
|
4
|
+
type QueryExecutor,
|
|
5
|
+
type CompiledQuery as KyselyCompiledQuery,
|
|
6
|
+
} from "kysely";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Wrapper around Kysely's RawBuilder that provides a compile() method with a dialect parameter.
|
|
10
|
+
*/
|
|
11
|
+
export class RawBuilder {
|
|
12
|
+
#kyselyBuilder: ReturnType<typeof kyselySql>;
|
|
13
|
+
|
|
14
|
+
constructor(kyselyBuilder: ReturnType<typeof kyselySql>) {
|
|
15
|
+
this.#kyselyBuilder = kyselyBuilder;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Compiles the SQL query using the provided Kysely dialect.
|
|
20
|
+
* Creates a minimal query executor with the dialect's adapter and query compiler.
|
|
21
|
+
*
|
|
22
|
+
* @param dialect - Kysely dialect (e.g., SqliteDialect, PostgresDialect, MysqlDialect)
|
|
23
|
+
* @returns Compiled query with SQL string and parameters
|
|
24
|
+
*/
|
|
25
|
+
compile(dialect: Dialect): CompiledQuery {
|
|
26
|
+
const queryCompiler = dialect.createQueryCompiler();
|
|
27
|
+
|
|
28
|
+
return this.#kyselyBuilder.compile({
|
|
29
|
+
getExecutor(): QueryExecutor {
|
|
30
|
+
return {
|
|
31
|
+
transformQuery(node, _queryId) {
|
|
32
|
+
return node;
|
|
33
|
+
},
|
|
34
|
+
compileQuery(node, queryId) {
|
|
35
|
+
return queryCompiler.compileQuery(node, queryId) as KyselyCompiledQuery;
|
|
36
|
+
},
|
|
37
|
+
} as QueryExecutor;
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Tagged template function for building SQL queries with parameters.
|
|
45
|
+
* Wraps Kysely's sql function to provide a compile() method without arguments.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const userId = 123;
|
|
50
|
+
* const query = sql`SELECT * FROM users WHERE id = ${userId}`;
|
|
51
|
+
* const compiled = query.compile();
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function sql(strings: TemplateStringsArray, ...values: unknown[]): RawBuilder {
|
|
55
|
+
const kyselyBuilder = kyselySql(strings, ...values);
|
|
56
|
+
return new RawBuilder(kyselyBuilder);
|
|
57
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { SQLocalKysely } from "sqlocal/kysely";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { SqlDriverAdapter } from "./sql-driver-adapter";
|
|
4
|
+
import type { GenericSQLPlugin } from "./query-executor/plugin";
|
|
5
|
+
import { sql } from "./sql";
|
|
6
|
+
|
|
7
|
+
describe("SQLocal", () => {
|
|
8
|
+
it("should create a new SQLocal instance", async () => {
|
|
9
|
+
const { dialect } = new SQLocalKysely(":memory:");
|
|
10
|
+
|
|
11
|
+
const adapter = new SqlDriverAdapter(dialect);
|
|
12
|
+
|
|
13
|
+
const query = sql`SELECT 5`.compile(dialect);
|
|
14
|
+
const result = await adapter.executeQuery(query);
|
|
15
|
+
expect(result.rows).toEqual([{ 5: 5 }]);
|
|
16
|
+
|
|
17
|
+
console.log(result);
|
|
18
|
+
|
|
19
|
+
await adapter.destroy();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it("should execute queries in a transaction and commit", async () => {
|
|
23
|
+
const { dialect } = new SQLocalKysely(":memory:");
|
|
24
|
+
const adapter = new SqlDriverAdapter(dialect);
|
|
25
|
+
|
|
26
|
+
// Create table outside transaction
|
|
27
|
+
await adapter.executeQuery(sql`CREATE TABLE test (id INTEGER, name TEXT)`.compile(dialect));
|
|
28
|
+
|
|
29
|
+
// Execute queries in transaction
|
|
30
|
+
await adapter.transaction(async (trx) => {
|
|
31
|
+
await trx.executeQuery(sql`INSERT INTO test VALUES (1, 'Alice')`.compile(dialect));
|
|
32
|
+
await trx.executeQuery(sql`INSERT INTO test VALUES (2, 'Bob')`.compile(dialect));
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// Verify data persists after transaction
|
|
36
|
+
const result = await adapter.executeQuery(sql`SELECT * FROM test ORDER BY id`.compile(dialect));
|
|
37
|
+
expect(result.rows).toEqual([
|
|
38
|
+
{ id: 1, name: "Alice" },
|
|
39
|
+
{ id: 2, name: "Bob" },
|
|
40
|
+
]);
|
|
41
|
+
|
|
42
|
+
await adapter.destroy();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it("should rollback transaction on error", async () => {
|
|
46
|
+
const { dialect } = new SQLocalKysely(":memory:");
|
|
47
|
+
const adapter = new SqlDriverAdapter(dialect);
|
|
48
|
+
|
|
49
|
+
// Create table outside transaction
|
|
50
|
+
await adapter.executeQuery(
|
|
51
|
+
sql`CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT)`.compile(dialect),
|
|
52
|
+
);
|
|
53
|
+
await adapter.executeQuery(sql`INSERT INTO test VALUES (1, 'Alice')`.compile(dialect));
|
|
54
|
+
|
|
55
|
+
// Try to execute queries in transaction with duplicate key error
|
|
56
|
+
await expect(
|
|
57
|
+
adapter.transaction(async (trx) => {
|
|
58
|
+
await trx.executeQuery(sql`INSERT INTO test VALUES (2, 'Bob')`.compile(dialect));
|
|
59
|
+
// This should cause a duplicate key error
|
|
60
|
+
await trx.executeQuery(sql`INSERT INTO test VALUES (1, 'Charlie')`.compile(dialect));
|
|
61
|
+
}),
|
|
62
|
+
).rejects.toThrow();
|
|
63
|
+
|
|
64
|
+
// Verify Bob was not inserted (transaction rolled back)
|
|
65
|
+
const result = await adapter.executeQuery(sql`SELECT * FROM test ORDER BY id`.compile(dialect));
|
|
66
|
+
expect(result.rows).toEqual([{ id: 1, name: "Alice" }]);
|
|
67
|
+
|
|
68
|
+
await adapter.destroy();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("should support plugins that transform results", async () => {
|
|
72
|
+
const { dialect } = new SQLocalKysely(":memory:");
|
|
73
|
+
const adapter = new SqlDriverAdapter(dialect);
|
|
74
|
+
|
|
75
|
+
// Create a plugin that adds metadata to results
|
|
76
|
+
const metadataPlugin: GenericSQLPlugin = {
|
|
77
|
+
async transformResult({ result }) {
|
|
78
|
+
return {
|
|
79
|
+
...result,
|
|
80
|
+
rows: result.rows.map((row) => ({
|
|
81
|
+
...(row as object),
|
|
82
|
+
__metadata: { transformed: true },
|
|
83
|
+
})),
|
|
84
|
+
};
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const adapterWithPlugin = adapter.withPlugin(metadataPlugin);
|
|
89
|
+
|
|
90
|
+
await adapterWithPlugin.executeQuery(
|
|
91
|
+
sql`CREATE TABLE test (id INTEGER, name TEXT)`.compile(dialect),
|
|
92
|
+
);
|
|
93
|
+
await adapterWithPlugin.executeQuery(
|
|
94
|
+
sql`INSERT INTO test VALUES (1, 'Alice')`.compile(dialect),
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
const result = await adapterWithPlugin.executeQuery(sql`SELECT * FROM test`.compile(dialect));
|
|
98
|
+
|
|
99
|
+
expect(result.rows).toEqual([{ id: 1, name: "Alice", __metadata: { transformed: true } }]);
|
|
100
|
+
|
|
101
|
+
await adapter.destroy();
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it("should properly destroy and release resources", async () => {
|
|
105
|
+
const { dialect } = new SQLocalKysely(":memory:");
|
|
106
|
+
const adapter = new SqlDriverAdapter(dialect);
|
|
107
|
+
|
|
108
|
+
// Execute some queries
|
|
109
|
+
await adapter.executeQuery(sql`SELECT 1`.compile(dialect));
|
|
110
|
+
|
|
111
|
+
// Destroy should complete without error
|
|
112
|
+
await expect(adapter.destroy()).resolves.toBeUndefined();
|
|
113
|
+
|
|
114
|
+
// Multiple destroy calls should be safe
|
|
115
|
+
await expect(adapter.destroy()).resolves.toBeUndefined();
|
|
116
|
+
});
|
|
117
|
+
});
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { AnySchema } from "./schema/create";
|
|
2
|
+
import type {
|
|
3
|
+
RequestThisContext,
|
|
4
|
+
FragnoPublicConfig,
|
|
5
|
+
AnyFragnoInstantiatedFragment,
|
|
6
|
+
} from "@fragno-dev/core";
|
|
7
|
+
import { FragmentDefinitionBuilder, instantiate } from "@fragno-dev/core";
|
|
8
|
+
import {
|
|
9
|
+
DatabaseFragmentDefinitionBuilder,
|
|
10
|
+
type DatabaseServiceContext,
|
|
11
|
+
type DatabaseHandlerContext,
|
|
12
|
+
type ImplicitDatabaseDependencies,
|
|
13
|
+
type FragnoPublicConfigWithDatabase,
|
|
14
|
+
type DatabaseRequestStorage,
|
|
15
|
+
} from "./db-fragment-definition-builder";
|
|
16
|
+
import { internalFragmentDef, type InternalFragmentInstance } from "./fragments/internal-fragment";
|
|
17
|
+
import type { HooksMap } from "./hooks/hooks";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Helper to add database support to a fragment builder.
|
|
21
|
+
* Automatically links the internal fragment and adds ImplicitDatabaseDependencies to the TDeps type.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // With .extend() - recommended
|
|
26
|
+
* const def = defineFragment("my-frag")
|
|
27
|
+
* .extend(withDatabase(mySchema))
|
|
28
|
+
* .withDependencies(...)
|
|
29
|
+
* .build();
|
|
30
|
+
*
|
|
31
|
+
* // Or as a function wrapper
|
|
32
|
+
* const def = withDatabase(mySchema)(defineFragment("my-frag"))
|
|
33
|
+
* .withDependencies(...)
|
|
34
|
+
* .build();
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function withDatabase<TSchema extends AnySchema>(
|
|
38
|
+
schema: TSchema,
|
|
39
|
+
namespace?: string,
|
|
40
|
+
): <
|
|
41
|
+
TConfig,
|
|
42
|
+
TDeps,
|
|
43
|
+
TBaseServices,
|
|
44
|
+
TServices,
|
|
45
|
+
TServiceDeps,
|
|
46
|
+
TPrivateServices,
|
|
47
|
+
TServiceThisContext extends RequestThisContext,
|
|
48
|
+
THandlerThisContext extends RequestThisContext,
|
|
49
|
+
TRequestStorage,
|
|
50
|
+
TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>,
|
|
51
|
+
>(
|
|
52
|
+
builder: FragmentDefinitionBuilder<
|
|
53
|
+
TConfig,
|
|
54
|
+
FragnoPublicConfig,
|
|
55
|
+
TDeps,
|
|
56
|
+
TBaseServices,
|
|
57
|
+
TServices,
|
|
58
|
+
TServiceDeps,
|
|
59
|
+
TPrivateServices,
|
|
60
|
+
TServiceThisContext,
|
|
61
|
+
THandlerThisContext,
|
|
62
|
+
TRequestStorage,
|
|
63
|
+
TLinkedFragments
|
|
64
|
+
>,
|
|
65
|
+
) => DatabaseFragmentDefinitionBuilder<
|
|
66
|
+
TSchema,
|
|
67
|
+
TConfig,
|
|
68
|
+
TDeps & ImplicitDatabaseDependencies<TSchema>,
|
|
69
|
+
TBaseServices,
|
|
70
|
+
TServices,
|
|
71
|
+
TServiceDeps,
|
|
72
|
+
TPrivateServices,
|
|
73
|
+
HooksMap,
|
|
74
|
+
DatabaseServiceContext<HooksMap>,
|
|
75
|
+
DatabaseHandlerContext,
|
|
76
|
+
TLinkedFragments & { _fragno_internal: InternalFragmentInstance }
|
|
77
|
+
> {
|
|
78
|
+
return <
|
|
79
|
+
TConfig,
|
|
80
|
+
TDeps,
|
|
81
|
+
TBaseServices,
|
|
82
|
+
TServices,
|
|
83
|
+
TServiceDeps,
|
|
84
|
+
TPrivateServices,
|
|
85
|
+
TServiceThisContext extends RequestThisContext,
|
|
86
|
+
THandlerThisContext extends RequestThisContext,
|
|
87
|
+
TRequestStorage,
|
|
88
|
+
TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>,
|
|
89
|
+
>(
|
|
90
|
+
builder: FragmentDefinitionBuilder<
|
|
91
|
+
TConfig,
|
|
92
|
+
FragnoPublicConfig,
|
|
93
|
+
TDeps,
|
|
94
|
+
TBaseServices,
|
|
95
|
+
TServices,
|
|
96
|
+
TServiceDeps,
|
|
97
|
+
TPrivateServices,
|
|
98
|
+
TServiceThisContext,
|
|
99
|
+
THandlerThisContext,
|
|
100
|
+
TRequestStorage,
|
|
101
|
+
TLinkedFragments
|
|
102
|
+
>,
|
|
103
|
+
) => {
|
|
104
|
+
const builderWithInternal = builder.withLinkedFragment(
|
|
105
|
+
"_fragno_internal",
|
|
106
|
+
({ config, options }) => {
|
|
107
|
+
// Cast is safe: by the time this callback is invoked during fragment instantiation,
|
|
108
|
+
// the options will be FragnoPublicConfigWithDatabase (enforced by DatabaseFragmentDefinitionBuilder)
|
|
109
|
+
return instantiate(internalFragmentDef)
|
|
110
|
+
.withConfig(config as {})
|
|
111
|
+
.withOptions(options as FragnoPublicConfigWithDatabase)
|
|
112
|
+
.build();
|
|
113
|
+
},
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
// Cast is safe: we're creating a DatabaseFragmentDefinitionBuilder which internally uses
|
|
117
|
+
// FragnoPublicConfigWithDatabase, but the input builder uses FragnoPublicConfig.
|
|
118
|
+
// The database builder's build() method will enforce FragnoPublicConfigWithDatabase at the end.
|
|
119
|
+
// We also add ImplicitDatabaseDependencies to TDeps so they're available in service constructors.
|
|
120
|
+
// Note: We discard TRequestStorage here because database fragments manage their own storage (DatabaseRequestStorage).
|
|
121
|
+
// We set TServiceThisContext to DatabaseServiceContext (restricted) and THandlerThisContext to DatabaseHandlerContext (full).
|
|
122
|
+
return new DatabaseFragmentDefinitionBuilder<
|
|
123
|
+
TSchema,
|
|
124
|
+
TConfig,
|
|
125
|
+
TDeps & ImplicitDatabaseDependencies<TSchema>,
|
|
126
|
+
TBaseServices,
|
|
127
|
+
TServices,
|
|
128
|
+
TServiceDeps,
|
|
129
|
+
TPrivateServices,
|
|
130
|
+
{}, // Start with empty hooks, provideHooks() will update this
|
|
131
|
+
DatabaseServiceContext<{}>,
|
|
132
|
+
DatabaseHandlerContext,
|
|
133
|
+
TLinkedFragments & { _fragno_internal: InternalFragmentInstance }
|
|
134
|
+
>(
|
|
135
|
+
builderWithInternal as unknown as FragmentDefinitionBuilder<
|
|
136
|
+
TConfig,
|
|
137
|
+
FragnoPublicConfigWithDatabase,
|
|
138
|
+
TDeps & ImplicitDatabaseDependencies<TSchema>,
|
|
139
|
+
TBaseServices,
|
|
140
|
+
TServices,
|
|
141
|
+
TServiceDeps,
|
|
142
|
+
TPrivateServices,
|
|
143
|
+
DatabaseServiceContext<{}>,
|
|
144
|
+
DatabaseHandlerContext,
|
|
145
|
+
DatabaseRequestStorage,
|
|
146
|
+
TLinkedFragments & { _fragno_internal: InternalFragmentInstance }
|
|
147
|
+
>,
|
|
148
|
+
schema,
|
|
149
|
+
namespace,
|
|
150
|
+
);
|
|
151
|
+
};
|
|
152
|
+
}
|
package/tsdown.config.ts
CHANGED
|
@@ -5,14 +5,20 @@ export default defineConfig({
|
|
|
5
5
|
"./src/mod.ts",
|
|
6
6
|
"./src/id.ts",
|
|
7
7
|
"./src/schema/create.ts",
|
|
8
|
-
"./src/query/query.ts",
|
|
8
|
+
"./src/query/simple-query-interface.ts",
|
|
9
9
|
"./src/adapters/adapters.ts",
|
|
10
10
|
"./src/adapters/kysely/kysely-adapter.ts",
|
|
11
11
|
"./src/adapters/drizzle/drizzle-adapter.ts",
|
|
12
12
|
"./src/adapters/drizzle/generate.ts",
|
|
13
|
-
"./src/
|
|
13
|
+
"./src/adapters/generic-sql/generic-sql-adapter.ts",
|
|
14
|
+
"./src/adapters/generic-sql/driver-config.ts",
|
|
15
|
+
"./src/sql-driver/sql-driver.ts",
|
|
16
|
+
"./src/sql-driver/dialects/dialects.ts",
|
|
17
|
+
"./src/sql-driver/dialects/durable-object-dialect.ts",
|
|
18
|
+
"./src/query/unit-of-work/unit-of-work.ts",
|
|
14
19
|
"./src/query/cursor.ts",
|
|
15
20
|
"./src/fragment.ts",
|
|
21
|
+
"./src/db-fragment-definition-builder.ts",
|
|
16
22
|
"./src/migration-engine/generation-engine.ts",
|
|
17
23
|
],
|
|
18
24
|
dts: true,
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
//#region src/adapters/drizzle/drizzle-connection-pool.ts
|
|
2
|
-
/**
|
|
3
|
-
* Creates a Drizzle-specific connection pool.
|
|
4
|
-
* Drizzle doesn't have a standard destroy() method, as cleanup depends on the underlying driver.
|
|
5
|
-
*/
|
|
6
|
-
function createDrizzleConnectionPool(dbOrFactory) {
|
|
7
|
-
let cachedDb;
|
|
8
|
-
let initPromise;
|
|
9
|
-
const ensureInitialized = async () => {
|
|
10
|
-
if (cachedDb) return cachedDb;
|
|
11
|
-
if (!initPromise) initPromise = (async () => {
|
|
12
|
-
const db = typeof dbOrFactory === "function" ? await dbOrFactory() : dbOrFactory;
|
|
13
|
-
cachedDb = db;
|
|
14
|
-
return db;
|
|
15
|
-
})();
|
|
16
|
-
return initPromise;
|
|
17
|
-
};
|
|
18
|
-
if (typeof dbOrFactory === "function") ensureInitialized();
|
|
19
|
-
else cachedDb = dbOrFactory;
|
|
20
|
-
return {
|
|
21
|
-
async connect() {
|
|
22
|
-
return {
|
|
23
|
-
db: await ensureInitialized(),
|
|
24
|
-
release: () => Promise.resolve()
|
|
25
|
-
};
|
|
26
|
-
},
|
|
27
|
-
getDatabaseSync() {
|
|
28
|
-
if (!cachedDb) throw new Error("Cannot get database synchronously: database not initialized.");
|
|
29
|
-
return cachedDb;
|
|
30
|
-
},
|
|
31
|
-
async close() {
|
|
32
|
-
cachedDb = void 0;
|
|
33
|
-
initPromise = void 0;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
//#endregion
|
|
39
|
-
export { createDrizzleConnectionPool };
|
|
40
|
-
//# sourceMappingURL=drizzle-connection-pool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-connection-pool.js","names":["cachedDb: DBType | undefined","initPromise: Promise<DBType> | undefined"],"sources":["../../../src/adapters/drizzle/drizzle-connection-pool.ts"],"sourcesContent":["import type { ConnectionPool } from \"../../shared/connection-pool\";\nimport type { DBType } from \"./shared\";\n\n/**\n * Creates a Drizzle-specific connection pool.\n * Drizzle doesn't have a standard destroy() method, as cleanup depends on the underlying driver.\n */\nexport function createDrizzleConnectionPool(\n dbOrFactory: DBType | (() => DBType | Promise<DBType>),\n): ConnectionPool<DBType> {\n let cachedDb: DBType | undefined;\n let initPromise: Promise<DBType> | undefined;\n\n const ensureInitialized = async (): Promise<DBType> => {\n if (cachedDb) {\n return cachedDb;\n }\n\n if (!initPromise) {\n initPromise = (async () => {\n const db =\n typeof dbOrFactory === \"function\"\n ? await (dbOrFactory as () => DBType | Promise<DBType>)()\n : dbOrFactory;\n cachedDb = db;\n return db;\n })();\n }\n\n return initPromise;\n };\n\n // Eagerly start initialization if it's a factory function\n if (typeof dbOrFactory === \"function\") {\n void ensureInitialized();\n } else {\n // Direct instance - cache it immediately\n cachedDb = dbOrFactory;\n }\n\n return {\n async connect() {\n const db = await ensureInitialized();\n\n return {\n db,\n release: () => Promise.resolve(),\n };\n },\n\n getDatabaseSync() {\n if (!cachedDb) {\n throw new Error(\"Cannot get database synchronously: database not initialized.\");\n }\n return cachedDb;\n },\n\n async close() {\n // Drizzle doesn't have a standard destroy() method\n // Cleanup depends on the underlying driver (e.g., PGlite, node-postgres, mysql2)\n // For now, we just clear the cache\n cachedDb = undefined;\n initPromise = undefined;\n },\n };\n}\n"],"mappings":";;;;;AAOA,SAAgB,4BACd,aACwB;CACxB,IAAIA;CACJ,IAAIC;CAEJ,MAAM,oBAAoB,YAA6B;AACrD,MAAI,SACF,QAAO;AAGT,MAAI,CAAC,YACH,gBAAe,YAAY;GACzB,MAAM,KACJ,OAAO,gBAAgB,aACnB,MAAO,aAAgD,GACvD;AACN,cAAW;AACX,UAAO;MACL;AAGN,SAAO;;AAIT,KAAI,OAAO,gBAAgB,WACzB,CAAK,mBAAmB;KAGxB,YAAW;AAGb,QAAO;EACL,MAAM,UAAU;AAGd,UAAO;IACL,IAHS,MAAM,mBAAmB;IAIlC,eAAe,QAAQ,SAAS;IACjC;;EAGH,kBAAkB;AAChB,OAAI,CAAC,SACH,OAAM,IAAI,MAAM,+DAA+D;AAEjF,UAAO;;EAGT,MAAM,QAAQ;AAIZ,cAAW;AACX,iBAAc;;EAEjB"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import "./shared.js";
|
|
2
|
-
import { DrizzleCompiledQuery } from "./drizzle-uow-compiler.js";
|
|
3
|
-
|
|
4
|
-
//#region src/adapters/drizzle/drizzle-query.d.ts
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Configuration options for creating a Drizzle Unit of Work
|
|
8
|
-
*/
|
|
9
|
-
interface DrizzleUOWConfig {
|
|
10
|
-
/**
|
|
11
|
-
* Optional callback to receive compiled SQL queries for logging/debugging
|
|
12
|
-
* This callback is invoked for each query as it's compiled
|
|
13
|
-
*/
|
|
14
|
-
onQuery?: (query: DrizzleCompiledQuery) => void;
|
|
15
|
-
/**
|
|
16
|
-
* If true, the query will not be executed and the query will be returned. Not respected for UOWs
|
|
17
|
-
* since those have to be manually executed.
|
|
18
|
-
*/
|
|
19
|
-
dryRun?: boolean;
|
|
20
|
-
}
|
|
21
|
-
//#endregion
|
|
22
|
-
export { DrizzleUOWConfig };
|
|
23
|
-
//# sourceMappingURL=drizzle-query.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-query.d.ts","names":[],"sources":["../../../src/adapters/drizzle/drizzle-query.ts"],"sourcesContent":[],"mappings":";;;;;;;;UAeiB,gBAAA;;;;;oBAKG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-query.js","names":["#indexName","#condition","#setValues","executor: UOWExecutor<DrizzleCompiledQuery, DrizzleResult>"],"sources":["../../../src/adapters/drizzle/drizzle-query.ts"],"sourcesContent":["import type { AbstractQuery } from \"../../query/query\";\nimport type { AnySchema, AnyTable } from \"../../schema/create\";\nimport type { CompiledMutation, UOWExecutor, ValidIndexName } from \"../../query/unit-of-work\";\nimport { createDrizzleUOWCompiler, type DrizzleCompiledQuery } from \"./drizzle-uow-compiler\";\nimport { executeDrizzleRetrievalPhase, executeDrizzleMutationPhase } from \"./drizzle-uow-executor\";\nimport { UnitOfWork } from \"../../query/unit-of-work\";\nimport { parseDrizzle, type DrizzleResult, type TableNameMapper, type DBType } from \"./shared\";\nimport { createDrizzleUOWDecoder } from \"./drizzle-uow-decoder\";\nimport type { ConnectionPool } from \"../../shared/connection-pool\";\nimport type { TableToUpdateValues } from \"../../query/query\";\nimport type { CursorResult } from \"../../query/cursor\";\n\n/**\n * Configuration options for creating a Drizzle Unit of Work\n */\nexport interface DrizzleUOWConfig {\n /**\n * Optional callback to receive compiled SQL queries for logging/debugging\n * This callback is invoked for each query as it's compiled\n */\n onQuery?: (query: DrizzleCompiledQuery) => void;\n /**\n * If true, the query will not be executed and the query will be returned. Not respected for UOWs\n * since those have to be manually executed.\n */\n dryRun?: boolean;\n}\n\n/**\n * Special builder for updateMany operations that captures configuration\n */\nclass UpdateManySpecialBuilder<TTable extends AnyTable> {\n #indexName?: string;\n #condition?: unknown;\n #setValues?: TableToUpdateValues<TTable>;\n\n whereIndex<TIndexName extends ValidIndexName<TTable>>(\n indexName: TIndexName,\n condition?: unknown,\n ): this {\n this.#indexName = indexName as string;\n this.#condition = condition;\n return this;\n }\n\n set(values: TableToUpdateValues<TTable>): this {\n this.#setValues = values;\n return this;\n }\n\n getConfig() {\n return {\n indexName: this.#indexName,\n condition: this.#condition,\n setValues: this.#setValues,\n };\n }\n}\n\n/**\n * Creates a Drizzle-based query engine for the given schema.\n *\n * This is the main entry point for creating a database query interface using Drizzle.\n * It uses a compiler-based architecture where queries are compiled to SQL and then executed,\n * enabling features like SQL snapshot testing.\n *\n * @param schema - The database schema definition\n * @param pool - Connection pool for acquiring database connections\n * @param provider - SQL provider (sqlite, mysql, postgresql)\n * @param mapper - Optional table name mapper for namespace prefixing\n * @param uowConfig - Optional UOW configuration\n * @param schemaNamespaceMap - Optional WeakMap for schema-to-namespace lookups\n * @returns An AbstractQuery instance for performing database operations\n *\n * @example\n * ```ts\n * const pool = createSimpleConnectionPool(drizzle);\n * const queryEngine = fromDrizzle(mySchema, pool, 'postgresql');\n *\n * const uow = queryEngine.createUnitOfWork('myOperation');\n * ```\n */\nexport function fromDrizzle<T extends AnySchema>(\n schema: T,\n pool: ConnectionPool<DBType>,\n provider: \"sqlite\" | \"mysql\" | \"postgresql\",\n mapper?: TableNameMapper,\n uowConfig?: DrizzleUOWConfig,\n schemaNamespaceMap?: WeakMap<AnySchema, string>,\n): AbstractQuery<T, DrizzleUOWConfig> {\n function createUOW(opts: { name?: string; config?: DrizzleUOWConfig }) {\n const uowCompiler = createDrizzleUOWCompiler(pool, provider, mapper);\n\n const executor: UOWExecutor<DrizzleCompiledQuery, DrizzleResult> = {\n async executeRetrievalPhase(retrievalBatch: DrizzleCompiledQuery[]) {\n // In dryRun mode, skip execution and return empty results\n if (opts.config?.dryRun) {\n return retrievalBatch.map(() => ({\n rows: [],\n affectedRows: 0,\n }));\n }\n\n const conn = await pool.connect();\n try {\n const db = parseDrizzle(conn.db)[0];\n return await executeDrizzleRetrievalPhase(db, retrievalBatch, provider);\n } finally {\n await conn.release();\n }\n },\n async executeMutationPhase(mutationBatch: CompiledMutation<DrizzleCompiledQuery>[]) {\n // In dryRun mode, skip execution and return success with mock internal IDs\n if (opts.config?.dryRun) {\n return {\n success: true,\n createdInternalIds: mutationBatch.map(() => null),\n };\n }\n\n const conn = await pool.connect();\n try {\n const db = parseDrizzle(conn.db)[0];\n return await executeDrizzleMutationPhase(db, mutationBatch, provider);\n } finally {\n await conn.release();\n }\n },\n };\n\n const decoder = createDrizzleUOWDecoder(provider);\n\n const { onQuery, ...restUowConfig } = opts.config ?? {};\n\n return new UnitOfWork(\n schema,\n uowCompiler,\n executor,\n decoder,\n opts.name,\n {\n ...restUowConfig,\n onQuery: (query) => {\n // Handle both CompiledQuery and CompiledMutation structures\n // Retrieval operations return DrizzleCompiledQuery directly: { sql, params }\n // Mutation operations return CompiledMutation: { query: DrizzleCompiledQuery, expectedAffectedRows }\n const actualQuery =\n query && typeof query === \"object\" && \"query\" in query\n ? (query as CompiledMutation<DrizzleCompiledQuery>).query\n : (query as DrizzleCompiledQuery);\n\n opts.config?.onQuery?.(actualQuery);\n },\n },\n schemaNamespaceMap,\n );\n }\n\n return {\n async find(tableName, builderFn) {\n // Safe: builderFn returns a FindBuilder (or void), which matches UnitOfWork signature\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const uow = createUOW({ config: uowConfig }).find(tableName, builderFn as any);\n const [result] = await uow.executeRetrieve();\n return result;\n },\n\n async findWithCursor(tableName, builderFn) {\n // Safe: builderFn returns a FindBuilder, which matches UnitOfWork signature\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const uow = createUOW({ config: uowConfig }).findWithCursor(tableName, builderFn as any);\n const [result] = await uow.executeRetrieve();\n return result as CursorResult<unknown>;\n },\n\n async findFirst(tableName, builderFn) {\n const uow = createUOW({ config: uowConfig });\n if (builderFn) {\n uow.find(tableName, (b) => {\n builderFn(b);\n return b.pageSize(1);\n });\n } else {\n uow.find(tableName, (b) => b.whereIndex(\"primary\").pageSize(1));\n }\n // executeRetrieve runs an array of `find` operation results, which each return an array of rows\n const [result]: unknown[][] = await uow.executeRetrieve();\n return result?.[0] ?? null;\n },\n\n async create(tableName, values) {\n const uow = createUOW({ config: uowConfig });\n uow.create(tableName, values);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to create record\");\n }\n\n const createdIds = uow.getCreatedIds();\n const createdId = createdIds[0];\n if (!createdId) {\n throw new Error(\"Failed to get created ID\");\n }\n return createdId;\n },\n\n async createMany(tableName, valuesArray) {\n const uow = createUOW({ config: uowConfig });\n for (const values of valuesArray) {\n uow.create(tableName, values);\n }\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to create records\");\n }\n\n return uow.getCreatedIds();\n },\n\n async update(tableName, id, builderFn) {\n const uow = createUOW({ config: uowConfig });\n uow.update(tableName, id, builderFn);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update record (version conflict or record not found)\");\n }\n },\n\n async updateMany(tableName, builderFn) {\n const table = schema.tables[tableName];\n if (!table) {\n throw new Error(`Table ${tableName} not found in schema`);\n }\n\n const specialBuilder = new UpdateManySpecialBuilder<typeof table>();\n builderFn(specialBuilder);\n\n const { indexName, condition, setValues } = specialBuilder.getConfig();\n\n if (!indexName) {\n throw new Error(\"whereIndex() must be called in updateMany\");\n }\n if (!setValues) {\n throw new Error(\"set() must be called in updateMany\");\n }\n\n const findUow = createUOW({ config: uowConfig });\n findUow.find(tableName, (b) => {\n if (condition) {\n // Safe: condition is captured from whereIndex call with proper typing\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return b.whereIndex(indexName as ValidIndexName<typeof table>, condition as any);\n }\n return b.whereIndex(indexName as ValidIndexName<typeof table>);\n });\n const [records]: unknown[][] = await findUow.executeRetrieve();\n\n if (!records || records.length === 0) {\n return;\n }\n\n const updateUow = createUOW({ config: uowConfig });\n for (const record of records as Array<{ id: unknown }>) {\n updateUow.update(tableName, record.id as string, (b) => b.set(setValues));\n }\n const { success } = await updateUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to update records (version conflict)\");\n }\n },\n\n async delete(tableName, id, builderFn) {\n const uow = createUOW({ config: uowConfig });\n uow.delete(tableName, id, builderFn);\n const { success } = await uow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete record (version conflict or record not found)\");\n }\n },\n\n async deleteMany(tableName, builderFn) {\n const findUow = createUOW({ config: uowConfig });\n findUow.find(tableName, builderFn);\n const [records]: unknown[][] = await findUow.executeRetrieve();\n\n if (!records || records.length === 0) {\n return;\n }\n\n const deleteUow = createUOW({ config: uowConfig });\n for (const record of records as Array<{ id: unknown }>) {\n deleteUow.delete(tableName, record.id as string);\n }\n const { success } = await deleteUow.executeMutations();\n if (!success) {\n throw new Error(\"Failed to delete records (version conflict)\");\n }\n },\n\n createUnitOfWork(name, nestedUowConfig) {\n return createUOW({\n name,\n config: {\n ...uowConfig,\n ...nestedUowConfig,\n },\n });\n },\n } as AbstractQuery<T, DrizzleUOWConfig>;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle-uow-compiler.d.ts","names":[],"sources":["../../../src/adapters/drizzle/drizzle-uow-compiler.ts"],"sourcesContent":[],"mappings":";;;AAyBY,KAAA,oBAAA,GAAoB"}
|