@fragno-dev/db 0.1.1 → 0.1.3
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 +196 -137
- package/CHANGELOG.md +18 -0
- package/LICENSE.md +16 -0
- package/dist/adapters/adapters.d.ts +11 -1
- package/dist/adapters/adapters.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.d.ts +9 -2
- package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-adapter.js +23 -39
- package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-query.d.ts.map +1 -1
- package/dist/adapters/drizzle/drizzle-query.js +5 -4
- package/dist/adapters/drizzle/drizzle-query.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-compiler.js +12 -10
- package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-decoder.js +14 -4
- package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +1 -1
- package/dist/adapters/drizzle/drizzle-uow-executor.js +78 -60
- package/dist/adapters/drizzle/drizzle-uow-executor.js.map +1 -1
- package/dist/adapters/drizzle/generate.js +111 -37
- package/dist/adapters/drizzle/generate.js.map +1 -1
- package/dist/adapters/drizzle/shared.js +14 -1
- package/dist/adapters/drizzle/shared.js.map +1 -1
- package/dist/adapters/kysely/kysely-adapter.d.ts +2 -1
- package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
- package/dist/adapters/kysely/kysely-adapter.js +25 -30
- package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
- package/dist/adapters/kysely/kysely-query-builder.js +48 -44
- package/dist/adapters/kysely/kysely-query-builder.js.map +1 -1
- package/dist/adapters/kysely/kysely-query-compiler.js +2 -2
- package/dist/adapters/kysely/kysely-query-compiler.js.map +1 -1
- package/dist/adapters/kysely/kysely-query.js +3 -2
- package/dist/adapters/kysely/kysely-query.js.map +1 -1
- package/dist/adapters/kysely/kysely-shared.js +18 -0
- package/dist/adapters/kysely/kysely-shared.js.map +1 -0
- package/dist/adapters/kysely/kysely-uow-compiler.js +4 -3
- package/dist/adapters/kysely/kysely-uow-compiler.js.map +1 -1
- package/dist/adapters/kysely/migration/execute.js +15 -12
- package/dist/adapters/kysely/migration/execute.js.map +1 -1
- package/dist/migration-engine/auto-from-schema.js +2 -8
- package/dist/migration-engine/auto-from-schema.js.map +1 -1
- package/dist/migration-engine/create.d.ts +1 -5
- package/dist/migration-engine/create.js +1 -1
- package/dist/migration-engine/create.js.map +1 -1
- package/dist/migration-engine/generation-engine.d.ts +51 -0
- package/dist/migration-engine/generation-engine.d.ts.map +1 -0
- package/dist/migration-engine/generation-engine.js +165 -0
- package/dist/migration-engine/generation-engine.js.map +1 -0
- package/dist/migration-engine/shared.d.ts +5 -2
- package/dist/migration-engine/shared.d.ts.map +1 -1
- package/dist/migration-engine/shared.js.map +1 -1
- package/dist/mod.d.ts +0 -8
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +0 -32
- package/dist/mod.js.map +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/alias.js +77 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/alias.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/casing.js +49 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/casing.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/column-builder.js +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/column-builder.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/column.js +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/column.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/entity.js +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/entity.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/errors.js +21 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/errors.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/columns/common.js +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/columns/common.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/columns/enum.js +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/columns/enum.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/foreign-keys.js +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/foreign-keys.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/unique-constraint.js +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/unique-constraint.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/pg-core/utils/array.js +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/utils/array.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/query-builders/query-builder.js +14 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/query-builders/query-builder.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/query-promise.js +26 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/query-promise.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/relations.js +127 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/relations.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/selection-proxy.js +47 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/selection-proxy.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/sql/expressions/conditions.js +20 -2
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/expressions/conditions.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/expressions/select.js +13 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/expressions/select.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/functions/aggregate.js +10 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/functions/aggregate.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/sql/sql.js +1 -1
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sql/sql.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/columns/common.js +60 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/columns/common.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/db.js +269 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/db.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/dialect.js +457 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/dialect.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/foreign-keys.js +68 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/foreign-keys.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/count.js +41 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/count.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js +119 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js +170 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js +75 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/query.js +107 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/query.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js +37 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/select.js +621 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/select.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/update.js +170 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/query-builders/update.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/table.js +20 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/table.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/unique-constraint.js +48 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/unique-constraint.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/utils.js +17 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/utils.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/view-base.js +11 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/sqlite-core/view-base.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/subquery.js +2 -2
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/subquery.js.map +1 -0
- package/dist/node_modules/{.bun/drizzle-orm@0.44.6_4fae081eecb963e2 → .pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8}/node_modules/drizzle-orm/table.js +8 -2
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/table.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/table.utils.js +6 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/table.utils.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/tracing-utils.js +8 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/tracing-utils.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/tracing.js +8 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/tracing.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/utils.js +53 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/utils.js.map +1 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/view-common.js +6 -0
- package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@types_better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/view-common.js.map +1 -0
- package/dist/query/condition-builder.js.map +1 -1
- package/dist/query/result-transform.js +2 -1
- package/dist/query/result-transform.js.map +1 -1
- package/dist/schema/create.d.ts +74 -16
- package/dist/schema/create.d.ts.map +1 -1
- package/dist/schema/create.js +76 -11
- package/dist/schema/create.js.map +1 -1
- package/dist/schema/serialize.js +3 -0
- package/dist/schema/serialize.js.map +1 -1
- package/dist/shared/settings-schema.js +36 -0
- package/dist/shared/settings-schema.js.map +1 -0
- package/dist/util/import-generator.js.map +1 -1
- package/dist/util/parse.js.map +1 -1
- package/package.json +20 -23
- package/src/adapters/adapters.ts +10 -3
- package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +11 -7
- package/src/adapters/drizzle/drizzle-adapter-sqlite.test.ts +585 -0
- package/src/adapters/drizzle/drizzle-adapter.test.ts +78 -30
- package/src/adapters/drizzle/drizzle-adapter.ts +38 -78
- package/src/adapters/drizzle/drizzle-query.ts +6 -9
- package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +10 -4
- package/src/adapters/drizzle/drizzle-uow-compiler.ts +12 -6
- package/src/adapters/drizzle/drizzle-uow-decoder.ts +22 -5
- package/src/adapters/drizzle/drizzle-uow-executor.ts +156 -116
- package/src/adapters/drizzle/generate.test.ts +582 -159
- package/src/adapters/drizzle/generate.ts +196 -41
- package/src/adapters/drizzle/migrate-drizzle.test.ts +30 -6
- package/src/adapters/drizzle/shared.ts +31 -1
- package/src/adapters/drizzle/test-utils.ts +3 -1
- package/src/adapters/kysely/kysely-adapter-pglite.test.ts +25 -27
- package/src/adapters/kysely/kysely-adapter.ts +35 -58
- package/src/adapters/kysely/kysely-query-builder.ts +75 -44
- package/src/adapters/kysely/kysely-query-compiler.ts +3 -1
- package/src/adapters/kysely/kysely-query.ts +8 -2
- package/src/adapters/kysely/kysely-shared.ts +23 -0
- package/src/adapters/kysely/kysely-uow-compiler.ts +5 -2
- package/src/adapters/kysely/migration/execute-mysql.test.ts +2 -2
- package/src/adapters/kysely/migration/execute-postgres.test.ts +19 -19
- package/src/adapters/kysely/migration/execute.ts +48 -17
- package/src/adapters/kysely/migration/kysely-migrator.test.ts +19 -37
- package/src/fragment.test.ts +1 -0
- package/src/migration-engine/auto-from-schema.ts +14 -18
- package/src/migration-engine/create.ts +1 -6
- package/src/migration-engine/generation-engine.test.ts +597 -0
- package/src/migration-engine/generation-engine.ts +356 -0
- package/src/migration-engine/shared.ts +1 -4
- package/src/mod.ts +0 -66
- package/src/query/condition-builder.ts +24 -8
- package/src/query/result-transform.ts +7 -1
- package/src/schema/create.test.ts +4 -1
- package/src/schema/create.ts +132 -24
- package/src/schema/serialize.test.ts +1 -0
- package/src/schema/serialize.ts +28 -7
- package/src/shared/settings-schema.ts +61 -0
- package/src/util/deep-equal.ts +21 -7
- package/src/util/import-generator.ts +3 -1
- package/src/util/parse.ts +3 -1
- package/tsdown.config.ts +1 -0
- package/.turbo/turbo-test.log +0 -37
- package/.turbo/turbo-types$colon$check.log +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/column-builder.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/column.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/entity.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/columns/common.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/columns/enum.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/foreign-keys.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/unique-constraint.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/pg-core/utils/array.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/conditions.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/select.js +0 -13
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/expressions/select.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/functions/aggregate.js +0 -10
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/functions/aggregate.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/sql/sql.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/subquery.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/table.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/table.utils.js +0 -6
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/table.utils.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing-utils.js +0 -8
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing-utils.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing.js +0 -8
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/tracing.js.map +0 -1
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/view-common.js +0 -6
- package/dist/node_modules/.bun/drizzle-orm@0.44.6_4fae081eecb963e2/node_modules/drizzle-orm/view-common.js.map +0 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { SETTINGS_NAMESPACE, createSettingsManager, settingsSchema } from "../shared/settings-schema.js";
|
|
2
|
+
|
|
3
|
+
//#region src/migration-engine/generation-engine.ts
|
|
4
|
+
async function generateMigrationsOrSchema(databases, options) {
|
|
5
|
+
if (databases.length === 0) throw new Error("No databases provided for schema generation");
|
|
6
|
+
const firstDb = databases[0];
|
|
7
|
+
const adapter = firstDb.adapter;
|
|
8
|
+
if (adapter.createSchemaGenerator) {
|
|
9
|
+
if (options?.toVersion !== void 0 || options?.fromVersion !== void 0) console.warn("⚠️ Warning: --from and --to version options are not supported when generating schemas for multiple fragments and will be ignored.");
|
|
10
|
+
const fragments = databases.map((db) => ({
|
|
11
|
+
schema: db.schema,
|
|
12
|
+
namespace: db.namespace
|
|
13
|
+
}));
|
|
14
|
+
return [{
|
|
15
|
+
...adapter.createSchemaGenerator(fragments, { path: options?.path }).generateSchema(),
|
|
16
|
+
namespace: firstDb.namespace
|
|
17
|
+
}];
|
|
18
|
+
}
|
|
19
|
+
if (!adapter.createMigrationEngine) throw new Error("Adapter does not support migration-based schema generation. Ensure your adapter implements createMigrationEngine.");
|
|
20
|
+
if (!await adapter.isConnectionHealthy()) throw new Error("Database connection is not healthy. Please check your database connection and try again.");
|
|
21
|
+
const settingsManager = createSettingsManager(adapter.createQueryEngine(settingsSchema, ""), SETTINGS_NAMESPACE);
|
|
22
|
+
let settingsSourceVersion;
|
|
23
|
+
try {
|
|
24
|
+
const result = await settingsManager.get("version");
|
|
25
|
+
if (!result) settingsSourceVersion = 0;
|
|
26
|
+
else settingsSourceVersion = parseInt(result.value);
|
|
27
|
+
} catch {
|
|
28
|
+
settingsSourceVersion = 0;
|
|
29
|
+
}
|
|
30
|
+
const generatedFiles = [];
|
|
31
|
+
const settingsMigrator = adapter.createMigrationEngine(settingsSchema, SETTINGS_NAMESPACE);
|
|
32
|
+
const settingsTargetVersion = settingsSchema.version;
|
|
33
|
+
const settingsMigration = await settingsMigrator.prepareMigrationTo(settingsTargetVersion, { fromVersion: settingsSourceVersion });
|
|
34
|
+
if (!settingsMigration.getSQL) throw new Error("Migration engine does not support SQL generation. Ensure your adapter's migration engine provides getSQL().");
|
|
35
|
+
const settingsSql = settingsMigration.getSQL();
|
|
36
|
+
if (settingsSql.trim()) generatedFiles.push({
|
|
37
|
+
schema: settingsSql,
|
|
38
|
+
path: "settings-migration.sql",
|
|
39
|
+
namespace: SETTINGS_NAMESPACE,
|
|
40
|
+
fromVersion: settingsSourceVersion,
|
|
41
|
+
toVersion: settingsTargetVersion,
|
|
42
|
+
preparedMigration: settingsMigration
|
|
43
|
+
});
|
|
44
|
+
for (const db of databases) {
|
|
45
|
+
const dbAdapter = db.adapter;
|
|
46
|
+
if (!dbAdapter.createMigrationEngine) throw new Error(`Adapter for ${db.namespace} does not support schema generation. Ensure your adapter implements either createSchemaGenerator or createMigrationEngine.`);
|
|
47
|
+
const migrator = dbAdapter.createMigrationEngine(db.schema, db.namespace);
|
|
48
|
+
const targetVersion = options?.toVersion ?? db.schema.version;
|
|
49
|
+
const sourceVersion = options?.fromVersion ?? 0;
|
|
50
|
+
const preparedMigration = await migrator.prepareMigrationTo(targetVersion, { fromVersion: sourceVersion });
|
|
51
|
+
if (!preparedMigration.getSQL) throw new Error("Migration engine does not support SQL generation. Ensure your adapter's migration engine provides getSQL().");
|
|
52
|
+
const sql = preparedMigration.getSQL();
|
|
53
|
+
if (sql.trim()) generatedFiles.push({
|
|
54
|
+
schema: sql,
|
|
55
|
+
path: "schema.sql",
|
|
56
|
+
namespace: db.namespace,
|
|
57
|
+
fromVersion: sourceVersion,
|
|
58
|
+
toVersion: targetVersion,
|
|
59
|
+
preparedMigration
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return postProcessMigrationFilenames(generatedFiles);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Execute migrations for all fragments in the correct order.
|
|
66
|
+
* Migrates settings table first, then fragments alphabetically.
|
|
67
|
+
*
|
|
68
|
+
* @param databases - Array of FragnoDatabase instances to migrate
|
|
69
|
+
* @returns Array of execution results for each migration
|
|
70
|
+
*/
|
|
71
|
+
async function executeMigrations(databases) {
|
|
72
|
+
if (databases.length === 0) throw new Error("No databases provided for migration");
|
|
73
|
+
const adapter = databases[0].adapter;
|
|
74
|
+
if (!adapter.createMigrationEngine) throw new Error("Adapter does not support running migrations. The adapter only supports schema generation.\nTry using 'generateMigrationsOrSchema' instead to generate schema files.");
|
|
75
|
+
if (!databases.every((db) => db.adapter === adapter)) throw new Error("All fragments must use the same database adapter instance. Mixed adapters are not supported.");
|
|
76
|
+
if (!await adapter.isConnectionHealthy()) throw new Error("Database connection is not healthy. Please check your database connection and try again.");
|
|
77
|
+
const results = [];
|
|
78
|
+
const migrationsToExecute = [];
|
|
79
|
+
const settingsManager = createSettingsManager(adapter.createQueryEngine(settingsSchema, ""), SETTINGS_NAMESPACE);
|
|
80
|
+
let settingsSourceVersion;
|
|
81
|
+
try {
|
|
82
|
+
const result = await settingsManager.get("version");
|
|
83
|
+
settingsSourceVersion = result ? parseInt(result.value) : 0;
|
|
84
|
+
} catch {
|
|
85
|
+
settingsSourceVersion = 0;
|
|
86
|
+
}
|
|
87
|
+
const settingsMigrator = adapter.createMigrationEngine(settingsSchema, SETTINGS_NAMESPACE);
|
|
88
|
+
const settingsTargetVersion = settingsSchema.version;
|
|
89
|
+
if (settingsSourceVersion < settingsTargetVersion) {
|
|
90
|
+
const settingsMigration = await settingsMigrator.prepareMigrationTo(settingsTargetVersion, {
|
|
91
|
+
fromVersion: settingsSourceVersion,
|
|
92
|
+
updateSettings: true
|
|
93
|
+
});
|
|
94
|
+
if (settingsMigration.operations.length > 0) migrationsToExecute.push({
|
|
95
|
+
namespace: SETTINGS_NAMESPACE,
|
|
96
|
+
fromVersion: settingsSourceVersion,
|
|
97
|
+
toVersion: settingsTargetVersion,
|
|
98
|
+
preparedMigration: settingsMigration
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
const sortedDatabases = [...databases].sort((a, b) => a.namespace.localeCompare(b.namespace));
|
|
102
|
+
for (const fragnoDb of sortedDatabases) {
|
|
103
|
+
const migrator = adapter.createMigrationEngine(fragnoDb.schema, fragnoDb.namespace);
|
|
104
|
+
const currentVersion = await migrator.getVersion();
|
|
105
|
+
const targetVersion = fragnoDb.schema.version;
|
|
106
|
+
if (currentVersion < targetVersion) {
|
|
107
|
+
const preparedMigration = await migrator.prepareMigrationTo(targetVersion, { updateSettings: true });
|
|
108
|
+
if (preparedMigration.operations.length > 0) migrationsToExecute.push({
|
|
109
|
+
namespace: fragnoDb.namespace,
|
|
110
|
+
fromVersion: currentVersion,
|
|
111
|
+
toVersion: targetVersion,
|
|
112
|
+
preparedMigration
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
for (const migration of migrationsToExecute) {
|
|
117
|
+
await migration.preparedMigration.execute();
|
|
118
|
+
results.push({
|
|
119
|
+
namespace: migration.namespace,
|
|
120
|
+
didMigrate: true,
|
|
121
|
+
fromVersion: migration.fromVersion,
|
|
122
|
+
toVersion: migration.toVersion
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
for (const fragnoDb of databases) if (!results.find((r) => r.namespace === fragnoDb.namespace)) results.push({
|
|
126
|
+
namespace: fragnoDb.namespace,
|
|
127
|
+
didMigrate: false,
|
|
128
|
+
fromVersion: fragnoDb.schema.version,
|
|
129
|
+
toVersion: fragnoDb.schema.version
|
|
130
|
+
});
|
|
131
|
+
return results;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Post-processes migration files to add ordering and standardize naming.
|
|
135
|
+
*
|
|
136
|
+
* Sorts files with settings namespace first, then alphabetically by namespace,
|
|
137
|
+
* and assigns ordering numbers. Transforms filenames to format:
|
|
138
|
+
* `<date>_<n>_f<from>_t<to>_<namespace>.sql`
|
|
139
|
+
*
|
|
140
|
+
* @param files - Array of generated migration files with version information
|
|
141
|
+
* @returns Array of files with standardized paths and ordering
|
|
142
|
+
*/
|
|
143
|
+
function postProcessMigrationFilenames(files) {
|
|
144
|
+
if (files.length === 0) return [];
|
|
145
|
+
const sortedFiles = [...files].sort((a, b) => {
|
|
146
|
+
if (a.namespace === SETTINGS_NAMESPACE) return -1;
|
|
147
|
+
if (b.namespace === SETTINGS_NAMESPACE) return 1;
|
|
148
|
+
return a.namespace.localeCompare(b.namespace);
|
|
149
|
+
});
|
|
150
|
+
const date = (/* @__PURE__ */ new Date()).toISOString().split("T")[0].replace(/-/g, "");
|
|
151
|
+
return sortedFiles.map((file, index) => {
|
|
152
|
+
const fromVersion = file.fromVersion ?? 0;
|
|
153
|
+
const toVersion = file.toVersion ?? 0;
|
|
154
|
+
const newPath = `${date}_${(index + 1).toString().padStart(3, "0")}_f${fromVersion.toString().padStart(3, "0")}_t${toVersion.toString().padStart(3, "0")}_${file.namespace.replace(/[^a-z0-9-]/gi, "_")}.sql`;
|
|
155
|
+
return {
|
|
156
|
+
schema: file.schema,
|
|
157
|
+
path: newPath,
|
|
158
|
+
namespace: file.namespace
|
|
159
|
+
};
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
//#endregion
|
|
164
|
+
export { executeMigrations, generateMigrationsOrSchema, postProcessMigrationFilenames };
|
|
165
|
+
//# sourceMappingURL=generation-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation-engine.js","names":["settingsSourceVersion: number","generatedFiles: GenerationInternalResult[]","results: ExecuteMigrationResult[]","migrationsToExecute: Array<{\n namespace: string;\n fromVersion: number;\n toVersion: number;\n preparedMigration: PreparedMigration;\n }>"],"sources":["../../src/migration-engine/generation-engine.ts"],"sourcesContent":["import type { FragnoDatabase } from \"../mod\";\nimport type { AnySchema } from \"../schema/create\";\nimport type { PreparedMigration } from \"./create\";\nimport {\n settingsSchema,\n SETTINGS_NAMESPACE,\n createSettingsManager,\n} from \"../shared/settings-schema\";\n\nexport interface GenerationEngineResult {\n schema: string;\n path: string;\n namespace: string;\n}\n\nexport interface GenerationInternalResult {\n schema: string;\n path: string;\n namespace: string;\n fromVersion: number;\n toVersion: number;\n preparedMigration?: PreparedMigration;\n}\n\nexport interface ExecuteMigrationResult {\n namespace: string;\n didMigrate: boolean;\n fromVersion: number;\n toVersion: number;\n}\n\nexport async function generateMigrationsOrSchema<\n const TDatabases extends FragnoDatabase<AnySchema>[],\n>(\n databases: TDatabases,\n options?: {\n path?: string;\n toVersion?: number;\n fromVersion?: number;\n },\n): Promise<GenerationEngineResult[]> {\n if (databases.length === 0) {\n throw new Error(\"No databases provided for schema generation\");\n }\n\n const firstDb = databases[0];\n const adapter = firstDb.adapter;\n\n // If adapter has createSchemaGenerator, use it for combined generation (e.g., Drizzle)\n if (adapter.createSchemaGenerator) {\n if (options?.toVersion !== undefined || options?.fromVersion !== undefined) {\n console.warn(\n \"⚠️ Warning: --from and --to version options are not supported when generating schemas for multiple fragments and will be ignored.\",\n );\n }\n\n const fragments = databases.map((db) => ({\n schema: db.schema,\n namespace: db.namespace,\n }));\n\n const generator = adapter.createSchemaGenerator(fragments, {\n path: options?.path,\n });\n\n return [\n {\n ...generator.generateSchema(),\n namespace: firstDb.namespace,\n },\n ];\n }\n\n // Otherwise, use migration engine for individual generation (e.g., Kysely)\n if (!adapter.createMigrationEngine) {\n throw new Error(\n \"Adapter does not support migration-based schema generation. Ensure your adapter implements createMigrationEngine.\",\n );\n }\n\n if (!(await adapter.isConnectionHealthy())) {\n throw new Error(\n \"Database connection is not healthy. Please check your database connection and try again.\",\n );\n }\n\n const settingsQueryEngine = adapter.createQueryEngine(settingsSchema, \"\");\n const settingsManager = createSettingsManager(settingsQueryEngine, SETTINGS_NAMESPACE);\n\n let settingsSourceVersion: number;\n try {\n const result = await settingsManager.get(\"version\");\n\n if (!result) {\n settingsSourceVersion = 0;\n } else {\n settingsSourceVersion = parseInt(result.value);\n }\n } catch {\n // We don't really have a way to verify this error happens because the key doesn't exist in the database\n settingsSourceVersion = 0;\n }\n\n const generatedFiles: GenerationInternalResult[] = [];\n\n const settingsMigrator = adapter.createMigrationEngine(settingsSchema, SETTINGS_NAMESPACE);\n const settingsTargetVersion = settingsSchema.version;\n\n // Generate settings table migration\n const settingsMigration = await settingsMigrator.prepareMigrationTo(settingsTargetVersion, {\n fromVersion: settingsSourceVersion,\n });\n\n if (!settingsMigration.getSQL) {\n throw new Error(\n \"Migration engine does not support SQL generation. Ensure your adapter's migration engine provides getSQL().\",\n );\n }\n\n const settingsSql = settingsMigration.getSQL();\n\n if (settingsSql.trim()) {\n generatedFiles.push({\n schema: settingsSql,\n path: \"settings-migration.sql\", // Placeholder, will be renamed in post-processing\n namespace: SETTINGS_NAMESPACE,\n fromVersion: settingsSourceVersion,\n toVersion: settingsTargetVersion,\n preparedMigration: settingsMigration,\n });\n }\n\n // Generate migration for each fragment\n for (const db of databases) {\n const dbAdapter = db.adapter;\n\n // Use migration engine\n if (!dbAdapter.createMigrationEngine) {\n throw new Error(\n `Adapter for ${db.namespace} does not support schema generation. ` +\n `Ensure your adapter implements either createSchemaGenerator or createMigrationEngine.`,\n );\n }\n\n const migrator = dbAdapter.createMigrationEngine(db.schema, db.namespace);\n const targetVersion = options?.toVersion ?? db.schema.version;\n const sourceVersion = options?.fromVersion ?? 0;\n\n // Generate migration from source to target version\n const preparedMigration = await migrator.prepareMigrationTo(targetVersion, {\n fromVersion: sourceVersion,\n });\n\n if (!preparedMigration.getSQL) {\n throw new Error(\n \"Migration engine does not support SQL generation. Ensure your adapter's migration engine provides getSQL().\",\n );\n }\n\n const sql = preparedMigration.getSQL();\n\n // If no migrations needed, skip this fragment\n if (sql.trim()) {\n generatedFiles.push({\n schema: sql,\n path: \"schema.sql\", // Placeholder, will be renamed in post-processing\n namespace: db.namespace,\n fromVersion: sourceVersion,\n toVersion: targetVersion,\n preparedMigration: preparedMigration,\n });\n }\n }\n\n // Post-process filenames with ordering\n return postProcessMigrationFilenames(generatedFiles);\n}\n\n/**\n * Execute migrations for all fragments in the correct order.\n * Migrates settings table first, then fragments alphabetically.\n *\n * @param databases - Array of FragnoDatabase instances to migrate\n * @returns Array of execution results for each migration\n */\nexport async function executeMigrations<const TDatabases extends FragnoDatabase<AnySchema>[]>(\n databases: TDatabases,\n): Promise<ExecuteMigrationResult[]> {\n if (databases.length === 0) {\n throw new Error(\"No databases provided for migration\");\n }\n\n const firstDb = databases[0];\n const adapter = firstDb.adapter;\n\n // Validate adapter supports migrations\n if (!adapter.createMigrationEngine) {\n throw new Error(\n \"Adapter does not support running migrations. The adapter only supports schema generation.\\n\" +\n \"Try using 'generateMigrationsOrSchema' instead to generate schema files.\",\n );\n }\n\n // Validate all use same adapter\n const allSameAdapter = databases.every((db) => db.adapter === adapter);\n if (!allSameAdapter) {\n throw new Error(\n \"All fragments must use the same database adapter instance. Mixed adapters are not supported.\",\n );\n }\n\n if (!(await adapter.isConnectionHealthy())) {\n throw new Error(\n \"Database connection is not healthy. Please check your database connection and try again.\",\n );\n }\n\n const results: ExecuteMigrationResult[] = [];\n const migrationsToExecute: Array<{\n namespace: string;\n fromVersion: number;\n toVersion: number;\n preparedMigration: PreparedMigration;\n }> = [];\n\n // 1. Prepare settings table migration\n const settingsQueryEngine = adapter.createQueryEngine(settingsSchema, \"\");\n const settingsManager = createSettingsManager(settingsQueryEngine, SETTINGS_NAMESPACE);\n\n let settingsSourceVersion: number;\n try {\n const result = await settingsManager.get(\"version\");\n settingsSourceVersion = result ? parseInt(result.value) : 0;\n } catch {\n settingsSourceVersion = 0;\n }\n\n const settingsMigrator = adapter.createMigrationEngine(settingsSchema, SETTINGS_NAMESPACE);\n const settingsTargetVersion = settingsSchema.version;\n\n if (settingsSourceVersion < settingsTargetVersion) {\n const settingsMigration = await settingsMigrator.prepareMigrationTo(settingsTargetVersion, {\n fromVersion: settingsSourceVersion,\n updateSettings: true,\n });\n\n if (settingsMigration.operations.length > 0) {\n migrationsToExecute.push({\n namespace: SETTINGS_NAMESPACE,\n fromVersion: settingsSourceVersion,\n toVersion: settingsTargetVersion,\n preparedMigration: settingsMigration,\n });\n }\n }\n\n // 2. Prepare fragment migrations (sorted alphabetically)\n const sortedDatabases = [...databases].sort((a, b) => a.namespace.localeCompare(b.namespace));\n\n for (const fragnoDb of sortedDatabases) {\n const migrator = adapter.createMigrationEngine(fragnoDb.schema, fragnoDb.namespace);\n const currentVersion = await migrator.getVersion();\n const targetVersion = fragnoDb.schema.version;\n\n if (currentVersion < targetVersion) {\n const preparedMigration = await migrator.prepareMigrationTo(targetVersion, {\n updateSettings: true,\n });\n\n if (preparedMigration.operations.length > 0) {\n migrationsToExecute.push({\n namespace: fragnoDb.namespace,\n fromVersion: currentVersion,\n toVersion: targetVersion,\n preparedMigration: preparedMigration,\n });\n }\n }\n }\n\n // 3. Execute all migrations in order\n for (const migration of migrationsToExecute) {\n await migration.preparedMigration.execute();\n results.push({\n namespace: migration.namespace,\n didMigrate: true,\n fromVersion: migration.fromVersion,\n toVersion: migration.toVersion,\n });\n }\n\n // 4. Add skipped migrations (already up-to-date)\n for (const fragnoDb of databases) {\n if (!results.find((r) => r.namespace === fragnoDb.namespace)) {\n results.push({\n namespace: fragnoDb.namespace,\n didMigrate: false,\n fromVersion: fragnoDb.schema.version,\n toVersion: fragnoDb.schema.version,\n });\n }\n }\n\n return results;\n}\n\n/**\n * Post-processes migration files to add ordering and standardize naming.\n *\n * Sorts files with settings namespace first, then alphabetically by namespace,\n * and assigns ordering numbers. Transforms filenames to format:\n * `<date>_<n>_f<from>_t<to>_<namespace>.sql`\n *\n * @param files - Array of generated migration files with version information\n * @returns Array of files with standardized paths and ordering\n */\nexport function postProcessMigrationFilenames(\n files: GenerationInternalResult[],\n): GenerationEngineResult[] {\n if (files.length === 0) {\n return [];\n }\n\n // Sort files: settings namespace first, then alphabetically by namespace\n const sortedFiles = [...files].sort((a, b) => {\n if (a.namespace === SETTINGS_NAMESPACE) {\n return -1;\n }\n if (b.namespace === SETTINGS_NAMESPACE) {\n return 1;\n }\n return a.namespace.localeCompare(b.namespace);\n });\n\n // Generate date prefix for filenames\n const date = new Date().toISOString().split(\"T\")[0].replace(/-/g, \"\");\n\n // Rename files with ordering\n return sortedFiles.map((file, index) => {\n const fromVersion = file.fromVersion ?? 0;\n const toVersion = file.toVersion ?? 0;\n\n // Create new filename with ordering\n const orderNum = (index + 1).toString().padStart(3, \"0\");\n const fromPadded = fromVersion.toString().padStart(3, \"0\");\n const toPadded = toVersion.toString().padStart(3, \"0\");\n const safeName = file.namespace.replace(/[^a-z0-9-]/gi, \"_\");\n const newPath = `${date}_${orderNum}_f${fromPadded}_t${toPadded}_${safeName}.sql`;\n\n return {\n schema: file.schema,\n path: newPath,\n namespace: file.namespace,\n };\n });\n}\n"],"mappings":"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"}
|
|
@@ -11,8 +11,11 @@ interface ColumnInfo {
|
|
|
11
11
|
isNullable: boolean;
|
|
12
12
|
role: "external-id" | "internal-id" | "version" | "reference" | "regular";
|
|
13
13
|
default?: {
|
|
14
|
-
value
|
|
15
|
-
|
|
14
|
+
value: unknown;
|
|
15
|
+
} | {
|
|
16
|
+
dbSpecial: "now";
|
|
17
|
+
} | {
|
|
18
|
+
runtime: "cuid" | "now";
|
|
16
19
|
};
|
|
17
20
|
}
|
|
18
21
|
type MigrationOperation = TableOperation | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","names":[],"sources":["../../src/migration-engine/shared.ts"],"sourcesContent":[],"mappings":";UAAiB,cAAA;EAAA,IAAA,EAAA,MAAA;EAOA,OAAA,EAAA,MAAU,EAAA;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","names":[],"sources":["../../src/migration-engine/shared.ts"],"sourcesContent":[],"mappings":";UAAiB,cAAA;EAAA,IAAA,EAAA,MAAA;EAOA,OAAA,EAAA,MAAU,EAAA;EAkBf,eAAA,EAAA,MAAkB;EAC1B,iBAAA,EAAA,MAAA,EAAA;;AAyBA,UA5Ca,UAAA,CA4Cb;EAAe,IAAA,EAAA,MAAA;EAEP,IAAA,EAAA,QAAA,GAAA,SAAe,GAAA,QAEvB,GAAM,SAAA,GAAA,MAAA,GAAA,MAAA,GAAA,WAAA,GAAA,MAAA,GAAA,QAAA,GAAA,WAAA,MAAA,GAAA;EAEE,UAAA,EAAA,OAAc;EAqBd,IAAA,EAAA,aAAe,GAAA,aAed,GAAA,SAgBA,GAAA,WAAU,GAAA,SAAA;;;;;;;;;KApFX,kBAAA,GACR;;;SAKS;;;;;;;;;;;;;;;IAoBT;KAEQ,eAAA;;IAER;KAEQ,cAAA;;;WAIG;;;;;;;SASF;;;;;;KAQD,eAAA;;;;;;;;;;;;SAeC;;;;;;;;;;;;;;;SAgBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","names":[],"sources":["../../src/migration-engine/shared.ts"],"sourcesContent":["export interface ForeignKeyInfo {\n name: string;\n columns: string[];\n referencedTable: string;\n referencedColumns: string[];\n}\n\nexport interface ColumnInfo {\n name: string;\n type:\n | \"string\"\n | \"integer\"\n | \"bigint\"\n | \"decimal\"\n | \"bool\"\n | \"date\"\n | \"timestamp\"\n | \"json\"\n | \"binary\"\n | `varchar(${number})`;\n isNullable: boolean;\n role: \"external-id\" | \"internal-id\" | \"version\" | \"reference\" | \"regular\";\n default?: {
|
|
1
|
+
{"version":3,"file":"shared.js","names":[],"sources":["../../src/migration-engine/shared.ts"],"sourcesContent":["export interface ForeignKeyInfo {\n name: string;\n columns: string[];\n referencedTable: string;\n referencedColumns: string[];\n}\n\nexport interface ColumnInfo {\n name: string;\n type:\n | \"string\"\n | \"integer\"\n | \"bigint\"\n | \"decimal\"\n | \"bool\"\n | \"date\"\n | \"timestamp\"\n | \"json\"\n | \"binary\"\n | `varchar(${number})`;\n isNullable: boolean;\n role: \"external-id\" | \"internal-id\" | \"version\" | \"reference\" | \"regular\";\n default?: { value: unknown } | { dbSpecial: \"now\" } | { runtime: \"cuid\" | \"now\" };\n}\n\nexport type MigrationOperation =\n | TableOperation\n | {\n // warning: not supported by SQLite\n type: \"add-foreign-key\";\n table: string;\n value: ForeignKeyInfo;\n }\n | {\n // warning: not supported by SQLite\n type: \"drop-foreign-key\";\n table: string;\n name: string;\n }\n | {\n type: \"drop-index\";\n table: string;\n name: string;\n }\n | {\n type: \"add-index\";\n table: string;\n columns: string[];\n name: string;\n unique: boolean;\n }\n | CustomOperation;\n\nexport type CustomOperation = {\n type: \"custom\";\n} & Record<string, unknown>;\n\nexport type TableOperation =\n | {\n type: \"create-table\";\n name: string;\n columns: ColumnInfo[];\n }\n | {\n type: \"drop-table\";\n name: string;\n }\n | {\n type: \"alter-table\";\n name: string;\n value: ColumnOperation[];\n }\n | {\n type: \"rename-table\";\n from: string;\n to: string;\n };\n\nexport type ColumnOperation =\n | {\n type: \"rename-column\";\n from: string;\n to: string;\n }\n | {\n type: \"drop-column\";\n name: string;\n }\n | {\n /**\n * Note: unique constraints are not created, please use dedicated operations like `add-index` instead\n */\n type: \"create-column\";\n value: ColumnInfo;\n }\n | {\n /**\n * warning: Not supported by SQLite\n */\n type: \"update-column\";\n name: string;\n /**\n * For databases like MySQL, it requires the full definition for any modify column statement.\n * Hence, you need to specify the full information of your column here.\n *\n * Then, opt-in for in-detail modification for other databases that supports changing data type/nullable/default separately, such as PostgreSQL.\n *\n * Note: unique constraints are not updated, please use dedicated operations like `add-index` instead\n */\n value: ColumnInfo;\n\n updateNullable: boolean;\n updateDefault: boolean;\n updateDataType: boolean;\n };\n\nexport function isUpdated(op: Extract<ColumnOperation, { type: \"update-column\" }>): boolean {\n return op.updateDataType || op.updateDefault || op.updateNullable;\n}\n"],"mappings":";AAoHA,SAAgB,UAAU,IAAkE;AAC1F,QAAO,GAAG,kBAAkB,GAAG,iBAAiB,GAAG"}
|
package/dist/mod.d.ts
CHANGED
|
@@ -43,14 +43,6 @@ declare class FragnoDatabase<const T extends AnySchema> {
|
|
|
43
43
|
get namespace(): string;
|
|
44
44
|
get schema(): T;
|
|
45
45
|
get adapter(): DatabaseAdapter<void>;
|
|
46
|
-
generateSchema(options?: {
|
|
47
|
-
path?: string;
|
|
48
|
-
toVersion?: number;
|
|
49
|
-
fromVersion?: number;
|
|
50
|
-
}): Promise<{
|
|
51
|
-
schema: string;
|
|
52
|
-
path: string;
|
|
53
|
-
}>;
|
|
54
46
|
}
|
|
55
47
|
declare function defineFragnoDatabase<const TSchema extends AnySchema>(options: CreateFragnoDatabaseDefinitionOptions<TSchema>): FragnoDatabaseDefinition<TSchema>;
|
|
56
48
|
//#endregion
|
package/dist/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;cAMa;cACA;AADA,UAGI,qCAHkD,CAAA,UAGF,SAHE,CAAA,CAAA;EACtD,SAAA,EAAA,MAAA;EAEI,MAAA,EAEP,CAFO;AAKjB;AAoBa,iBApBG,gBAAA,CAoBqB,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IApBsB,cAoBtB,CApBqC,SAoBrC,CAAA;;;;;;AAoBc,cApBtC,wBAoBsC,CAAA,gBApBG,SAoBH,CAAA,CAAA;EAAf,CAAA,OAAA;EAAc,WAAA,CAAA,OAAA,EAhB3B,qCAgB2B,CAhBW,CAgBX,CAAA;EAarC,IAAA,SAAA,CAAA,CAAA,EAAc,MAAA;EAAiB,IAAA,MAAA,CAAA,CAAA,EApBhC,CAoBgC;EAKQ;;;EAM7C,MAAA,CAAA,OAAA,EAxBW,eAwBX,CAAA,EAxB6B,cAwB7B,CAxB4C,CAwB5C,CAAA;;;;;;AAoCM,cA/CA,cA+CA,CAAA,gBA/C+B,SA+C/B,CAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"mod.d.ts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";;;;;;cAMa;cACA;AADA,UAGI,qCAHkD,CAAA,UAGF,SAHE,CAAA,CAAA;EACtD,SAAA,EAAA,MAAA;EAEI,MAAA,EAEP,CAFO;AAKjB;AAoBa,iBApBG,gBAAA,CAoBqB,KAAA,EAAA,OAAA,CAAA,EAAA,KAAA,IApBsB,cAoBtB,CApBqC,SAoBrC,CAAA;;;;;;AAoBc,cApBtC,wBAoBsC,CAAA,gBApBG,SAoBH,CAAA,CAAA;EAAf,CAAA,OAAA;EAAc,WAAA,CAAA,OAAA,EAhB3B,qCAgB2B,CAhBW,CAgBX,CAAA;EAarC,IAAA,SAAA,CAAA,CAAA,EAAc,MAAA;EAAiB,IAAA,MAAA,CAAA,CAAA,EApBhC,CAoBgC;EAKQ;;;EAM7C,MAAA,CAAA,OAAA,EAxBW,eAwBX,CAAA,EAxB6B,cAwB7B,CAxB4C,CAwB5C,CAAA;;;;;;AAoCM,cA/CA,cA+CA,CAAA,gBA/C+B,SA+C/B,CAAA,CAAA;EAAA,CAAA,OAAA;EAKG,WAAA,CAAA,OAAA,EAAA;IAA2C,SAAA,EAAA,MAAA;IACV,MAAA,EAhDG,CAgDH;IAAtC,OAAA,EAhDqD,eAgDrD;EACiB,CAAA;EAAzB,KA3CI,wBAAA,GA2CJ,EAAA,OA3CwC,wBA2CxC;EAAwB,YAAA,CAAA,CAAA,EAvCH,OAuCG,CAvCK,aAuCL,CAvCmB,CAuCnB,CAAA,CAAA;mBA3BF;;gBAgBb;iBAIC;;iBAKG,2CAA2C,oBAChD,sCAAsC,WAC9C,yBAAyB"}
|
package/dist/mod.js
CHANGED
|
@@ -73,38 +73,6 @@ var FragnoDatabase = class {
|
|
|
73
73
|
get adapter() {
|
|
74
74
|
return this.#adapter;
|
|
75
75
|
}
|
|
76
|
-
async generateSchema(options) {
|
|
77
|
-
const adapter = this.#adapter;
|
|
78
|
-
if (adapter.createSchemaGenerator) {
|
|
79
|
-
if (options?.toVersion !== void 0 || options?.fromVersion !== void 0) console.warn("⚠️ toVersion and fromVersion are not supported for schema generation.");
|
|
80
|
-
const generator = adapter.createSchemaGenerator(this.#schema, this.#namespace);
|
|
81
|
-
const defaultPath = options?.path ?? "schema.ts";
|
|
82
|
-
return generator.generateSchema({
|
|
83
|
-
path: defaultPath,
|
|
84
|
-
toVersion: options?.toVersion,
|
|
85
|
-
fromVersion: options?.fromVersion
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
if (adapter.createMigrationEngine) {
|
|
89
|
-
const migrator = adapter.createMigrationEngine(this.#schema, this.#namespace);
|
|
90
|
-
const targetVersion = options?.toVersion ?? this.#schema.version;
|
|
91
|
-
const sourceVersion = options?.fromVersion;
|
|
92
|
-
const currentVersion = sourceVersion ?? await migrator.getVersion();
|
|
93
|
-
const defaultPath = options?.path ?? (migrator.getDefaultFileName ? migrator.getDefaultFileName(this.#namespace, currentVersion, targetVersion) : "schema.sql");
|
|
94
|
-
const preparedMigration = await migrator.prepareMigrationTo(targetVersion, {
|
|
95
|
-
updateSettings: true,
|
|
96
|
-
fromVersion: sourceVersion
|
|
97
|
-
});
|
|
98
|
-
if (!preparedMigration.getSQL) throw new Error("Migration engine does not support SQL generation. Ensure your adapter's migration engine provides getSQL().");
|
|
99
|
-
const sql = preparedMigration.getSQL();
|
|
100
|
-
if (!sql.trim()) throw new Error("No migrations needed. Database is already at the target version.");
|
|
101
|
-
return {
|
|
102
|
-
schema: sql,
|
|
103
|
-
path: defaultPath
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
throw new Error("Adapter does not support schema generation. Ensure your adapter implements either createSchemaGenerator or createMigrationEngine.");
|
|
107
|
-
}
|
|
108
76
|
};
|
|
109
77
|
function defineFragnoDatabase(options) {
|
|
110
78
|
return new FragnoDatabaseDefinition(options);
|
package/dist/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","names":["#namespace","#schema","#adapter"],"sources":["../src/mod.ts"],"sourcesContent":["import type { DatabaseAdapter } from \"./adapters/adapters\";\nimport type { AnySchema } from \"./schema/create\";\nimport type { AbstractQuery } from \"./query/query\";\n\nexport type { DatabaseAdapter };\n\nexport const fragnoDatabaseFakeSymbol = \"$fragno-database\" as const;\nexport const fragnoDatabaseLibraryVersion = \"0.1\" as const;\n\nexport interface CreateFragnoDatabaseDefinitionOptions<T extends AnySchema> {\n namespace: string;\n schema: T;\n}\n\nexport function isFragnoDatabase(value: unknown): value is FragnoDatabase<AnySchema> {\n if (value instanceof FragnoDatabase) {\n return true;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n return (\n fragnoDatabaseFakeSymbol in value &&\n value[fragnoDatabaseFakeSymbol] === fragnoDatabaseFakeSymbol\n );\n}\n\n/**\n * Definition of a Fragno database schema and namespace.\n * Created by library authors using defineFragnoDatabase().\n * Apps instantiate it by calling .create(adapter).\n */\nexport class FragnoDatabaseDefinition<const T extends AnySchema> {\n #namespace: string;\n #schema: T;\n\n constructor(options: CreateFragnoDatabaseDefinitionOptions<T>) {\n this.#namespace = options.namespace;\n this.#schema = options.schema;\n }\n\n get namespace() {\n return this.#namespace;\n }\n\n get schema() {\n return this.#schema;\n }\n\n /**\n * Creates a FragnoDatabase instance by binding an adapter to this definition.\n */\n create(adapter: DatabaseAdapter): FragnoDatabase<T> {\n return new FragnoDatabase({\n namespace: this.#namespace,\n schema: this.#schema,\n adapter,\n });\n }\n}\n\n/**\n * A Fragno database instance with a bound adapter.\n * Created from a FragnoDatabaseDefinition by calling .create(adapter).\n */\nexport class FragnoDatabase<const T extends AnySchema> {\n #namespace: string;\n #schema: T;\n #adapter: DatabaseAdapter;\n\n constructor(options: { namespace: string; schema: T; adapter: DatabaseAdapter }) {\n this.#namespace = options.namespace;\n this.#schema = options.schema;\n this.#adapter = options.adapter;\n }\n\n get [fragnoDatabaseFakeSymbol](): typeof fragnoDatabaseFakeSymbol {\n return fragnoDatabaseFakeSymbol;\n }\n\n async createClient(): Promise<AbstractQuery<T>> {\n const dbVersion = await this.#adapter.getSchemaVersion(this.#namespace);\n if (dbVersion !== this.#schema.version.toString()) {\n throw new Error(\n `Database is not at expected version. Did you forget to run migrations?` +\n ` Current version: ${dbVersion}, Expected version: ${this.#schema.version}`,\n );\n }\n\n return this.#adapter.createQueryEngine(this.#schema, this.#namespace);\n }\n\n async runMigrations(): Promise<boolean> {\n if (!this.#adapter.createMigrationEngine) {\n throw new Error(\"Migration engine not supported for this adapter.\");\n }\n\n const migrator = this.#adapter.createMigrationEngine(this.#schema, this.#namespace);\n const preparedMigration = await migrator.prepareMigration();\n await preparedMigration.execute();\n\n return preparedMigration.operations.length > 0;\n }\n\n get namespace() {\n return this.#namespace;\n }\n\n get schema() {\n return this.#schema;\n }\n\n get adapter() {\n return this.#adapter;\n }\n
|
|
1
|
+
{"version":3,"file":"mod.js","names":["#namespace","#schema","#adapter"],"sources":["../src/mod.ts"],"sourcesContent":["import type { DatabaseAdapter } from \"./adapters/adapters\";\nimport type { AnySchema } from \"./schema/create\";\nimport type { AbstractQuery } from \"./query/query\";\n\nexport type { DatabaseAdapter };\n\nexport const fragnoDatabaseFakeSymbol = \"$fragno-database\" as const;\nexport const fragnoDatabaseLibraryVersion = \"0.1\" as const;\n\nexport interface CreateFragnoDatabaseDefinitionOptions<T extends AnySchema> {\n namespace: string;\n schema: T;\n}\n\nexport function isFragnoDatabase(value: unknown): value is FragnoDatabase<AnySchema> {\n if (value instanceof FragnoDatabase) {\n return true;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n return (\n fragnoDatabaseFakeSymbol in value &&\n value[fragnoDatabaseFakeSymbol] === fragnoDatabaseFakeSymbol\n );\n}\n\n/**\n * Definition of a Fragno database schema and namespace.\n * Created by library authors using defineFragnoDatabase().\n * Apps instantiate it by calling .create(adapter).\n */\nexport class FragnoDatabaseDefinition<const T extends AnySchema> {\n #namespace: string;\n #schema: T;\n\n constructor(options: CreateFragnoDatabaseDefinitionOptions<T>) {\n this.#namespace = options.namespace;\n this.#schema = options.schema;\n }\n\n get namespace() {\n return this.#namespace;\n }\n\n get schema() {\n return this.#schema;\n }\n\n /**\n * Creates a FragnoDatabase instance by binding an adapter to this definition.\n */\n create(adapter: DatabaseAdapter): FragnoDatabase<T> {\n return new FragnoDatabase({\n namespace: this.#namespace,\n schema: this.#schema,\n adapter,\n });\n }\n}\n\n/**\n * A Fragno database instance with a bound adapter.\n * Created from a FragnoDatabaseDefinition by calling .create(adapter).\n */\nexport class FragnoDatabase<const T extends AnySchema> {\n #namespace: string;\n #schema: T;\n #adapter: DatabaseAdapter;\n\n constructor(options: { namespace: string; schema: T; adapter: DatabaseAdapter }) {\n this.#namespace = options.namespace;\n this.#schema = options.schema;\n this.#adapter = options.adapter;\n }\n\n get [fragnoDatabaseFakeSymbol](): typeof fragnoDatabaseFakeSymbol {\n return fragnoDatabaseFakeSymbol;\n }\n\n async createClient(): Promise<AbstractQuery<T>> {\n const dbVersion = await this.#adapter.getSchemaVersion(this.#namespace);\n if (dbVersion !== this.#schema.version.toString()) {\n throw new Error(\n `Database is not at expected version. Did you forget to run migrations?` +\n ` Current version: ${dbVersion}, Expected version: ${this.#schema.version}`,\n );\n }\n\n return this.#adapter.createQueryEngine(this.#schema, this.#namespace);\n }\n\n async runMigrations(): Promise<boolean> {\n if (!this.#adapter.createMigrationEngine) {\n throw new Error(\"Migration engine not supported for this adapter.\");\n }\n\n const migrator = this.#adapter.createMigrationEngine(this.#schema, this.#namespace);\n const preparedMigration = await migrator.prepareMigration();\n await preparedMigration.execute();\n\n return preparedMigration.operations.length > 0;\n }\n\n get namespace() {\n return this.#namespace;\n }\n\n get schema() {\n return this.#schema;\n }\n\n get adapter() {\n return this.#adapter;\n }\n}\n\nexport function defineFragnoDatabase<const TSchema extends AnySchema>(\n options: CreateFragnoDatabaseDefinitionOptions<TSchema>,\n): FragnoDatabaseDefinition<TSchema> {\n return new FragnoDatabaseDefinition(options);\n}\n\nexport {\n defineFragmentWithDatabase,\n DatabaseFragmentBuilder,\n type FragnoPublicConfigWithDatabase,\n type DatabaseFragmentContext,\n} from \"./fragment\";\n"],"mappings":";;;AAMA,MAAa,2BAA2B;AACxC,MAAa,+BAA+B;AAO5C,SAAgB,iBAAiB,OAAoD;AACnF,KAAI,iBAAiB,eACnB,QAAO;AAGT,KAAI,OAAO,UAAU,YAAY,UAAU,KACzC,QAAO;AAGT,QACE,4BAA4B,SAC5B,MAAM,8BAA8B;;;;;;;AASxC,IAAa,2BAAb,MAAiE;CAC/D;CACA;CAEA,YAAY,SAAmD;AAC7D,QAAKA,YAAa,QAAQ;AAC1B,QAAKC,SAAU,QAAQ;;CAGzB,IAAI,YAAY;AACd,SAAO,MAAKD;;CAGd,IAAI,SAAS;AACX,SAAO,MAAKC;;;;;CAMd,OAAO,SAA6C;AAClD,SAAO,IAAI,eAAe;GACxB,WAAW,MAAKD;GAChB,QAAQ,MAAKC;GACb;GACD,CAAC;;;;;;;AAQN,IAAa,iBAAb,MAAuD;CACrD;CACA;CACA;CAEA,YAAY,SAAqE;AAC/E,QAAKD,YAAa,QAAQ;AAC1B,QAAKC,SAAU,QAAQ;AACvB,QAAKC,UAAW,QAAQ;;CAG1B,KAAK,4BAA6D;AAChE,SAAO;;CAGT,MAAM,eAA0C;EAC9C,MAAM,YAAY,MAAM,MAAKA,QAAS,iBAAiB,MAAKF,UAAW;AACvE,MAAI,cAAc,MAAKC,OAAQ,QAAQ,UAAU,CAC/C,OAAM,IAAI,MACR,2FACuB,UAAU,sBAAsB,MAAKA,OAAQ,UACrE;AAGH,SAAO,MAAKC,QAAS,kBAAkB,MAAKD,QAAS,MAAKD,UAAW;;CAGvE,MAAM,gBAAkC;AACtC,MAAI,CAAC,MAAKE,QAAS,sBACjB,OAAM,IAAI,MAAM,mDAAmD;EAIrE,MAAM,oBAAoB,MADT,MAAKA,QAAS,sBAAsB,MAAKD,QAAS,MAAKD,UAAW,CAC1C,kBAAkB;AAC3D,QAAM,kBAAkB,SAAS;AAEjC,SAAO,kBAAkB,WAAW,SAAS;;CAG/C,IAAI,YAAY;AACd,SAAO,MAAKA;;CAGd,IAAI,SAAS;AACX,SAAO,MAAKC;;CAGd,IAAI,UAAU;AACZ,SAAO,MAAKC;;;AAIhB,SAAgB,qBACd,SACmC;AACnC,QAAO,IAAI,yBAAyB,QAAQ"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { entityKind, is } from "./entity.js";
|
|
2
|
+
import { Column } from "./column.js";
|
|
3
|
+
import { ViewBaseConfig } from "./view-common.js";
|
|
4
|
+
import { Table } from "./table.js";
|
|
5
|
+
import { SQL, sql } from "./sql/sql.js";
|
|
6
|
+
|
|
7
|
+
//#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/alias.js
|
|
8
|
+
var ColumnAliasProxyHandler = class {
|
|
9
|
+
constructor(table) {
|
|
10
|
+
this.table = table;
|
|
11
|
+
}
|
|
12
|
+
static [entityKind] = "ColumnAliasProxyHandler";
|
|
13
|
+
get(columnObj, prop) {
|
|
14
|
+
if (prop === "table") return this.table;
|
|
15
|
+
return columnObj[prop];
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
var TableAliasProxyHandler = class {
|
|
19
|
+
constructor(alias, replaceOriginalName) {
|
|
20
|
+
this.alias = alias;
|
|
21
|
+
this.replaceOriginalName = replaceOriginalName;
|
|
22
|
+
}
|
|
23
|
+
static [entityKind] = "TableAliasProxyHandler";
|
|
24
|
+
get(target, prop) {
|
|
25
|
+
if (prop === Table.Symbol.IsAlias) return true;
|
|
26
|
+
if (prop === Table.Symbol.Name) return this.alias;
|
|
27
|
+
if (this.replaceOriginalName && prop === Table.Symbol.OriginalName) return this.alias;
|
|
28
|
+
if (prop === ViewBaseConfig) return {
|
|
29
|
+
...target[ViewBaseConfig],
|
|
30
|
+
name: this.alias,
|
|
31
|
+
isAlias: true
|
|
32
|
+
};
|
|
33
|
+
if (prop === Table.Symbol.Columns) {
|
|
34
|
+
const columns = target[Table.Symbol.Columns];
|
|
35
|
+
if (!columns) return columns;
|
|
36
|
+
const proxiedColumns = {};
|
|
37
|
+
Object.keys(columns).map((key) => {
|
|
38
|
+
proxiedColumns[key] = new Proxy(columns[key], new ColumnAliasProxyHandler(new Proxy(target, this)));
|
|
39
|
+
});
|
|
40
|
+
return proxiedColumns;
|
|
41
|
+
}
|
|
42
|
+
const value = target[prop];
|
|
43
|
+
if (is(value, Column)) return new Proxy(value, new ColumnAliasProxyHandler(new Proxy(target, this)));
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var RelationTableAliasProxyHandler = class {
|
|
48
|
+
constructor(alias) {
|
|
49
|
+
this.alias = alias;
|
|
50
|
+
}
|
|
51
|
+
static [entityKind] = "RelationTableAliasProxyHandler";
|
|
52
|
+
get(target, prop) {
|
|
53
|
+
if (prop === "sourceTable") return aliasedTable(target.sourceTable, this.alias);
|
|
54
|
+
return target[prop];
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
function aliasedTable(table, tableAlias) {
|
|
58
|
+
return new Proxy(table, new TableAliasProxyHandler(tableAlias, false));
|
|
59
|
+
}
|
|
60
|
+
function aliasedTableColumn(column, tableAlias) {
|
|
61
|
+
return new Proxy(column, new ColumnAliasProxyHandler(new Proxy(column.table, new TableAliasProxyHandler(tableAlias, false))));
|
|
62
|
+
}
|
|
63
|
+
function mapColumnsInAliasedSQLToAlias(query, alias) {
|
|
64
|
+
return new SQL.Aliased(mapColumnsInSQLToAlias(query.sql, alias), query.fieldAlias);
|
|
65
|
+
}
|
|
66
|
+
function mapColumnsInSQLToAlias(query, alias) {
|
|
67
|
+
return sql.join(query.queryChunks.map((c) => {
|
|
68
|
+
if (is(c, Column)) return aliasedTableColumn(c, alias);
|
|
69
|
+
if (is(c, SQL)) return mapColumnsInSQLToAlias(c, alias);
|
|
70
|
+
if (is(c, SQL.Aliased)) return mapColumnsInAliasedSQLToAlias(c, alias);
|
|
71
|
+
return c;
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
//#endregion
|
|
76
|
+
export { ColumnAliasProxyHandler, TableAliasProxyHandler, aliasedTable, aliasedTableColumn, mapColumnsInAliasedSQLToAlias, mapColumnsInSQLToAlias };
|
|
77
|
+
//# sourceMappingURL=alias.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alias.js","names":[],"sources":["../../../../../../../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/alias.js"],"sourcesContent":["import { Column } from \"./column.js\";\nimport { entityKind, is } from \"./entity.js\";\nimport { SQL, sql } from \"./sql/sql.js\";\nimport { Table } from \"./table.js\";\nimport { ViewBaseConfig } from \"./view-common.js\";\nclass ColumnAliasProxyHandler {\n constructor(table) {\n this.table = table;\n }\n static [entityKind] = \"ColumnAliasProxyHandler\";\n get(columnObj, prop) {\n if (prop === \"table\") {\n return this.table;\n }\n return columnObj[prop];\n }\n}\nclass TableAliasProxyHandler {\n constructor(alias, replaceOriginalName) {\n this.alias = alias;\n this.replaceOriginalName = replaceOriginalName;\n }\n static [entityKind] = \"TableAliasProxyHandler\";\n get(target, prop) {\n if (prop === Table.Symbol.IsAlias) {\n return true;\n }\n if (prop === Table.Symbol.Name) {\n return this.alias;\n }\n if (this.replaceOriginalName && prop === Table.Symbol.OriginalName) {\n return this.alias;\n }\n if (prop === ViewBaseConfig) {\n return {\n ...target[ViewBaseConfig],\n name: this.alias,\n isAlias: true\n };\n }\n if (prop === Table.Symbol.Columns) {\n const columns = target[Table.Symbol.Columns];\n if (!columns) {\n return columns;\n }\n const proxiedColumns = {};\n Object.keys(columns).map((key) => {\n proxiedColumns[key] = new Proxy(\n columns[key],\n new ColumnAliasProxyHandler(new Proxy(target, this))\n );\n });\n return proxiedColumns;\n }\n const value = target[prop];\n if (is(value, Column)) {\n return new Proxy(value, new ColumnAliasProxyHandler(new Proxy(target, this)));\n }\n return value;\n }\n}\nclass RelationTableAliasProxyHandler {\n constructor(alias) {\n this.alias = alias;\n }\n static [entityKind] = \"RelationTableAliasProxyHandler\";\n get(target, prop) {\n if (prop === \"sourceTable\") {\n return aliasedTable(target.sourceTable, this.alias);\n }\n return target[prop];\n }\n}\nfunction aliasedTable(table, tableAlias) {\n return new Proxy(table, new TableAliasProxyHandler(tableAlias, false));\n}\nfunction aliasedRelation(relation, tableAlias) {\n return new Proxy(relation, new RelationTableAliasProxyHandler(tableAlias));\n}\nfunction aliasedTableColumn(column, tableAlias) {\n return new Proxy(\n column,\n new ColumnAliasProxyHandler(new Proxy(column.table, new TableAliasProxyHandler(tableAlias, false)))\n );\n}\nfunction mapColumnsInAliasedSQLToAlias(query, alias) {\n return new SQL.Aliased(mapColumnsInSQLToAlias(query.sql, alias), query.fieldAlias);\n}\nfunction mapColumnsInSQLToAlias(query, alias) {\n return sql.join(query.queryChunks.map((c) => {\n if (is(c, Column)) {\n return aliasedTableColumn(c, alias);\n }\n if (is(c, SQL)) {\n return mapColumnsInSQLToAlias(c, alias);\n }\n if (is(c, SQL.Aliased)) {\n return mapColumnsInAliasedSQLToAlias(c, alias);\n }\n return c;\n }));\n}\nexport {\n ColumnAliasProxyHandler,\n RelationTableAliasProxyHandler,\n TableAliasProxyHandler,\n aliasedRelation,\n aliasedTable,\n aliasedTableColumn,\n mapColumnsInAliasedSQLToAlias,\n mapColumnsInSQLToAlias\n};\n//# sourceMappingURL=alias.js.map"],"x_google_ignoreList":[0],"mappings":";;;;;;;AAKA,IAAM,0BAAN,MAA8B;CAC5B,YAAY,OAAO;AACjB,OAAK,QAAQ;;CAEf,QAAQ,cAAc;CACtB,IAAI,WAAW,MAAM;AACnB,MAAI,SAAS,QACX,QAAO,KAAK;AAEd,SAAO,UAAU;;;AAGrB,IAAM,yBAAN,MAA6B;CAC3B,YAAY,OAAO,qBAAqB;AACtC,OAAK,QAAQ;AACb,OAAK,sBAAsB;;CAE7B,QAAQ,cAAc;CACtB,IAAI,QAAQ,MAAM;AAChB,MAAI,SAAS,MAAM,OAAO,QACxB,QAAO;AAET,MAAI,SAAS,MAAM,OAAO,KACxB,QAAO,KAAK;AAEd,MAAI,KAAK,uBAAuB,SAAS,MAAM,OAAO,aACpD,QAAO,KAAK;AAEd,MAAI,SAAS,eACX,QAAO;GACL,GAAG,OAAO;GACV,MAAM,KAAK;GACX,SAAS;GACV;AAEH,MAAI,SAAS,MAAM,OAAO,SAAS;GACjC,MAAM,UAAU,OAAO,MAAM,OAAO;AACpC,OAAI,CAAC,QACH,QAAO;GAET,MAAM,iBAAiB,EAAE;AACzB,UAAO,KAAK,QAAQ,CAAC,KAAK,QAAQ;AAChC,mBAAe,OAAO,IAAI,MACxB,QAAQ,MACR,IAAI,wBAAwB,IAAI,MAAM,QAAQ,KAAK,CAAC,CACrD;KACD;AACF,UAAO;;EAET,MAAM,QAAQ,OAAO;AACrB,MAAI,GAAG,OAAO,OAAO,CACnB,QAAO,IAAI,MAAM,OAAO,IAAI,wBAAwB,IAAI,MAAM,QAAQ,KAAK,CAAC,CAAC;AAE/E,SAAO;;;AAGX,IAAM,iCAAN,MAAqC;CACnC,YAAY,OAAO;AACjB,OAAK,QAAQ;;CAEf,QAAQ,cAAc;CACtB,IAAI,QAAQ,MAAM;AAChB,MAAI,SAAS,cACX,QAAO,aAAa,OAAO,aAAa,KAAK,MAAM;AAErD,SAAO,OAAO;;;AAGlB,SAAS,aAAa,OAAO,YAAY;AACvC,QAAO,IAAI,MAAM,OAAO,IAAI,uBAAuB,YAAY,MAAM,CAAC;;AAKxE,SAAS,mBAAmB,QAAQ,YAAY;AAC9C,QAAO,IAAI,MACT,QACA,IAAI,wBAAwB,IAAI,MAAM,OAAO,OAAO,IAAI,uBAAuB,YAAY,MAAM,CAAC,CAAC,CACpG;;AAEH,SAAS,8BAA8B,OAAO,OAAO;AACnD,QAAO,IAAI,IAAI,QAAQ,uBAAuB,MAAM,KAAK,MAAM,EAAE,MAAM,WAAW;;AAEpF,SAAS,uBAAuB,OAAO,OAAO;AAC5C,QAAO,IAAI,KAAK,MAAM,YAAY,KAAK,MAAM;AAC3C,MAAI,GAAG,GAAG,OAAO,CACf,QAAO,mBAAmB,GAAG,MAAM;AAErC,MAAI,GAAG,GAAG,IAAI,CACZ,QAAO,uBAAuB,GAAG,MAAM;AAEzC,MAAI,GAAG,GAAG,IAAI,QAAQ,CACpB,QAAO,8BAA8B,GAAG,MAAM;AAEhD,SAAO;GACP,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { entityKind } from "./entity.js";
|
|
2
|
+
import { Table } from "./table.js";
|
|
3
|
+
|
|
4
|
+
//#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/casing.js
|
|
5
|
+
function toSnakeCase(input) {
|
|
6
|
+
return (input.replace(/['\u2019]/g, "").match(/[\da-z]+|[A-Z]+(?![a-z])|[A-Z][\da-z]+/g) ?? []).map((word) => word.toLowerCase()).join("_");
|
|
7
|
+
}
|
|
8
|
+
function toCamelCase(input) {
|
|
9
|
+
return (input.replace(/['\u2019]/g, "").match(/[\da-z]+|[A-Z]+(?![a-z])|[A-Z][\da-z]+/g) ?? []).reduce((acc, word, i) => {
|
|
10
|
+
return acc + (i === 0 ? word.toLowerCase() : `${word[0].toUpperCase()}${word.slice(1)}`);
|
|
11
|
+
}, "");
|
|
12
|
+
}
|
|
13
|
+
function noopCase(input) {
|
|
14
|
+
return input;
|
|
15
|
+
}
|
|
16
|
+
var CasingCache = class {
|
|
17
|
+
static [entityKind] = "CasingCache";
|
|
18
|
+
/** @internal */
|
|
19
|
+
cache = {};
|
|
20
|
+
cachedTables = {};
|
|
21
|
+
convert;
|
|
22
|
+
constructor(casing) {
|
|
23
|
+
this.convert = casing === "snake_case" ? toSnakeCase : casing === "camelCase" ? toCamelCase : noopCase;
|
|
24
|
+
}
|
|
25
|
+
getColumnCasing(column) {
|
|
26
|
+
if (!column.keyAsName) return column.name;
|
|
27
|
+
const key = `${column.table[Table.Symbol.Schema] ?? "public"}.${column.table[Table.Symbol.OriginalName]}.${column.name}`;
|
|
28
|
+
if (!this.cache[key]) this.cacheTable(column.table);
|
|
29
|
+
return this.cache[key];
|
|
30
|
+
}
|
|
31
|
+
cacheTable(table) {
|
|
32
|
+
const tableKey = `${table[Table.Symbol.Schema] ?? "public"}.${table[Table.Symbol.OriginalName]}`;
|
|
33
|
+
if (!this.cachedTables[tableKey]) {
|
|
34
|
+
for (const column of Object.values(table[Table.Symbol.Columns])) {
|
|
35
|
+
const columnKey = `${tableKey}.${column.name}`;
|
|
36
|
+
this.cache[columnKey] = this.convert(column.name);
|
|
37
|
+
}
|
|
38
|
+
this.cachedTables[tableKey] = true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
clearCache() {
|
|
42
|
+
this.cache = {};
|
|
43
|
+
this.cachedTables = {};
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
//#endregion
|
|
48
|
+
export { CasingCache };
|
|
49
|
+
//# sourceMappingURL=casing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"casing.js","names":[],"sources":["../../../../../../../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/casing.js"],"sourcesContent":["import { entityKind } from \"./entity.js\";\nimport { Table } from \"./table.js\";\nfunction toSnakeCase(input) {\n const words = input.replace(/['\\u2019]/g, \"\").match(/[\\da-z]+|[A-Z]+(?![a-z])|[A-Z][\\da-z]+/g) ?? [];\n return words.map((word) => word.toLowerCase()).join(\"_\");\n}\nfunction toCamelCase(input) {\n const words = input.replace(/['\\u2019]/g, \"\").match(/[\\da-z]+|[A-Z]+(?![a-z])|[A-Z][\\da-z]+/g) ?? [];\n return words.reduce((acc, word, i) => {\n const formattedWord = i === 0 ? word.toLowerCase() : `${word[0].toUpperCase()}${word.slice(1)}`;\n return acc + formattedWord;\n }, \"\");\n}\nfunction noopCase(input) {\n return input;\n}\nclass CasingCache {\n static [entityKind] = \"CasingCache\";\n /** @internal */\n cache = {};\n cachedTables = {};\n convert;\n constructor(casing) {\n this.convert = casing === \"snake_case\" ? toSnakeCase : casing === \"camelCase\" ? toCamelCase : noopCase;\n }\n getColumnCasing(column) {\n if (!column.keyAsName) return column.name;\n const schema = column.table[Table.Symbol.Schema] ?? \"public\";\n const tableName = column.table[Table.Symbol.OriginalName];\n const key = `${schema}.${tableName}.${column.name}`;\n if (!this.cache[key]) {\n this.cacheTable(column.table);\n }\n return this.cache[key];\n }\n cacheTable(table) {\n const schema = table[Table.Symbol.Schema] ?? \"public\";\n const tableName = table[Table.Symbol.OriginalName];\n const tableKey = `${schema}.${tableName}`;\n if (!this.cachedTables[tableKey]) {\n for (const column of Object.values(table[Table.Symbol.Columns])) {\n const columnKey = `${tableKey}.${column.name}`;\n this.cache[columnKey] = this.convert(column.name);\n }\n this.cachedTables[tableKey] = true;\n }\n }\n clearCache() {\n this.cache = {};\n this.cachedTables = {};\n }\n}\nexport {\n CasingCache,\n toCamelCase,\n toSnakeCase\n};\n//# sourceMappingURL=casing.js.map"],"x_google_ignoreList":[0],"mappings":";;;;AAEA,SAAS,YAAY,OAAO;AAE1B,SADc,MAAM,QAAQ,cAAc,GAAG,CAAC,MAAM,0CAA0C,IAAI,EAAE,EACvF,KAAK,SAAS,KAAK,aAAa,CAAC,CAAC,KAAK,IAAI;;AAE1D,SAAS,YAAY,OAAO;AAE1B,SADc,MAAM,QAAQ,cAAc,GAAG,CAAC,MAAM,0CAA0C,IAAI,EAAE,EACvF,QAAQ,KAAK,MAAM,MAAM;AAEpC,SAAO,OADe,MAAM,IAAI,KAAK,aAAa,GAAG,GAAG,KAAK,GAAG,aAAa,GAAG,KAAK,MAAM,EAAE;IAE5F,GAAG;;AAER,SAAS,SAAS,OAAO;AACvB,QAAO;;AAET,IAAM,cAAN,MAAkB;CAChB,QAAQ,cAAc;;CAEtB,QAAQ,EAAE;CACV,eAAe,EAAE;CACjB;CACA,YAAY,QAAQ;AAClB,OAAK,UAAU,WAAW,eAAe,cAAc,WAAW,cAAc,cAAc;;CAEhG,gBAAgB,QAAQ;AACtB,MAAI,CAAC,OAAO,UAAW,QAAO,OAAO;EAGrC,MAAM,MAAM,GAFG,OAAO,MAAM,MAAM,OAAO,WAAW,SAE9B,GADJ,OAAO,MAAM,MAAM,OAAO,cACT,GAAG,OAAO;AAC7C,MAAI,CAAC,KAAK,MAAM,KACd,MAAK,WAAW,OAAO,MAAM;AAE/B,SAAO,KAAK,MAAM;;CAEpB,WAAW,OAAO;EAGhB,MAAM,WAAW,GAFF,MAAM,MAAM,OAAO,WAAW,SAElB,GADT,MAAM,MAAM,OAAO;AAErC,MAAI,CAAC,KAAK,aAAa,WAAW;AAChC,QAAK,MAAM,UAAU,OAAO,OAAO,MAAM,MAAM,OAAO,SAAS,EAAE;IAC/D,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO;AACxC,SAAK,MAAM,aAAa,KAAK,QAAQ,OAAO,KAAK;;AAEnD,QAAK,aAAa,YAAY;;;CAGlC,aAAa;AACX,OAAK,QAAQ,EAAE;AACf,OAAK,eAAe,EAAE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { entityKind } from "./entity.js";
|
|
2
2
|
|
|
3
|
-
//#region ../../node_modules/.
|
|
3
|
+
//#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/column-builder.js
|
|
4
4
|
var ColumnBuilder = class {
|
|
5
5
|
static [entityKind] = "ColumnBuilder";
|
|
6
6
|
config;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-builder.js","names":[],"sources":["../../../../../../../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/column-builder.js"],"sourcesContent":["import { entityKind } from \"./entity.js\";\nclass ColumnBuilder {\n static [entityKind] = \"ColumnBuilder\";\n config;\n constructor(name, dataType, columnType) {\n this.config = {\n name,\n keyAsName: name === \"\",\n notNull: false,\n default: void 0,\n hasDefault: false,\n primaryKey: false,\n isUnique: false,\n uniqueName: void 0,\n uniqueType: void 0,\n dataType,\n columnType,\n generated: void 0\n };\n }\n /**\n * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types.\n *\n * @example\n * ```ts\n * const users = pgTable('users', {\n * \tid: integer('id').$type<UserId>().primaryKey(),\n * \tdetails: json('details').$type<UserDetails>().notNull(),\n * });\n * ```\n */\n $type() {\n return this;\n }\n /**\n * Adds a `not null` clause to the column definition.\n *\n * Affects the `select` model of the table - columns *without* `not null` will be nullable on select.\n */\n notNull() {\n this.config.notNull = true;\n return this;\n }\n /**\n * Adds a `default <value>` clause to the column definition.\n *\n * Affects the `insert` model of the table - columns *with* `default` are optional on insert.\n *\n * If you need to set a dynamic default value, use {@link $defaultFn} instead.\n */\n default(value) {\n this.config.default = value;\n this.config.hasDefault = true;\n return this;\n }\n /**\n * Adds a dynamic default value to the column.\n * The function will be called when the row is inserted, and the returned value will be used as the column value.\n *\n * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n */\n $defaultFn(fn) {\n this.config.defaultFn = fn;\n this.config.hasDefault = true;\n return this;\n }\n /**\n * Alias for {@link $defaultFn}.\n */\n $default = this.$defaultFn;\n /**\n * Adds a dynamic update value to the column.\n * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided.\n * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value.\n *\n * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`.\n */\n $onUpdateFn(fn) {\n this.config.onUpdateFn = fn;\n this.config.hasDefault = true;\n return this;\n }\n /**\n * Alias for {@link $onUpdateFn}.\n */\n $onUpdate = this.$onUpdateFn;\n /**\n * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`.\n *\n * In SQLite, `integer primary key` implicitly makes the column auto-incrementing.\n */\n primaryKey() {\n this.config.primaryKey = true;\n this.config.notNull = true;\n return this;\n }\n /** @internal Sets the name of the column to the key within the table definition if a name was not given. */\n setName(name) {\n if (this.config.name !== \"\") return;\n this.config.name = name;\n }\n}\nexport {\n ColumnBuilder\n};\n//# sourceMappingURL=column-builder.js.map"],"x_google_ignoreList":[0],"mappings":";;;AACA,IAAM,gBAAN,MAAoB;CAClB,QAAQ,cAAc;CACtB;CACA,YAAY,MAAM,UAAU,YAAY;AACtC,OAAK,SAAS;GACZ;GACA,WAAW,SAAS;GACpB,SAAS;GACT,SAAS,KAAK;GACd,YAAY;GACZ,YAAY;GACZ,UAAU;GACV,YAAY,KAAK;GACjB,YAAY,KAAK;GACjB;GACA;GACA,WAAW,KAAK;GACjB;;;;;;;;;;;;;CAaH,QAAQ;AACN,SAAO;;;;;;;CAOT,UAAU;AACR,OAAK,OAAO,UAAU;AACtB,SAAO;;;;;;;;;CAST,QAAQ,OAAO;AACb,OAAK,OAAO,UAAU;AACtB,OAAK,OAAO,aAAa;AACzB,SAAO;;;;;;;;CAQT,WAAW,IAAI;AACb,OAAK,OAAO,YAAY;AACxB,OAAK,OAAO,aAAa;AACzB,SAAO;;;;;CAKT,WAAW,KAAK;;;;;;;;CAQhB,YAAY,IAAI;AACd,OAAK,OAAO,aAAa;AACzB,OAAK,OAAO,aAAa;AACzB,SAAO;;;;;CAKT,YAAY,KAAK;;;;;;CAMjB,aAAa;AACX,OAAK,OAAO,aAAa;AACzB,OAAK,OAAO,UAAU;AACtB,SAAO;;;CAGT,QAAQ,MAAM;AACZ,MAAI,KAAK,OAAO,SAAS,GAAI;AAC7B,OAAK,OAAO,OAAO"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { entityKind } from "./entity.js";
|
|
2
2
|
|
|
3
|
-
//#region ../../node_modules/.
|
|
3
|
+
//#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/column.js
|
|
4
4
|
var Column = class {
|
|
5
5
|
constructor(table, config) {
|
|
6
6
|
this.table = table;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.js","names":[],"sources":["../../../../../../../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/column.js"],"sourcesContent":["import { entityKind } from \"./entity.js\";\nclass Column {\n constructor(table, config) {\n this.table = table;\n this.config = config;\n this.name = config.name;\n this.keyAsName = config.keyAsName;\n this.notNull = config.notNull;\n this.default = config.default;\n this.defaultFn = config.defaultFn;\n this.onUpdateFn = config.onUpdateFn;\n this.hasDefault = config.hasDefault;\n this.primary = config.primaryKey;\n this.isUnique = config.isUnique;\n this.uniqueName = config.uniqueName;\n this.uniqueType = config.uniqueType;\n this.dataType = config.dataType;\n this.columnType = config.columnType;\n this.generated = config.generated;\n this.generatedIdentity = config.generatedIdentity;\n }\n static [entityKind] = \"Column\";\n name;\n keyAsName;\n primary;\n notNull;\n default;\n defaultFn;\n onUpdateFn;\n hasDefault;\n isUnique;\n uniqueName;\n uniqueType;\n dataType;\n columnType;\n enumValues = void 0;\n generated = void 0;\n generatedIdentity = void 0;\n config;\n mapFromDriverValue(value) {\n return value;\n }\n mapToDriverValue(value) {\n return value;\n }\n // ** @internal */\n shouldDisableInsert() {\n return this.config.generated !== void 0 && this.config.generated.type !== \"byDefault\";\n }\n}\nexport {\n Column\n};\n//# sourceMappingURL=column.js.map"],"x_google_ignoreList":[0],"mappings":";;;AACA,IAAM,SAAN,MAAa;CACX,YAAY,OAAO,QAAQ;AACzB,OAAK,QAAQ;AACb,OAAK,SAAS;AACd,OAAK,OAAO,OAAO;AACnB,OAAK,YAAY,OAAO;AACxB,OAAK,UAAU,OAAO;AACtB,OAAK,UAAU,OAAO;AACtB,OAAK,YAAY,OAAO;AACxB,OAAK,aAAa,OAAO;AACzB,OAAK,aAAa,OAAO;AACzB,OAAK,UAAU,OAAO;AACtB,OAAK,WAAW,OAAO;AACvB,OAAK,aAAa,OAAO;AACzB,OAAK,aAAa,OAAO;AACzB,OAAK,WAAW,OAAO;AACvB,OAAK,aAAa,OAAO;AACzB,OAAK,YAAY,OAAO;AACxB,OAAK,oBAAoB,OAAO;;CAElC,QAAQ,cAAc;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,aAAa,KAAK;CAClB,YAAY,KAAK;CACjB,oBAAoB,KAAK;CACzB;CACA,mBAAmB,OAAO;AACxB,SAAO;;CAET,iBAAiB,OAAO;AACtB,SAAO;;CAGT,sBAAsB;AACpB,SAAO,KAAK,OAAO,cAAc,KAAK,KAAK,KAAK,OAAO,UAAU,SAAS"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../../node_modules/.
|
|
1
|
+
//#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/entity.js
|
|
2
2
|
const entityKind = Symbol.for("drizzle:entityKind");
|
|
3
3
|
const hasOwnEntityKind = Symbol.for("drizzle:hasOwnEntityKind");
|
|
4
4
|
function is(value, type) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.js","names":[],"sources":["../../../../../../../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/entity.js"],"sourcesContent":["const entityKind = Symbol.for(\"drizzle:entityKind\");\nconst hasOwnEntityKind = Symbol.for(\"drizzle:hasOwnEntityKind\");\nfunction is(value, type) {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n if (value instanceof type) {\n return true;\n }\n if (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n throw new Error(\n `Class \"${type.name ?? \"<unknown>\"}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`\n );\n }\n let cls = Object.getPrototypeOf(value).constructor;\n if (cls) {\n while (cls) {\n if (entityKind in cls && cls[entityKind] === type[entityKind]) {\n return true;\n }\n cls = Object.getPrototypeOf(cls);\n }\n }\n return false;\n}\nexport {\n entityKind,\n hasOwnEntityKind,\n is\n};\n//# sourceMappingURL=entity.js.map"],"x_google_ignoreList":[0],"mappings":";AAAA,MAAM,aAAa,OAAO,IAAI,qBAAqB;AACnD,MAAM,mBAAmB,OAAO,IAAI,2BAA2B;AAC/D,SAAS,GAAG,OAAO,MAAM;AACvB,KAAI,CAAC,SAAS,OAAO,UAAU,SAC7B,QAAO;AAET,KAAI,iBAAiB,KACnB,QAAO;AAET,KAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,WAAW,CACzD,OAAM,IAAI,MACR,UAAU,KAAK,QAAQ,YAAY,+HACpC;CAEH,IAAI,MAAM,OAAO,eAAe,MAAM,CAAC;AACvC,KAAI,IACF,QAAO,KAAK;AACV,MAAI,cAAc,OAAO,IAAI,gBAAgB,KAAK,YAChD,QAAO;AAET,QAAM,OAAO,eAAe,IAAI;;AAGpC,QAAO"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { entityKind } from "./entity.js";
|
|
2
|
+
|
|
3
|
+
//#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/errors.js
|
|
4
|
+
var DrizzleError = class extends Error {
|
|
5
|
+
static [entityKind] = "DrizzleError";
|
|
6
|
+
constructor({ message, cause }) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = "DrizzleError";
|
|
9
|
+
this.cause = cause;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
var TransactionRollbackError = class extends DrizzleError {
|
|
13
|
+
static [entityKind] = "TransactionRollbackError";
|
|
14
|
+
constructor() {
|
|
15
|
+
super({ message: "Rollback" });
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { DrizzleError };
|
|
21
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","names":[],"sources":["../../../../../../../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/errors.js"],"sourcesContent":["import { entityKind } from \"./entity.js\";\nclass DrizzleError extends Error {\n static [entityKind] = \"DrizzleError\";\n constructor({ message, cause }) {\n super(message);\n this.name = \"DrizzleError\";\n this.cause = cause;\n }\n}\nclass DrizzleQueryError extends Error {\n constructor(query, params, cause) {\n super(`Failed query: ${query}\nparams: ${params}`);\n this.query = query;\n this.params = params;\n this.cause = cause;\n Error.captureStackTrace(this, DrizzleQueryError);\n if (cause) this.cause = cause;\n }\n}\nclass TransactionRollbackError extends DrizzleError {\n static [entityKind] = \"TransactionRollbackError\";\n constructor() {\n super({ message: \"Rollback\" });\n }\n}\nexport {\n DrizzleError,\n DrizzleQueryError,\n TransactionRollbackError\n};\n//# sourceMappingURL=errors.js.map"],"x_google_ignoreList":[0],"mappings":";;;AACA,IAAM,eAAN,cAA2B,MAAM;CAC/B,QAAQ,cAAc;CACtB,YAAY,EAAE,SAAS,SAAS;AAC9B,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,QAAQ;;;AAcjB,IAAM,2BAAN,cAAuC,aAAa;CAClD,QAAQ,cAAc;CACtB,cAAc;AACZ,QAAM,EAAE,SAAS,YAAY,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { iife } from "../../tracing-utils.js";
|
|
|
6
6
|
import { uniqueKeyName } from "../unique-constraint.js";
|
|
7
7
|
import { makePgArray, parsePgArray } from "../utils/array.js";
|
|
8
8
|
|
|
9
|
-
//#region ../../node_modules/.
|
|
9
|
+
//#region ../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/columns/common.js
|
|
10
10
|
var PgColumnBuilder = class extends ColumnBuilder {
|
|
11
11
|
foreignKeyConfigs = [];
|
|
12
12
|
static [entityKind] = "PgColumnBuilder";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","names":[],"sources":["../../../../../../../../../../node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql+pglite@0.3.11_@types+better-sqlite3@7.6.13_better-sqlite3@12.4.1_kysely@0.28.8/node_modules/drizzle-orm/pg-core/columns/common.js"],"sourcesContent":["import { ColumnBuilder } from \"../../column-builder.js\";\nimport { Column } from \"../../column.js\";\nimport { entityKind, is } from \"../../entity.js\";\nimport { ForeignKeyBuilder } from \"../foreign-keys.js\";\nimport { iife } from \"../../tracing-utils.js\";\nimport { uniqueKeyName } from \"../unique-constraint.js\";\nimport { makePgArray, parsePgArray } from \"../utils/array.js\";\nclass PgColumnBuilder extends ColumnBuilder {\n foreignKeyConfigs = [];\n static [entityKind] = \"PgColumnBuilder\";\n array(size) {\n return new PgArrayBuilder(this.config.name, this, size);\n }\n references(ref, actions = {}) {\n this.foreignKeyConfigs.push({ ref, actions });\n return this;\n }\n unique(name, config) {\n this.config.isUnique = true;\n this.config.uniqueName = name;\n this.config.uniqueType = config?.nulls;\n return this;\n }\n generatedAlwaysAs(as) {\n this.config.generated = {\n as,\n type: \"always\",\n mode: \"stored\"\n };\n return this;\n }\n /** @internal */\n buildForeignKeys(column, table) {\n return this.foreignKeyConfigs.map(({ ref, actions }) => {\n return iife(\n (ref2, actions2) => {\n const builder = new ForeignKeyBuilder(() => {\n const foreignColumn = ref2();\n return { columns: [column], foreignColumns: [foreignColumn] };\n });\n if (actions2.onUpdate) {\n builder.onUpdate(actions2.onUpdate);\n }\n if (actions2.onDelete) {\n builder.onDelete(actions2.onDelete);\n }\n return builder.build(table);\n },\n ref,\n actions\n );\n });\n }\n /** @internal */\n buildExtraConfigColumn(table) {\n return new ExtraConfigColumn(table, this.config);\n }\n}\nclass PgColumn extends Column {\n constructor(table, config) {\n if (!config.uniqueName) {\n config.uniqueName = uniqueKeyName(table, [config.name]);\n }\n super(table, config);\n this.table = table;\n }\n static [entityKind] = \"PgColumn\";\n}\nclass ExtraConfigColumn extends PgColumn {\n static [entityKind] = \"ExtraConfigColumn\";\n getSQLType() {\n return this.getSQLType();\n }\n indexConfig = {\n order: this.config.order ?? \"asc\",\n nulls: this.config.nulls ?? \"last\",\n opClass: this.config.opClass\n };\n defaultConfig = {\n order: \"asc\",\n nulls: \"last\",\n opClass: void 0\n };\n asc() {\n this.indexConfig.order = \"asc\";\n return this;\n }\n desc() {\n this.indexConfig.order = \"desc\";\n return this;\n }\n nullsFirst() {\n this.indexConfig.nulls = \"first\";\n return this;\n }\n nullsLast() {\n this.indexConfig.nulls = \"last\";\n return this;\n }\n /**\n * ### PostgreSQL documentation quote\n *\n * > An operator class with optional parameters can be specified for each column of an index.\n * The operator class identifies the operators to be used by the index for that column.\n * For example, a B-tree index on four-byte integers would use the int4_ops class;\n * this operator class includes comparison functions for four-byte integers.\n * In practice the default operator class for the column's data type is usually sufficient.\n * The main point of having operator classes is that for some data types, there could be more than one meaningful ordering.\n * For example, we might want to sort a complex-number data type either by absolute value or by real part.\n * We could do this by defining two operator classes for the data type and then selecting the proper class when creating an index.\n * More information about operator classes check:\n *\n * ### Useful links\n * https://www.postgresql.org/docs/current/sql-createindex.html\n *\n * https://www.postgresql.org/docs/current/indexes-opclass.html\n *\n * https://www.postgresql.org/docs/current/xindex.html\n *\n * ### Additional types\n * If you have the `pg_vector` extension installed in your database, you can use the\n * `vector_l2_ops`, `vector_ip_ops`, `vector_cosine_ops`, `vector_l1_ops`, `bit_hamming_ops`, `bit_jaccard_ops`, `halfvec_l2_ops`, `sparsevec_l2_ops` options, which are predefined types.\n *\n * **You can always specify any string you want in the operator class, in case Drizzle doesn't have it natively in its types**\n *\n * @param opClass\n * @returns\n */\n op(opClass) {\n this.indexConfig.opClass = opClass;\n return this;\n }\n}\nclass IndexedColumn {\n static [entityKind] = \"IndexedColumn\";\n constructor(name, keyAsName, type, indexConfig) {\n this.name = name;\n this.keyAsName = keyAsName;\n this.type = type;\n this.indexConfig = indexConfig;\n }\n name;\n keyAsName;\n type;\n indexConfig;\n}\nclass PgArrayBuilder extends PgColumnBuilder {\n static [entityKind] = \"PgArrayBuilder\";\n constructor(name, baseBuilder, size) {\n super(name, \"array\", \"PgArray\");\n this.config.baseBuilder = baseBuilder;\n this.config.size = size;\n }\n /** @internal */\n build(table) {\n const baseColumn = this.config.baseBuilder.build(table);\n return new PgArray(\n table,\n this.config,\n baseColumn\n );\n }\n}\nclass PgArray extends PgColumn {\n constructor(table, config, baseColumn, range) {\n super(table, config);\n this.baseColumn = baseColumn;\n this.range = range;\n this.size = config.size;\n }\n size;\n static [entityKind] = \"PgArray\";\n getSQLType() {\n return `${this.baseColumn.getSQLType()}[${typeof this.size === \"number\" ? this.size : \"\"}]`;\n }\n mapFromDriverValue(value) {\n if (typeof value === \"string\") {\n value = parsePgArray(value);\n }\n return value.map((v) => this.baseColumn.mapFromDriverValue(v));\n }\n mapToDriverValue(value, isNestedArray = false) {\n const a = value.map(\n (v) => v === null ? null : is(this.baseColumn, PgArray) ? this.baseColumn.mapToDriverValue(v, true) : this.baseColumn.mapToDriverValue(v)\n );\n if (isNestedArray) return a;\n return makePgArray(a);\n }\n}\nexport {\n ExtraConfigColumn,\n IndexedColumn,\n PgArray,\n PgArrayBuilder,\n PgColumn,\n PgColumnBuilder\n};\n//# sourceMappingURL=common.js.map"],"x_google_ignoreList":[0],"mappings":"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"}
|