@warlock.js/cascade 4.0.48 → 4.0.58
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/cjs/context/database-data-source-context.d.ts +29 -0
- package/cjs/context/database-data-source-context.d.ts.map +1 -0
- package/cjs/context/database-data-source-context.js +28 -0
- package/cjs/context/database-data-source-context.js.map +1 -0
- package/cjs/context/database-transaction-context.d.ts +31 -0
- package/cjs/context/database-transaction-context.d.ts.map +1 -0
- package/cjs/context/database-transaction-context.js +34 -0
- package/cjs/context/database-transaction-context.js.map +1 -0
- package/cjs/contracts/database-driver.contract.d.ts +143 -0
- package/cjs/contracts/database-driver.contract.d.ts.map +1 -0
- package/cjs/contracts/database-id-generator.contract.d.ts +109 -0
- package/cjs/contracts/database-id-generator.contract.d.ts.map +1 -0
- package/cjs/contracts/database-remover.contract.d.ts +104 -0
- package/cjs/contracts/database-remover.contract.d.ts.map +1 -0
- package/cjs/contracts/database-restorer.contract.d.ts +143 -0
- package/cjs/contracts/database-restorer.contract.d.ts.map +1 -0
- package/cjs/contracts/database-writer.contract.d.ts +119 -0
- package/cjs/contracts/database-writer.contract.d.ts.map +1 -0
- package/cjs/contracts/driver-blueprint.contract.d.ts +45 -0
- package/cjs/contracts/driver-blueprint.contract.d.ts.map +1 -0
- package/cjs/contracts/index.d.ts +10 -0
- package/cjs/contracts/index.d.ts.map +1 -0
- package/cjs/contracts/migration-driver.contract.d.ts +365 -0
- package/cjs/contracts/migration-driver.contract.d.ts.map +1 -0
- package/cjs/contracts/query-builder.contract.d.ts +1128 -0
- package/cjs/contracts/query-builder.contract.d.ts.map +1 -0
- package/cjs/contracts/sync-adapter.contract.d.ts +58 -0
- package/cjs/contracts/sync-adapter.contract.d.ts.map +1 -0
- package/cjs/data-source/data-source-registry.d.ts +104 -0
- package/cjs/data-source/data-source-registry.d.ts.map +1 -0
- package/cjs/data-source/data-source-registry.js +138 -0
- package/cjs/data-source/data-source-registry.js.map +1 -0
- package/cjs/data-source/data-source.d.ts +106 -0
- package/cjs/data-source/data-source.d.ts.map +1 -0
- package/cjs/data-source/data-source.js +77 -0
- package/cjs/data-source/data-source.js.map +1 -0
- package/cjs/database-dirty-tracker.d.ts +253 -0
- package/cjs/database-dirty-tracker.d.ts.map +1 -0
- package/cjs/database-dirty-tracker.js +389 -0
- package/cjs/database-dirty-tracker.js.map +1 -0
- package/cjs/drivers/mongo/mongo-id-generator.d.ts +116 -0
- package/cjs/drivers/mongo/mongo-id-generator.d.ts.map +1 -0
- package/cjs/drivers/mongo/mongo-id-generator.js +149 -0
- package/cjs/drivers/mongo/mongo-id-generator.js.map +1 -0
- package/cjs/drivers/mongo/mongo-migration-driver.d.ts +228 -0
- package/cjs/drivers/mongo/mongo-migration-driver.d.ts.map +1 -0
- package/cjs/drivers/mongo/mongo-migration-driver.js +524 -0
- package/cjs/drivers/mongo/mongo-migration-driver.js.map +1 -0
- package/cjs/drivers/mongo/mongo-query-builder.d.ts +922 -0
- package/cjs/drivers/mongo/mongo-query-builder.d.ts.map +1 -0
- package/cjs/drivers/mongo/mongo-query-builder.js +1740 -0
- package/cjs/drivers/mongo/mongo-query-builder.js.map +1 -0
- package/cjs/drivers/mongo/mongo-query-operations.d.ts +226 -0
- package/cjs/drivers/mongo/mongo-query-operations.d.ts.map +1 -0
- package/cjs/drivers/mongo/mongo-query-operations.js +270 -0
- package/cjs/drivers/mongo/mongo-query-operations.js.map +1 -0
- package/cjs/drivers/mongo/mongo-query-parser.d.ts +262 -0
- package/cjs/drivers/mongo/mongo-query-parser.d.ts.map +1 -0
- package/cjs/drivers/mongo/mongo-query-parser.js +1351 -0
- package/cjs/drivers/mongo/mongo-query-parser.js.map +1 -0
- package/cjs/drivers/mongo/mongo-sync-adapter.d.ts +79 -0
- package/cjs/drivers/mongo/mongo-sync-adapter.d.ts.map +1 -0
- package/cjs/drivers/mongo/mongo-sync-adapter.js +146 -0
- package/cjs/drivers/mongo/mongo-sync-adapter.js.map +1 -0
- package/cjs/drivers/mongo/mongodb-blueprint.d.ts +30 -0
- package/cjs/drivers/mongo/mongodb-blueprint.d.ts.map +1 -0
- package/cjs/drivers/mongo/mongodb-blueprint.js +51 -0
- package/cjs/drivers/mongo/mongodb-blueprint.js.map +1 -0
- package/cjs/drivers/mongo/mongodb-driver.d.ts +188 -0
- package/cjs/drivers/mongo/mongodb-driver.d.ts.map +1 -0
- package/cjs/drivers/mongo/mongodb-driver.js +411 -0
- package/cjs/drivers/mongo/mongodb-driver.js.map +1 -0
- package/cjs/drivers/mongo/types.d.ts +43 -0
- package/cjs/drivers/mongo/types.d.ts.map +1 -0
- package/cjs/errors/missing-data-source.error.d.ts +22 -0
- package/cjs/errors/missing-data-source.error.d.ts.map +1 -0
- package/cjs/errors/missing-data-source.error.js +29 -0
- package/cjs/errors/missing-data-source.error.js.map +1 -0
- package/cjs/events/model-events.d.ts +231 -0
- package/cjs/events/model-events.d.ts.map +1 -0
- package/cjs/events/model-events.js +259 -0
- package/cjs/events/model-events.js.map +1 -0
- package/cjs/expressions/aggregate-expressions.d.ts +215 -0
- package/cjs/expressions/aggregate-expressions.d.ts.map +1 -0
- package/cjs/expressions/aggregate-expressions.js +221 -0
- package/cjs/expressions/aggregate-expressions.js.map +1 -0
- package/cjs/expressions/index.d.ts +2 -0
- package/cjs/expressions/index.d.ts.map +1 -0
- package/cjs/index.d.ts +41 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -267
- package/cjs/index.js.map +1 -1
- package/cjs/migration/column-builder.d.ts +167 -0
- package/cjs/migration/column-builder.d.ts.map +1 -0
- package/cjs/migration/column-builder.js +217 -0
- package/cjs/migration/column-builder.js.map +1 -0
- package/cjs/migration/foreign-key-builder.d.ts +110 -0
- package/cjs/migration/foreign-key-builder.d.ts.map +1 -0
- package/cjs/migration/foreign-key-builder.js +129 -0
- package/cjs/migration/foreign-key-builder.js.map +1 -0
- package/cjs/migration/index.d.ts +6 -0
- package/cjs/migration/index.d.ts.map +1 -0
- package/cjs/migration/migration-runner.d.ts +231 -0
- package/cjs/migration/migration-runner.d.ts.map +1 -0
- package/cjs/migration/migration-runner.js +443 -0
- package/cjs/migration/migration-runner.js.map +1 -0
- package/cjs/migration/migration.js +1346 -0
- package/cjs/migration/migration.js.map +1 -0
- package/cjs/migration/types.d.ts +132 -0
- package/cjs/migration/types.d.ts.map +1 -0
- package/cjs/model/model.d.ts +1267 -0
- package/cjs/model/model.d.ts.map +1 -0
- package/cjs/model/model.js +1463 -0
- package/cjs/model/model.js.map +1 -0
- package/cjs/model/register-model.d.ts +80 -0
- package/cjs/model/register-model.d.ts.map +1 -0
- package/cjs/model/register-model.js +91 -0
- package/cjs/model/register-model.js.map +1 -0
- package/cjs/remover/database-remover.d.ts +100 -0
- package/cjs/remover/database-remover.d.ts.map +1 -0
- package/cjs/remover/database-remover.js +209 -0
- package/cjs/remover/database-remover.js.map +1 -0
- package/cjs/restorer/database-restorer.d.ts +131 -0
- package/cjs/restorer/database-restorer.d.ts.map +1 -0
- package/cjs/restorer/database-restorer.js +425 -0
- package/cjs/restorer/database-restorer.js.map +1 -0
- package/cjs/sync/index.d.ts +12 -0
- package/cjs/sync/index.d.ts.map +1 -0
- package/cjs/sync/model-events.d.ts +62 -0
- package/cjs/sync/model-events.d.ts.map +1 -0
- package/cjs/sync/model-events.js +49 -0
- package/cjs/sync/model-events.js.map +1 -0
- package/cjs/sync/model-sync-operation.d.ts +163 -0
- package/cjs/sync/model-sync-operation.d.ts.map +1 -0
- package/cjs/sync/model-sync-operation.js +292 -0
- package/cjs/sync/model-sync-operation.js.map +1 -0
- package/cjs/sync/model-sync.d.ts +130 -0
- package/cjs/sync/model-sync.d.ts.map +1 -0
- package/cjs/sync/model-sync.js +178 -0
- package/cjs/sync/model-sync.js.map +1 -0
- package/cjs/sync/sync-context.d.ts +70 -0
- package/cjs/sync/sync-context.d.ts.map +1 -0
- package/cjs/sync/sync-context.js +101 -0
- package/cjs/sync/sync-context.js.map +1 -0
- package/cjs/sync/sync-manager.d.ts +213 -0
- package/cjs/sync/sync-manager.d.ts.map +1 -0
- package/cjs/sync/sync-manager.js +689 -0
- package/cjs/sync/sync-manager.js.map +1 -0
- package/cjs/sync/types.d.ts +289 -0
- package/cjs/sync/types.d.ts.map +1 -0
- package/cjs/types.d.ts +45 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/utils/connect-to-database.d.ts +246 -0
- package/cjs/utils/connect-to-database.d.ts.map +1 -0
- package/cjs/utils/connect-to-database.js +92 -0
- package/cjs/utils/connect-to-database.js.map +1 -0
- package/cjs/utils/database-writer.utils.d.ts +15 -0
- package/cjs/utils/database-writer.utils.d.ts.map +1 -0
- package/cjs/utils/database-writer.utils.js +14 -0
- package/cjs/utils/database-writer.utils.js.map +1 -0
- package/cjs/utils/define-model.js +100 -0
- package/cjs/utils/define-model.js.map +1 -0
- package/cjs/utils/once-connected.d.ts +146 -0
- package/cjs/utils/once-connected.d.ts.map +1 -0
- package/cjs/utils/once-connected.js +252 -0
- package/cjs/utils/once-connected.js.map +1 -0
- package/cjs/validation/database-seal-plugins.d.ts +2 -0
- package/cjs/validation/database-seal-plugins.d.ts.map +1 -0
- package/cjs/validation/database-seal-plugins.js +4 -0
- package/cjs/validation/database-seal-plugins.js.map +1 -0
- package/cjs/validation/database-writer-validation-error.d.ts +97 -0
- package/cjs/validation/database-writer-validation-error.d.ts.map +1 -0
- package/cjs/validation/database-writer-validation-error.js +160 -0
- package/cjs/validation/database-writer-validation-error.js.map +1 -0
- package/cjs/validation/index.d.ts +3 -0
- package/cjs/validation/index.d.ts.map +1 -0
- package/cjs/validation/mutators/embed-mutator.d.ts +9 -0
- package/cjs/validation/mutators/embed-mutator.d.ts.map +1 -0
- package/cjs/validation/mutators/embed-mutator.js +33 -0
- package/cjs/validation/mutators/embed-mutator.js.map +1 -0
- package/cjs/validation/plugins/embed-validator-plugin.d.ts +24 -0
- package/cjs/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
- package/cjs/validation/plugins/embed-validator-plugin.js +18 -0
- package/cjs/validation/plugins/embed-validator-plugin.js.map +1 -0
- package/cjs/validation/rules/database-model-rule.d.ts +7 -0
- package/cjs/validation/rules/database-model-rule.d.ts.map +1 -0
- package/cjs/validation/rules/database-model-rule.js +27 -0
- package/cjs/validation/rules/database-model-rule.js.map +1 -0
- package/cjs/validation/transformers/embed-model-transformer.d.ts +3 -0
- package/cjs/validation/transformers/embed-model-transformer.d.ts.map +1 -0
- package/cjs/validation/transformers/embed-model-transformer.js +18 -0
- package/cjs/validation/transformers/embed-model-transformer.js.map +1 -0
- package/cjs/validation/validators/embed-validator.d.ts +21 -0
- package/cjs/validation/validators/embed-validator.d.ts.map +1 -0
- package/cjs/validation/validators/embed-validator.js +42 -0
- package/cjs/validation/validators/embed-validator.js.map +1 -0
- package/cjs/writer/database-writer.d.ts +181 -0
- package/cjs/writer/database-writer.d.ts.map +1 -0
- package/cjs/writer/database-writer.js +402 -0
- package/cjs/writer/database-writer.js.map +1 -0
- package/esm/context/database-data-source-context.d.ts +29 -0
- package/esm/context/database-data-source-context.d.ts.map +1 -0
- package/esm/context/database-data-source-context.js +28 -0
- package/esm/context/database-data-source-context.js.map +1 -0
- package/esm/context/database-transaction-context.d.ts +31 -0
- package/esm/context/database-transaction-context.d.ts.map +1 -0
- package/esm/context/database-transaction-context.js +34 -0
- package/esm/context/database-transaction-context.js.map +1 -0
- package/esm/contracts/database-driver.contract.d.ts +143 -0
- package/esm/contracts/database-driver.contract.d.ts.map +1 -0
- package/esm/contracts/database-id-generator.contract.d.ts +109 -0
- package/esm/contracts/database-id-generator.contract.d.ts.map +1 -0
- package/esm/contracts/database-remover.contract.d.ts +104 -0
- package/esm/contracts/database-remover.contract.d.ts.map +1 -0
- package/esm/contracts/database-restorer.contract.d.ts +143 -0
- package/esm/contracts/database-restorer.contract.d.ts.map +1 -0
- package/esm/contracts/database-writer.contract.d.ts +119 -0
- package/esm/contracts/database-writer.contract.d.ts.map +1 -0
- package/esm/contracts/driver-blueprint.contract.d.ts +45 -0
- package/esm/contracts/driver-blueprint.contract.d.ts.map +1 -0
- package/esm/contracts/index.d.ts +10 -0
- package/esm/contracts/index.d.ts.map +1 -0
- package/esm/contracts/migration-driver.contract.d.ts +365 -0
- package/esm/contracts/migration-driver.contract.d.ts.map +1 -0
- package/esm/contracts/query-builder.contract.d.ts +1128 -0
- package/esm/contracts/query-builder.contract.d.ts.map +1 -0
- package/esm/contracts/sync-adapter.contract.d.ts +58 -0
- package/esm/contracts/sync-adapter.contract.d.ts.map +1 -0
- package/esm/data-source/data-source-registry.d.ts +104 -0
- package/esm/data-source/data-source-registry.d.ts.map +1 -0
- package/esm/data-source/data-source-registry.js +138 -0
- package/esm/data-source/data-source-registry.js.map +1 -0
- package/esm/data-source/data-source.d.ts +106 -0
- package/esm/data-source/data-source.d.ts.map +1 -0
- package/esm/data-source/data-source.js +77 -0
- package/esm/data-source/data-source.js.map +1 -0
- package/esm/database-dirty-tracker.d.ts +253 -0
- package/esm/database-dirty-tracker.d.ts.map +1 -0
- package/esm/database-dirty-tracker.js +389 -0
- package/esm/database-dirty-tracker.js.map +1 -0
- package/esm/drivers/mongo/mongo-id-generator.d.ts +116 -0
- package/esm/drivers/mongo/mongo-id-generator.d.ts.map +1 -0
- package/esm/drivers/mongo/mongo-id-generator.js +149 -0
- package/esm/drivers/mongo/mongo-id-generator.js.map +1 -0
- package/esm/drivers/mongo/mongo-migration-driver.d.ts +228 -0
- package/esm/drivers/mongo/mongo-migration-driver.d.ts.map +1 -0
- package/esm/drivers/mongo/mongo-migration-driver.js +524 -0
- package/esm/drivers/mongo/mongo-migration-driver.js.map +1 -0
- package/esm/drivers/mongo/mongo-query-builder.d.ts +922 -0
- package/esm/drivers/mongo/mongo-query-builder.d.ts.map +1 -0
- package/esm/drivers/mongo/mongo-query-builder.js +1740 -0
- package/esm/drivers/mongo/mongo-query-builder.js.map +1 -0
- package/esm/drivers/mongo/mongo-query-operations.d.ts +226 -0
- package/esm/drivers/mongo/mongo-query-operations.d.ts.map +1 -0
- package/esm/drivers/mongo/mongo-query-operations.js +270 -0
- package/esm/drivers/mongo/mongo-query-operations.js.map +1 -0
- package/esm/drivers/mongo/mongo-query-parser.d.ts +262 -0
- package/esm/drivers/mongo/mongo-query-parser.d.ts.map +1 -0
- package/esm/drivers/mongo/mongo-query-parser.js +1351 -0
- package/esm/drivers/mongo/mongo-query-parser.js.map +1 -0
- package/esm/drivers/mongo/mongo-sync-adapter.d.ts +79 -0
- package/esm/drivers/mongo/mongo-sync-adapter.d.ts.map +1 -0
- package/esm/drivers/mongo/mongo-sync-adapter.js +146 -0
- package/esm/drivers/mongo/mongo-sync-adapter.js.map +1 -0
- package/esm/drivers/mongo/mongodb-blueprint.d.ts +30 -0
- package/esm/drivers/mongo/mongodb-blueprint.d.ts.map +1 -0
- package/esm/drivers/mongo/mongodb-blueprint.js +51 -0
- package/esm/drivers/mongo/mongodb-blueprint.js.map +1 -0
- package/esm/drivers/mongo/mongodb-driver.d.ts +188 -0
- package/esm/drivers/mongo/mongodb-driver.d.ts.map +1 -0
- package/esm/drivers/mongo/mongodb-driver.js +411 -0
- package/esm/drivers/mongo/mongodb-driver.js.map +1 -0
- package/esm/drivers/mongo/types.d.ts +43 -0
- package/esm/drivers/mongo/types.d.ts.map +1 -0
- package/esm/errors/missing-data-source.error.d.ts +22 -0
- package/esm/errors/missing-data-source.error.d.ts.map +1 -0
- package/esm/errors/missing-data-source.error.js +29 -0
- package/esm/errors/missing-data-source.error.js.map +1 -0
- package/esm/events/model-events.d.ts +231 -0
- package/esm/events/model-events.d.ts.map +1 -0
- package/esm/events/model-events.js +259 -0
- package/esm/events/model-events.js.map +1 -0
- package/esm/expressions/aggregate-expressions.d.ts +215 -0
- package/esm/expressions/aggregate-expressions.d.ts.map +1 -0
- package/esm/expressions/aggregate-expressions.js +221 -0
- package/esm/expressions/aggregate-expressions.js.map +1 -0
- package/esm/expressions/index.d.ts +2 -0
- package/esm/expressions/index.d.ts.map +1 -0
- package/esm/index.d.ts +41 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -40
- package/esm/index.js.map +1 -1
- package/esm/migration/column-builder.d.ts +167 -0
- package/esm/migration/column-builder.d.ts.map +1 -0
- package/esm/migration/column-builder.js +217 -0
- package/esm/migration/column-builder.js.map +1 -0
- package/esm/migration/foreign-key-builder.d.ts +110 -0
- package/esm/migration/foreign-key-builder.d.ts.map +1 -0
- package/esm/migration/foreign-key-builder.js +129 -0
- package/esm/migration/foreign-key-builder.js.map +1 -0
- package/esm/migration/index.d.ts +6 -0
- package/esm/migration/index.d.ts.map +1 -0
- package/esm/migration/migration-runner.d.ts +231 -0
- package/esm/migration/migration-runner.d.ts.map +1 -0
- package/esm/migration/migration-runner.js +443 -0
- package/esm/migration/migration-runner.js.map +1 -0
- package/esm/migration/migration.js +1346 -0
- package/esm/migration/migration.js.map +1 -0
- package/esm/migration/types.d.ts +132 -0
- package/esm/migration/types.d.ts.map +1 -0
- package/esm/model/model.d.ts +1267 -0
- package/esm/model/model.d.ts.map +1 -0
- package/esm/model/model.js +1463 -0
- package/esm/model/model.js.map +1 -0
- package/esm/model/register-model.d.ts +80 -0
- package/esm/model/register-model.d.ts.map +1 -0
- package/esm/model/register-model.js +91 -0
- package/esm/model/register-model.js.map +1 -0
- package/esm/remover/database-remover.d.ts +100 -0
- package/esm/remover/database-remover.d.ts.map +1 -0
- package/esm/remover/database-remover.js +209 -0
- package/esm/remover/database-remover.js.map +1 -0
- package/esm/restorer/database-restorer.d.ts +131 -0
- package/esm/restorer/database-restorer.d.ts.map +1 -0
- package/esm/restorer/database-restorer.js +425 -0
- package/esm/restorer/database-restorer.js.map +1 -0
- package/esm/sync/index.d.ts +12 -0
- package/esm/sync/index.d.ts.map +1 -0
- package/esm/sync/model-events.d.ts +62 -0
- package/esm/sync/model-events.d.ts.map +1 -0
- package/esm/sync/model-events.js +49 -0
- package/esm/sync/model-events.js.map +1 -0
- package/esm/sync/model-sync-operation.d.ts +163 -0
- package/esm/sync/model-sync-operation.d.ts.map +1 -0
- package/esm/sync/model-sync-operation.js +292 -0
- package/esm/sync/model-sync-operation.js.map +1 -0
- package/esm/sync/model-sync.d.ts +130 -0
- package/esm/sync/model-sync.d.ts.map +1 -0
- package/esm/sync/model-sync.js +178 -0
- package/esm/sync/model-sync.js.map +1 -0
- package/esm/sync/sync-context.d.ts +70 -0
- package/esm/sync/sync-context.d.ts.map +1 -0
- package/esm/sync/sync-context.js +101 -0
- package/esm/sync/sync-context.js.map +1 -0
- package/esm/sync/sync-manager.d.ts +213 -0
- package/esm/sync/sync-manager.d.ts.map +1 -0
- package/esm/sync/sync-manager.js +689 -0
- package/esm/sync/sync-manager.js.map +1 -0
- package/esm/sync/types.d.ts +289 -0
- package/esm/sync/types.d.ts.map +1 -0
- package/esm/types.d.ts +45 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/utils/connect-to-database.d.ts +246 -0
- package/esm/utils/connect-to-database.d.ts.map +1 -0
- package/esm/utils/connect-to-database.js +92 -0
- package/esm/utils/connect-to-database.js.map +1 -0
- package/esm/utils/database-writer.utils.d.ts +15 -0
- package/esm/utils/database-writer.utils.d.ts.map +1 -0
- package/esm/utils/database-writer.utils.js +14 -0
- package/esm/utils/database-writer.utils.js.map +1 -0
- package/esm/utils/define-model.js +100 -0
- package/esm/utils/define-model.js.map +1 -0
- package/esm/utils/once-connected.d.ts +146 -0
- package/esm/utils/once-connected.d.ts.map +1 -0
- package/esm/utils/once-connected.js +252 -0
- package/esm/utils/once-connected.js.map +1 -0
- package/esm/validation/database-seal-plugins.d.ts +2 -0
- package/esm/validation/database-seal-plugins.d.ts.map +1 -0
- package/esm/validation/database-seal-plugins.js +4 -0
- package/esm/validation/database-seal-plugins.js.map +1 -0
- package/esm/validation/database-writer-validation-error.d.ts +97 -0
- package/esm/validation/database-writer-validation-error.d.ts.map +1 -0
- package/esm/validation/database-writer-validation-error.js +160 -0
- package/esm/validation/database-writer-validation-error.js.map +1 -0
- package/esm/validation/index.d.ts +3 -0
- package/esm/validation/index.d.ts.map +1 -0
- package/esm/validation/mutators/embed-mutator.d.ts +9 -0
- package/esm/validation/mutators/embed-mutator.d.ts.map +1 -0
- package/esm/validation/mutators/embed-mutator.js +33 -0
- package/esm/validation/mutators/embed-mutator.js.map +1 -0
- package/esm/validation/plugins/embed-validator-plugin.d.ts +24 -0
- package/esm/validation/plugins/embed-validator-plugin.d.ts.map +1 -0
- package/esm/validation/plugins/embed-validator-plugin.js +18 -0
- package/esm/validation/plugins/embed-validator-plugin.js.map +1 -0
- package/esm/validation/rules/database-model-rule.d.ts +7 -0
- package/esm/validation/rules/database-model-rule.d.ts.map +1 -0
- package/esm/validation/rules/database-model-rule.js +27 -0
- package/esm/validation/rules/database-model-rule.js.map +1 -0
- package/esm/validation/transformers/embed-model-transformer.d.ts +3 -0
- package/esm/validation/transformers/embed-model-transformer.d.ts.map +1 -0
- package/esm/validation/transformers/embed-model-transformer.js +18 -0
- package/esm/validation/transformers/embed-model-transformer.js.map +1 -0
- package/esm/validation/validators/embed-validator.d.ts +21 -0
- package/esm/validation/validators/embed-validator.d.ts.map +1 -0
- package/esm/validation/validators/embed-validator.js +42 -0
- package/esm/validation/validators/embed-validator.js.map +1 -0
- package/esm/writer/database-writer.d.ts +181 -0
- package/esm/writer/database-writer.d.ts.map +1 -0
- package/esm/writer/database-writer.js +402 -0
- package/esm/writer/database-writer.js.map +1 -0
- package/package.json +61 -52
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sources":["../../src/model/model.ts"],"sourcesContent":[null],"names":["DatabaseDirtyTracker","getModelFromRegistry","getAllModelsFromRegistry","modelSync","get","only","set","unset","merge","globalModelEvents","dataSourceRegistry","DatabaseRemover","DatabaseRestorer","ModelEvents","removeModelFromRegistery","DatabaseWriter"],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ChildModel, Model } from "./model";
|
|
2
|
+
/**
|
|
3
|
+
* Options for the RegisterModel decorator
|
|
4
|
+
*/
|
|
5
|
+
export type RegisterModelOptions = {
|
|
6
|
+
/**
|
|
7
|
+
* Custom name for the model in the global registry.
|
|
8
|
+
* If not provided, uses the class name.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* @RegisterModel({ name: "CustomUser" })
|
|
13
|
+
* export class User extends Model {}
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
name?: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Class decorator that registers a model in the global registry.
|
|
20
|
+
*
|
|
21
|
+
* This is an opt-in mechanism that allows models to be referenced by string name
|
|
22
|
+
* instead of direct class imports, helping avoid circular dependencies.
|
|
23
|
+
*
|
|
24
|
+
* @param options - Optional configuration for registration
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Auto-capture class name
|
|
29
|
+
* @RegisterModel()
|
|
30
|
+
* export class User extends Model {
|
|
31
|
+
* static table = "users";
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* // Custom name
|
|
35
|
+
* @RegisterModel({ name: "UserModel" })
|
|
36
|
+
* export class User extends Model {
|
|
37
|
+
* static table = "users";
|
|
38
|
+
* }
|
|
39
|
+
*
|
|
40
|
+
* // Later, retrieve by name:
|
|
41
|
+
* const UserModel = Model.getModel("User");
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function RegisterModel(options?: RegisterModelOptions): <T extends ChildModel<Model<import("./model").ModelSchema>>>(target: T) => T;
|
|
45
|
+
export declare function registerModelInRegistry(name: string, model: ChildModel<Model>): void;
|
|
46
|
+
/**
|
|
47
|
+
* Get a model class by its name from the global registry.
|
|
48
|
+
*
|
|
49
|
+
* @param name - The model class name
|
|
50
|
+
* @returns The model class or undefined if not found
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const UserModel = getModelFromRegistry("User");
|
|
55
|
+
* if (UserModel) {
|
|
56
|
+
* const user = await UserModel.find(1);
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function getModelFromRegistry(name: string): ChildModel<Model<import("./model").ModelSchema>>;
|
|
61
|
+
/**
|
|
62
|
+
* Get all registered models from the global registry.
|
|
63
|
+
*
|
|
64
|
+
* @returns A Map of all registered model classes by name
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const allModels = getAllModelsFromRegistry();
|
|
69
|
+
* for (const [name, ModelClass] of allModels) {
|
|
70
|
+
* console.log(`Found model: ${name}`);
|
|
71
|
+
* }
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function getAllModelsFromRegistry(): Map<string, ChildModel<Model<import("./model").ModelSchema>>>;
|
|
75
|
+
/**
|
|
76
|
+
* Clean up all models from register
|
|
77
|
+
*/
|
|
78
|
+
export declare function cleanupModelsRegistery(): void;
|
|
79
|
+
export declare function removeModelFromRegistery(name: string): void;
|
|
80
|
+
//# sourceMappingURL=register-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-model.d.ts","sourceRoot":"","sources":["../../src/model/register-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAQF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,gFAsB3D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,QAE7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,oDAEhD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,kEAEvC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,SAErC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,QAEpD"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
'use strict';/**
|
|
2
|
+
* Global model registry that maps model class names to their constructors.
|
|
3
|
+
* This allows for string-based model references to avoid circular dependencies.
|
|
4
|
+
*/
|
|
5
|
+
const modelsRegistry = new Map();
|
|
6
|
+
/**
|
|
7
|
+
* Class decorator that registers a model in the global registry.
|
|
8
|
+
*
|
|
9
|
+
* This is an opt-in mechanism that allows models to be referenced by string name
|
|
10
|
+
* instead of direct class imports, helping avoid circular dependencies.
|
|
11
|
+
*
|
|
12
|
+
* @param options - Optional configuration for registration
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // Auto-capture class name
|
|
17
|
+
* @RegisterModel()
|
|
18
|
+
* export class User extends Model {
|
|
19
|
+
* static table = "users";
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* // Custom name
|
|
23
|
+
* @RegisterModel({ name: "UserModel" })
|
|
24
|
+
* export class User extends Model {
|
|
25
|
+
* static table = "users";
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* // Later, retrieve by name:
|
|
29
|
+
* const UserModel = Model.getModel("User");
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
function RegisterModel(options) {
|
|
33
|
+
return function (target) {
|
|
34
|
+
const modelName = options?.name || target.name;
|
|
35
|
+
if (!modelName) {
|
|
36
|
+
throw new Error("@RegisterModel decorator: Unable to determine model name. " +
|
|
37
|
+
"Please provide a name in options or ensure your class has a name.");
|
|
38
|
+
}
|
|
39
|
+
if (modelsRegistry.has(modelName)) {
|
|
40
|
+
console.warn(`⚠️ Model "${modelName}" is already registered. ` +
|
|
41
|
+
`This will overwrite the previous registration.`);
|
|
42
|
+
}
|
|
43
|
+
modelsRegistry.set(modelName, target);
|
|
44
|
+
return target;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function registerModelInRegistry(name, model) {
|
|
48
|
+
modelsRegistry.set(name, model);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get a model class by its name from the global registry.
|
|
52
|
+
*
|
|
53
|
+
* @param name - The model class name
|
|
54
|
+
* @returns The model class or undefined if not found
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const UserModel = getModelFromRegistry("User");
|
|
59
|
+
* if (UserModel) {
|
|
60
|
+
* const user = await UserModel.find(1);
|
|
61
|
+
* }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
function getModelFromRegistry(name) {
|
|
65
|
+
return modelsRegistry.get(name);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get all registered models from the global registry.
|
|
69
|
+
*
|
|
70
|
+
* @returns A Map of all registered model classes by name
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const allModels = getAllModelsFromRegistry();
|
|
75
|
+
* for (const [name, ModelClass] of allModels) {
|
|
76
|
+
* console.log(`Found model: ${name}`);
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
function getAllModelsFromRegistry() {
|
|
81
|
+
return new Map(modelsRegistry);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Clean up all models from register
|
|
85
|
+
*/
|
|
86
|
+
function cleanupModelsRegistery() {
|
|
87
|
+
modelsRegistry.clear();
|
|
88
|
+
}
|
|
89
|
+
function removeModelFromRegistery(name) {
|
|
90
|
+
modelsRegistry.delete(name);
|
|
91
|
+
}exports.RegisterModel=RegisterModel;exports.cleanupModelsRegistery=cleanupModelsRegistery;exports.getAllModelsFromRegistry=getAllModelsFromRegistry;exports.getModelFromRegistry=getModelFromRegistry;exports.registerModelInRegistry=registerModelInRegistry;exports.removeModelFromRegistery=removeModelFromRegistery;//# sourceMappingURL=register-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-model.js","sources":["../../src/model/register-model.ts"],"sourcesContent":[null],"names":[],"mappings":"aAmBA;;;AAGG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACG,SAAU,aAAa,CAAC,OAA8B,EAAA;AAC1D,IAAA,OAAO,UAAuC,MAAS,EAAA;QACrD,MAAM,SAAS,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;QAE/C,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,IAAI,KAAK,CACb,4DAA4D;AAC1D,gBAAA,mEAAmE,CACtE,CAAC;AACH,SAAA;AAED,QAAA,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,IAAI,CACV,CAAA,WAAA,EAAc,SAAS,CAA2B,yBAAA,CAAA;AAChD,gBAAA,CAAA,8CAAA,CAAgD,CACnD,CAAC;AACH,SAAA;AAED,QAAA,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAEtC,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC;AACJ,CAAC;AAEe,SAAA,uBAAuB,CAAC,IAAY,EAAE,KAAwB,EAAA;AAC5E,IAAA,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;AAaG;AACG,SAAU,oBAAoB,CAAC,IAAY,EAAA;AAC/C,IAAA,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;AAYG;SACa,wBAAwB,GAAA;AACtC,IAAA,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;AACjC,CAAC;AAED;;AAEG;SACa,sBAAsB,GAAA;IACpC,cAAc,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC;AAEK,SAAU,wBAAwB,CAAC,IAAY,EAAA;AACnD,IAAA,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { RemoverContract, RemoverOptions, RemoverResult } from "../contracts/database-remover.contract";
|
|
2
|
+
import type { Model } from "../model/model";
|
|
3
|
+
/**
|
|
4
|
+
* Database remover service that orchestrates model deletion.
|
|
5
|
+
*
|
|
6
|
+
* Handles the complete deletion pipeline:
|
|
7
|
+
* 1. Strategy resolution (options → model static → data source default)
|
|
8
|
+
* 2. Validation (check if model is new, has primary key)
|
|
9
|
+
* 3. Event emission (deleting, deleted)
|
|
10
|
+
* 4. Driver execution (based on strategy: trash, permanent, or soft)
|
|
11
|
+
* 5. Post-deletion cleanup (mark as new, reset state)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const user = await User.find(1);
|
|
16
|
+
* const remover = new DatabaseRemover(user);
|
|
17
|
+
* const result = await remover.destroy();
|
|
18
|
+
*
|
|
19
|
+
* console.log(result.success); // true
|
|
20
|
+
* console.log(result.strategy); // "trash" | "permanent" | "soft"
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class DatabaseRemover implements RemoverContract {
|
|
24
|
+
/** The model instance being deleted */
|
|
25
|
+
private readonly model;
|
|
26
|
+
/** Model constructor reference */
|
|
27
|
+
private readonly ctor;
|
|
28
|
+
/** Data source containing driver */
|
|
29
|
+
private readonly dataSource;
|
|
30
|
+
/** Database driver for executing queries */
|
|
31
|
+
private readonly driver;
|
|
32
|
+
/** Table/collection name */
|
|
33
|
+
private readonly table;
|
|
34
|
+
/** Primary key field name */
|
|
35
|
+
private readonly primaryKey;
|
|
36
|
+
/**
|
|
37
|
+
* Create a new remover instance for a model.
|
|
38
|
+
*
|
|
39
|
+
* @param model - The model instance to delete
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const user = await User.find(1);
|
|
44
|
+
* const remover = new DatabaseRemover(user);
|
|
45
|
+
* await remover.destroy();
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
constructor(model: Model);
|
|
49
|
+
/**
|
|
50
|
+
* Destroy (delete) the model instance from the database.
|
|
51
|
+
*
|
|
52
|
+
* @param options - Remover options
|
|
53
|
+
* @returns Result containing success status, strategy used, and metadata
|
|
54
|
+
* @throws {Error} If model is new (not saved) or if deletion fails
|
|
55
|
+
*/
|
|
56
|
+
destroy(options?: RemoverOptions): Promise<RemoverResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Prepare the trash record by preserving all original fields and adding deletion metadata.
|
|
59
|
+
*
|
|
60
|
+
* Keeps all original fields intact for easy restoration and adds:
|
|
61
|
+
* - `deletedAt`: Timestamp when the record was deleted
|
|
62
|
+
* - `originalTable`: The table/collection the record came from (for filtering in restoreAll)
|
|
63
|
+
*
|
|
64
|
+
* **ID Handling:**
|
|
65
|
+
* - MongoDB with `_id`: Keeps `_id` as-is (unique across database)
|
|
66
|
+
* - MongoDB with auto-increment `id`: Keeps `id` as a regular field (not primary key)
|
|
67
|
+
* - SQL: Keeps original `id` as a regular field (trash table uses its own auto-increment primary key)
|
|
68
|
+
*
|
|
69
|
+
* The trash table should use its own primary key structure:
|
|
70
|
+
* - MongoDB: Uses `_id` (ObjectId) as primary key, original `id` is just a field
|
|
71
|
+
* - SQL: Uses auto-increment `trashId` as primary key, original `id` is just a field
|
|
72
|
+
*
|
|
73
|
+
* @param documentData - The original document data
|
|
74
|
+
* @returns Prepared trash record data with all original fields + deletedAt + originalTable
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
private prepareTrashRecord;
|
|
78
|
+
/**
|
|
79
|
+
* Resolve the trash table/collection name.
|
|
80
|
+
*
|
|
81
|
+
* Priority:
|
|
82
|
+
* 1. Model.trashTable (if set)
|
|
83
|
+
* 2. Data source defaultTrashTable (e.g., "RecycleBin" for MongoDB)
|
|
84
|
+
* 3. Default pattern: `{table}Trash`
|
|
85
|
+
*
|
|
86
|
+
* @returns The trash table/collection name
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
private resolveTrashTable;
|
|
90
|
+
/**
|
|
91
|
+
* Trigger sync operations after successful deletion.
|
|
92
|
+
*
|
|
93
|
+
* Emits a model.deleted event that ModelSyncOperation listens to.
|
|
94
|
+
* The sync is handled by registered sync operations, not directly here.
|
|
95
|
+
*
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
private triggerSync;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=database-remover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-remover.d.ts","sourceRoot":"","sources":["../../src/remover/database-remover.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,wCAAwC,CAAC;AAEhD,OAAO,KAAK,EAAc,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAIxD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,eAAgB,YAAW,eAAe;IACrD,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAE9B,kCAAkC;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IAEzC,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,4BAA4B;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;;;;;;;;;OAWG;gBACgB,KAAK,EAAE,KAAK;IAS/B;;;;;;OAMG;IACU,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAiH1E;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;;;OAOG;YACW,WAAW;CAI1B"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
'use strict';var events=require('@mongez/events'),modelEvents=require('../sync/model-events.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var events__default=/*#__PURE__*/_interopDefault(events);/**
|
|
2
|
+
* Database remover service that orchestrates model deletion.
|
|
3
|
+
*
|
|
4
|
+
* Handles the complete deletion pipeline:
|
|
5
|
+
* 1. Strategy resolution (options → model static → data source default)
|
|
6
|
+
* 2. Validation (check if model is new, has primary key)
|
|
7
|
+
* 3. Event emission (deleting, deleted)
|
|
8
|
+
* 4. Driver execution (based on strategy: trash, permanent, or soft)
|
|
9
|
+
* 5. Post-deletion cleanup (mark as new, reset state)
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const user = await User.find(1);
|
|
14
|
+
* const remover = new DatabaseRemover(user);
|
|
15
|
+
* const result = await remover.destroy();
|
|
16
|
+
*
|
|
17
|
+
* console.log(result.success); // true
|
|
18
|
+
* console.log(result.strategy); // "trash" | "permanent" | "soft"
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
class DatabaseRemover {
|
|
22
|
+
/** The model instance being deleted */
|
|
23
|
+
model;
|
|
24
|
+
/** Model constructor reference */
|
|
25
|
+
ctor;
|
|
26
|
+
/** Data source containing driver */
|
|
27
|
+
dataSource;
|
|
28
|
+
/** Database driver for executing queries */
|
|
29
|
+
driver;
|
|
30
|
+
/** Table/collection name */
|
|
31
|
+
table;
|
|
32
|
+
/** Primary key field name */
|
|
33
|
+
primaryKey;
|
|
34
|
+
/**
|
|
35
|
+
* Create a new remover instance for a model.
|
|
36
|
+
*
|
|
37
|
+
* @param model - The model instance to delete
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const user = await User.find(1);
|
|
42
|
+
* const remover = new DatabaseRemover(user);
|
|
43
|
+
* await remover.destroy();
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
constructor(model) {
|
|
47
|
+
this.model = model;
|
|
48
|
+
this.ctor = model.constructor;
|
|
49
|
+
this.dataSource = this.ctor.getDataSource();
|
|
50
|
+
this.driver = this.dataSource.driver;
|
|
51
|
+
this.table = this.ctor.table;
|
|
52
|
+
this.primaryKey = this.ctor.primaryKey;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Destroy (delete) the model instance from the database.
|
|
56
|
+
*
|
|
57
|
+
* @param options - Remover options
|
|
58
|
+
* @returns Result containing success status, strategy used, and metadata
|
|
59
|
+
* @throws {Error} If model is new (not saved) or if deletion fails
|
|
60
|
+
*/
|
|
61
|
+
async destroy(options = {}) {
|
|
62
|
+
// 1. Resolve strategy (options → model static → data source default → permanent)
|
|
63
|
+
const strategy = options.strategy ??
|
|
64
|
+
this.ctor.deleteStrategy ??
|
|
65
|
+
this.dataSource.defaultDeleteStrategy ??
|
|
66
|
+
"permanent";
|
|
67
|
+
// 2. Validate model is not new and has primary key
|
|
68
|
+
if (this.model.isNew) {
|
|
69
|
+
throw new Error(`Cannot destroy ${this.ctor.name} instance that hasn't been saved to the database.`);
|
|
70
|
+
}
|
|
71
|
+
const primaryKeyValue = this.model.get(this.primaryKey);
|
|
72
|
+
if (!primaryKeyValue) {
|
|
73
|
+
throw new Error(`Cannot destroy ${this.ctor.name} instance: primary key (${this.primaryKey}) is missing.`);
|
|
74
|
+
}
|
|
75
|
+
// 3. Emit deleting event (unless skipEvents)
|
|
76
|
+
if (!options.skipEvents) {
|
|
77
|
+
await this.model.emitEvent("deleting", {
|
|
78
|
+
strategy,
|
|
79
|
+
primaryKeyValue,
|
|
80
|
+
primaryKey: this.primaryKey,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// 4. Execute deletion based on strategy
|
|
84
|
+
let deletedCount = 0;
|
|
85
|
+
let trashRecord;
|
|
86
|
+
const filter = { [this.primaryKey]: primaryKeyValue };
|
|
87
|
+
const context = {
|
|
88
|
+
strategy,
|
|
89
|
+
primaryKeyValue,
|
|
90
|
+
primaryKey: this.primaryKey,
|
|
91
|
+
};
|
|
92
|
+
switch (strategy) {
|
|
93
|
+
case "trash": {
|
|
94
|
+
// Move to trash table, then delete
|
|
95
|
+
const trashTable = this.resolveTrashTable();
|
|
96
|
+
const documentData = { ...this.model.data };
|
|
97
|
+
// Prepare trash record with metadata and handle ID conflicts
|
|
98
|
+
const trashData = this.prepareTrashRecord(documentData);
|
|
99
|
+
// Insert into trash table
|
|
100
|
+
const insertResult = await this.driver.insert(trashTable, trashData);
|
|
101
|
+
trashRecord = insertResult.document;
|
|
102
|
+
context.trashRecord = trashRecord;
|
|
103
|
+
// Delete original
|
|
104
|
+
const result = await this.driver.delete(this.table, filter);
|
|
105
|
+
deletedCount = result > 0 ? 1 : 0;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
case "permanent": {
|
|
109
|
+
// Direct deletion
|
|
110
|
+
const result = await this.driver.delete(this.table, filter);
|
|
111
|
+
deletedCount = result > 0 ? 1 : 0;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case "soft": {
|
|
115
|
+
// Set deletedAt timestamp
|
|
116
|
+
const deletedAtColumn = this.ctor.deletedAtColumn ?? "deletedAt";
|
|
117
|
+
const updateOperations = {
|
|
118
|
+
$set: { [deletedAtColumn]: new Date() },
|
|
119
|
+
};
|
|
120
|
+
const updateResult = await this.driver.update(this.table, filter, updateOperations);
|
|
121
|
+
deletedCount = updateResult.modifiedCount > 0 ? 1 : 0;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (deletedCount === 0) {
|
|
126
|
+
throw new Error(`Failed to destroy ${this.ctor.name} instance: record not found.`);
|
|
127
|
+
}
|
|
128
|
+
context.deletedCount = deletedCount;
|
|
129
|
+
// 5. Post-deletion cleanup
|
|
130
|
+
// Only mark as new for permanent and trash (soft delete keeps the record)
|
|
131
|
+
if (strategy !== "soft") {
|
|
132
|
+
this.model.isNew = true;
|
|
133
|
+
}
|
|
134
|
+
// 6. Emit deleted event (unless skipEvents)
|
|
135
|
+
if (!options.skipEvents) {
|
|
136
|
+
await this.model.emitEvent("deleted", context);
|
|
137
|
+
}
|
|
138
|
+
// 7. Trigger sync operations (fire-and-forget, non-blocking)
|
|
139
|
+
if (!options.skipSync) {
|
|
140
|
+
void this.triggerSync();
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
success: true,
|
|
144
|
+
deletedCount,
|
|
145
|
+
strategy,
|
|
146
|
+
trashRecord,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Prepare the trash record by preserving all original fields and adding deletion metadata.
|
|
151
|
+
*
|
|
152
|
+
* Keeps all original fields intact for easy restoration and adds:
|
|
153
|
+
* - `deletedAt`: Timestamp when the record was deleted
|
|
154
|
+
* - `originalTable`: The table/collection the record came from (for filtering in restoreAll)
|
|
155
|
+
*
|
|
156
|
+
* **ID Handling:**
|
|
157
|
+
* - MongoDB with `_id`: Keeps `_id` as-is (unique across database)
|
|
158
|
+
* - MongoDB with auto-increment `id`: Keeps `id` as a regular field (not primary key)
|
|
159
|
+
* - SQL: Keeps original `id` as a regular field (trash table uses its own auto-increment primary key)
|
|
160
|
+
*
|
|
161
|
+
* The trash table should use its own primary key structure:
|
|
162
|
+
* - MongoDB: Uses `_id` (ObjectId) as primary key, original `id` is just a field
|
|
163
|
+
* - SQL: Uses auto-increment `trashId` as primary key, original `id` is just a field
|
|
164
|
+
*
|
|
165
|
+
* @param documentData - The original document data
|
|
166
|
+
* @returns Prepared trash record data with all original fields + deletedAt + originalTable
|
|
167
|
+
* @private
|
|
168
|
+
*/
|
|
169
|
+
prepareTrashRecord(documentData) {
|
|
170
|
+
// Preserve all original fields and add deletion metadata
|
|
171
|
+
return {
|
|
172
|
+
...documentData,
|
|
173
|
+
deletedAt: new Date(),
|
|
174
|
+
originalTable: this.table,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Resolve the trash table/collection name.
|
|
179
|
+
*
|
|
180
|
+
* Priority:
|
|
181
|
+
* 1. Model.trashTable (if set)
|
|
182
|
+
* 2. Data source defaultTrashTable (e.g., "RecycleBin" for MongoDB)
|
|
183
|
+
* 3. Default pattern: `{table}Trash`
|
|
184
|
+
*
|
|
185
|
+
* @returns The trash table/collection name
|
|
186
|
+
* @private
|
|
187
|
+
*/
|
|
188
|
+
resolveTrashTable() {
|
|
189
|
+
if (this.ctor.trashTable) {
|
|
190
|
+
return this.ctor.trashTable;
|
|
191
|
+
}
|
|
192
|
+
if (this.dataSource.defaultTrashTable) {
|
|
193
|
+
return this.dataSource.defaultTrashTable;
|
|
194
|
+
}
|
|
195
|
+
return `${this.table}Trash`;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Trigger sync operations after successful deletion.
|
|
199
|
+
*
|
|
200
|
+
* Emits a model.deleted event that ModelSyncOperation listens to.
|
|
201
|
+
* The sync is handled by registered sync operations, not directly here.
|
|
202
|
+
*
|
|
203
|
+
* @private
|
|
204
|
+
*/
|
|
205
|
+
async triggerSync() {
|
|
206
|
+
// Emit model.deleted event - ModelSyncOperation listens to these
|
|
207
|
+
await events__default.default.triggerAll(modelEvents.getModelDeletedEvent(this.ctor), this.model);
|
|
208
|
+
}
|
|
209
|
+
}exports.DatabaseRemover=DatabaseRemover;//# sourceMappingURL=database-remover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-remover.js","sources":["../../src/remover/database-remover.ts"],"sourcesContent":[null],"names":["events","getModelDeletedEvent"],"mappings":"2NAYA;;;;;;;;;;;;;;;;;;;AAmBG;MACU,eAAe,CAAA;;AAET,IAAA,KAAK,CAAQ;;AAGb,IAAA,IAAI,CAAoB;;AAGxB,IAAA,UAAU,CAAa;;AAGvB,IAAA,MAAM,CAAiB;;AAGvB,IAAA,KAAK,CAAS;;AAGd,IAAA,UAAU,CAAS;AAEpC;;;;;;;;;;;AAWG;AACH,IAAA,WAAA,CAAmB,KAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,WAAgC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;KACxC;AAED;;;;;;AAMG;AACI,IAAA,MAAM,OAAO,CAAC,OAAA,GAA0B,EAAE,EAAA;;AAE/C,QAAA,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;YAChB,IAAI,CAAC,IAAI,CAAC,cAAc;YACxB,IAAI,CAAC,UAAU,CAAC,qBAAqB;AACrC,YAAA,WAAW,CAAC;;AAGd,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACpB,MAAM,IAAI,KAAK,CACb,CAAkB,eAAA,EAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmD,iDAAA,CAAA,CACpF,CAAC;AACH,SAAA;AAED,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,IAAI,CAAC,UAAU,CAAA,aAAA,CAAe,CAC1F,CAAC;AACH,SAAA;;AAGD,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACvB,YAAA,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE;gBACrC,QAAQ;gBACR,eAAe;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;AAC5B,aAAA,CAAC,CAAC;AACJ,SAAA;;QAGD,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,QAAA,IAAI,WAAgD,CAAC;QAErD,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,eAAe,EAAE,CAAC;AAEtD,QAAA,MAAM,OAAO,GAAmC;YAC9C,QAAQ;YACR,eAAe;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;AAEF,QAAA,QAAQ,QAAQ;YACd,KAAK,OAAO,EAAE;;AAEZ,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5C,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;;gBAG5C,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;;AAGxD,gBAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACrE,gBAAA,WAAW,GAAG,YAAY,CAAC,QAAmC,CAAC;AAE/D,gBAAA,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;;AAGlC,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,gBAAA,YAAY,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM;AACP,aAAA;YAED,KAAK,WAAW,EAAE;;AAEhB,gBAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5D,gBAAA,YAAY,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClC,MAAM;AACP,aAAA;YAED,KAAK,MAAM,EAAE;;gBAEX,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,WAAW,CAAC;AACjE,gBAAA,MAAM,gBAAgB,GAAqB;oBACzC,IAAI,EAAE,EAAE,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,EAAE;iBACxC,CAAC;AACF,gBAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACpF,gBAAA,YAAY,GAAG,YAAY,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtD,MAAM;AACP,aAAA;AACF,SAAA;QAED,IAAI,YAAY,KAAK,CAAC,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,CAAqB,kBAAA,EAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAA8B,4BAAA,CAAA,CAAC,CAAC;AACpF,SAAA;AAED,QAAA,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;;;QAIpC,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AACzB,SAAA;;AAGD,QAAA,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAChD,SAAA;;AAGD,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACrB,YAAA,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACzB,SAAA;QAED,OAAO;AACL,YAAA,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,QAAQ;YACR,WAAW;SACZ,CAAC;KACH;AAED;;;;;;;;;;;;;;;;;;;AAmBG;AACK,IAAA,kBAAkB,CAAC,YAAqC,EAAA;;QAE9D,OAAO;AACL,YAAA,GAAG,YAAY;YACf,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,aAAa,EAAE,IAAI,CAAC,KAAK;SAC1B,CAAC;KACH;AAED;;;;;;;;;;AAUG;IACK,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,KAAK,OAAO,CAAC;KAC7B;AAED;;;;;;;AAOG;AACK,IAAA,MAAM,WAAW,GAAA;;AAEvB,QAAA,MAAMA,uBAAM,CAAC,UAAU,CAACC,gCAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACtE;AACF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import type { RestorerContract, RestorerOptions, RestorerResult } from "../contracts/database-restorer.contract";
|
|
2
|
+
import type { Model } from "../model/model";
|
|
3
|
+
/**
|
|
4
|
+
* Database restorer service that orchestrates model restoration.
|
|
5
|
+
*
|
|
6
|
+
* Handles the complete restoration pipeline:
|
|
7
|
+
* 1. Strategy detection (trash vs soft delete)
|
|
8
|
+
* 2. Record retrieval from trash table or soft-deleted records
|
|
9
|
+
* 3. ID conflict resolution
|
|
10
|
+
* 4. Event emission (restoring, restored)
|
|
11
|
+
* 5. Driver execution (insert back to original table, remove from trash/clear deletedAt)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const restorer = new DatabaseRestorer(User);
|
|
16
|
+
* const result = await restorer.restore(123);
|
|
17
|
+
*
|
|
18
|
+
* console.log(result.success); // true
|
|
19
|
+
* console.log(result.strategy); // "trash" | "soft"
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare class DatabaseRestorer implements RestorerContract {
|
|
23
|
+
/** Model constructor reference */
|
|
24
|
+
private readonly ctor;
|
|
25
|
+
/** Data source containing driver */
|
|
26
|
+
private readonly dataSource;
|
|
27
|
+
/** Database driver for executing queries */
|
|
28
|
+
private readonly driver;
|
|
29
|
+
/** Table/collection name */
|
|
30
|
+
private readonly table;
|
|
31
|
+
/** Primary key field name */
|
|
32
|
+
private readonly primaryKey;
|
|
33
|
+
/**
|
|
34
|
+
* Create a new restorer instance for a model class.
|
|
35
|
+
*
|
|
36
|
+
* @param modelClass - The model class (static context)
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const restorer = new DatabaseRestorer(User);
|
|
41
|
+
* await restorer.restore(123);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
constructor(modelClass: typeof Model);
|
|
45
|
+
/**
|
|
46
|
+
* Restore a single deleted record by its ID.
|
|
47
|
+
*
|
|
48
|
+
* @param id - The primary key value of the record to restore
|
|
49
|
+
* @param options - Restorer options
|
|
50
|
+
* @returns Result containing success status, strategy used, and restored record
|
|
51
|
+
* @throws {Error} If record not found in trash or soft-deleted records
|
|
52
|
+
* @throws {Error} If ID conflict and onIdConflict is "fail"
|
|
53
|
+
*/
|
|
54
|
+
restore(id: string | number, options?: RestorerOptions): Promise<RestorerResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Restore all deleted records for the model's table.
|
|
57
|
+
*
|
|
58
|
+
* @param options - Restorer options
|
|
59
|
+
* @returns Result containing success status, strategy used, and aggregate counts
|
|
60
|
+
*/
|
|
61
|
+
restoreAll(options?: RestorerOptions): Promise<RestorerResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Resolve the delete strategy.
|
|
64
|
+
*
|
|
65
|
+
* Priority: options → model static → data source default → "permanent"
|
|
66
|
+
*
|
|
67
|
+
* @param strategyOption - Optional strategy override from options
|
|
68
|
+
* @returns The resolved delete strategy
|
|
69
|
+
* @private
|
|
70
|
+
*/
|
|
71
|
+
private resolveStrategy;
|
|
72
|
+
/**
|
|
73
|
+
* Fetch a record by ID based on the delete strategy.
|
|
74
|
+
*
|
|
75
|
+
* @param id - The primary key value
|
|
76
|
+
* @param strategy - The delete strategy to use
|
|
77
|
+
* @returns The record data, or null if not found
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
80
|
+
private fetchRecordByStrategy;
|
|
81
|
+
/**
|
|
82
|
+
* Fetch all records based on the delete strategy.
|
|
83
|
+
*
|
|
84
|
+
* @param strategy - The delete strategy to use
|
|
85
|
+
* @returns Array of record data
|
|
86
|
+
* @private
|
|
87
|
+
*/
|
|
88
|
+
private fetchAllRecordsByStrategy;
|
|
89
|
+
/**
|
|
90
|
+
* Handle ID conflict by checking if ID exists and assigning new one if needed.
|
|
91
|
+
*
|
|
92
|
+
* @param recordData - The record data to restore
|
|
93
|
+
* @param originalId - The original ID value
|
|
94
|
+
* @param onIdConflict - Conflict resolution strategy
|
|
95
|
+
* @returns Record data with potentially new ID
|
|
96
|
+
* @private
|
|
97
|
+
*/
|
|
98
|
+
private handleIdConflict;
|
|
99
|
+
/**
|
|
100
|
+
* Check if an ID already exists in the target table.
|
|
101
|
+
*
|
|
102
|
+
* @param id - The ID to check
|
|
103
|
+
* @returns True if ID exists, false otherwise
|
|
104
|
+
* @private
|
|
105
|
+
*/
|
|
106
|
+
private checkIdExists;
|
|
107
|
+
/**
|
|
108
|
+
* Assign a new ID to the record data.
|
|
109
|
+
*
|
|
110
|
+
* For MongoDB: Generates new ObjectId for `_id`, keeps `id` if it exists
|
|
111
|
+
* For SQL: Removes `id` to let database auto-increment
|
|
112
|
+
*
|
|
113
|
+
* @param recordData - The record data
|
|
114
|
+
* @returns Record data with new ID assigned
|
|
115
|
+
* @private
|
|
116
|
+
*/
|
|
117
|
+
private assignNewId;
|
|
118
|
+
/**
|
|
119
|
+
* Resolve the trash table/collection name.
|
|
120
|
+
*
|
|
121
|
+
* Priority:
|
|
122
|
+
* 1. Model.trashTable (if set)
|
|
123
|
+
* 2. Data source defaultTrashTable (e.g., "RecycleBin" for MongoDB)
|
|
124
|
+
* 3. Default pattern: `{table}Trash`
|
|
125
|
+
*
|
|
126
|
+
* @returns The trash table/collection name
|
|
127
|
+
* @private
|
|
128
|
+
*/
|
|
129
|
+
private resolveTrashTable;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=database-restorer.d.ts.map
|