@warlock.js/cascade 4.0.171 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/bin/cascadejs +3 -0
- package/esm/cli/commands/migrate-export-sql.mjs +48 -0
- package/esm/cli/commands/migrate-export-sql.mjs.map +1 -0
- package/esm/cli/commands/migrate-list.mjs +26 -0
- package/esm/cli/commands/migrate-list.mjs.map +1 -0
- package/esm/cli/commands/migrate-rollback.mjs +50 -0
- package/esm/cli/commands/migrate-rollback.mjs.map +1 -0
- package/esm/cli/commands/migrate.mjs +65 -0
- package/esm/cli/commands/migrate.mjs.map +1 -0
- package/esm/cli/connection-from-env.mjs +181 -0
- package/esm/cli/connection-from-env.mjs.map +1 -0
- package/esm/cli/index.mjs +31 -0
- package/esm/cli/index.mjs.map +1 -0
- package/esm/cli/load-migrations.mjs +78 -0
- package/esm/cli/load-migrations.mjs.map +1 -0
- package/esm/cli/printers.mjs +57 -0
- package/esm/cli/printers.mjs.map +1 -0
- package/esm/cli/setup-logger.mjs +30 -0
- package/esm/cli/setup-logger.mjs.map +1 -0
- package/esm/cli/with-cli-connection.mjs +39 -0
- package/esm/cli/with-cli-connection.mjs.map +1 -0
- package/esm/cli.d.mts +1 -0
- package/esm/cli.mjs +26 -0
- package/esm/cli.mjs.map +1 -0
- package/esm/context/database-data-source-context.d.mts +32 -0
- package/esm/context/database-data-source-context.d.mts.map +1 -0
- package/esm/context/database-data-source-context.mjs +35 -0
- package/esm/context/database-data-source-context.mjs.map +1 -0
- package/esm/context/database-transaction-context.d.mts +38 -0
- package/esm/context/database-transaction-context.d.mts.map +1 -0
- package/esm/context/database-transaction-context.mjs +47 -0
- package/esm/context/database-transaction-context.mjs.map +1 -0
- package/esm/contracts/database-driver.contract.d.mts +443 -0
- package/esm/contracts/database-driver.contract.d.mts.map +1 -0
- package/esm/contracts/database-id-generator.contract.d.mts +109 -0
- package/esm/contracts/database-id-generator.contract.d.mts.map +1 -0
- package/esm/contracts/database-remover.contract.d.mts +108 -0
- package/esm/contracts/database-remover.contract.d.mts.map +1 -0
- package/esm/contracts/database-restorer.contract.d.mts +145 -0
- package/esm/contracts/database-restorer.contract.d.mts.map +1 -0
- package/esm/contracts/database-writer.contract.d.mts +123 -0
- package/esm/contracts/database-writer.contract.d.mts.map +1 -0
- package/esm/contracts/driver-blueprint.contract.d.mts +52 -0
- package/esm/contracts/driver-blueprint.contract.d.mts.map +1 -0
- package/esm/contracts/index.d.mts +9 -0
- package/esm/contracts/migration-driver.contract.d.mts +476 -0
- package/esm/contracts/migration-driver.contract.d.mts.map +1 -0
- package/esm/contracts/query-builder.contract.d.mts +1663 -0
- package/esm/contracts/query-builder.contract.d.mts.map +1 -0
- package/esm/contracts/sync-adapter.contract.d.mts +49 -0
- package/esm/contracts/sync-adapter.contract.d.mts.map +1 -0
- package/esm/data-source/data-source-registry.d.mts +111 -0
- package/esm/data-source/data-source-registry.d.mts.map +1 -0
- package/esm/data-source/data-source-registry.mjs +142 -0
- package/esm/data-source/data-source-registry.mjs.map +1 -0
- package/esm/data-source/data-source.d.mts +160 -0
- package/esm/data-source/data-source.d.mts.map +1 -0
- package/esm/data-source/data-source.mjs +87 -0
- package/esm/data-source/data-source.mjs.map +1 -0
- package/esm/database-dirty-tracker.d.mts +254 -0
- package/esm/database-dirty-tracker.d.mts.map +1 -0
- package/esm/database-dirty-tracker.mjs +356 -0
- package/esm/database-dirty-tracker.mjs.map +1 -0
- package/esm/drivers/mongodb/mongodb-blueprint.mjs +54 -0
- package/esm/drivers/mongodb/mongodb-blueprint.mjs.map +1 -0
- package/esm/drivers/mongodb/mongodb-driver.d.mts +334 -0
- package/esm/drivers/mongodb/mongodb-driver.d.mts.map +1 -0
- package/esm/drivers/mongodb/mongodb-driver.mjs +716 -0
- package/esm/drivers/mongodb/mongodb-driver.mjs.map +1 -0
- package/esm/drivers/mongodb/mongodb-id-generator.d.mts +120 -0
- package/esm/drivers/mongodb/mongodb-id-generator.d.mts.map +1 -0
- package/esm/drivers/mongodb/mongodb-id-generator.mjs +141 -0
- package/esm/drivers/mongodb/mongodb-id-generator.mjs.map +1 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.d.mts +322 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.d.mts.map +1 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.mjs +531 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.mjs.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-builder.d.mts +1117 -0
- package/esm/drivers/mongodb/mongodb-query-builder.d.mts.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-builder.mjs +1828 -0
- package/esm/drivers/mongodb/mongodb-query-builder.mjs.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-operations.d.mts +230 -0
- package/esm/drivers/mongodb/mongodb-query-operations.d.mts.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-operations.mjs +275 -0
- package/esm/drivers/mongodb/mongodb-query-operations.mjs.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-parser.d.mts +263 -0
- package/esm/drivers/mongodb/mongodb-query-parser.d.mts.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-parser.mjs +965 -0
- package/esm/drivers/mongodb/mongodb-query-parser.mjs.map +1 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts +78 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.d.mts.map +1 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.mjs +118 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.mjs.map +1 -0
- package/esm/drivers/mongodb/types.d.mts +43 -0
- package/esm/drivers/mongodb/types.d.mts.map +1 -0
- package/esm/drivers/postgres/index.d.mts +8 -0
- package/esm/drivers/postgres/index.mjs +9 -0
- package/esm/drivers/postgres/postgres-blueprint.d.mts +60 -0
- package/esm/drivers/postgres/postgres-blueprint.d.mts.map +1 -0
- package/esm/drivers/postgres/postgres-blueprint.mjs +105 -0
- package/esm/drivers/postgres/postgres-blueprint.mjs.map +1 -0
- package/esm/drivers/postgres/postgres-dialect.d.mts +144 -0
- package/esm/drivers/postgres/postgres-dialect.d.mts.map +1 -0
- package/esm/drivers/postgres/postgres-dialect.mjs +227 -0
- package/esm/drivers/postgres/postgres-dialect.mjs.map +1 -0
- package/esm/drivers/postgres/postgres-driver.d.mts +424 -0
- package/esm/drivers/postgres/postgres-driver.d.mts.map +1 -0
- package/esm/drivers/postgres/postgres-driver.mjs +845 -0
- package/esm/drivers/postgres/postgres-driver.mjs.map +1 -0
- package/esm/drivers/postgres/postgres-migration-driver.d.mts +393 -0
- package/esm/drivers/postgres/postgres-migration-driver.d.mts.map +1 -0
- package/esm/drivers/postgres/postgres-migration-driver.mjs +760 -0
- package/esm/drivers/postgres/postgres-migration-driver.mjs.map +1 -0
- package/esm/drivers/postgres/postgres-query-builder.d.mts +399 -0
- package/esm/drivers/postgres/postgres-query-builder.d.mts.map +1 -0
- package/esm/drivers/postgres/postgres-query-builder.mjs +1105 -0
- package/esm/drivers/postgres/postgres-query-builder.mjs.map +1 -0
- package/esm/drivers/postgres/postgres-query-parser.d.mts +351 -0
- package/esm/drivers/postgres/postgres-query-parser.d.mts.map +1 -0
- package/esm/drivers/postgres/postgres-query-parser.mjs +796 -0
- package/esm/drivers/postgres/postgres-query-parser.mjs.map +1 -0
- package/esm/drivers/postgres/postgres-sql-serializer.mjs +260 -0
- package/esm/drivers/postgres/postgres-sql-serializer.mjs.map +1 -0
- package/esm/drivers/postgres/postgres-sync-adapter.d.mts +79 -0
- package/esm/drivers/postgres/postgres-sync-adapter.d.mts.map +1 -0
- package/esm/drivers/postgres/postgres-sync-adapter.mjs +162 -0
- package/esm/drivers/postgres/postgres-sync-adapter.mjs.map +1 -0
- package/esm/drivers/postgres/types.d.mts +105 -0
- package/esm/drivers/postgres/types.d.mts.map +1 -0
- package/esm/drivers/sql/sql-dialect.contract.d.mts +221 -0
- package/esm/drivers/sql/sql-dialect.contract.d.mts.map +1 -0
- package/esm/drivers/sql/sql-types.d.mts +150 -0
- package/esm/drivers/sql/sql-types.d.mts.map +1 -0
- package/esm/errors/missing-data-source.error.d.mts +25 -0
- package/esm/errors/missing-data-source.error.d.mts.map +1 -0
- package/esm/errors/missing-data-source.error.mjs +31 -0
- package/esm/errors/missing-data-source.error.mjs.map +1 -0
- package/esm/errors/transaction-rollback.error.d.mts +23 -0
- package/esm/errors/transaction-rollback.error.d.mts.map +1 -0
- package/esm/errors/transaction-rollback.error.mjs +29 -0
- package/esm/errors/transaction-rollback.error.mjs.map +1 -0
- package/esm/events/model-events.d.mts +234 -0
- package/esm/events/model-events.d.mts.map +1 -0
- package/esm/events/model-events.mjs +254 -0
- package/esm/events/model-events.mjs.map +1 -0
- package/esm/expressions/aggregate-expressions.d.mts +224 -0
- package/esm/expressions/aggregate-expressions.d.mts.map +1 -0
- package/esm/expressions/aggregate-expressions.mjs +232 -0
- package/esm/expressions/aggregate-expressions.mjs.map +1 -0
- package/esm/index.d.mts +67 -0
- package/esm/index.mjs +53 -0
- package/esm/migration/column-builder.d.mts +420 -0
- package/esm/migration/column-builder.d.mts.map +1 -0
- package/esm/migration/column-builder.mjs +532 -0
- package/esm/migration/column-builder.mjs.map +1 -0
- package/esm/migration/column-helpers.d.mts +280 -0
- package/esm/migration/column-helpers.d.mts.map +1 -0
- package/esm/migration/column-helpers.mjs +376 -0
- package/esm/migration/column-helpers.mjs.map +1 -0
- package/esm/migration/foreign-key-builder.d.mts +106 -0
- package/esm/migration/foreign-key-builder.d.mts.map +1 -0
- package/esm/migration/foreign-key-builder.mjs +126 -0
- package/esm/migration/foreign-key-builder.mjs.map +1 -0
- package/esm/migration/index.d.mts +6 -0
- package/esm/migration/index.mjs +7 -0
- package/esm/migration/migration-runner.d.mts +279 -0
- package/esm/migration/migration-runner.d.mts.map +1 -0
- package/esm/migration/migration-runner.mjs +662 -0
- package/esm/migration/migration-runner.mjs.map +1 -0
- package/esm/migration/migration.d.mts +2035 -0
- package/esm/migration/migration.d.mts.map +1 -0
- package/esm/migration/migration.mjs +2083 -0
- package/esm/migration/migration.mjs.map +1 -0
- package/esm/migration/sql-grammar.mjs +115 -0
- package/esm/migration/sql-grammar.mjs.map +1 -0
- package/esm/migration/sql-serializer.d.mts +26 -0
- package/esm/migration/sql-serializer.d.mts.map +1 -0
- package/esm/migration/sql-serializer.mjs +26 -0
- package/esm/migration/sql-serializer.mjs.map +1 -0
- package/esm/migration/types.d.mts +136 -0
- package/esm/migration/types.d.mts.map +1 -0
- package/esm/model/methods/accessor-methods.mjs +54 -0
- package/esm/model/methods/accessor-methods.mjs.map +1 -0
- package/esm/model/methods/delete-methods.mjs +16 -0
- package/esm/model/methods/delete-methods.mjs.map +1 -0
- package/esm/model/methods/dirty-methods.mjs +20 -0
- package/esm/model/methods/dirty-methods.mjs.map +1 -0
- package/esm/model/methods/hydration-methods.mjs +51 -0
- package/esm/model/methods/hydration-methods.mjs.map +1 -0
- package/esm/model/methods/instance-event-methods.mjs +22 -0
- package/esm/model/methods/instance-event-methods.mjs.map +1 -0
- package/esm/model/methods/meta-methods.mjs +36 -0
- package/esm/model/methods/meta-methods.mjs.map +1 -0
- package/esm/model/methods/pivot-methods.mjs +48 -0
- package/esm/model/methods/pivot-methods.mjs.map +1 -0
- package/esm/model/methods/query-methods.mjs +121 -0
- package/esm/model/methods/query-methods.mjs.map +1 -0
- package/esm/model/methods/restore-methods.mjs +16 -0
- package/esm/model/methods/restore-methods.mjs.map +1 -0
- package/esm/model/methods/scope-methods.mjs +20 -0
- package/esm/model/methods/scope-methods.mjs.map +1 -0
- package/esm/model/methods/serialization-methods.mjs +20 -0
- package/esm/model/methods/serialization-methods.mjs.map +1 -0
- package/esm/model/methods/static-event-methods.mjs +37 -0
- package/esm/model/methods/static-event-methods.mjs.map +1 -0
- package/esm/model/methods/write-methods.mjs +69 -0
- package/esm/model/methods/write-methods.mjs.map +1 -0
- package/esm/model/model.d.mts +1778 -0
- package/esm/model/model.d.mts.map +1 -0
- package/esm/model/model.mjs +1762 -0
- package/esm/model/model.mjs.map +1 -0
- package/esm/model/model.types.d.mts +47 -0
- package/esm/model/model.types.d.mts.map +1 -0
- package/esm/model/register-model.d.mts +140 -0
- package/esm/model/register-model.d.mts.map +1 -0
- package/esm/model/register-model.mjs +175 -0
- package/esm/model/register-model.mjs.map +1 -0
- package/esm/model/relation-decorators.d.mts +88 -0
- package/esm/model/relation-decorators.d.mts.map +1 -0
- package/esm/model/relation-decorators.mjs +191 -0
- package/esm/model/relation-decorators.mjs.map +1 -0
- package/esm/operations/database.d.mts +46 -0
- package/esm/operations/database.d.mts.map +1 -0
- package/esm/operations/database.mjs +40 -0
- package/esm/operations/database.mjs.map +1 -0
- package/esm/operations/index.d.mts +2 -0
- package/esm/operations/index.mjs +4 -0
- package/esm/operations/migrations.d.mts +71 -0
- package/esm/operations/migrations.d.mts.map +1 -0
- package/esm/operations/migrations.mjs +70 -0
- package/esm/operations/migrations.mjs.map +1 -0
- package/esm/query-builder/query-builder.d.mts +564 -0
- package/esm/query-builder/query-builder.d.mts.map +1 -0
- package/esm/query-builder/query-builder.mjs +1097 -0
- package/esm/query-builder/query-builder.mjs.map +1 -0
- package/esm/relations/index.d.mts +4 -0
- package/esm/relations/index.mjs +5 -0
- package/esm/relations/key-conventions.mjs +119 -0
- package/esm/relations/key-conventions.mjs.map +1 -0
- package/esm/relations/pivot-operations.d.mts +155 -0
- package/esm/relations/pivot-operations.d.mts.map +1 -0
- package/esm/relations/pivot-operations.mjs +232 -0
- package/esm/relations/pivot-operations.mjs.map +1 -0
- package/esm/relations/relation-hydrator.d.mts +55 -0
- package/esm/relations/relation-hydrator.d.mts.map +1 -0
- package/esm/relations/relation-hydrator.mjs +52 -0
- package/esm/relations/relation-hydrator.mjs.map +1 -0
- package/esm/relations/relation-loader.d.mts +190 -0
- package/esm/relations/relation-loader.d.mts.map +1 -0
- package/esm/relations/relation-loader.mjs +416 -0
- package/esm/relations/relation-loader.mjs.map +1 -0
- package/esm/relations/types.d.mts +317 -0
- package/esm/relations/types.d.mts.map +1 -0
- package/esm/remover/database-remover.d.mts +104 -0
- package/esm/remover/database-remover.d.mts.map +1 -0
- package/esm/remover/database-remover.mjs +174 -0
- package/esm/remover/database-remover.mjs.map +1 -0
- package/esm/restorer/database-restorer.d.mts +135 -0
- package/esm/restorer/database-restorer.d.mts.map +1 -0
- package/esm/restorer/database-restorer.mjs +316 -0
- package/esm/restorer/database-restorer.mjs.map +1 -0
- package/esm/sql-database-dirty-tracker.d.mts +17 -0
- package/esm/sql-database-dirty-tracker.d.mts.map +1 -0
- package/esm/sql-database-dirty-tracker.mjs +20 -0
- package/esm/sql-database-dirty-tracker.mjs.map +1 -0
- package/esm/sync/model-events.mjs +46 -0
- package/esm/sync/model-events.mjs.map +1 -0
- package/esm/sync/model-sync-operation.d.mts +159 -0
- package/esm/sync/model-sync-operation.d.mts.map +1 -0
- package/esm/sync/model-sync-operation.mjs +257 -0
- package/esm/sync/model-sync-operation.mjs.map +1 -0
- package/esm/sync/model-sync.d.mts +126 -0
- package/esm/sync/model-sync.d.mts.map +1 -0
- package/esm/sync/model-sync.mjs +157 -0
- package/esm/sync/model-sync.mjs.map +1 -0
- package/esm/sync/sync-context.d.mts +69 -0
- package/esm/sync/sync-context.d.mts.map +1 -0
- package/esm/sync/sync-context.mjs +95 -0
- package/esm/sync/sync-context.mjs.map +1 -0
- package/esm/sync/sync-manager.d.mts +213 -0
- package/esm/sync/sync-manager.d.mts.map +1 -0
- package/esm/sync/sync-manager.mjs +597 -0
- package/esm/sync/sync-manager.mjs.map +1 -0
- package/esm/sync/types.d.mts +215 -0
- package/esm/sync/types.d.mts.map +1 -0
- package/esm/types.d.mts +423 -0
- package/esm/types.d.mts.map +1 -0
- package/esm/utils/connect-to-database.d.mts +328 -0
- package/esm/utils/connect-to-database.d.mts.map +1 -0
- package/esm/utils/connect-to-database.mjs +130 -0
- package/esm/utils/connect-to-database.mjs.map +1 -0
- package/esm/utils/database-writer.utils.d.mts +18 -0
- package/esm/utils/database-writer.utils.d.mts.map +1 -0
- package/esm/utils/database-writer.utils.mjs +25 -0
- package/esm/utils/database-writer.utils.mjs.map +1 -0
- package/esm/utils/define-model.d.mts +185 -0
- package/esm/utils/define-model.d.mts.map +1 -0
- package/esm/utils/define-model.mjs +105 -0
- package/esm/utils/define-model.mjs.map +1 -0
- package/esm/utils/is-valid-date-value.mjs +22 -0
- package/esm/utils/is-valid-date-value.mjs.map +1 -0
- package/esm/utils/once-connected.d.mts +150 -0
- package/esm/utils/once-connected.d.mts.map +1 -0
- package/esm/utils/once-connected.mjs +203 -0
- package/esm/utils/once-connected.mjs.map +1 -0
- package/esm/validation/database-seal-plugins.d.mts +1 -0
- package/esm/validation/database-seal-plugins.mjs +11 -0
- package/esm/validation/database-seal-plugins.mjs.map +1 -0
- package/esm/validation/database-writer-validation-error.d.mts +101 -0
- package/esm/validation/database-writer-validation-error.d.mts.map +1 -0
- package/esm/validation/database-writer-validation-error.mjs +153 -0
- package/esm/validation/database-writer-validation-error.mjs.map +1 -0
- package/esm/validation/index.d.mts +2 -0
- package/esm/validation/index.mjs +4 -0
- package/esm/validation/mutators/embed-mutator.mjs +26 -0
- package/esm/validation/mutators/embed-mutator.mjs.map +1 -0
- package/esm/validation/plugins/database-rules-plugin.d.mts +28 -0
- package/esm/validation/plugins/database-rules-plugin.d.mts.map +1 -0
- package/esm/validation/plugins/database-rules-plugin.mjs +43 -0
- package/esm/validation/plugins/database-rules-plugin.mjs.map +1 -0
- package/esm/validation/plugins/embed-validator-plugin.d.mts +17 -0
- package/esm/validation/plugins/embed-validator-plugin.d.mts.map +1 -0
- package/esm/validation/plugins/embed-validator-plugin.mjs +20 -0
- package/esm/validation/plugins/embed-validator-plugin.mjs.map +1 -0
- package/esm/validation/rules/database-model-rule.mjs +32 -0
- package/esm/validation/rules/database-model-rule.mjs.map +1 -0
- package/esm/validation/rules/exists-rule.mjs +29 -0
- package/esm/validation/rules/exists-rule.mjs.map +1 -0
- package/esm/validation/rules/unique-rule.mjs +43 -0
- package/esm/validation/rules/unique-rule.mjs.map +1 -0
- package/esm/validation/transformers/embed-model-transformer.mjs +17 -0
- package/esm/validation/transformers/embed-model-transformer.mjs.map +1 -0
- package/esm/validation/types.d.mts +43 -0
- package/esm/validation/types.d.mts.map +1 -0
- package/esm/validation/validators/embed-validator.d.mts +25 -0
- package/esm/validation/validators/embed-validator.d.mts.map +1 -0
- package/esm/validation/validators/embed-validator.mjs +42 -0
- package/esm/validation/validators/embed-validator.mjs.map +1 -0
- package/esm/writer/database-writer.d.mts +178 -0
- package/esm/writer/database-writer.d.mts.map +1 -0
- package/esm/writer/database-writer.mjs +317 -0
- package/esm/writer/database-writer.mjs.map +1 -0
- package/llms-full.txt +2027 -0
- package/llms.txt +23 -0
- package/package.json +60 -51
- package/skills/README.md +65 -0
- package/skills/aggregate-data/SKILL.md +102 -0
- package/skills/cascade-basics/SKILL.md +93 -0
- package/skills/configure-delete-strategy/SKILL.md +126 -0
- package/skills/define-model/SKILL.md +170 -0
- package/skills/define-relations/SKILL.md +171 -0
- package/skills/manage-data-sources/SKILL.md +140 -0
- package/skills/manage-transactions/SKILL.md +118 -0
- package/skills/paginate-results/SKILL.md +122 -0
- package/skills/perform-atomic-ops/SKILL.md +98 -0
- package/skills/query-data/SKILL.md +168 -0
- package/skills/run-cascade-cli/SKILL.md +125 -0
- package/skills/search-by-vector/SKILL.md +127 -0
- package/skills/subscribe-to-model-events/SKILL.md +148 -0
- package/skills/track-changes/SKILL.md +109 -0
- package/skills/write-migration/SKILL.md +144 -0
- package/cjs/context/database-data-source-context.d.ts +0 -29
- package/cjs/context/database-data-source-context.d.ts.map +0 -1
- package/cjs/context/database-data-source-context.js +0 -28
- package/cjs/context/database-data-source-context.js.map +0 -1
- package/cjs/context/database-transaction-context.d.ts +0 -35
- package/cjs/context/database-transaction-context.d.ts.map +0 -1
- package/cjs/context/database-transaction-context.js +0 -40
- package/cjs/context/database-transaction-context.js.map +0 -1
- package/cjs/contracts/database-driver.contract.d.ts +0 -450
- package/cjs/contracts/database-driver.contract.d.ts.map +0 -1
- package/cjs/contracts/database-id-generator.contract.d.ts +0 -109
- package/cjs/contracts/database-id-generator.contract.d.ts.map +0 -1
- package/cjs/contracts/database-remover.contract.d.ts +0 -104
- package/cjs/contracts/database-remover.contract.d.ts.map +0 -1
- package/cjs/contracts/database-restorer.contract.d.ts +0 -143
- package/cjs/contracts/database-restorer.contract.d.ts.map +0 -1
- package/cjs/contracts/database-writer.contract.d.ts +0 -119
- package/cjs/contracts/database-writer.contract.d.ts.map +0 -1
- package/cjs/contracts/driver-blueprint.contract.d.ts +0 -49
- package/cjs/contracts/driver-blueprint.contract.d.ts.map +0 -1
- package/cjs/contracts/index.d.ts +0 -10
- package/cjs/contracts/index.d.ts.map +0 -1
- package/cjs/contracts/migration-driver.contract.d.ts +0 -522
- package/cjs/contracts/migration-driver.contract.d.ts.map +0 -1
- package/cjs/contracts/query-builder.contract.d.ts +0 -1609
- package/cjs/contracts/query-builder.contract.d.ts.map +0 -1
- package/cjs/contracts/sync-adapter.contract.d.ts +0 -58
- package/cjs/contracts/sync-adapter.contract.d.ts.map +0 -1
- package/cjs/data-source/data-source-registry.d.ts +0 -108
- package/cjs/data-source/data-source-registry.d.ts.map +0 -1
- package/cjs/data-source/data-source-registry.js +0 -145
- package/cjs/data-source/data-source-registry.js.map +0 -1
- package/cjs/data-source/data-source.d.ts +0 -147
- package/cjs/data-source/data-source.d.ts.map +0 -1
- package/cjs/data-source/data-source.js +0 -83
- package/cjs/data-source/data-source.js.map +0 -1
- package/cjs/database-dirty-tracker.d.ts +0 -252
- package/cjs/database-dirty-tracker.d.ts.map +0 -1
- package/cjs/database-dirty-tracker.js +0 -386
- package/cjs/database-dirty-tracker.js.map +0 -1
- package/cjs/drivers/mongodb/mongodb-blueprint.d.ts +0 -30
- package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +0 -1
- package/cjs/drivers/mongodb/mongodb-blueprint.js +0 -51
- package/cjs/drivers/mongodb/mongodb-blueprint.js.map +0 -1
- package/cjs/drivers/mongodb/mongodb-driver.d.ts +0 -325
- package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +0 -1
- package/cjs/drivers/mongodb/mongodb-driver.js +0 -845
- package/cjs/drivers/mongodb/mongodb-driver.js.map +0 -1
- package/cjs/drivers/mongodb/mongodb-id-generator.d.ts +0 -116
- package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +0 -1
- package/cjs/drivers/mongodb/mongodb-id-generator.js +0 -149
- package/cjs/drivers/mongodb/mongodb-id-generator.js.map +0 -1
- package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts +0 -317
- package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +0 -1
- package/cjs/drivers/mongodb/mongodb-migration-driver.js +0 -666
- package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +0 -1
- package/cjs/drivers/mongodb/mongodb-query-builder.d.ts +0 -1122
- package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +0 -1
- package/cjs/drivers/mongodb/mongodb-query-builder.js +0 -1988
- package/cjs/drivers/mongodb/mongodb-query-builder.js.map +0 -1
- package/cjs/drivers/mongodb/mongodb-query-operations.d.ts +0 -226
- package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +0 -1
- package/cjs/drivers/mongodb/mongodb-query-operations.js +0 -270
- package/cjs/drivers/mongodb/mongodb-query-operations.js.map +0 -1
- package/cjs/drivers/mongodb/mongodb-query-parser.d.ts +0 -262
- package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +0 -1
- package/cjs/drivers/mongodb/mongodb-query-parser.js +0 -1351
- package/cjs/drivers/mongodb/mongodb-query-parser.js.map +0 -1
- package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts +0 -79
- package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +0 -1
- package/cjs/drivers/mongodb/mongodb-sync-adapter.js +0 -146
- package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +0 -1
- package/cjs/drivers/mongodb/types.d.ts +0 -43
- package/cjs/drivers/mongodb/types.d.ts.map +0 -1
- package/cjs/drivers/postgres/index.d.ts +0 -16
- package/cjs/drivers/postgres/index.d.ts.map +0 -1
- package/cjs/drivers/postgres/postgres-blueprint.d.ts +0 -64
- package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +0 -1
- package/cjs/drivers/postgres/postgres-blueprint.js +0 -121
- package/cjs/drivers/postgres/postgres-blueprint.js.map +0 -1
- package/cjs/drivers/postgres/postgres-dialect.d.ts +0 -136
- package/cjs/drivers/postgres/postgres-dialect.d.ts.map +0 -1
- package/cjs/drivers/postgres/postgres-dialect.js +0 -268
- package/cjs/drivers/postgres/postgres-dialect.js.map +0 -1
- package/cjs/drivers/postgres/postgres-driver.d.ts +0 -432
- package/cjs/drivers/postgres/postgres-driver.d.ts.map +0 -1
- package/cjs/drivers/postgres/postgres-driver.js +0 -1008
- package/cjs/drivers/postgres/postgres-driver.js.map +0 -1
- package/cjs/drivers/postgres/postgres-migration-driver.d.ts +0 -397
- package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +0 -1
- package/cjs/drivers/postgres/postgres-migration-driver.js +0 -900
- package/cjs/drivers/postgres/postgres-migration-driver.js.map +0 -1
- package/cjs/drivers/postgres/postgres-query-builder.d.ts +0 -254
- package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +0 -1
- package/cjs/drivers/postgres/postgres-query-builder.js +0 -933
- package/cjs/drivers/postgres/postgres-query-builder.js.map +0 -1
- package/cjs/drivers/postgres/postgres-query-parser.d.ts +0 -328
- package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +0 -1
- package/cjs/drivers/postgres/postgres-query-parser.js +0 -868
- package/cjs/drivers/postgres/postgres-query-parser.js.map +0 -1
- package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +0 -37
- package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +0 -1
- package/cjs/drivers/postgres/postgres-sql-serializer.js +0 -400
- package/cjs/drivers/postgres/postgres-sql-serializer.js.map +0 -1
- package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +0 -83
- package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +0 -1
- package/cjs/drivers/postgres/postgres-sync-adapter.js +0 -204
- package/cjs/drivers/postgres/postgres-sync-adapter.js.map +0 -1
- package/cjs/drivers/postgres/types.d.ts +0 -144
- package/cjs/drivers/postgres/types.d.ts.map +0 -1
- package/cjs/drivers/sql/index.d.ts +0 -10
- package/cjs/drivers/sql/index.d.ts.map +0 -1
- package/cjs/drivers/sql/sql-dialect.contract.d.ts +0 -204
- package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +0 -1
- package/cjs/drivers/sql/sql-types.d.ts +0 -202
- package/cjs/drivers/sql/sql-types.d.ts.map +0 -1
- package/cjs/errors/missing-data-source.error.d.ts +0 -22
- package/cjs/errors/missing-data-source.error.d.ts.map +0 -1
- package/cjs/errors/missing-data-source.error.js +0 -29
- package/cjs/errors/missing-data-source.error.js.map +0 -1
- package/cjs/errors/transaction-rollback.error.d.ts +0 -20
- package/cjs/errors/transaction-rollback.error.d.ts.map +0 -1
- package/cjs/errors/transaction-rollback.error.js +0 -27
- package/cjs/errors/transaction-rollback.error.js.map +0 -1
- package/cjs/events/model-events.d.ts +0 -231
- package/cjs/events/model-events.d.ts.map +0 -1
- package/cjs/events/model-events.js +0 -259
- package/cjs/events/model-events.js.map +0 -1
- package/cjs/expressions/aggregate-expressions.d.ts +0 -215
- package/cjs/expressions/aggregate-expressions.d.ts.map +0 -1
- package/cjs/expressions/aggregate-expressions.js +0 -221
- package/cjs/expressions/aggregate-expressions.js.map +0 -1
- package/cjs/expressions/index.d.ts +0 -2
- package/cjs/expressions/index.d.ts.map +0 -1
- package/cjs/index.d.ts +0 -45
- package/cjs/index.d.ts.map +0 -1
- package/cjs/index.js +0 -1
- package/cjs/index.js.map +0 -1
- package/cjs/migration/column-builder.d.ts +0 -417
- package/cjs/migration/column-builder.d.ts.map +0 -1
- package/cjs/migration/column-builder.js +0 -586
- package/cjs/migration/column-builder.js.map +0 -1
- package/cjs/migration/column-helpers.d.ts +0 -275
- package/cjs/migration/column-helpers.d.ts.map +0 -1
- package/cjs/migration/column-helpers.js +0 -389
- package/cjs/migration/column-helpers.js.map +0 -1
- package/cjs/migration/foreign-key-builder.d.ts +0 -103
- package/cjs/migration/foreign-key-builder.d.ts.map +0 -1
- package/cjs/migration/foreign-key-builder.js +0 -121
- package/cjs/migration/foreign-key-builder.js.map +0 -1
- package/cjs/migration/index.d.ts +0 -7
- package/cjs/migration/index.d.ts.map +0 -1
- package/cjs/migration/migration-runner.d.ts +0 -278
- package/cjs/migration/migration-runner.d.ts.map +0 -1
- package/cjs/migration/migration-runner.js +0 -815
- package/cjs/migration/migration-runner.js.map +0 -1
- package/cjs/migration/migration.d.ts +0 -1988
- package/cjs/migration/migration.d.ts.map +0 -1
- package/cjs/migration/migration.js +0 -2162
- package/cjs/migration/migration.js.map +0 -1
- package/cjs/migration/sql-grammar.d.ts +0 -61
- package/cjs/migration/sql-grammar.d.ts.map +0 -1
- package/cjs/migration/sql-grammar.js +0 -164
- package/cjs/migration/sql-grammar.js.map +0 -1
- package/cjs/migration/sql-serializer.d.ts +0 -22
- package/cjs/migration/sql-serializer.d.ts.map +0 -1
- package/cjs/migration/sql-serializer.js +0 -26
- package/cjs/migration/sql-serializer.js.map +0 -1
- package/cjs/migration/types.d.ts +0 -155
- package/cjs/migration/types.d.ts.map +0 -1
- package/cjs/model/methods/accessor-methods.d.ts +0 -13
- package/cjs/model/methods/accessor-methods.d.ts.map +0 -1
- package/cjs/model/methods/accessor-methods.js +0 -51
- package/cjs/model/methods/accessor-methods.js.map +0 -1
- package/cjs/model/methods/delete-methods.d.ts +0 -10
- package/cjs/model/methods/delete-methods.d.ts.map +0 -1
- package/cjs/model/methods/delete-methods.js +0 -10
- package/cjs/model/methods/delete-methods.js.map +0 -1
- package/cjs/model/methods/dirty-methods.d.ts +0 -10
- package/cjs/model/methods/dirty-methods.d.ts.map +0 -1
- package/cjs/model/methods/dirty-methods.js +0 -15
- package/cjs/model/methods/dirty-methods.js.map +0 -1
- package/cjs/model/methods/hydration-methods.d.ts +0 -10
- package/cjs/model/methods/hydration-methods.d.ts.map +0 -1
- package/cjs/model/methods/hydration-methods.js +0 -57
- package/cjs/model/methods/hydration-methods.js.map +0 -1
- package/cjs/model/methods/instance-event-methods.d.ts +0 -7
- package/cjs/model/methods/instance-event-methods.d.ts.map +0 -1
- package/cjs/model/methods/instance-event-methods.js +0 -15
- package/cjs/model/methods/instance-event-methods.js.map +0 -1
- package/cjs/model/methods/meta-methods.d.ts +0 -7
- package/cjs/model/methods/meta-methods.d.ts.map +0 -1
- package/cjs/model/methods/meta-methods.js +0 -78
- package/cjs/model/methods/meta-methods.js.map +0 -1
- package/cjs/model/methods/query-methods.d.ts +0 -24
- package/cjs/model/methods/query-methods.d.ts.map +0 -1
- package/cjs/model/methods/query-methods.js +0 -164
- package/cjs/model/methods/query-methods.js.map +0 -1
- package/cjs/model/methods/restore-methods.d.ts +0 -10
- package/cjs/model/methods/restore-methods.d.ts.map +0 -1
- package/cjs/model/methods/restore-methods.js +0 -13
- package/cjs/model/methods/restore-methods.js.map +0 -1
- package/cjs/model/methods/scope-methods.d.ts +0 -7
- package/cjs/model/methods/scope-methods.d.ts.map +0 -1
- package/cjs/model/methods/scope-methods.js +0 -15
- package/cjs/model/methods/scope-methods.js.map +0 -1
- package/cjs/model/methods/serialization-methods.d.ts +0 -3
- package/cjs/model/methods/serialization-methods.d.ts.map +0 -1
- package/cjs/model/methods/serialization-methods.js +0 -27
- package/cjs/model/methods/serialization-methods.js.map +0 -1
- package/cjs/model/methods/static-event-methods.d.ts +0 -9
- package/cjs/model/methods/static-event-methods.d.ts.map +0 -1
- package/cjs/model/methods/static-event-methods.js +0 -29
- package/cjs/model/methods/static-event-methods.js.map +0 -1
- package/cjs/model/methods/write-methods.d.ts +0 -10
- package/cjs/model/methods/write-methods.d.ts.map +0 -1
- package/cjs/model/methods/write-methods.js +0 -52
- package/cjs/model/methods/write-methods.js.map +0 -1
- package/cjs/model/model.d.ts +0 -1647
- package/cjs/model/model.d.ts.map +0 -1
- package/cjs/model/model.js +0 -1657
- package/cjs/model/model.js.map +0 -1
- package/cjs/model/model.types.d.ts +0 -44
- package/cjs/model/model.types.d.ts.map +0 -1
- package/cjs/model/register-model.d.ts +0 -81
- package/cjs/model/register-model.d.ts.map +0 -1
- package/cjs/model/register-model.js +0 -94
- package/cjs/model/register-model.js.map +0 -1
- package/cjs/query-builder/query-builder.d.ts +0 -556
- package/cjs/query-builder/query-builder.d.ts.map +0 -1
- package/cjs/query-builder/query-builder.js +0 -1070
- package/cjs/query-builder/query-builder.js.map +0 -1
- package/cjs/relations/helpers.d.ts +0 -156
- package/cjs/relations/helpers.d.ts.map +0 -1
- package/cjs/relations/helpers.js +0 -202
- package/cjs/relations/helpers.js.map +0 -1
- package/cjs/relations/index.d.ts +0 -35
- package/cjs/relations/index.d.ts.map +0 -1
- package/cjs/relations/pivot-operations.d.ts +0 -160
- package/cjs/relations/pivot-operations.d.ts.map +0 -1
- package/cjs/relations/pivot-operations.js +0 -293
- package/cjs/relations/pivot-operations.js.map +0 -1
- package/cjs/relations/relation-hydrator.d.ts +0 -68
- package/cjs/relations/relation-hydrator.d.ts.map +0 -1
- package/cjs/relations/relation-hydrator.js +0 -81
- package/cjs/relations/relation-hydrator.js.map +0 -1
- package/cjs/relations/relation-loader.d.ts +0 -194
- package/cjs/relations/relation-loader.d.ts.map +0 -1
- package/cjs/relations/relation-loader.js +0 -466
- package/cjs/relations/relation-loader.js.map +0 -1
- package/cjs/relations/types.d.ts +0 -306
- package/cjs/relations/types.d.ts.map +0 -1
- package/cjs/remover/database-remover.d.ts +0 -100
- package/cjs/remover/database-remover.d.ts.map +0 -1
- package/cjs/remover/database-remover.js +0 -214
- package/cjs/remover/database-remover.js.map +0 -1
- package/cjs/restorer/database-restorer.d.ts +0 -131
- package/cjs/restorer/database-restorer.d.ts.map +0 -1
- package/cjs/restorer/database-restorer.js +0 -434
- package/cjs/restorer/database-restorer.js.map +0 -1
- package/cjs/sql-database-dirty-tracker.d.ts +0 -13
- package/cjs/sql-database-dirty-tracker.d.ts.map +0 -1
- package/cjs/sql-database-dirty-tracker.js +0 -14
- package/cjs/sql-database-dirty-tracker.js.map +0 -1
- package/cjs/sync/index.d.ts +0 -12
- package/cjs/sync/index.d.ts.map +0 -1
- package/cjs/sync/model-events.d.ts +0 -62
- package/cjs/sync/model-events.d.ts.map +0 -1
- package/cjs/sync/model-events.js +0 -49
- package/cjs/sync/model-events.js.map +0 -1
- package/cjs/sync/model-sync-operation.d.ts +0 -163
- package/cjs/sync/model-sync-operation.d.ts.map +0 -1
- package/cjs/sync/model-sync-operation.js +0 -292
- package/cjs/sync/model-sync-operation.js.map +0 -1
- package/cjs/sync/model-sync.d.ts +0 -130
- package/cjs/sync/model-sync.d.ts.map +0 -1
- package/cjs/sync/model-sync.js +0 -178
- package/cjs/sync/model-sync.js.map +0 -1
- package/cjs/sync/sync-context.d.ts +0 -70
- package/cjs/sync/sync-context.d.ts.map +0 -1
- package/cjs/sync/sync-context.js +0 -101
- package/cjs/sync/sync-context.js.map +0 -1
- package/cjs/sync/sync-manager.d.ts +0 -213
- package/cjs/sync/sync-manager.d.ts.map +0 -1
- package/cjs/sync/sync-manager.js +0 -689
- package/cjs/sync/sync-manager.js.map +0 -1
- package/cjs/sync/types.d.ts +0 -289
- package/cjs/sync/types.d.ts.map +0 -1
- package/cjs/test-migrations/test-enhanced-features.migration.d.ts +0 -15
- package/cjs/test-migrations/test-enhanced-features.migration.d.ts.map +0 -1
- package/cjs/types.d.ts +0 -371
- package/cjs/types.d.ts.map +0 -1
- package/cjs/utils/connect-to-database.d.ts +0 -307
- package/cjs/utils/connect-to-database.d.ts.map +0 -1
- package/cjs/utils/connect-to-database.js +0 -130
- package/cjs/utils/connect-to-database.js.map +0 -1
- package/cjs/utils/database-writer.utils.d.ts +0 -15
- package/cjs/utils/database-writer.utils.d.ts.map +0 -1
- package/cjs/utils/database-writer.utils.js +0 -14
- package/cjs/utils/database-writer.utils.js.map +0 -1
- package/cjs/utils/define-model.js +0 -100
- package/cjs/utils/define-model.js.map +0 -1
- package/cjs/utils/is-valid-date-value.d.ts +0 -5
- package/cjs/utils/is-valid-date-value.d.ts.map +0 -1
- package/cjs/utils/is-valid-date-value.js +0 -25
- package/cjs/utils/is-valid-date-value.js.map +0 -1
- package/cjs/utils/once-connected.d.ts +0 -146
- package/cjs/utils/once-connected.d.ts.map +0 -1
- package/cjs/utils/once-connected.js +0 -251
- package/cjs/utils/once-connected.js.map +0 -1
- package/cjs/validation/database-seal-plugins.d.ts +0 -12
- package/cjs/validation/database-seal-plugins.d.ts.map +0 -1
- package/cjs/validation/database-seal-plugins.js +0 -1
- package/cjs/validation/database-seal-plugins.js.map +0 -1
- package/cjs/validation/database-writer-validation-error.d.ts +0 -97
- package/cjs/validation/database-writer-validation-error.d.ts.map +0 -1
- package/cjs/validation/database-writer-validation-error.js +0 -160
- package/cjs/validation/database-writer-validation-error.js.map +0 -1
- package/cjs/validation/index.d.ts +0 -3
- package/cjs/validation/index.d.ts.map +0 -1
- package/cjs/validation/mutators/embed-mutator.d.ts +0 -9
- package/cjs/validation/mutators/embed-mutator.d.ts.map +0 -1
- package/cjs/validation/mutators/embed-mutator.js +0 -33
- package/cjs/validation/mutators/embed-mutator.js.map +0 -1
- package/cjs/validation/plugins/embed-validator-plugin.d.ts +0 -24
- package/cjs/validation/plugins/embed-validator-plugin.d.ts.map +0 -1
- package/cjs/validation/plugins/embed-validator-plugin.js +0 -18
- package/cjs/validation/plugins/embed-validator-plugin.js.map +0 -1
- package/cjs/validation/rules/database-model-rule.d.ts +0 -7
- package/cjs/validation/rules/database-model-rule.d.ts.map +0 -1
- package/cjs/validation/rules/database-model-rule.js +0 -27
- package/cjs/validation/rules/database-model-rule.js.map +0 -1
- package/cjs/validation/transformers/embed-model-transformer.d.ts +0 -3
- package/cjs/validation/transformers/embed-model-transformer.d.ts.map +0 -1
- package/cjs/validation/transformers/embed-model-transformer.js +0 -18
- package/cjs/validation/transformers/embed-model-transformer.js.map +0 -1
- package/cjs/validation/validators/embed-validator.d.ts +0 -21
- package/cjs/validation/validators/embed-validator.d.ts.map +0 -1
- package/cjs/validation/validators/embed-validator.js +0 -43
- package/cjs/validation/validators/embed-validator.js.map +0 -1
- package/cjs/writer/database-writer.d.ts +0 -174
- package/cjs/writer/database-writer.d.ts.map +0 -1
- package/cjs/writer/database-writer.js +0 -400
- package/cjs/writer/database-writer.js.map +0 -1
- package/esm/context/database-data-source-context.d.ts +0 -29
- package/esm/context/database-data-source-context.d.ts.map +0 -1
- package/esm/context/database-data-source-context.js +0 -28
- package/esm/context/database-data-source-context.js.map +0 -1
- package/esm/context/database-transaction-context.d.ts +0 -35
- package/esm/context/database-transaction-context.d.ts.map +0 -1
- package/esm/context/database-transaction-context.js +0 -40
- package/esm/context/database-transaction-context.js.map +0 -1
- package/esm/contracts/database-driver.contract.d.ts +0 -450
- package/esm/contracts/database-driver.contract.d.ts.map +0 -1
- package/esm/contracts/database-id-generator.contract.d.ts +0 -109
- package/esm/contracts/database-id-generator.contract.d.ts.map +0 -1
- package/esm/contracts/database-remover.contract.d.ts +0 -104
- package/esm/contracts/database-remover.contract.d.ts.map +0 -1
- package/esm/contracts/database-restorer.contract.d.ts +0 -143
- package/esm/contracts/database-restorer.contract.d.ts.map +0 -1
- package/esm/contracts/database-writer.contract.d.ts +0 -119
- package/esm/contracts/database-writer.contract.d.ts.map +0 -1
- package/esm/contracts/driver-blueprint.contract.d.ts +0 -49
- package/esm/contracts/driver-blueprint.contract.d.ts.map +0 -1
- package/esm/contracts/index.d.ts +0 -10
- package/esm/contracts/index.d.ts.map +0 -1
- package/esm/contracts/migration-driver.contract.d.ts +0 -522
- package/esm/contracts/migration-driver.contract.d.ts.map +0 -1
- package/esm/contracts/query-builder.contract.d.ts +0 -1609
- package/esm/contracts/query-builder.contract.d.ts.map +0 -1
- package/esm/contracts/sync-adapter.contract.d.ts +0 -58
- package/esm/contracts/sync-adapter.contract.d.ts.map +0 -1
- package/esm/data-source/data-source-registry.d.ts +0 -108
- package/esm/data-source/data-source-registry.d.ts.map +0 -1
- package/esm/data-source/data-source-registry.js +0 -145
- package/esm/data-source/data-source-registry.js.map +0 -1
- package/esm/data-source/data-source.d.ts +0 -147
- package/esm/data-source/data-source.d.ts.map +0 -1
- package/esm/data-source/data-source.js +0 -83
- package/esm/data-source/data-source.js.map +0 -1
- package/esm/database-dirty-tracker.d.ts +0 -252
- package/esm/database-dirty-tracker.d.ts.map +0 -1
- package/esm/database-dirty-tracker.js +0 -386
- package/esm/database-dirty-tracker.js.map +0 -1
- package/esm/drivers/mongodb/mongodb-blueprint.d.ts +0 -30
- package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +0 -1
- package/esm/drivers/mongodb/mongodb-blueprint.js +0 -51
- package/esm/drivers/mongodb/mongodb-blueprint.js.map +0 -1
- package/esm/drivers/mongodb/mongodb-driver.d.ts +0 -325
- package/esm/drivers/mongodb/mongodb-driver.d.ts.map +0 -1
- package/esm/drivers/mongodb/mongodb-driver.js +0 -845
- package/esm/drivers/mongodb/mongodb-driver.js.map +0 -1
- package/esm/drivers/mongodb/mongodb-id-generator.d.ts +0 -116
- package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +0 -1
- package/esm/drivers/mongodb/mongodb-id-generator.js +0 -149
- package/esm/drivers/mongodb/mongodb-id-generator.js.map +0 -1
- package/esm/drivers/mongodb/mongodb-migration-driver.d.ts +0 -317
- package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +0 -1
- package/esm/drivers/mongodb/mongodb-migration-driver.js +0 -666
- package/esm/drivers/mongodb/mongodb-migration-driver.js.map +0 -1
- package/esm/drivers/mongodb/mongodb-query-builder.d.ts +0 -1122
- package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +0 -1
- package/esm/drivers/mongodb/mongodb-query-builder.js +0 -1988
- package/esm/drivers/mongodb/mongodb-query-builder.js.map +0 -1
- package/esm/drivers/mongodb/mongodb-query-operations.d.ts +0 -226
- package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +0 -1
- package/esm/drivers/mongodb/mongodb-query-operations.js +0 -270
- package/esm/drivers/mongodb/mongodb-query-operations.js.map +0 -1
- package/esm/drivers/mongodb/mongodb-query-parser.d.ts +0 -262
- package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +0 -1
- package/esm/drivers/mongodb/mongodb-query-parser.js +0 -1351
- package/esm/drivers/mongodb/mongodb-query-parser.js.map +0 -1
- package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts +0 -79
- package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +0 -1
- package/esm/drivers/mongodb/mongodb-sync-adapter.js +0 -146
- package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +0 -1
- package/esm/drivers/mongodb/types.d.ts +0 -43
- package/esm/drivers/mongodb/types.d.ts.map +0 -1
- package/esm/drivers/postgres/index.d.ts +0 -16
- package/esm/drivers/postgres/index.d.ts.map +0 -1
- package/esm/drivers/postgres/postgres-blueprint.d.ts +0 -64
- package/esm/drivers/postgres/postgres-blueprint.d.ts.map +0 -1
- package/esm/drivers/postgres/postgres-blueprint.js +0 -121
- package/esm/drivers/postgres/postgres-blueprint.js.map +0 -1
- package/esm/drivers/postgres/postgres-dialect.d.ts +0 -136
- package/esm/drivers/postgres/postgres-dialect.d.ts.map +0 -1
- package/esm/drivers/postgres/postgres-dialect.js +0 -268
- package/esm/drivers/postgres/postgres-dialect.js.map +0 -1
- package/esm/drivers/postgres/postgres-driver.d.ts +0 -432
- package/esm/drivers/postgres/postgres-driver.d.ts.map +0 -1
- package/esm/drivers/postgres/postgres-driver.js +0 -1008
- package/esm/drivers/postgres/postgres-driver.js.map +0 -1
- package/esm/drivers/postgres/postgres-migration-driver.d.ts +0 -397
- package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +0 -1
- package/esm/drivers/postgres/postgres-migration-driver.js +0 -900
- package/esm/drivers/postgres/postgres-migration-driver.js.map +0 -1
- package/esm/drivers/postgres/postgres-query-builder.d.ts +0 -254
- package/esm/drivers/postgres/postgres-query-builder.d.ts.map +0 -1
- package/esm/drivers/postgres/postgres-query-builder.js +0 -933
- package/esm/drivers/postgres/postgres-query-builder.js.map +0 -1
- package/esm/drivers/postgres/postgres-query-parser.d.ts +0 -328
- package/esm/drivers/postgres/postgres-query-parser.d.ts.map +0 -1
- package/esm/drivers/postgres/postgres-query-parser.js +0 -868
- package/esm/drivers/postgres/postgres-query-parser.js.map +0 -1
- package/esm/drivers/postgres/postgres-sql-serializer.d.ts +0 -37
- package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +0 -1
- package/esm/drivers/postgres/postgres-sql-serializer.js +0 -400
- package/esm/drivers/postgres/postgres-sql-serializer.js.map +0 -1
- package/esm/drivers/postgres/postgres-sync-adapter.d.ts +0 -83
- package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +0 -1
- package/esm/drivers/postgres/postgres-sync-adapter.js +0 -204
- package/esm/drivers/postgres/postgres-sync-adapter.js.map +0 -1
- package/esm/drivers/postgres/types.d.ts +0 -144
- package/esm/drivers/postgres/types.d.ts.map +0 -1
- package/esm/drivers/sql/index.d.ts +0 -10
- package/esm/drivers/sql/index.d.ts.map +0 -1
- package/esm/drivers/sql/sql-dialect.contract.d.ts +0 -204
- package/esm/drivers/sql/sql-dialect.contract.d.ts.map +0 -1
- package/esm/drivers/sql/sql-types.d.ts +0 -202
- package/esm/drivers/sql/sql-types.d.ts.map +0 -1
- package/esm/errors/missing-data-source.error.d.ts +0 -22
- package/esm/errors/missing-data-source.error.d.ts.map +0 -1
- package/esm/errors/missing-data-source.error.js +0 -29
- package/esm/errors/missing-data-source.error.js.map +0 -1
- package/esm/errors/transaction-rollback.error.d.ts +0 -20
- package/esm/errors/transaction-rollback.error.d.ts.map +0 -1
- package/esm/errors/transaction-rollback.error.js +0 -27
- package/esm/errors/transaction-rollback.error.js.map +0 -1
- package/esm/events/model-events.d.ts +0 -231
- package/esm/events/model-events.d.ts.map +0 -1
- package/esm/events/model-events.js +0 -259
- package/esm/events/model-events.js.map +0 -1
- package/esm/expressions/aggregate-expressions.d.ts +0 -215
- package/esm/expressions/aggregate-expressions.d.ts.map +0 -1
- package/esm/expressions/aggregate-expressions.js +0 -221
- package/esm/expressions/aggregate-expressions.js.map +0 -1
- package/esm/expressions/index.d.ts +0 -2
- package/esm/expressions/index.d.ts.map +0 -1
- package/esm/index.d.ts +0 -45
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -1
- package/esm/index.js.map +0 -1
- package/esm/migration/column-builder.d.ts +0 -417
- package/esm/migration/column-builder.d.ts.map +0 -1
- package/esm/migration/column-builder.js +0 -586
- package/esm/migration/column-builder.js.map +0 -1
- package/esm/migration/column-helpers.d.ts +0 -275
- package/esm/migration/column-helpers.d.ts.map +0 -1
- package/esm/migration/column-helpers.js +0 -389
- package/esm/migration/column-helpers.js.map +0 -1
- package/esm/migration/foreign-key-builder.d.ts +0 -103
- package/esm/migration/foreign-key-builder.d.ts.map +0 -1
- package/esm/migration/foreign-key-builder.js +0 -121
- package/esm/migration/foreign-key-builder.js.map +0 -1
- package/esm/migration/index.d.ts +0 -7
- package/esm/migration/index.d.ts.map +0 -1
- package/esm/migration/migration-runner.d.ts +0 -278
- package/esm/migration/migration-runner.d.ts.map +0 -1
- package/esm/migration/migration-runner.js +0 -815
- package/esm/migration/migration-runner.js.map +0 -1
- package/esm/migration/migration.d.ts +0 -1988
- package/esm/migration/migration.d.ts.map +0 -1
- package/esm/migration/migration.js +0 -2162
- package/esm/migration/migration.js.map +0 -1
- package/esm/migration/sql-grammar.d.ts +0 -61
- package/esm/migration/sql-grammar.d.ts.map +0 -1
- package/esm/migration/sql-grammar.js +0 -164
- package/esm/migration/sql-grammar.js.map +0 -1
- package/esm/migration/sql-serializer.d.ts +0 -22
- package/esm/migration/sql-serializer.d.ts.map +0 -1
- package/esm/migration/sql-serializer.js +0 -26
- package/esm/migration/sql-serializer.js.map +0 -1
- package/esm/migration/types.d.ts +0 -155
- package/esm/migration/types.d.ts.map +0 -1
- package/esm/model/methods/accessor-methods.d.ts +0 -13
- package/esm/model/methods/accessor-methods.d.ts.map +0 -1
- package/esm/model/methods/accessor-methods.js +0 -51
- package/esm/model/methods/accessor-methods.js.map +0 -1
- package/esm/model/methods/delete-methods.d.ts +0 -10
- package/esm/model/methods/delete-methods.d.ts.map +0 -1
- package/esm/model/methods/delete-methods.js +0 -10
- package/esm/model/methods/delete-methods.js.map +0 -1
- package/esm/model/methods/dirty-methods.d.ts +0 -10
- package/esm/model/methods/dirty-methods.d.ts.map +0 -1
- package/esm/model/methods/dirty-methods.js +0 -15
- package/esm/model/methods/dirty-methods.js.map +0 -1
- package/esm/model/methods/hydration-methods.d.ts +0 -10
- package/esm/model/methods/hydration-methods.d.ts.map +0 -1
- package/esm/model/methods/hydration-methods.js +0 -57
- package/esm/model/methods/hydration-methods.js.map +0 -1
- package/esm/model/methods/instance-event-methods.d.ts +0 -7
- package/esm/model/methods/instance-event-methods.d.ts.map +0 -1
- package/esm/model/methods/instance-event-methods.js +0 -15
- package/esm/model/methods/instance-event-methods.js.map +0 -1
- package/esm/model/methods/meta-methods.d.ts +0 -7
- package/esm/model/methods/meta-methods.d.ts.map +0 -1
- package/esm/model/methods/meta-methods.js +0 -78
- package/esm/model/methods/meta-methods.js.map +0 -1
- package/esm/model/methods/query-methods.d.ts +0 -24
- package/esm/model/methods/query-methods.d.ts.map +0 -1
- package/esm/model/methods/query-methods.js +0 -164
- package/esm/model/methods/query-methods.js.map +0 -1
- package/esm/model/methods/restore-methods.d.ts +0 -10
- package/esm/model/methods/restore-methods.d.ts.map +0 -1
- package/esm/model/methods/restore-methods.js +0 -13
- package/esm/model/methods/restore-methods.js.map +0 -1
- package/esm/model/methods/scope-methods.d.ts +0 -7
- package/esm/model/methods/scope-methods.d.ts.map +0 -1
- package/esm/model/methods/scope-methods.js +0 -15
- package/esm/model/methods/scope-methods.js.map +0 -1
- package/esm/model/methods/serialization-methods.d.ts +0 -3
- package/esm/model/methods/serialization-methods.d.ts.map +0 -1
- package/esm/model/methods/serialization-methods.js +0 -27
- package/esm/model/methods/serialization-methods.js.map +0 -1
- package/esm/model/methods/static-event-methods.d.ts +0 -9
- package/esm/model/methods/static-event-methods.d.ts.map +0 -1
- package/esm/model/methods/static-event-methods.js +0 -29
- package/esm/model/methods/static-event-methods.js.map +0 -1
- package/esm/model/methods/write-methods.d.ts +0 -10
- package/esm/model/methods/write-methods.d.ts.map +0 -1
- package/esm/model/methods/write-methods.js +0 -52
- package/esm/model/methods/write-methods.js.map +0 -1
- package/esm/model/model.d.ts +0 -1647
- package/esm/model/model.d.ts.map +0 -1
- package/esm/model/model.js +0 -1657
- package/esm/model/model.js.map +0 -1
- package/esm/model/model.types.d.ts +0 -44
- package/esm/model/model.types.d.ts.map +0 -1
- package/esm/model/register-model.d.ts +0 -81
- package/esm/model/register-model.d.ts.map +0 -1
- package/esm/model/register-model.js +0 -94
- package/esm/model/register-model.js.map +0 -1
- package/esm/query-builder/query-builder.d.ts +0 -556
- package/esm/query-builder/query-builder.d.ts.map +0 -1
- package/esm/query-builder/query-builder.js +0 -1070
- package/esm/query-builder/query-builder.js.map +0 -1
- package/esm/relations/helpers.d.ts +0 -156
- package/esm/relations/helpers.d.ts.map +0 -1
- package/esm/relations/helpers.js +0 -202
- package/esm/relations/helpers.js.map +0 -1
- package/esm/relations/index.d.ts +0 -35
- package/esm/relations/index.d.ts.map +0 -1
- package/esm/relations/pivot-operations.d.ts +0 -160
- package/esm/relations/pivot-operations.d.ts.map +0 -1
- package/esm/relations/pivot-operations.js +0 -293
- package/esm/relations/pivot-operations.js.map +0 -1
- package/esm/relations/relation-hydrator.d.ts +0 -68
- package/esm/relations/relation-hydrator.d.ts.map +0 -1
- package/esm/relations/relation-hydrator.js +0 -81
- package/esm/relations/relation-hydrator.js.map +0 -1
- package/esm/relations/relation-loader.d.ts +0 -194
- package/esm/relations/relation-loader.d.ts.map +0 -1
- package/esm/relations/relation-loader.js +0 -466
- package/esm/relations/relation-loader.js.map +0 -1
- package/esm/relations/types.d.ts +0 -306
- package/esm/relations/types.d.ts.map +0 -1
- package/esm/remover/database-remover.d.ts +0 -100
- package/esm/remover/database-remover.d.ts.map +0 -1
- package/esm/remover/database-remover.js +0 -214
- package/esm/remover/database-remover.js.map +0 -1
- package/esm/restorer/database-restorer.d.ts +0 -131
- package/esm/restorer/database-restorer.d.ts.map +0 -1
- package/esm/restorer/database-restorer.js +0 -434
- package/esm/restorer/database-restorer.js.map +0 -1
- package/esm/sql-database-dirty-tracker.d.ts +0 -13
- package/esm/sql-database-dirty-tracker.d.ts.map +0 -1
- package/esm/sql-database-dirty-tracker.js +0 -14
- package/esm/sql-database-dirty-tracker.js.map +0 -1
- package/esm/sync/index.d.ts +0 -12
- package/esm/sync/index.d.ts.map +0 -1
- package/esm/sync/model-events.d.ts +0 -62
- package/esm/sync/model-events.d.ts.map +0 -1
- package/esm/sync/model-events.js +0 -49
- package/esm/sync/model-events.js.map +0 -1
- package/esm/sync/model-sync-operation.d.ts +0 -163
- package/esm/sync/model-sync-operation.d.ts.map +0 -1
- package/esm/sync/model-sync-operation.js +0 -292
- package/esm/sync/model-sync-operation.js.map +0 -1
- package/esm/sync/model-sync.d.ts +0 -130
- package/esm/sync/model-sync.d.ts.map +0 -1
- package/esm/sync/model-sync.js +0 -178
- package/esm/sync/model-sync.js.map +0 -1
- package/esm/sync/sync-context.d.ts +0 -70
- package/esm/sync/sync-context.d.ts.map +0 -1
- package/esm/sync/sync-context.js +0 -101
- package/esm/sync/sync-context.js.map +0 -1
- package/esm/sync/sync-manager.d.ts +0 -213
- package/esm/sync/sync-manager.d.ts.map +0 -1
- package/esm/sync/sync-manager.js +0 -689
- package/esm/sync/sync-manager.js.map +0 -1
- package/esm/sync/types.d.ts +0 -289
- package/esm/sync/types.d.ts.map +0 -1
- package/esm/test-migrations/test-enhanced-features.migration.d.ts +0 -15
- package/esm/test-migrations/test-enhanced-features.migration.d.ts.map +0 -1
- package/esm/types.d.ts +0 -371
- package/esm/types.d.ts.map +0 -1
- package/esm/utils/connect-to-database.d.ts +0 -307
- package/esm/utils/connect-to-database.d.ts.map +0 -1
- package/esm/utils/connect-to-database.js +0 -130
- package/esm/utils/connect-to-database.js.map +0 -1
- package/esm/utils/database-writer.utils.d.ts +0 -15
- package/esm/utils/database-writer.utils.d.ts.map +0 -1
- package/esm/utils/database-writer.utils.js +0 -14
- package/esm/utils/database-writer.utils.js.map +0 -1
- package/esm/utils/define-model.js +0 -100
- package/esm/utils/define-model.js.map +0 -1
- package/esm/utils/is-valid-date-value.d.ts +0 -5
- package/esm/utils/is-valid-date-value.d.ts.map +0 -1
- package/esm/utils/is-valid-date-value.js +0 -25
- package/esm/utils/is-valid-date-value.js.map +0 -1
- package/esm/utils/once-connected.d.ts +0 -146
- package/esm/utils/once-connected.d.ts.map +0 -1
- package/esm/utils/once-connected.js +0 -251
- package/esm/utils/once-connected.js.map +0 -1
- package/esm/validation/database-seal-plugins.d.ts +0 -12
- package/esm/validation/database-seal-plugins.d.ts.map +0 -1
- package/esm/validation/database-seal-plugins.js +0 -1
- package/esm/validation/database-seal-plugins.js.map +0 -1
- package/esm/validation/database-writer-validation-error.d.ts +0 -97
- package/esm/validation/database-writer-validation-error.d.ts.map +0 -1
- package/esm/validation/database-writer-validation-error.js +0 -160
- package/esm/validation/database-writer-validation-error.js.map +0 -1
- package/esm/validation/index.d.ts +0 -3
- package/esm/validation/index.d.ts.map +0 -1
- package/esm/validation/mutators/embed-mutator.d.ts +0 -9
- package/esm/validation/mutators/embed-mutator.d.ts.map +0 -1
- package/esm/validation/mutators/embed-mutator.js +0 -33
- package/esm/validation/mutators/embed-mutator.js.map +0 -1
- package/esm/validation/plugins/embed-validator-plugin.d.ts +0 -24
- package/esm/validation/plugins/embed-validator-plugin.d.ts.map +0 -1
- package/esm/validation/plugins/embed-validator-plugin.js +0 -18
- package/esm/validation/plugins/embed-validator-plugin.js.map +0 -1
- package/esm/validation/rules/database-model-rule.d.ts +0 -7
- package/esm/validation/rules/database-model-rule.d.ts.map +0 -1
- package/esm/validation/rules/database-model-rule.js +0 -27
- package/esm/validation/rules/database-model-rule.js.map +0 -1
- package/esm/validation/transformers/embed-model-transformer.d.ts +0 -3
- package/esm/validation/transformers/embed-model-transformer.d.ts.map +0 -1
- package/esm/validation/transformers/embed-model-transformer.js +0 -18
- package/esm/validation/transformers/embed-model-transformer.js.map +0 -1
- package/esm/validation/validators/embed-validator.d.ts +0 -21
- package/esm/validation/validators/embed-validator.d.ts.map +0 -1
- package/esm/validation/validators/embed-validator.js +0 -43
- package/esm/validation/validators/embed-validator.js.map +0 -1
- package/esm/writer/database-writer.d.ts +0 -174
- package/esm/writer/database-writer.d.ts.map +0 -1
- package/esm/writer/database-writer.js +0 -400
- package/esm/writer/database-writer.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-migration-driver.mjs","names":[],"sources":["../../../../../../../@warlock.js/cascade/src/drivers/postgres/postgres-migration-driver.ts"],"sourcesContent":["/**\r\n * PostgreSQL Migration Driver\r\n *\r\n * Implements the MigrationDriverContract for PostgreSQL DDL operations.\r\n * Provides methods for creating/dropping tables, columns, indexes,\r\n * and constraints.\r\n *\r\n * @module cascade/drivers/postgres\r\n */\r\n\r\nimport { databaseTransactionContext } from \"../../context/database-transaction-context\";\r\nimport type {\r\n ColumnDefinition,\r\n ColumnType,\r\n ForeignKeyDefinition,\r\n FullTextIndexOptions,\r\n GeoIndexOptions,\r\n IndexDefinition,\r\n MigrationDriverContract,\r\n TableIndexInformation,\r\n VectorIndexOptions,\r\n} from \"../../contracts/migration-driver.contract\";\r\nimport type { MigrationDefaults, UuidStrategy } from \"../../types\";\r\nimport type { PostgresDriver } from \"./postgres-driver\";\r\n\r\n/**\r\n * PostgreSQL Migration Driver.\r\n *\r\n * Handles database schema operations for PostgreSQL including:\r\n * - Table creation and deletion\r\n * - Column management\r\n * - Index creation (B-tree, GIN, GiST, etc.)\r\n * - Constraint management (foreign keys, unique, etc.)\r\n *\r\n * @example\r\n * ```typescript\r\n * const migrationDriver = driver.migrationDriver();\r\n *\r\n * // Create a table\r\n * await migrationDriver.createTable('users');\r\n *\r\n * // Add columns\r\n * await migrationDriver.addColumn('users', {\r\n * name: 'email',\r\n * type: 'string',\r\n * length: 255,\r\n * nullable: false\r\n * });\r\n *\r\n * // Create unique index\r\n * await migrationDriver.createUniqueIndex('users', ['email']);\r\n * ```\r\n */\r\nexport class PostgresMigrationDriver implements MigrationDriverContract {\r\n /**\r\n * Active transaction client (if any).\r\n */\r\n private get transactionClient(): unknown {\r\n return databaseTransactionContext.getSession();\r\n }\r\n\r\n /**\r\n * Create a new migration driver.\r\n *\r\n * @param driver - The PostgreSQL driver instance\r\n */\r\n public constructor(public readonly driver: PostgresDriver) {}\r\n\r\n // ============================================================================\r\n // TABLE OPERATIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Create a new table with a default id column.\r\n *\r\n * @param table - Table name\r\n */\r\n public async createTable(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n // Create empty table - columns are added via addColumn operations\r\n await this.execute(`CREATE TABLE ${quotedTable} ()`);\r\n }\r\n\r\n /**\r\n * Create table if it doesn't exist.\r\n *\r\n * @param table - Table name\r\n */\r\n public async createTableIfNotExists(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n // Create empty table if not exists - columns are added via addColumn operations\r\n await this.execute(`CREATE TABLE IF NOT EXISTS ${quotedTable} ()`);\r\n }\r\n\r\n /**\r\n * Drop an existing table.\r\n *\r\n * @param table - Table name\r\n */\r\n public async dropTable(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n await this.execute(`DROP TABLE ${quotedTable} CASCADE`);\r\n }\r\n\r\n /**\r\n * Drop table if it exists.\r\n *\r\n * @param table - Table name\r\n */\r\n public async dropTableIfExists(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n await this.execute(`DROP TABLE IF EXISTS ${quotedTable} CASCADE`);\r\n }\r\n\r\n /**\r\n * Rename a table.\r\n *\r\n * @param from - Current table name\r\n * @param to - New table name\r\n */\r\n public async renameTable(from: string, to: string): Promise<void> {\r\n const quotedFrom = this.driver.dialect.quoteIdentifier(from);\r\n const quotedTo = this.driver.dialect.quoteIdentifier(to);\r\n await this.execute(`ALTER TABLE ${quotedFrom} RENAME TO ${quotedTo}`);\r\n }\r\n\r\n /**\r\n * Truncate a table — remove all rows efficiently.\r\n *\r\n * @param table - Table name\r\n */\r\n public async truncateTable(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n await this.execute(`TRUNCATE TABLE ${quotedTable}`);\r\n }\r\n\r\n /**\r\n * Check if a table exists.\r\n *\r\n * @param table - Table name\r\n * @returns Whether the table exists\r\n */\r\n public async tableExists(table: string): Promise<boolean> {\r\n const result = await this.driver.query<{ exists: boolean }>(\r\n `SELECT EXISTS (\r\n SELECT FROM information_schema.tables\r\n WHERE table_schema = 'public'\r\n AND table_name = $1\r\n )`,\r\n [table],\r\n );\r\n return result.rows[0]?.exists ?? false;\r\n }\r\n\r\n /**\r\n * List all columns in a table.\r\n *\r\n * @param table - Table name\r\n * @returns Array of column definitions\r\n */\r\n public async listColumns(table: string): Promise<ColumnDefinition[]> {\r\n const result = await this.driver.query<{\r\n column_name: string;\r\n data_type: string;\r\n character_maximum_length: number | null;\r\n numeric_precision: number | null;\r\n numeric_scale: number | null;\r\n is_nullable: string;\r\n column_default: string | null;\r\n }>(\r\n `SELECT\r\n column_name,\r\n data_type,\r\n character_maximum_length,\r\n numeric_precision,\r\n numeric_scale,\r\n is_nullable,\r\n column_default\r\n FROM information_schema.columns\r\n WHERE table_schema = 'public'\r\n AND table_name = $1\r\n ORDER BY ordinal_position`,\r\n [table],\r\n );\r\n\r\n return result.rows.map((row) => ({\r\n name: row.column_name,\r\n type: this.mapPostgresTypeToColumnType(row.data_type),\r\n length: row.character_maximum_length ?? undefined,\r\n precision: row.numeric_precision ?? undefined,\r\n scale: row.numeric_scale ?? undefined,\r\n nullable: row.is_nullable === \"YES\",\r\n defaultValue: row.column_default ?? undefined,\r\n }));\r\n }\r\n\r\n /**\r\n * List all tables in the current database.\r\n *\r\n * @returns Array of table names\r\n */\r\n public async listTables(): Promise<string[]> {\r\n const result = await this.driver.query<{ table_name: string }>(\r\n `SELECT table_name\r\n FROM information_schema.tables\r\n WHERE table_schema = 'public'\r\n ORDER BY table_name`,\r\n );\r\n\r\n return result.rows.map((row) => row.table_name);\r\n }\r\n\r\n /**\r\n * Ensure the migrations tracking table exists.\r\n *\r\n * Creates the table with proper schema if it doesn't exist.\r\n *\r\n * @param tableName - Name of the migrations table\r\n */\r\n public async ensureMigrationsTable(tableName: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(tableName);\r\n\r\n await this.execute(`\r\n CREATE TABLE IF NOT EXISTS ${quotedTable} (\r\n \"id\" SERIAL PRIMARY KEY,\r\n \"name\" VARCHAR(255) NOT NULL UNIQUE,\r\n \"batch\" INTEGER NOT NULL,\r\n \"executedAt\" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),\r\n \"createdAt\" TIMESTAMP WITH TIME ZONE\r\n )\r\n `);\r\n }\r\n\r\n // ============================================================================\r\n // COLUMN OPERATIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Add a column to an existing table.\r\n *\r\n * @param table - Table name\r\n * @param column - Column definition\r\n */\r\n public async addColumn(table: string, column: ColumnDefinition): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column.name);\r\n\r\n // For auto-increment integers, use SERIAL/BIGSERIAL instead of INTEGER/BIGINT\r\n let sqlType: string;\r\n if (column.autoIncrement) {\r\n if (column.type === \"bigInteger\") {\r\n sqlType = \"BIGSERIAL\";\r\n } else {\r\n sqlType = \"SERIAL\";\r\n }\r\n } else {\r\n sqlType = this.driver.dialect.getSqlType(column.type, {\r\n length: column.length,\r\n precision: column.precision,\r\n scale: column.scale,\r\n dimensions: column.dimensions,\r\n });\r\n }\r\n\r\n let sql = `ALTER TABLE ${quotedTable} ADD COLUMN ${quotedColumn} ${sqlType}`;\r\n\r\n // Handle generated columns\r\n if (column.generated) {\r\n sql += ` GENERATED ALWAYS AS (${column.generated.expression})`;\r\n if (column.generated.stored) {\r\n sql += \" STORED\";\r\n }\r\n // PostgreSQL only supports STORED, not VIRTUAL\r\n // If virtual is requested, it's simply ignored (PostgreSQL doesn't support it)\r\n } else {\r\n // SERIAL/BIGSERIAL are always NOT NULL, so skip for those\r\n if (!column.autoIncrement && column.nullable === false) {\r\n sql += \" NOT NULL\";\r\n }\r\n\r\n if (column.defaultValue !== undefined) {\r\n // Check for special CURRENT_TIMESTAMP marker\r\n if (\r\n typeof column.defaultValue === \"object\" &&\r\n column.defaultValue !== null &&\r\n (column.defaultValue as any).__type === \"CURRENT_TIMESTAMP\"\r\n ) {\r\n sql += \" DEFAULT NOW()\";\r\n } else if (column.isRawDefault === false) {\r\n // Explicit string literal - escape it properly\r\n const escaped = String(column.defaultValue).replace(/'/g, \"''\");\r\n sql += ` DEFAULT '${escaped}'`;\r\n } else if (typeof column.defaultValue === \"boolean\") {\r\n // Boolean values\r\n sql += ` DEFAULT ${column.defaultValue ? \"TRUE\" : \"FALSE\"}`;\r\n } else if (typeof column.defaultValue === \"number\") {\r\n // Numeric values\r\n sql += ` DEFAULT ${column.defaultValue}`;\r\n } else {\r\n // Raw SQL expression (default behavior when isRawDefault is true or undefined)\r\n sql += ` DEFAULT ${column.defaultValue}`;\r\n }\r\n }\r\n\r\n // Handle primary key\r\n if (column.primary) {\r\n sql += \" PRIMARY KEY\";\r\n }\r\n\r\n // Handle unique constraint\r\n if (column.unique) {\r\n sql += \" UNIQUE\";\r\n }\r\n }\r\n\r\n await this.execute(sql);\r\n }\r\n\r\n /**\r\n * Drop a column from a table.\r\n *\r\n * @param table - Table name\r\n * @param column - Column name\r\n */\r\n public async dropColumn(table: string, column: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column);\r\n await this.execute(`ALTER TABLE ${quotedTable} DROP COLUMN ${quotedColumn}`);\r\n }\r\n\r\n /**\r\n * Drop multiple columns from a table.\r\n *\r\n * @param table - Table name\r\n * @param columns - Column names\r\n */\r\n public async dropColumns(table: string, columns: string[]): Promise<void> {\r\n for (const column of columns) {\r\n await this.dropColumn(table, column);\r\n }\r\n }\r\n\r\n /**\r\n * Rename a column.\r\n *\r\n * @param table - Table name\r\n * @param from - Current column name\r\n * @param to - New column name\r\n */\r\n public async renameColumn(table: string, from: string, to: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedFrom = this.driver.dialect.quoteIdentifier(from);\r\n const quotedTo = this.driver.dialect.quoteIdentifier(to);\r\n await this.execute(`ALTER TABLE ${quotedTable} RENAME COLUMN ${quotedFrom} TO ${quotedTo}`);\r\n }\r\n\r\n /**\r\n * Modify an existing column.\r\n *\r\n * @param table - Table name\r\n * @param column - New column definition\r\n */\r\n public async modifyColumn(table: string, column: ColumnDefinition): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column.name);\r\n const sqlType = this.driver.dialect.getSqlType(column.type, {\r\n length: column.length,\r\n precision: column.precision,\r\n scale: column.scale,\r\n dimensions: column.dimensions,\r\n });\r\n\r\n // PostgreSQL requires separate ALTER statements for type and nullability\r\n await this.execute(`ALTER TABLE ${quotedTable} ALTER COLUMN ${quotedColumn} TYPE ${sqlType}`);\r\n\r\n if (column.nullable === false) {\r\n await this.execute(`ALTER TABLE ${quotedTable} ALTER COLUMN ${quotedColumn} SET NOT NULL`);\r\n } else if (column.nullable === true) {\r\n await this.execute(`ALTER TABLE ${quotedTable} ALTER COLUMN ${quotedColumn} DROP NOT NULL`);\r\n }\r\n\r\n if (column.defaultValue !== undefined) {\r\n let defaultVal: string;\r\n\r\n // Check for special CURRENT_TIMESTAMP marker\r\n if (\r\n typeof column.defaultValue === \"object\" &&\r\n column.defaultValue !== null &&\r\n (column.defaultValue as any).__type === \"CURRENT_TIMESTAMP\"\r\n ) {\r\n defaultVal = \"NOW()\";\r\n } else if (typeof column.defaultValue === \"string\") {\r\n defaultVal = `'${column.defaultValue}'`;\r\n } else {\r\n defaultVal = String(column.defaultValue);\r\n }\r\n\r\n await this.execute(\r\n `ALTER TABLE ${quotedTable} ALTER COLUMN ${quotedColumn} SET DEFAULT ${defaultVal}`,\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Create standard timestamp columns (created_at, updated_at).\r\n *\r\n * PostgreSQL implementation creates TIMESTAMPTZ columns with NOW() defaults.\r\n *\r\n * @param table - Table name\r\n */\r\n public async createTimestampColumns(table: string): Promise<void> {\r\n await this.addColumn(table, {\r\n name: \"created_at\",\r\n type: \"timestamp\",\r\n nullable: false,\r\n defaultValue: \"NOW()\",\r\n isRawDefault: true,\r\n });\r\n\r\n await this.addColumn(table, {\r\n name: \"updated_at\",\r\n type: \"timestamp\",\r\n nullable: false,\r\n defaultValue: \"NOW()\",\r\n isRawDefault: true,\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // INDEX OPERATIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Create an index on one or more columns.\r\n *\r\n * Supports:\r\n * - Regular column indexes\r\n * - Expression-based indexes (e.g., `lower(email)`)\r\n * - Covering indexes (INCLUDE clause)\r\n * - Concurrent index creation (CONCURRENTLY keyword)\r\n *\r\n * @param table - Table name\r\n * @param index - Index definition\r\n */\r\n public async createIndex(table: string, index: IndexDefinition): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const indexName = index.name ?? `idx_${table}_${index.columns.join(\"_\")}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n const uniqueKeyword = index.unique ? \"UNIQUE \" : \"\";\r\n const concurrentlyKeyword = index.concurrently ? \"CONCURRENTLY \" : \"\";\r\n\r\n let columnsPart: string;\r\n\r\n // Handle expression-based indexes\r\n if (index.expressions && index.expressions.length > 0) {\r\n // Wrap each expression in parentheses\r\n columnsPart = index.expressions.map((expr) => `(${expr})`).join(\", \");\r\n } else {\r\n // Regular column indexes\r\n const columns = index.columns.map((col, i) => {\r\n const quotedCol = this.driver.dialect.quoteIdentifier(col);\r\n const direction = index.directions?.[i]?.toUpperCase() ?? \"\";\r\n return direction ? `${quotedCol} ${direction}` : quotedCol;\r\n });\r\n columnsPart = columns.join(\", \");\r\n }\r\n\r\n let sql = `CREATE ${uniqueKeyword}INDEX ${concurrentlyKeyword}${quotedIndexName} ON ${quotedTable} (${columnsPart})`;\r\n\r\n // Add INCLUDE clause for covering indexes\r\n if (index.include && index.include.length > 0) {\r\n const includeCols = index.include\r\n .map((col) => this.driver.dialect.quoteIdentifier(col))\r\n .join(\", \");\r\n sql += ` INCLUDE (${includeCols})`;\r\n }\r\n\r\n // Add partial index condition\r\n if (index.where && Object.keys(index.where).length > 0) {\r\n const conditions = Object.entries(index.where)\r\n .map(([key, value]) => {\r\n const quotedKey = this.driver.dialect.quoteIdentifier(key);\r\n return typeof value === \"string\"\r\n ? `${quotedKey} = '${value}'`\r\n : `${quotedKey} = ${value}`;\r\n })\r\n .join(\" AND \");\r\n sql += ` WHERE ${conditions}`;\r\n }\r\n\r\n await this.execute(sql);\r\n }\r\n\r\n /**\r\n * Drop an index.\r\n *\r\n * @param table - Table name\r\n * @param indexNameOrColumns - Index name or columns\r\n */\r\n public async dropIndex(table: string, indexNameOrColumns: string | string[]): Promise<void> {\r\n let indexName: string;\r\n\r\n if (typeof indexNameOrColumns === \"string\") {\r\n indexName = indexNameOrColumns;\r\n } else {\r\n indexName = `idx_${table}_${indexNameOrColumns.join(\"_\")}`;\r\n }\r\n\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n await this.execute(`DROP INDEX IF EXISTS ${quotedIndexName}`);\r\n }\r\n\r\n /**\r\n * Create a unique index.\r\n *\r\n * @param table - Table name\r\n * @param columns - Columns to include\r\n * @param name - Optional index name\r\n */\r\n public async createUniqueIndex(table: string, columns: string[], name?: string): Promise<void> {\r\n await this.createIndex(table, { columns, unique: true, name });\r\n }\r\n\r\n /**\r\n * Drop a unique index.\r\n *\r\n * @param table - Table name\r\n * @param columns - Columns in the index\r\n */\r\n public async dropUniqueIndex(table: string, columns: string[]): Promise<void> {\r\n await this.dropIndex(table, columns);\r\n }\r\n\r\n // ============================================================================\r\n // SPECIALIZED INDEXES\r\n // ============================================================================\r\n\r\n /**\r\n * Create a full-text search index using GIN.\r\n *\r\n * @param table - Table name\r\n * @param columns - Columns to index\r\n * @param options - Full-text options\r\n */\r\n public async createFullTextIndex(\r\n table: string,\r\n columns: string[],\r\n options?: FullTextIndexOptions,\r\n ): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const indexName = options?.name ?? `idx_${table}_fulltext_${columns.join(\"_\")}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n const language = options?.language ?? \"english\";\r\n\r\n const tsvectors = columns.map((col) => {\r\n const weight = options?.weights?.[col] ?? \"A\";\r\n return `setweight(to_tsvector('${language}', COALESCE(${this.driver.dialect.quoteIdentifier(col)}, '')), '${weight}')`;\r\n });\r\n\r\n await this.execute(\r\n `CREATE INDEX ${quotedIndexName} ON ${quotedTable} USING GIN ((${tsvectors.join(\" || \")}))`,\r\n );\r\n }\r\n\r\n /**\r\n * Drop a full-text search index.\r\n *\r\n * @param table - Table name\r\n * @param name - Index name\r\n */\r\n public async dropFullTextIndex(table: string, name: string): Promise<void> {\r\n await this.dropIndex(table, name);\r\n }\r\n\r\n /**\r\n * Create a geo-spatial index using GiST.\r\n *\r\n * @param table - Table name\r\n * @param column - Geo column\r\n * @param options - Geo index options\r\n */\r\n public async createGeoIndex(\r\n table: string,\r\n column: string,\r\n options?: GeoIndexOptions,\r\n ): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column);\r\n const indexName = options?.name ?? `idx_${table}_geo_${column}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n\r\n await this.execute(\r\n `CREATE INDEX ${quotedIndexName} ON ${quotedTable} USING GIST (${quotedColumn})`,\r\n );\r\n }\r\n\r\n /**\r\n * Drop a geo-spatial index.\r\n *\r\n * @param table - Table name\r\n * @param column - Geo column\r\n */\r\n public async dropGeoIndex(table: string, column: string): Promise<void> {\r\n await this.dropIndex(table, `idx_${table}_geo_${column}`);\r\n }\r\n\r\n /**\r\n * Create a vector search index (requires pgvector extension).\r\n *\r\n * @param table - Table name\r\n * @param column - Vector column\r\n * @param options - Vector index options\r\n */\r\n public async createVectorIndex(\r\n table: string,\r\n column: string,\r\n options: VectorIndexOptions,\r\n ): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column);\r\n const indexName = options.name ?? `idx_${table}_vector_${column}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n\r\n // Map similarity to pgvector operator class\r\n const opClass =\r\n options.similarity === \"euclidean\"\r\n ? \"vector_l2_ops\"\r\n : options.similarity === \"dotProduct\"\r\n ? \"vector_ip_ops\"\r\n : \"vector_cosine_ops\";\r\n\r\n const lists = options.lists ?? 100;\r\n\r\n await this.execute(\r\n `CREATE INDEX ${quotedIndexName} ON ${quotedTable} USING ivfflat (${quotedColumn} ${opClass}) WITH (lists = ${lists})`,\r\n );\r\n }\r\n\r\n /**\r\n * Drop a vector search index.\r\n *\r\n * @param table - Table name\r\n * @param column - Vector column\r\n */\r\n public async dropVectorIndex(table: string, column: string): Promise<void> {\r\n await this.dropIndex(table, `idx_${table}_vector_${column}`);\r\n }\r\n\r\n /**\r\n * Create a TTL index (not natively supported in PostgreSQL).\r\n *\r\n * Note: PostgreSQL doesn't have native TTL indexes like MongoDB.\r\n * This creates a partial index and requires a scheduled job for cleanup.\r\n *\r\n * @param table - Table name\r\n * @param column - Date column\r\n * @param expireAfterSeconds - Expiration time in seconds\r\n */\r\n public async createTTLIndex(\r\n table: string,\r\n column: string,\r\n expireAfterSeconds: number,\r\n ): Promise<void> {\r\n // Create a partial index for expired rows (for efficient cleanup queries)\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(column);\r\n const indexName = `idx_${table}_ttl_${column}`;\r\n const quotedIndexName = this.driver.dialect.quoteIdentifier(indexName);\r\n\r\n await this.execute(\r\n `CREATE INDEX ${quotedIndexName} ON ${quotedTable} (${quotedColumn}) WHERE ${quotedColumn} < NOW() - INTERVAL '${expireAfterSeconds} seconds'`,\r\n );\r\n\r\n // Note: User must set up a scheduled job (pg_cron, etc.) to:\r\n // DELETE FROM table WHERE column < NOW() - INTERVAL 'X seconds'\r\n }\r\n\r\n /**\r\n * Drop a TTL index.\r\n *\r\n * @param table - Table name\r\n * @param column - Column with TTL index\r\n */\r\n public async dropTTLIndex(table: string, column: string): Promise<void> {\r\n await this.dropIndex(table, `idx_${table}_ttl_${column}`);\r\n }\r\n\r\n /**\r\n * List all indexes on a table.\r\n *\r\n * @param table - Table name\r\n * @returns Array of index metadata\r\n */\r\n public async listIndexes(table: string): Promise<TableIndexInformation[]> {\r\n const result = await this.driver.query<{ indexname: string; indexdef: string }>(\r\n `SELECT indexname, indexdef FROM pg_indexes WHERE schemaname = 'public' AND tablename = $1`,\r\n [table],\r\n );\r\n\r\n return result.rows.map((row) => {\r\n const isUnique = row.indexdef.includes(\"UNIQUE\");\r\n const isPrimary = row.indexname.endsWith(\"_pkey\");\r\n const columnsMatch = row.indexdef.match(/\\(([^)]+)\\)/);\r\n const columns = columnsMatch\r\n ? columnsMatch[1].split(\",\").map((c) => c.trim().replace(/\"/g, \"\"))\r\n : [];\r\n\r\n let type = \"btree\";\r\n if (row.indexdef.includes(\"USING GIN\")) type = \"gin\";\r\n else if (row.indexdef.includes(\"USING GIST\")) type = \"gist\";\r\n else if (row.indexdef.includes(\"USING HASH\")) type = \"hash\";\r\n else if (row.indexdef.includes(\"USING ivfflat\")) type = \"ivfflat\";\r\n\r\n return {\r\n name: row.indexname,\r\n columns,\r\n type,\r\n unique: isUnique || isPrimary,\r\n partial: row.indexdef.includes(\"WHERE\"),\r\n options: { primary: isPrimary, definition: row.indexdef },\r\n };\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // EXTENSIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Check if a PostgreSQL extension is available on the database server.\r\n *\r\n * @param extension - Extension name (e.g., \"vector\")\r\n */\r\n public async isExtensionAvailable(extension: string): Promise<boolean> {\r\n try {\r\n const result = await this.driver.query<{ name: string }>(\r\n `SELECT name FROM pg_available_extensions WHERE name = $1`,\r\n [extension],\r\n );\r\n\r\n return result?.rows?.length > 0;\r\n } catch {\r\n // If we can't check (e.g., permissions issue or pg_available_extensions not accessible),\r\n // we return true to avoid false positives. Execution will just proceed and fail naturally if it's missing.\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Get the official documentation or installation URL for a PostgreSQL extension.\r\n *\r\n * @param extension - Extension name\r\n */\r\n public getExtensionDocsUrl(extension: string): string | undefined {\r\n const guideUrls: Record<string, string> = {\r\n vector: \"https://github.com/pgvector/pgvector#installation\",\r\n postgis: \"https://postgis.net/documentation/getting_started/\",\r\n pg_trgm: \"https://www.postgresql.org/docs/current/pgtrgm.html\",\r\n uuid_ossp: \"https://www.postgresql.org/docs/current/uuid-ossp.html\",\r\n };\r\n\r\n return guideUrls[extension] ?? `https://www.postgresql.org/docs/current/${extension}.html`;\r\n }\r\n\r\n // ============================================================================\r\n // CONSTRAINTS\r\n // ============================================================================\r\n\r\n /**\r\n * Add a foreign key constraint.\r\n *\r\n * @param table - Table name\r\n * @param foreignKey - Foreign key definition\r\n */\r\n public async addForeignKey(table: string, foreignKey: ForeignKeyDefinition): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumn = this.driver.dialect.quoteIdentifier(foreignKey.column);\r\n const quotedRefTable = this.driver.dialect.quoteIdentifier(foreignKey.referencesTable);\r\n const quotedRefColumn = this.driver.dialect.quoteIdentifier(foreignKey.referencesColumn);\r\n\r\n const constraintName =\r\n foreignKey.name ?? `fk_${table}_${foreignKey.column}_${foreignKey.referencesTable}`;\r\n const quotedConstraint = this.driver.dialect.quoteIdentifier(constraintName);\r\n\r\n let sql = `ALTER TABLE ${quotedTable} ADD CONSTRAINT ${quotedConstraint} FOREIGN KEY (${quotedColumn}) REFERENCES ${quotedRefTable} (${quotedRefColumn})`;\r\n\r\n if (foreignKey.onDelete) {\r\n sql += ` ON DELETE ${this.mapForeignKeyAction(foreignKey.onDelete)}`;\r\n }\r\n\r\n if (foreignKey.onUpdate) {\r\n sql += ` ON UPDATE ${this.mapForeignKeyAction(foreignKey.onUpdate)}`;\r\n }\r\n\r\n await this.execute(sql);\r\n }\r\n\r\n /**\r\n * Drop a foreign key constraint.\r\n *\r\n * @param table - Table name\r\n * @param name - Constraint name\r\n */\r\n public async dropForeignKey(table: string, name: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedConstraint = this.driver.dialect.quoteIdentifier(name);\r\n await this.execute(`ALTER TABLE ${quotedTable} DROP CONSTRAINT ${quotedConstraint}`);\r\n }\r\n\r\n /**\r\n * Add a primary key constraint.\r\n *\r\n * @param table - Table name\r\n * @param columns - Primary key columns\r\n */\r\n public async addPrimaryKey(table: string, columns: string[]): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedColumns = columns.map((c) => this.driver.dialect.quoteIdentifier(c)).join(\", \");\r\n const constraintName = `pk_${table}`;\r\n const quotedConstraint = this.driver.dialect.quoteIdentifier(constraintName);\r\n\r\n await this.execute(\r\n `ALTER TABLE ${quotedTable} ADD CONSTRAINT ${quotedConstraint} PRIMARY KEY (${quotedColumns})`,\r\n );\r\n }\r\n\r\n /**\r\n * Drop the primary key constraint.\r\n *\r\n * @param table - Table name\r\n */\r\n public async dropPrimaryKey(table: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const constraintName = `pk_${table}`;\r\n const quotedConstraint = this.driver.dialect.quoteIdentifier(constraintName);\r\n\r\n await this.execute(`ALTER TABLE ${quotedTable} DROP CONSTRAINT ${quotedConstraint}`);\r\n }\r\n\r\n /**\r\n * Add a CHECK constraint.\r\n *\r\n * @param table - Table name\r\n * @param name - Constraint name\r\n * @param expression - SQL CHECK expression\r\n */\r\n public async addCheck(table: string, name: string, expression: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedName = this.driver.dialect.quoteIdentifier(name);\r\n const sql = `ALTER TABLE ${quotedTable} ADD CONSTRAINT ${quotedName} CHECK (${expression})`;\r\n await this.execute(sql);\r\n }\r\n\r\n /**\r\n * Drop a CHECK constraint.\r\n *\r\n * @param table - Table name\r\n * @param name - Constraint name\r\n */\r\n public async dropCheck(table: string, name: string): Promise<void> {\r\n const quotedTable = this.driver.dialect.quoteIdentifier(table);\r\n const quotedName = this.driver.dialect.quoteIdentifier(name);\r\n await this.execute(`ALTER TABLE ${quotedTable} DROP CONSTRAINT ${quotedName}`);\r\n }\r\n\r\n // ============================================================================\r\n // SCHEMA VALIDATION (NOT APPLICABLE FOR PostgreSQL)\r\n // ============================================================================\r\n\r\n /**\r\n * Set schema validation (no-op for PostgreSQL).\r\n *\r\n * PostgreSQL uses column constraints instead.\r\n */\r\n public async setSchemaValidation(_table: string, _schema: object): Promise<void> {\r\n // No-op: PostgreSQL doesn't have MongoDB-style schema validation\r\n // Use CHECK constraints instead\r\n }\r\n\r\n /**\r\n * Remove schema validation (no-op for PostgreSQL).\r\n */\r\n public async removeSchemaValidation(_table: string): Promise<void> {\r\n // No-op\r\n }\r\n\r\n // ============================================================================\r\n // TRANSACTIONS\r\n // ============================================================================\r\n\r\n /**\r\n * Begin a transaction.\r\n */\r\n public async beginTransaction(): Promise<void> {\r\n await this.execute(\"BEGIN\");\r\n }\r\n\r\n /**\r\n * Commit the current transaction.\r\n */\r\n public async commit(): Promise<void> {\r\n await this.execute(\"COMMIT\");\r\n }\r\n\r\n /**\r\n * Rollback the current transaction.\r\n */\r\n public async rollback(): Promise<void> {\r\n await this.execute(\"ROLLBACK\");\r\n }\r\n\r\n /**\r\n * Whether transactions are supported.\r\n */\r\n public supportsTransactions(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Get the default transactional behavior for PostgreSQL.\r\n *\r\n * PostgreSQL supports transactional DDL operations, so migrations\r\n * are wrapped in transactions by default for atomicity and safety.\r\n *\r\n * @returns true (PostgreSQL DDL is transactional)\r\n */\r\n public getDefaultTransactional(): boolean {\r\n return true;\r\n }\r\n\r\n // ============================================================================\r\n // DEFAULTS\r\n // ============================================================================\r\n\r\n /**\r\n * Get the default UUID generation expression for PostgreSQL.\r\n *\r\n * Resolution order:\r\n * 1. `migrationDefaults.uuidExpression` → raw expression (escape hatch)\r\n * 2. `migrationDefaults.uuidStrategy` → mapped to PG function\r\n * 3. Fallback → `gen_random_uuid()` (v4, PG 13+)\r\n *\r\n * @param migrationDefaults - Optional overrides from DataSource config\r\n * @returns PostgreSQL SQL expression for UUID generation\r\n *\r\n * @example\r\n * ```typescript\r\n * driver.getUuidDefault(); // \"gen_random_uuid()\"\r\n * driver.getUuidDefault({ uuidStrategy: \"v7\" }); // \"uuidv7()\"\r\n * driver.getUuidDefault({ uuidExpression: \"uuid_generate_v1mc()\" }); // \"uuid_generate_v1mc()\"\r\n * ```\r\n */\r\n public getUuidDefault(migrationDefaults?: MigrationDefaults): string {\r\n // Escape hatch: raw expression takes highest precedence\r\n if (migrationDefaults?.uuidExpression) {\r\n return migrationDefaults.uuidExpression;\r\n }\r\n\r\n const strategy = migrationDefaults?.uuidStrategy ?? \"v4\";\r\n\r\n const strategyMap: Record<UuidStrategy, string> = {\r\n v4: \"gen_random_uuid()\",\r\n v7: \"uuidv7()\",\r\n };\r\n\r\n return strategyMap[strategy];\r\n }\r\n\r\n // ============================================================================\r\n // RAW ACCESS\r\n // ============================================================================\r\n\r\n /**\r\n * Execute raw operations with direct driver access.\r\n *\r\n * @param callback - Callback receiving the driver\r\n */\r\n public async raw<T>(callback: (connection: unknown) => Promise<T>): Promise<T> {\r\n return callback(this.driver);\r\n }\r\n\r\n // ============================================================================\r\n // HELPERS\r\n // ============================================================================\r\n\r\n /**\r\n * Execute a SQL statement.\r\n *\r\n * @param sql - SQL to execute\r\n * @param params - Query parameters\r\n */\r\n private async execute(sql: string, params: unknown[] = []): Promise<void> {\r\n await this.driver.query(sql, params);\r\n }\r\n\r\n /**\r\n * Map foreign key action to PostgreSQL syntax.\r\n */\r\n private mapForeignKeyAction(action: \"cascade\" | \"restrict\" | \"setNull\" | \"noAction\"): string {\r\n const mapping: Record<string, string> = {\r\n cascade: \"CASCADE\",\r\n restrict: \"RESTRICT\",\r\n setNull: \"SET NULL\",\r\n noAction: \"NO ACTION\",\r\n };\r\n return mapping[action] ?? \"NO ACTION\";\r\n }\r\n\r\n /**\r\n * Map PostgreSQL data type to ColumnType.\r\n */\r\n private mapPostgresTypeToColumnType(pgType: string): ColumnType {\r\n const typeMap: Record<string, ColumnType> = {\r\n \"character varying\": \"string\",\r\n varchar: \"string\",\r\n character: \"char\",\r\n char: \"char\",\r\n text: \"text\",\r\n integer: \"integer\",\r\n int: \"integer\",\r\n smallint: \"smallInteger\",\r\n bigint: \"bigInteger\",\r\n real: \"float\",\r\n \"double precision\": \"double\",\r\n numeric: \"decimal\",\r\n decimal: \"decimal\",\r\n boolean: \"boolean\",\r\n date: \"date\",\r\n timestamp: \"dateTime\",\r\n \"timestamp without time zone\": \"dateTime\",\r\n \"timestamp with time zone\": \"timestamp\",\r\n time: \"time\",\r\n \"time without time zone\": \"time\",\r\n json: \"json\",\r\n jsonb: \"json\",\r\n bytea: \"binary\",\r\n uuid: \"uuid\",\r\n inet: \"ipAddress\",\r\n macaddr: \"macAddress\",\r\n point: \"point\",\r\n polygon: \"polygon\",\r\n line: \"lineString\",\r\n geometry: \"geometry\",\r\n // PostgreSQL array types\r\n \"integer[]\": \"arrayInt\",\r\n \"int[]\": \"arrayInt\",\r\n \"bigint[]\": \"arrayBigInt\",\r\n \"real[]\": \"arrayFloat\",\r\n \"decimal[]\": \"arrayDecimal\",\r\n \"numeric[]\": \"arrayDecimal\",\r\n \"boolean[]\": \"arrayBoolean\",\r\n \"text[]\": \"arrayText\",\r\n \"date[]\": \"arrayDate\",\r\n \"timestamp with time zone[]\": \"arrayTimestamp\",\r\n \"timestamptz[]\": \"arrayTimestamp\",\r\n \"uuid[]\": \"arrayUuid\",\r\n \"jsonb[]\": \"arrayJson\",\r\n \"json[]\": \"arrayJson\",\r\n };\r\n\r\n return typeMap[pgType.toLowerCase()] ?? \"string\";\r\n }\r\n}\r\n"],"mappings":"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"}
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
import { ChunkCallback, CursorPaginationOptions, CursorPaginationResult, DriverQuery, GroupByInput, PaginationOptions, PaginationResult, QueryBuilderContract, RawExpression } from "../../contracts/query-builder.contract.mjs";
|
|
2
|
+
import { DataSource } from "../../data-source/data-source.mjs";
|
|
3
|
+
import { ModelRef } from "../../model/register-model.mjs";
|
|
4
|
+
import { Op, QueryBuilder } from "../../query-builder/query-builder.mjs";
|
|
5
|
+
import { GenericObject } from "@mongez/reinforcements";
|
|
6
|
+
|
|
7
|
+
//#region ../../@warlock.js/cascade/src/drivers/postgres/postgres-query-builder.d.ts
|
|
8
|
+
type JoinRelationConfig = {
|
|
9
|
+
alias: string;
|
|
10
|
+
type: "belongsTo" | "hasOne" | "hasMany";
|
|
11
|
+
model?: ModelRef;
|
|
12
|
+
localKey?: string;
|
|
13
|
+
foreignKey?: string;
|
|
14
|
+
ownerKey?: string;
|
|
15
|
+
parentPath?: string | null;
|
|
16
|
+
relationName?: string;
|
|
17
|
+
parentModel?: ModelRef;
|
|
18
|
+
select?: string[]; /** Operations recorded by a joinWith constraint callback. */
|
|
19
|
+
constraintOps?: Op[];
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* PostgreSQL Query Builder.
|
|
23
|
+
*
|
|
24
|
+
* Collects query operations (via the base class) and delegates SQL generation
|
|
25
|
+
* to `PostgresQueryParser`. Owns execution, hydration, and relation loading.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const users = await User.query()
|
|
30
|
+
* .select(["id", "name", "email"])
|
|
31
|
+
* .where("status", "active")
|
|
32
|
+
* .orderBy("createdAt", "desc")
|
|
33
|
+
* .limit(10)
|
|
34
|
+
* .get();
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
declare class PostgresQueryBuilder<T = unknown> extends QueryBuilder<T> implements QueryBuilderContract<T> {
|
|
38
|
+
readonly table: string;
|
|
39
|
+
/** Data source backing this builder. */
|
|
40
|
+
readonly dataSource: DataSource;
|
|
41
|
+
/** Hydration callback for transforming result rows into model instances. */
|
|
42
|
+
hydrateCallback?: (data: unknown, index: number) => unknown;
|
|
43
|
+
/** Invoked before query execution. */
|
|
44
|
+
private fetchingCallback?;
|
|
45
|
+
/** Invoked after fetch but before hydration. */
|
|
46
|
+
private hydratingCallback?;
|
|
47
|
+
/** Invoked after fetch and hydration. */
|
|
48
|
+
private fetchedCallback?;
|
|
49
|
+
/**
|
|
50
|
+
* Map of relations registered via `joinWith()`.
|
|
51
|
+
* Keyed by dot-notation path (e.g. "organizationAiModel.aiModel").
|
|
52
|
+
*/
|
|
53
|
+
joinRelations: Map<string, JoinRelationConfig>;
|
|
54
|
+
/**
|
|
55
|
+
* Idempotency guard for `applyJoinRelations()` so calling `parse()` then
|
|
56
|
+
* `get()` (or `parse()` twice) doesn't double-emit `selectRelatedColumns`
|
|
57
|
+
* operations.
|
|
58
|
+
*/
|
|
59
|
+
private joinRelationsApplied;
|
|
60
|
+
/**
|
|
61
|
+
* Idempotency guard for `applyCountRelations()` — see `joinRelationsApplied`.
|
|
62
|
+
*/
|
|
63
|
+
private countRelationsApplied;
|
|
64
|
+
/**
|
|
65
|
+
* Idempotency guard for `applyHasRelations()` — see `joinRelationsApplied`.
|
|
66
|
+
*/
|
|
67
|
+
private hasRelationsApplied;
|
|
68
|
+
/**
|
|
69
|
+
* Alias → SQL expression for two-arg `groupBy` aggregates. Recorded by the
|
|
70
|
+
* `groupBy` override; consumed by `applyGroupByAggregates` to rewrite a
|
|
71
|
+
* `having()` on the alias into the underlying expression (Postgres forbids
|
|
72
|
+
* SELECT aliases in HAVING).
|
|
73
|
+
*/
|
|
74
|
+
private aggregateAliases;
|
|
75
|
+
/**
|
|
76
|
+
* Idempotency guard for `applyGroupByAggregates()` — see `joinRelationsApplied`.
|
|
77
|
+
*/
|
|
78
|
+
private groupByAggregatesApplied;
|
|
79
|
+
/**
|
|
80
|
+
* @param table - Target table name
|
|
81
|
+
* @param dataSource - Optional (uses default data source from registry if omitted)
|
|
82
|
+
*/
|
|
83
|
+
constructor(table: string, dataSource?: DataSource);
|
|
84
|
+
private get driver();
|
|
85
|
+
clone(): this;
|
|
86
|
+
/**
|
|
87
|
+
* Native-query escape hatch. Passes `operations[]` to the callback for
|
|
88
|
+
* direct manipulation. Use sparingly — only when fluent API is insufficient.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* q.raw(ops => ops.push({ type: "whereRaw", data: { expression: "1=1" } }))
|
|
92
|
+
*/
|
|
93
|
+
raw(callback: (operations: Op[]) => void): this;
|
|
94
|
+
/**
|
|
95
|
+
* Record a DISTINCT flag AND auto-select the field(s).
|
|
96
|
+
* In PostgreSQL, DISTINCT ON (col) requires the col to appear in SELECT.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* q.distinctValues("category") // SELECT category … DISTINCT ON (category)
|
|
100
|
+
* q.distinctValues(["category", "status"]) // both fields in DISTINCT ON and SELECT
|
|
101
|
+
*/
|
|
102
|
+
distinctValues(fields?: string | string[]): this;
|
|
103
|
+
/**
|
|
104
|
+
* GROUP BY with computed aggregates.
|
|
105
|
+
*
|
|
106
|
+
* Single-arg form defers to the base builder. With `aggregates`, each entry
|
|
107
|
+
* is translated to SQL — via the dialect for `$agg.*` helpers, verbatim for
|
|
108
|
+
* a raw SQL string — and pushed through the proven `selectRaw` projection
|
|
109
|
+
* (the same plumbing `similarTo` / `applyCountRelations` rely on). The
|
|
110
|
+
* grouped columns are projected explicitly because `SELECT *` is invalid
|
|
111
|
+
* alongside `GROUP BY`. The alias → expression map is recorded so
|
|
112
|
+
* `applyGroupByAggregates` can later rewrite `having()` on the alias.
|
|
113
|
+
*
|
|
114
|
+
* `$agg.distinct/floor/first/last` throw (MongoDB-only on Postgres v1);
|
|
115
|
+
* MongoDB operator objects throw (not portable to SQL).
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* Order.query().groupBy("category", {
|
|
119
|
+
* orders: $agg.count(),
|
|
120
|
+
* revenue: $agg.sum("amount"),
|
|
121
|
+
* }).having("revenue", ">", 1000);
|
|
122
|
+
*/
|
|
123
|
+
groupBy(fields: GroupByInput): this;
|
|
124
|
+
groupBy(fields: GroupByInput, aggregates: Record<string, RawExpression>): this;
|
|
125
|
+
/**
|
|
126
|
+
* Nearest-neighbour vector similarity search via pgvector cosine distance.
|
|
127
|
+
*
|
|
128
|
+
* Adds two operations atomically:
|
|
129
|
+
* 1. `selectRaw` → `1 - (column <=> $n::vector) AS <alias>`
|
|
130
|
+
* Makes the similarity score available on every returned row.
|
|
131
|
+
* 2. `orderByRaw` → `column <=> $n::vector`
|
|
132
|
+
* Tells the PostgreSQL query planner to use the IVFFlat/HNSW vector index.
|
|
133
|
+
* Using the alias in ORDER BY would bypass the index — the raw expression is required.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* const results = await Vector.query()
|
|
138
|
+
* .where({ organization_id: "org-123", content_type: "summary" })
|
|
139
|
+
* .similarTo("embedding", queryEmbedding)
|
|
140
|
+
* .limit(5)
|
|
141
|
+
* .get<VectorRow & { score: number }>();
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
similarTo(column: string, embedding: number[], alias?: string): this;
|
|
145
|
+
/** Set a hydration callback that transforms each result row. */
|
|
146
|
+
hydrate(callback: (data: unknown, index: number) => unknown): this;
|
|
147
|
+
/** Register a callback invoked before query execution. */
|
|
148
|
+
onFetching(callback: (query: this) => void | Promise<void>): () => void;
|
|
149
|
+
/** Register a callback invoked after fetch but before hydration. */
|
|
150
|
+
onHydrating(callback: (records: unknown[], context: unknown) => void | Promise<void>): () => void;
|
|
151
|
+
/** Register a callback invoked after fetch and hydration. */
|
|
152
|
+
onFetched(callback: (records: unknown[], context: unknown) => void | Promise<void>): () => void;
|
|
153
|
+
/** Apply pending global scopes to the operations list. */
|
|
154
|
+
private applyPendingScopes;
|
|
155
|
+
/** Array field contains a value (or object with key). */
|
|
156
|
+
whereArrayContains(field: string, value: unknown, key?: string): this;
|
|
157
|
+
/** Array field does NOT contain a value (or object with key). */
|
|
158
|
+
whereArrayNotContains(field: string, value: unknown, key?: string): this;
|
|
159
|
+
/** Array field contains value OR is empty. */
|
|
160
|
+
whereArrayHasOrEmpty(field: string, value: unknown, key?: string): this;
|
|
161
|
+
/** Array field does NOT contain value OR is empty. */
|
|
162
|
+
whereArrayNotHaveOrEmpty(field: string, value: unknown, key?: string): this;
|
|
163
|
+
/**
|
|
164
|
+
* Load relations via SQL JOINs (single query) with optional per-relation constraints.
|
|
165
|
+
*
|
|
166
|
+
* Supports:
|
|
167
|
+
* - `joinWith("author")` / `joinWith(["author", "category"])`
|
|
168
|
+
* - `joinWith({ actions: q => q.where("status", "pending").limit(5) })`
|
|
169
|
+
* - `joinWith({ organizationAiModel: "id,name", actions: q => q.orderBy("sort_order") })`
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ChatMessage.joinWith({
|
|
173
|
+
* actions: q => q.where("status", "pending").orderBy("sort_order", "asc").limit(5),
|
|
174
|
+
* organizationAiModel: "id,createdAt",
|
|
175
|
+
* })
|
|
176
|
+
*/
|
|
177
|
+
joinWith(...args: unknown[]): this;
|
|
178
|
+
/** Run a joinWith constraint callback against a sub-QB and capture its operations. */
|
|
179
|
+
private _resolveConstraintOps;
|
|
180
|
+
/**
|
|
181
|
+
* Execute the query and return all matching rows.
|
|
182
|
+
*/
|
|
183
|
+
get<TResult = T>(): Promise<TResult[]>;
|
|
184
|
+
/** Get first result. */
|
|
185
|
+
first<TResult = T>(): Promise<TResult | null>;
|
|
186
|
+
/** Get last result (by id desc). */
|
|
187
|
+
last<TResult = T>(): Promise<TResult | null>;
|
|
188
|
+
/** Get random results. */
|
|
189
|
+
random<TResult = T>(limit?: number): Promise<TResult[]>;
|
|
190
|
+
/** Get first or throw. */
|
|
191
|
+
firstOrFail<TResult = T>(): Promise<TResult>;
|
|
192
|
+
/** Get first or call callback. */
|
|
193
|
+
firstOr<TResult = T>(callback: () => TResult | Promise<TResult>): Promise<TResult>;
|
|
194
|
+
/** Get first or return null. */
|
|
195
|
+
firstOrNull<TResult = T>(): Promise<TResult | null>;
|
|
196
|
+
/** Get first or return default. */
|
|
197
|
+
firstOrNew<TResult = T>(defaults: GenericObject): Promise<TResult>;
|
|
198
|
+
/** Find by primary key. */
|
|
199
|
+
find<TResult = T>(id: number | string): Promise<TResult | null>;
|
|
200
|
+
/** Count matching rows. */
|
|
201
|
+
count(): Promise<number>;
|
|
202
|
+
/** SUM a numeric field. */
|
|
203
|
+
sum(field: string): Promise<number>;
|
|
204
|
+
/** AVG of a numeric field. */
|
|
205
|
+
avg(field: string): Promise<number>;
|
|
206
|
+
/** MIN of a numeric field. */
|
|
207
|
+
min(field: string): Promise<number>;
|
|
208
|
+
/** MAX of a numeric field. */
|
|
209
|
+
max(field: string): Promise<number>;
|
|
210
|
+
/** Get distinct values for a field. */
|
|
211
|
+
distinct<TResult = unknown>(field: string): Promise<TResult[]>;
|
|
212
|
+
/** Get array of all values for a single field. */
|
|
213
|
+
pluck(field: string): Promise<unknown[]>;
|
|
214
|
+
/** Get a single scalar value. */
|
|
215
|
+
value<TResult = unknown>(field: string): Promise<TResult | null>;
|
|
216
|
+
/** Check whether any matching rows exist. */
|
|
217
|
+
exists(): Promise<boolean>;
|
|
218
|
+
/** Check whether NO matching rows exist. */
|
|
219
|
+
notExists(): Promise<boolean>;
|
|
220
|
+
/** COUNT DISTINCT a field. */
|
|
221
|
+
countDistinct(field: string): Promise<number>;
|
|
222
|
+
/** Get latest records ordered by a column. */
|
|
223
|
+
latest(column?: string): Promise<T[]>;
|
|
224
|
+
/** Increment a numeric field. Returns new value. */
|
|
225
|
+
increment(field: string, amount?: number): Promise<number>;
|
|
226
|
+
/** Decrement a numeric field. Returns new value. */
|
|
227
|
+
decrement(field: string, amount?: number): Promise<number>;
|
|
228
|
+
/** Increment a field for all matching rows. Returns affected row count. */
|
|
229
|
+
incrementMany(field: string, amount?: number): Promise<number>;
|
|
230
|
+
/** Decrement a field for all matching rows. Returns affected row count. */
|
|
231
|
+
decrementMany(field: string, amount?: number): Promise<number>;
|
|
232
|
+
/**
|
|
233
|
+
* Process results in memory-efficient chunks.
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* await User.query().chunk(100, async (rows, idx) => { ... })
|
|
237
|
+
*/
|
|
238
|
+
chunk(size: number, callback: ChunkCallback<T>): Promise<void>;
|
|
239
|
+
/** Page-based pagination. */
|
|
240
|
+
paginate(options?: PaginationOptions): Promise<PaginationResult<T>>;
|
|
241
|
+
/**
|
|
242
|
+
* Set cursor pagination hints fluently.
|
|
243
|
+
* The recorded values are picked up by `cursorPaginate()` when no explicit
|
|
244
|
+
* options are passed.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* User.query().cursor(lastId).cursorPaginate({ limit: 20 })
|
|
248
|
+
*/
|
|
249
|
+
cursor(after?: unknown, before?: unknown): this;
|
|
250
|
+
/** Cursor-based pagination. */
|
|
251
|
+
cursorPaginate(options?: CursorPaginationOptions): Promise<CursorPaginationResult<T>>;
|
|
252
|
+
/** Delete matching rows. Returns deleted count. */
|
|
253
|
+
delete(): Promise<number>;
|
|
254
|
+
/** Delete the first matching row. */
|
|
255
|
+
deleteOne(): Promise<number>;
|
|
256
|
+
/** Update matching rows. */
|
|
257
|
+
update(fields: Record<string, unknown>): Promise<number>;
|
|
258
|
+
/** Unset fields from matching rows. */
|
|
259
|
+
unset(...fields: string[]): Promise<number>;
|
|
260
|
+
/**
|
|
261
|
+
* Return the SQL + bindings without executing.
|
|
262
|
+
*
|
|
263
|
+
* Runs the same prelude as `get()` (scopes, joinWith expansion, joinRelations,
|
|
264
|
+
* countRelations) so the preview matches what would actually be sent to the
|
|
265
|
+
* database. The apply* methods are idempotent — calling `parse()` then `get()`
|
|
266
|
+
* does not double-emit operations.
|
|
267
|
+
*/
|
|
268
|
+
parse(): DriverQuery;
|
|
269
|
+
/** Formatted SQL string (for logging/debugging). */
|
|
270
|
+
pretty(): string;
|
|
271
|
+
/** Run EXPLAIN ANALYZE on the query. */
|
|
272
|
+
explain(): Promise<unknown>;
|
|
273
|
+
/** Extend the builder with a driver-specific extension. */
|
|
274
|
+
extend<R>(extension: string, ..._args: unknown[]): R;
|
|
275
|
+
/** Pluck scalar values for a single field (alias for pluck). */
|
|
276
|
+
pluckOne<TResult = unknown>(field: string): Promise<TResult[]>;
|
|
277
|
+
/**
|
|
278
|
+
* Before `get()` runs the parser, consume any joinWith ops recorded by the base
|
|
279
|
+
* class and expand them into the joinRelations Map.
|
|
280
|
+
*/
|
|
281
|
+
private _processJoinWithOps;
|
|
282
|
+
/**
|
|
283
|
+
* Translate each entry in `joinRelations` into actual JOIN + selectRelatedColumns operations.
|
|
284
|
+
*
|
|
285
|
+
* Idempotent — guarded by `joinRelationsApplied` so repeat calls (e.g.
|
|
286
|
+
* `parse()` followed by `get()`) don't double-emit operations.
|
|
287
|
+
*/
|
|
288
|
+
private applyJoinRelations;
|
|
289
|
+
/**
|
|
290
|
+
* Translate every `has` / `whereHas` / `orWhereHas` / `doesntHave` /
|
|
291
|
+
* `whereDoesntHave` operation into an equivalent `whereRaw` (or
|
|
292
|
+
* `orWhereRaw`) carrying an EXISTS / NOT EXISTS / COUNT-comparison
|
|
293
|
+
* subquery. Keeps the parser pure (no schema awareness) — same pattern as
|
|
294
|
+
* `applyJoinRelations` and `applyCountRelations`.
|
|
295
|
+
*
|
|
296
|
+
* In-place rewrite preserves position so the boolean (AND/OR) stays
|
|
297
|
+
* correctly slotted relative to other where conditions.
|
|
298
|
+
*
|
|
299
|
+
* Idempotent — guarded by `hasRelationsApplied` so repeat calls (e.g.
|
|
300
|
+
* `parse()` followed by `get()`) don't double-translate.
|
|
301
|
+
*/
|
|
302
|
+
private applyHasRelations;
|
|
303
|
+
/**
|
|
304
|
+
* Translate one has-family operation into its `whereRaw`/`orWhereRaw`
|
|
305
|
+
* equivalent. Resolves the relation definition, builds the EXISTS or
|
|
306
|
+
* COUNT-comparison subquery, and returns the replacement op.
|
|
307
|
+
*/
|
|
308
|
+
private translateHasOp;
|
|
309
|
+
/**
|
|
310
|
+
* Build the SQL fragment that goes inside a `whereRaw` op for a has-family
|
|
311
|
+
* translation. Branches on relation type AND on the operation type:
|
|
312
|
+
*
|
|
313
|
+
* - `has` with default operator/count → `EXISTS (SELECT 1 FROM ...)`
|
|
314
|
+
* - `has` with custom operator/count → `(SELECT COUNT(*) FROM ...) <op> <count>`
|
|
315
|
+
* - `whereHas` / `orWhereHas` → `EXISTS (SELECT 1 ... AND <constraint>)`
|
|
316
|
+
* - `doesntHave` → `NOT EXISTS (SELECT 1 FROM ...)`
|
|
317
|
+
* - `whereDoesntHave` → `NOT EXISTS (SELECT 1 ... AND <constraint>)`
|
|
318
|
+
*/
|
|
319
|
+
private buildHasSubquery;
|
|
320
|
+
/**
|
|
321
|
+
* Translate each entry in `countRelations` into a correlated COUNT subquery
|
|
322
|
+
* emitted as a `selectRaw` operation. Runs after `applyJoinRelations` so the
|
|
323
|
+
* "preserve main table columns" guard sees any joins already in place.
|
|
324
|
+
*
|
|
325
|
+
* Idempotent — guarded by `countRelationsApplied` so repeat calls (e.g.
|
|
326
|
+
* `parse()` followed by `get()`) don't double-emit operations.
|
|
327
|
+
*/
|
|
328
|
+
private applyCountRelations;
|
|
329
|
+
/**
|
|
330
|
+
* Without an explicit `select(...)` or any `selectRaw`/`selectRelatedColumns`
|
|
331
|
+
* already pushed, the parser's "no selects → SELECT *" fallback would be
|
|
332
|
+
* suppressed once we add count expressions. Push `<table>.*` first so the
|
|
333
|
+
* caller's columns survive.
|
|
334
|
+
*/
|
|
335
|
+
private ensureMainColumnsForCount;
|
|
336
|
+
/**
|
|
337
|
+
* Build a single correlated-subquery expression for a count entry. Branches
|
|
338
|
+
* on relation type (hasMany/hasOne/belongsTo/belongsToMany). The optional
|
|
339
|
+
* constraint callback's where-ops are translated via a sub-parser and
|
|
340
|
+
* spliced into the subquery's WHERE clause.
|
|
341
|
+
*/
|
|
342
|
+
private buildCountSubquery;
|
|
343
|
+
/**
|
|
344
|
+
* Run a constraint's where-ops through a fresh sub-parser to obtain a SQL
|
|
345
|
+
* WHERE-fragment plus bindings. Strips the leading `WHERE ` and rewrites
|
|
346
|
+
* `$N` placeholders back to `?` so the outer parser renumbers them
|
|
347
|
+
* consistently when it processes the enclosing `selectRaw` operation.
|
|
348
|
+
*
|
|
349
|
+
* Non-where ops (orderBy / limit / etc.) are silently dropped — they have
|
|
350
|
+
* no meaning inside a COUNT subquery.
|
|
351
|
+
*/
|
|
352
|
+
private extractCountWhereFragment;
|
|
353
|
+
/**
|
|
354
|
+
* Rewrite every `having` op whose field matches a recorded aggregate alias
|
|
355
|
+
* into a `havingRaw` carrying the underlying SQL expression. PostgreSQL
|
|
356
|
+
* forbids SELECT aliases in HAVING, so `having("revenue", ">", 1000)` on a
|
|
357
|
+
* `groupBy` aggregate would otherwise throw at runtime. A `having` on a
|
|
358
|
+
* grouped column (no alias match) is left untouched. Runs at parse time
|
|
359
|
+
* (not in the `groupBy` override) so it is independent of fluent call order.
|
|
360
|
+
*
|
|
361
|
+
* Idempotent — guarded by `groupByAggregatesApplied` so repeat calls (e.g.
|
|
362
|
+
* `parse()` followed by `get()`) don't double-process.
|
|
363
|
+
*/
|
|
364
|
+
private applyGroupByAggregates;
|
|
365
|
+
/**
|
|
366
|
+
* Run the RelationLoader against the fetched rows for every relation
|
|
367
|
+
* registered via `with()`. Mutates each model instance in place — attaches
|
|
368
|
+
* loaded relations onto `model.loadedRelations` and as direct properties.
|
|
369
|
+
*
|
|
370
|
+
* Lives here (not in `buildQuery`'s `onFetched` callback as it did
|
|
371
|
+
* historically) so any code path that calls `get()` — including
|
|
372
|
+
* `Model.newQueryBuilder()` direct instantiation, custom builder subclasses
|
|
373
|
+
* via `static builder`, or any `eagerLoadRelations`-bearing builder — gets
|
|
374
|
+
* eager-loading. Previously the loader was only installed when the builder
|
|
375
|
+
* was constructed via `Model.query()` / `buildQuery`, so bypassing that
|
|
376
|
+
* factory made `with()` a silent no-op.
|
|
377
|
+
*
|
|
378
|
+
* Skipped silently when `modelClass` is absent (raw driver-level
|
|
379
|
+
* `queryBuilder()` usage has no relations map to consult).
|
|
380
|
+
*/
|
|
381
|
+
private applyEagerLoading;
|
|
382
|
+
/**
|
|
383
|
+
* Extract per-relation data from raw DB rows (before hydration).
|
|
384
|
+
* Returns a Map of row index → nested relation data tree.
|
|
385
|
+
*/
|
|
386
|
+
private extractJoinedRelationData;
|
|
387
|
+
/**
|
|
388
|
+
* Attach extracted relation data to hydrated model instances.
|
|
389
|
+
*/
|
|
390
|
+
private attachJoinedRelations;
|
|
391
|
+
/**
|
|
392
|
+
* Build a WHERE-only SQL fragment from `where*` operations on the current builder.
|
|
393
|
+
* Used by DELETE / UPDATE / increment paths.
|
|
394
|
+
*/
|
|
395
|
+
private buildFilter;
|
|
396
|
+
}
|
|
397
|
+
//#endregion
|
|
398
|
+
export { PostgresQueryBuilder };
|
|
399
|
+
//# sourceMappingURL=postgres-query-builder.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-query-builder.d.mts","names":[],"sources":["../../../../../../../@warlock.js/cascade/src/drivers/postgres/postgres-query-builder.ts"],"mappings":"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"}
|