@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
|
@@ -1,306 +1,43 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { column,
|
|
3
|
-
import {
|
|
1
|
+
import { assert, describe, expect, it } from "vitest";
|
|
2
|
+
import { column, referenceColumn, internalIdColumn } from "./create";
|
|
3
|
+
import { createSQLSerializer } from "../query/serialize/create-sql-serializer";
|
|
4
|
+
import type { AnyColumn } from "./create";
|
|
5
|
+
import type { DriverConfig } from "../adapters/generic-sql/driver-config";
|
|
6
|
+
import {
|
|
7
|
+
BetterSQLite3DriverConfig,
|
|
8
|
+
NodePostgresDriverConfig,
|
|
9
|
+
MySQL2DriverConfig,
|
|
10
|
+
} from "../adapters/generic-sql/driver-config";
|
|
11
|
+
|
|
12
|
+
function createMockDriverConfig(provider: string): DriverConfig {
|
|
13
|
+
if (provider === "postgresql" || provider === "cockroachdb") {
|
|
14
|
+
return new NodePostgresDriverConfig();
|
|
15
|
+
}
|
|
16
|
+
if (provider === "mysql") {
|
|
17
|
+
return new MySQL2DriverConfig();
|
|
18
|
+
}
|
|
19
|
+
return new BetterSQLite3DriverConfig();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Helper functions for testing
|
|
23
|
+
function deserialize(value: unknown, col: AnyColumn, provider: string) {
|
|
24
|
+
const driverConfig = createMockDriverConfig(provider);
|
|
25
|
+
const serializer = createSQLSerializer(driverConfig);
|
|
26
|
+
return serializer.deserialize(value, col);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function serialize(
|
|
30
|
+
value: unknown,
|
|
31
|
+
col: AnyColumn,
|
|
32
|
+
provider: string,
|
|
33
|
+
skipDriverConversions = false,
|
|
34
|
+
) {
|
|
35
|
+
const driverConfig = createMockDriverConfig(provider);
|
|
36
|
+
const serializer = createSQLSerializer(driverConfig);
|
|
37
|
+
return serializer.serialize(value, col, skipDriverConversions);
|
|
38
|
+
}
|
|
4
39
|
|
|
5
40
|
describe("serialize", () => {
|
|
6
|
-
describe("dbToSchemaType", () => {
|
|
7
|
-
describe("sqlite", () => {
|
|
8
|
-
it("should map integer types correctly", () => {
|
|
9
|
-
expect(dbToSchemaType("integer", "sqlite", {})).toEqual([
|
|
10
|
-
"bool",
|
|
11
|
-
"date",
|
|
12
|
-
"timestamp",
|
|
13
|
-
"bigint",
|
|
14
|
-
"integer",
|
|
15
|
-
]);
|
|
16
|
-
expect(dbToSchemaType("INTEGER", "sqlite", {})).toEqual([
|
|
17
|
-
"bool",
|
|
18
|
-
"date",
|
|
19
|
-
"timestamp",
|
|
20
|
-
"bigint",
|
|
21
|
-
"integer",
|
|
22
|
-
]);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("should map text types correctly", () => {
|
|
26
|
-
expect(dbToSchemaType("text", "sqlite", {})).toEqual([
|
|
27
|
-
"json",
|
|
28
|
-
"string",
|
|
29
|
-
"bigint",
|
|
30
|
-
"varchar(n)",
|
|
31
|
-
]);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it("should map numeric types correctly", () => {
|
|
35
|
-
expect(dbToSchemaType("real", "sqlite", {})).toEqual(["decimal"]);
|
|
36
|
-
expect(dbToSchemaType("numeric", "sqlite", {})).toEqual(["decimal"]);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it("should map blob types correctly", () => {
|
|
40
|
-
expect(dbToSchemaType("blob", "sqlite", {})).toEqual(["bigint", "binary"]);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
describe("postgresql", () => {
|
|
45
|
-
it("should map decimal types correctly", () => {
|
|
46
|
-
expect(dbToSchemaType("decimal", "postgresql", {})).toEqual(["decimal"]);
|
|
47
|
-
expect(dbToSchemaType("real", "postgresql", {})).toEqual(["decimal"]);
|
|
48
|
-
expect(dbToSchemaType("numeric", "postgresql", {})).toEqual(["decimal"]);
|
|
49
|
-
expect(dbToSchemaType("double precision", "postgresql", {})).toEqual(["decimal"]);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it("should map timestamp types correctly", () => {
|
|
53
|
-
expect(dbToSchemaType("timestamp", "postgresql", {})).toEqual(["timestamp"]);
|
|
54
|
-
expect(dbToSchemaType("timestamptz", "postgresql", {})).toEqual(["timestamp"]);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
it("should map varchar with length correctly", () => {
|
|
58
|
-
expect(dbToSchemaType("varchar", "postgresql", { length: 255 })).toEqual(["varchar(255)"]);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it("should map varchar without length to string", () => {
|
|
62
|
-
expect(dbToSchemaType("varchar", "postgresql", {})).toEqual(["string"]);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it("should map text types correctly", () => {
|
|
66
|
-
expect(dbToSchemaType("text", "postgresql", {})).toEqual(["string"]);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
it("should map boolean types correctly", () => {
|
|
70
|
-
expect(dbToSchemaType("boolean", "postgresql", {})).toEqual(["bool"]);
|
|
71
|
-
expect(dbToSchemaType("bool", "postgresql", {})).toEqual(["bool"]);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it("should map binary types correctly", () => {
|
|
75
|
-
expect(dbToSchemaType("bytea", "postgresql", {})).toEqual(["binary"]);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
describe("cockroachdb", () => {
|
|
80
|
-
it("should behave like postgresql", () => {
|
|
81
|
-
expect(dbToSchemaType("timestamp", "cockroachdb", {})).toEqual(["timestamp"]);
|
|
82
|
-
expect(dbToSchemaType("text", "cockroachdb", {})).toEqual(["string"]);
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
describe("mysql", () => {
|
|
87
|
-
it("should map boolean types correctly", () => {
|
|
88
|
-
expect(dbToSchemaType("bool", "mysql", {})).toEqual(["bool"]);
|
|
89
|
-
expect(dbToSchemaType("boolean", "mysql", {})).toEqual(["bool"]);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it("should map integer types correctly", () => {
|
|
93
|
-
expect(dbToSchemaType("integer", "mysql", {})).toEqual(["integer"]);
|
|
94
|
-
expect(dbToSchemaType("int", "mysql", {})).toEqual(["integer"]);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it("should map decimal types correctly", () => {
|
|
98
|
-
expect(dbToSchemaType("decimal", "mysql", {})).toEqual(["decimal"]);
|
|
99
|
-
expect(dbToSchemaType("numeric", "mysql", {})).toEqual(["decimal"]);
|
|
100
|
-
expect(dbToSchemaType("float", "mysql", {})).toEqual(["decimal"]);
|
|
101
|
-
expect(dbToSchemaType("double", "mysql", {})).toEqual(["decimal"]);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it("should map datetime types correctly", () => {
|
|
105
|
-
expect(dbToSchemaType("datetime", "mysql", {})).toEqual(["timestamp"]);
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it("should map varchar with length correctly", () => {
|
|
109
|
-
expect(dbToSchemaType("varchar", "mysql", { length: 100 })).toEqual(["varchar(100)"]);
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
it("should map varchar without length to string", () => {
|
|
113
|
-
expect(dbToSchemaType("varchar", "mysql", {})).toEqual(["string"]);
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it("should map text types correctly", () => {
|
|
117
|
-
expect(dbToSchemaType("text", "mysql", {})).toEqual(["string"]);
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
it("should map blob types correctly", () => {
|
|
121
|
-
expect(dbToSchemaType("longblob", "mysql", {})).toEqual(["binary"]);
|
|
122
|
-
expect(dbToSchemaType("blob", "mysql", {})).toEqual(["binary"]);
|
|
123
|
-
expect(dbToSchemaType("mediumblob", "mysql", {})).toEqual(["binary"]);
|
|
124
|
-
expect(dbToSchemaType("tinyblob", "mysql", {})).toEqual(["binary"]);
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
describe("mssql", () => {
|
|
129
|
-
it("should map integer types correctly", () => {
|
|
130
|
-
expect(dbToSchemaType("int", "mssql", {})).toEqual(["integer"]);
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
it("should map decimal types correctly", () => {
|
|
134
|
-
expect(dbToSchemaType("decimal", "mssql", {})).toEqual(["decimal"]);
|
|
135
|
-
expect(dbToSchemaType("float", "mssql", {})).toEqual(["decimal"]);
|
|
136
|
-
expect(dbToSchemaType("real", "mssql", {})).toEqual(["decimal"]);
|
|
137
|
-
expect(dbToSchemaType("numeric", "mssql", {})).toEqual(["decimal"]);
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
it("should map bit type correctly", () => {
|
|
141
|
-
expect(dbToSchemaType("bit", "mssql", {})).toEqual(["bool"]);
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
it("should map datetime types correctly", () => {
|
|
145
|
-
expect(dbToSchemaType("datetime", "mssql", {})).toEqual(["timestamp"]);
|
|
146
|
-
expect(dbToSchemaType("datetime2", "mssql", {})).toEqual(["timestamp"]);
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
it("should map varchar with length correctly", () => {
|
|
150
|
-
expect(dbToSchemaType("varchar", "mssql", { length: 50 })).toEqual(["varchar(50)"]);
|
|
151
|
-
expect(dbToSchemaType("nvarchar", "mssql", { length: 50 })).toEqual(["varchar(50)"]);
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
it("should map varchar without length to string/json", () => {
|
|
155
|
-
expect(dbToSchemaType("varchar", "mssql", {})).toEqual(["string", "json"]);
|
|
156
|
-
expect(dbToSchemaType("nvarchar", "mssql", {})).toEqual(["string", "json"]);
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
it("should map text types correctly", () => {
|
|
160
|
-
expect(dbToSchemaType("ntext", "mssql", {})).toEqual(["string", "json"]);
|
|
161
|
-
expect(dbToSchemaType("text", "mssql", {})).toEqual(["string", "json"]);
|
|
162
|
-
expect(dbToSchemaType("varchar(max)", "mssql", {})).toEqual(["string", "json"]);
|
|
163
|
-
expect(dbToSchemaType("nvarchar(max)", "mssql", {})).toEqual(["string", "json"]);
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it("should map binary types correctly", () => {
|
|
167
|
-
expect(dbToSchemaType("binary", "mssql", {})).toEqual(["binary"]);
|
|
168
|
-
expect(dbToSchemaType("varbinary", "mssql", {})).toEqual(["binary"]);
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
describe("schemaToDBType", () => {
|
|
174
|
-
describe("sqlite", () => {
|
|
175
|
-
it("should convert integer types to integer", () => {
|
|
176
|
-
expect(schemaToDBType(column("integer"), "sqlite")).toBe("integer");
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
it("should convert timestamp to integer", () => {
|
|
180
|
-
expect(schemaToDBType(column("timestamp"), "sqlite")).toBe("integer");
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
it("should convert date to integer", () => {
|
|
184
|
-
expect(schemaToDBType(column("date"), "sqlite")).toBe("integer");
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
it("should convert bool to integer", () => {
|
|
188
|
-
expect(schemaToDBType(column("bool"), "sqlite")).toBe("integer");
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
it("should convert binary to blob", () => {
|
|
192
|
-
expect(schemaToDBType(column("binary"), "sqlite")).toBe("blob");
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
it("should convert bigint to blob", () => {
|
|
196
|
-
expect(schemaToDBType(column("bigint"), "sqlite")).toBe("blob");
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
it("should convert json to text", () => {
|
|
200
|
-
expect(schemaToDBType(column("json"), "sqlite")).toBe("text");
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
it("should convert string to text", () => {
|
|
204
|
-
expect(schemaToDBType(column("string"), "sqlite")).toBe("text");
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
it("should convert varchar to text", () => {
|
|
208
|
-
expect(schemaToDBType({ type: "varchar(255)" }, "sqlite")).toBe("text");
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
it("should convert decimal to real", () => {
|
|
212
|
-
expect(schemaToDBType(column("decimal"), "sqlite")).toBe("real");
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
describe("mssql", () => {
|
|
217
|
-
it("should convert bool to bit", () => {
|
|
218
|
-
expect(schemaToDBType(column("bool"), "mssql")).toBe("bit");
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
it("should convert timestamp to datetime", () => {
|
|
222
|
-
expect(schemaToDBType(column("timestamp"), "mssql")).toBe("datetime");
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
it("should convert integer to int", () => {
|
|
226
|
-
expect(schemaToDBType(column("integer"), "mssql")).toBe("int");
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
it("should convert string to varchar(max)", () => {
|
|
230
|
-
expect(schemaToDBType(column("string"), "mssql")).toBe("varchar(max)");
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
it("should convert binary to varbinary(max)", () => {
|
|
234
|
-
expect(schemaToDBType(column("binary"), "mssql")).toBe("varbinary(max)");
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
it("should convert json to varchar(max)", () => {
|
|
238
|
-
expect(schemaToDBType(column("json"), "mssql")).toBe("varchar(max)");
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
it("should preserve varchar with length", () => {
|
|
242
|
-
expect(schemaToDBType({ type: "varchar(100)" }, "mssql")).toBe("varchar(100)");
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
describe("postgresql", () => {
|
|
247
|
-
it("should convert bool to boolean", () => {
|
|
248
|
-
expect(schemaToDBType(column("bool"), "postgresql")).toBe("boolean");
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
it("should convert json to json", () => {
|
|
252
|
-
expect(schemaToDBType(column("json"), "postgresql")).toBe("json");
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
it("should convert string to text", () => {
|
|
256
|
-
expect(schemaToDBType(column("string"), "postgresql")).toBe("text");
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
it("should convert binary to bytea", () => {
|
|
260
|
-
expect(schemaToDBType(column("binary"), "postgresql")).toBe("bytea");
|
|
261
|
-
});
|
|
262
|
-
|
|
263
|
-
it("should preserve varchar with length", () => {
|
|
264
|
-
expect(schemaToDBType({ type: "varchar(200)" }, "postgresql")).toBe("varchar(200)");
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
it("should preserve other types", () => {
|
|
268
|
-
expect(schemaToDBType(column("timestamp"), "postgresql")).toBe("timestamp");
|
|
269
|
-
expect(schemaToDBType(column("integer"), "postgresql")).toBe("integer");
|
|
270
|
-
});
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
describe("cockroachdb", () => {
|
|
274
|
-
it("should behave like postgresql", () => {
|
|
275
|
-
expect(schemaToDBType(column("bool"), "cockroachdb")).toBe("boolean");
|
|
276
|
-
expect(schemaToDBType(column("string"), "cockroachdb")).toBe("text");
|
|
277
|
-
});
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
describe("mysql", () => {
|
|
281
|
-
it("should convert bool to boolean", () => {
|
|
282
|
-
expect(schemaToDBType(column("bool"), "mysql")).toBe("boolean");
|
|
283
|
-
});
|
|
284
|
-
|
|
285
|
-
it("should convert string to text", () => {
|
|
286
|
-
expect(schemaToDBType(column("string"), "mysql")).toBe("text");
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
it("should convert binary to longblob", () => {
|
|
290
|
-
expect(schemaToDBType(column("binary"), "mysql")).toBe("longblob");
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
it("should preserve varchar with length", () => {
|
|
294
|
-
expect(schemaToDBType({ type: "varchar(150)" }, "mysql")).toBe("varchar(150)");
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
it("should preserve other types", () => {
|
|
298
|
-
expect(schemaToDBType(column("integer"), "mysql")).toBe("integer");
|
|
299
|
-
expect(schemaToDBType(column("json"), "mysql")).toBe("json");
|
|
300
|
-
});
|
|
301
|
-
});
|
|
302
|
-
});
|
|
303
|
-
|
|
304
41
|
describe("deserialize", () => {
|
|
305
42
|
it("should return null for null values", () => {
|
|
306
43
|
expect(deserialize(null, column("string"), "sqlite")).toBe(null);
|
|
@@ -347,7 +84,7 @@ describe("serialize", () => {
|
|
|
347
84
|
const timestampCol = column("timestamp");
|
|
348
85
|
const time = "2024-06-15T14:30:00+05:30"; // India Standard Time
|
|
349
86
|
const result = deserialize(time, timestampCol, "sqlite");
|
|
350
|
-
|
|
87
|
+
assert.instanceOf(result, Date);
|
|
351
88
|
expect(result.toISOString()).toBe("2024-06-15T09:00:00.000Z");
|
|
352
89
|
});
|
|
353
90
|
|
|
@@ -355,7 +92,7 @@ describe("serialize", () => {
|
|
|
355
92
|
const timestampCol = column("timestamp");
|
|
356
93
|
const time = "2024-06-15T14:30:00-08:00"; // Pacific Time
|
|
357
94
|
const result = deserialize(time, timestampCol, "sqlite");
|
|
358
|
-
|
|
95
|
+
assert.instanceOf(result, Date);
|
|
359
96
|
expect(result.toISOString()).toBe("2024-06-15T22:30:00.000Z");
|
|
360
97
|
});
|
|
361
98
|
|
|
@@ -366,7 +103,7 @@ describe("serialize", () => {
|
|
|
366
103
|
const numericTimestamp = specificDate.getTime();
|
|
367
104
|
|
|
368
105
|
const result = deserialize(numericTimestamp, timestampCol, "sqlite");
|
|
369
|
-
|
|
106
|
+
assert.instanceOf(result, Date);
|
|
370
107
|
expect(result.getTime()).toBe(numericTimestamp);
|
|
371
108
|
expect(result.toISOString()).toBe("2024-06-15T12:00:00.000Z");
|
|
372
109
|
});
|
|
@@ -376,6 +113,7 @@ describe("serialize", () => {
|
|
|
376
113
|
// Start with a date with timezone info
|
|
377
114
|
const originalTime = "2024-06-15T14:30:00+02:00";
|
|
378
115
|
const deserialized = deserialize(originalTime, timestampCol, "sqlite");
|
|
116
|
+
assert.instanceOf(deserialized, Date);
|
|
379
117
|
|
|
380
118
|
// SQLite would store this as a number
|
|
381
119
|
const numericValue = deserialized.getTime();
|
|
@@ -383,7 +121,7 @@ describe("serialize", () => {
|
|
|
383
121
|
// Deserialize the numeric value back
|
|
384
122
|
const roundTrip = deserialize(numericValue, timestampCol, "sqlite");
|
|
385
123
|
|
|
386
|
-
|
|
124
|
+
assert.instanceOf(roundTrip, Date);
|
|
387
125
|
expect(roundTrip.getTime()).toBe(deserialized.getTime());
|
|
388
126
|
expect(roundTrip.toISOString()).toBe(deserialized.toISOString());
|
|
389
127
|
});
|
|
@@ -412,7 +150,7 @@ describe("serialize", () => {
|
|
|
412
150
|
const timestampCol = column("timestamp");
|
|
413
151
|
const time = "2024-06-15T14:30:00+05:30"; // India Standard Time
|
|
414
152
|
const result = deserialize(time, timestampCol, "postgresql");
|
|
415
|
-
|
|
153
|
+
assert.instanceOf(result, Date);
|
|
416
154
|
expect(result.toISOString()).toBe("2024-06-15T09:00:00.000Z");
|
|
417
155
|
});
|
|
418
156
|
|
|
@@ -420,7 +158,7 @@ describe("serialize", () => {
|
|
|
420
158
|
const timestampCol = column("timestamp");
|
|
421
159
|
const time = "2024-06-15T14:30:00-08:00"; // Pacific Time
|
|
422
160
|
const result = deserialize(time, timestampCol, "postgresql");
|
|
423
|
-
|
|
161
|
+
assert.instanceOf(result, Date);
|
|
424
162
|
expect(result.toISOString()).toBe("2024-06-15T22:30:00.000Z");
|
|
425
163
|
});
|
|
426
164
|
|
|
@@ -428,7 +166,7 @@ describe("serialize", () => {
|
|
|
428
166
|
const timestampCol = column("timestamp");
|
|
429
167
|
const time = "2024-06-15T14:30:45.123+01:00"; // Central European Time
|
|
430
168
|
const result = deserialize(time, timestampCol, "postgresql");
|
|
431
|
-
|
|
169
|
+
assert.instanceOf(result, Date);
|
|
432
170
|
expect(result.toISOString()).toBe("2024-06-15T13:30:45.123Z");
|
|
433
171
|
expect(result.getTime()).toBe(new Date("2024-06-15T13:30:45.123Z").getTime());
|
|
434
172
|
});
|
|
@@ -444,6 +182,10 @@ describe("serialize", () => {
|
|
|
444
182
|
const estResult = deserialize(estTime, timestampCol, "postgresql");
|
|
445
183
|
const jstResult = deserialize(jstTime, timestampCol, "postgresql");
|
|
446
184
|
|
|
185
|
+
assert.instanceOf(utcResult, Date);
|
|
186
|
+
assert.instanceOf(estResult, Date);
|
|
187
|
+
assert.instanceOf(jstResult, Date);
|
|
188
|
+
|
|
447
189
|
// All should represent the same absolute time
|
|
448
190
|
expect(utcResult.getTime()).toBe(estResult.getTime());
|
|
449
191
|
expect(utcResult.getTime()).toBe(jstResult.getTime());
|
|
@@ -474,7 +216,7 @@ describe("serialize", () => {
|
|
|
474
216
|
const timestampCol = column("timestamp");
|
|
475
217
|
const time = "2024-06-15T14:30:00+05:30"; // India Standard Time
|
|
476
218
|
const result = deserialize(time, timestampCol, "mysql");
|
|
477
|
-
|
|
219
|
+
assert.instanceOf(result, Date);
|
|
478
220
|
expect(result.toISOString()).toBe("2024-06-15T09:00:00.000Z");
|
|
479
221
|
});
|
|
480
222
|
|
|
@@ -482,7 +224,7 @@ describe("serialize", () => {
|
|
|
482
224
|
const timestampCol = column("timestamp");
|
|
483
225
|
const time = "2024-06-15T14:30:00-08:00"; // Pacific Time
|
|
484
226
|
const result = deserialize(time, timestampCol, "mysql");
|
|
485
|
-
|
|
227
|
+
assert.instanceOf(result, Date);
|
|
486
228
|
expect(result.toISOString()).toBe("2024-06-15T22:30:00.000Z");
|
|
487
229
|
});
|
|
488
230
|
|
|
@@ -490,7 +232,7 @@ describe("serialize", () => {
|
|
|
490
232
|
const timestampCol = column("timestamp");
|
|
491
233
|
const time = "2024-06-15T14:30:45.123+01:00"; // Central European Time
|
|
492
234
|
const result = deserialize(time, timestampCol, "mysql");
|
|
493
|
-
|
|
235
|
+
assert.instanceOf(result, Date);
|
|
494
236
|
expect(result.toISOString()).toBe("2024-06-15T13:30:45.123Z");
|
|
495
237
|
});
|
|
496
238
|
|
|
@@ -505,6 +247,10 @@ describe("serialize", () => {
|
|
|
505
247
|
const cstResult = deserialize(cstTime, timestampCol, "mysql");
|
|
506
248
|
const pstResult = deserialize(pstTime, timestampCol, "mysql");
|
|
507
249
|
|
|
250
|
+
assert.instanceOf(utcResult, Date);
|
|
251
|
+
assert.instanceOf(cstResult, Date);
|
|
252
|
+
assert.instanceOf(pstResult, Date);
|
|
253
|
+
|
|
508
254
|
// All should represent the same absolute time
|
|
509
255
|
expect(utcResult.getTime()).toBe(cstResult.getTime());
|
|
510
256
|
expect(utcResult.getTime()).toBe(pstResult.getTime());
|
|
@@ -529,7 +275,7 @@ describe("serialize", () => {
|
|
|
529
275
|
const timestampCol = column("timestamp");
|
|
530
276
|
const time = "2024-06-15T14:30:00+05:30"; // India Standard Time
|
|
531
277
|
const result = deserialize(time, timestampCol, "cockroachdb");
|
|
532
|
-
|
|
278
|
+
assert.instanceOf(result, Date);
|
|
533
279
|
expect(result.toISOString()).toBe("2024-06-15T09:00:00.000Z");
|
|
534
280
|
});
|
|
535
281
|
|
|
@@ -537,7 +283,7 @@ describe("serialize", () => {
|
|
|
537
283
|
const timestampCol = column("timestamp");
|
|
538
284
|
const time = "2024-06-15T14:30:00-08:00"; // Pacific Time
|
|
539
285
|
const result = deserialize(time, timestampCol, "cockroachdb");
|
|
540
|
-
|
|
286
|
+
assert.instanceOf(result, Date);
|
|
541
287
|
expect(result.toISOString()).toBe("2024-06-15T22:30:00.000Z");
|
|
542
288
|
});
|
|
543
289
|
|
|
@@ -545,7 +291,7 @@ describe("serialize", () => {
|
|
|
545
291
|
const timestampCol = column("timestamp");
|
|
546
292
|
const time = "2024-06-15T14:30:45.123+01:00"; // Central European Time
|
|
547
293
|
const result = deserialize(time, timestampCol, "cockroachdb");
|
|
548
|
-
|
|
294
|
+
assert.instanceOf(result, Date);
|
|
549
295
|
expect(result.toISOString()).toBe("2024-06-15T13:30:45.123Z");
|
|
550
296
|
});
|
|
551
297
|
|
|
@@ -560,6 +306,10 @@ describe("serialize", () => {
|
|
|
560
306
|
const aestResult = deserialize(aestTime, timestampCol, "cockroachdb");
|
|
561
307
|
const brtResult = deserialize(brtTime, timestampCol, "cockroachdb");
|
|
562
308
|
|
|
309
|
+
assert.instanceOf(utcResult, Date);
|
|
310
|
+
assert.instanceOf(aestResult, Date);
|
|
311
|
+
assert.instanceOf(brtResult, Date);
|
|
312
|
+
|
|
563
313
|
// All should represent the same absolute time
|
|
564
314
|
expect(utcResult.getTime()).toBe(aestResult.getTime());
|
|
565
315
|
expect(utcResult.getTime()).toBe(brtResult.getTime());
|
|
@@ -607,8 +357,8 @@ describe("serialize", () => {
|
|
|
607
357
|
const binaryCol = column("binary");
|
|
608
358
|
const buffer = Buffer.from([1, 2, 3, 4]);
|
|
609
359
|
const result = deserialize(buffer, binaryCol, "postgresql");
|
|
610
|
-
|
|
611
|
-
expect(Array.from(result
|
|
360
|
+
assert.instanceOf(result, Uint8Array);
|
|
361
|
+
expect(Array.from(result)).toEqual([1, 2, 3, 4]);
|
|
612
362
|
});
|
|
613
363
|
});
|
|
614
364
|
});
|
|
@@ -660,8 +410,8 @@ describe("serialize", () => {
|
|
|
660
410
|
it("should convert bigint to Buffer", () => {
|
|
661
411
|
const bigintValue = 123456789n;
|
|
662
412
|
const result = serialize(bigintValue, column("bigint"), "sqlite");
|
|
663
|
-
|
|
664
|
-
expect(
|
|
413
|
+
assert.instanceOf(result, Buffer);
|
|
414
|
+
expect(result.readBigInt64BE(0)).toBe(bigintValue);
|
|
665
415
|
});
|
|
666
416
|
});
|
|
667
417
|
|
|
@@ -670,8 +420,8 @@ describe("serialize", () => {
|
|
|
670
420
|
const binaryCol = column("binary");
|
|
671
421
|
const uint8 = new Uint8Array([1, 2, 3, 4]);
|
|
672
422
|
const result = serialize(uint8, binaryCol, "postgresql");
|
|
673
|
-
|
|
674
|
-
expect(Array.from(result
|
|
423
|
+
assert.instanceOf(result, Buffer);
|
|
424
|
+
expect(Array.from(result)).toEqual([1, 2, 3, 4]);
|
|
675
425
|
});
|
|
676
426
|
|
|
677
427
|
it("should handle Buffer as-is", () => {
|
|
@@ -679,7 +429,7 @@ describe("serialize", () => {
|
|
|
679
429
|
const buffer = Buffer.from([1, 2, 3, 4]);
|
|
680
430
|
const result = serialize(buffer, binaryCol, "mysql");
|
|
681
431
|
// Buffer is also a Uint8Array, so it should be converted
|
|
682
|
-
|
|
432
|
+
assert.instanceOf(result, Buffer);
|
|
683
433
|
});
|
|
684
434
|
});
|
|
685
435
|
|
|
@@ -691,92 +441,100 @@ describe("serialize", () => {
|
|
|
691
441
|
});
|
|
692
442
|
});
|
|
693
443
|
|
|
694
|
-
describe("
|
|
695
|
-
it("should
|
|
696
|
-
const
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
expect(
|
|
702
|
-
expect(
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
expect(serialize(
|
|
715
|
-
expect(serialize(
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
const
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
expect(
|
|
749
|
-
expect(
|
|
750
|
-
});
|
|
751
|
-
|
|
752
|
-
it("should
|
|
753
|
-
const
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
const
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
});
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
444
|
+
describe("skipDriverConversions", () => {
|
|
445
|
+
it("should skip Date to number conversion for SQLite when enabled", () => {
|
|
446
|
+
const date = new Date("2024-01-01T00:00:00.000Z");
|
|
447
|
+
const timestampCol = column("timestamp");
|
|
448
|
+
|
|
449
|
+
// Default behavior: converts to number
|
|
450
|
+
const withConversion = serialize(date, timestampCol, "sqlite", false);
|
|
451
|
+
expect(withConversion).toBe(date.getTime());
|
|
452
|
+
expect(typeof withConversion).toBe("number");
|
|
453
|
+
|
|
454
|
+
// With skipDriverConversions: passes through Date
|
|
455
|
+
const withoutConversion = serialize(date, timestampCol, "sqlite", true);
|
|
456
|
+
expect(withoutConversion).toBe(date);
|
|
457
|
+
assert.instanceOf(withoutConversion, Date);
|
|
458
|
+
});
|
|
459
|
+
|
|
460
|
+
it("should skip boolean to number conversion for SQLite when enabled", () => {
|
|
461
|
+
const boolCol = column("bool");
|
|
462
|
+
|
|
463
|
+
// Default behavior: converts to 0/1
|
|
464
|
+
expect(serialize(true, boolCol, "sqlite", false)).toBe(1);
|
|
465
|
+
expect(serialize(false, boolCol, "sqlite", false)).toBe(0);
|
|
466
|
+
|
|
467
|
+
// With skipDriverConversions: passes through boolean
|
|
468
|
+
expect(serialize(true, boolCol, "sqlite", true)).toBe(true);
|
|
469
|
+
expect(serialize(false, boolCol, "sqlite", true)).toBe(false);
|
|
470
|
+
});
|
|
471
|
+
|
|
472
|
+
it("should skip bigint to Buffer conversion for SQLite when enabled", () => {
|
|
473
|
+
const bigintValue = 123456789n;
|
|
474
|
+
const bigintCol = column("bigint");
|
|
475
|
+
|
|
476
|
+
// Default behavior: converts to Buffer
|
|
477
|
+
const withConversion = serialize(bigintValue, bigintCol, "sqlite", false);
|
|
478
|
+
assert.instanceOf(withConversion, Buffer);
|
|
479
|
+
expect(withConversion.readBigInt64BE(0)).toBe(bigintValue);
|
|
480
|
+
|
|
481
|
+
// With skipDriverConversions: passes through bigint
|
|
482
|
+
const withoutConversion = serialize(bigintValue, bigintCol, "sqlite", true);
|
|
483
|
+
expect(withoutConversion).toBe(bigintValue);
|
|
484
|
+
expect(typeof withoutConversion).toBe("bigint");
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
it("should skip reference column bigint to Number conversion for SQLite when enabled", () => {
|
|
488
|
+
const bigintValue = 123456789n;
|
|
489
|
+
const refCol = referenceColumn();
|
|
490
|
+
|
|
491
|
+
// Default behavior: converts to Number for reference columns
|
|
492
|
+
const withConversion = serialize(bigintValue, refCol, "sqlite", false);
|
|
493
|
+
expect(withConversion).toBe(123456789);
|
|
494
|
+
expect(typeof withConversion).toBe("number");
|
|
495
|
+
|
|
496
|
+
// With skipDriverConversions: passes through bigint
|
|
497
|
+
const withoutConversion = serialize(bigintValue, refCol, "sqlite", true);
|
|
498
|
+
expect(withoutConversion).toBe(bigintValue);
|
|
499
|
+
expect(typeof withoutConversion).toBe("bigint");
|
|
500
|
+
});
|
|
501
|
+
|
|
502
|
+
it("should skip internal-id column bigint to Number conversion for SQLite when enabled", () => {
|
|
503
|
+
const bigintValue = 123456789n;
|
|
504
|
+
const internalIdCol = internalIdColumn();
|
|
505
|
+
|
|
506
|
+
// Default behavior: converts to Number for internal-id columns
|
|
507
|
+
const withConversion = serialize(bigintValue, internalIdCol, "sqlite", false);
|
|
508
|
+
expect(withConversion).toBe(123456789);
|
|
509
|
+
expect(typeof withConversion).toBe("number");
|
|
510
|
+
|
|
511
|
+
// With skipDriverConversions: passes through bigint
|
|
512
|
+
const withoutConversion = serialize(bigintValue, internalIdCol, "sqlite", true);
|
|
513
|
+
expect(withoutConversion).toBe(bigintValue);
|
|
514
|
+
expect(typeof withoutConversion).toBe("bigint");
|
|
515
|
+
});
|
|
516
|
+
|
|
517
|
+
it("should still handle JSON stringification when skipDriverConversions is enabled", () => {
|
|
518
|
+
const jsonCol = column("json");
|
|
519
|
+
const obj = { key: "value" };
|
|
520
|
+
|
|
521
|
+
// JSON stringification happens regardless of skipDriverConversions
|
|
522
|
+
expect(serialize(obj, jsonCol, "sqlite", false)).toBe('{"key":"value"}');
|
|
523
|
+
expect(serialize(obj, jsonCol, "sqlite", true)).toBe('{"key":"value"}');
|
|
524
|
+
});
|
|
525
|
+
|
|
526
|
+
it("should still handle binary conversion when skipDriverConversions is enabled", () => {
|
|
527
|
+
const binaryCol = column("binary");
|
|
528
|
+
const uint8 = new Uint8Array([1, 2, 3, 4]);
|
|
529
|
+
|
|
530
|
+
// Binary conversion happens regardless of skipDriverConversions
|
|
531
|
+
const withConversion = serialize(uint8, binaryCol, "sqlite", false);
|
|
532
|
+
assert.instanceOf(withConversion, Buffer);
|
|
533
|
+
expect(Array.from(withConversion)).toEqual([1, 2, 3, 4]);
|
|
534
|
+
|
|
535
|
+
const withoutConversion = serialize(uint8, binaryCol, "sqlite", true);
|
|
536
|
+
assert.instanceOf(withoutConversion, Buffer);
|
|
537
|
+
expect(Array.from(withoutConversion)).toEqual([1, 2, 3, 4]);
|
|
780
538
|
});
|
|
781
539
|
});
|
|
782
540
|
});
|