@warlock.js/cascade 4.0.162 → 4.0.164
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 +35 -0
- package/cjs/context/database-transaction-context.d.ts.map +1 -0
- package/cjs/context/database-transaction-context.js +40 -0
- package/cjs/context/database-transaction-context.js.map +1 -0
- package/cjs/contracts/database-driver.contract.d.ts +450 -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 +49 -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 +522 -0
- package/cjs/contracts/migration-driver.contract.d.ts.map +1 -0
- package/cjs/contracts/query-builder.contract.d.ts +1609 -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 +108 -0
- package/cjs/data-source/data-source-registry.d.ts.map +1 -0
- package/cjs/data-source/data-source-registry.js +145 -0
- package/cjs/data-source/data-source-registry.js.map +1 -0
- package/cjs/data-source/data-source.d.ts +147 -0
- package/cjs/data-source/data-source.d.ts.map +1 -0
- package/cjs/data-source/data-source.js +83 -0
- package/cjs/data-source/data-source.js.map +1 -0
- package/cjs/database-dirty-tracker.d.ts +252 -0
- package/cjs/database-dirty-tracker.d.ts.map +1 -0
- package/cjs/database-dirty-tracker.js +386 -0
- package/cjs/database-dirty-tracker.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-blueprint.d.ts +30 -0
- package/cjs/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-blueprint.js +51 -0
- package/cjs/drivers/mongodb/mongodb-blueprint.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-driver.d.ts +325 -0
- package/cjs/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-driver.js +838 -0
- package/cjs/drivers/mongodb/mongodb-driver.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-id-generator.d.ts +116 -0
- package/cjs/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-id-generator.js +149 -0
- package/cjs/drivers/mongodb/mongodb-id-generator.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts +317 -0
- package/cjs/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-migration-driver.js +666 -0
- package/cjs/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-builder.d.ts +1122 -0
- package/cjs/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-builder.js +1988 -0
- package/cjs/drivers/mongodb/mongodb-query-builder.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-operations.d.ts +226 -0
- package/cjs/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-operations.js +270 -0
- package/cjs/drivers/mongodb/mongodb-query-operations.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-parser.d.ts +262 -0
- package/cjs/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-query-parser.js +1351 -0
- package/cjs/drivers/mongodb/mongodb-query-parser.js.map +1 -0
- package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts +79 -0
- package/cjs/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
- package/cjs/drivers/mongodb/mongodb-sync-adapter.js +146 -0
- package/cjs/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
- package/cjs/drivers/mongodb/types.d.ts +43 -0
- package/cjs/drivers/mongodb/types.d.ts.map +1 -0
- package/cjs/drivers/postgres/index.d.ts +16 -0
- package/cjs/drivers/postgres/index.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-blueprint.d.ts +64 -0
- package/cjs/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-blueprint.js +121 -0
- package/cjs/drivers/postgres/postgres-blueprint.js.map +1 -0
- package/cjs/drivers/postgres/postgres-dialect.d.ts +136 -0
- package/cjs/drivers/postgres/postgres-dialect.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-dialect.js +268 -0
- package/cjs/drivers/postgres/postgres-dialect.js.map +1 -0
- package/cjs/drivers/postgres/postgres-driver.d.ts +432 -0
- package/cjs/drivers/postgres/postgres-driver.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-driver.js +1010 -0
- package/cjs/drivers/postgres/postgres-driver.js.map +1 -0
- package/cjs/drivers/postgres/postgres-migration-driver.d.ts +397 -0
- package/cjs/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-migration-driver.js +900 -0
- package/cjs/drivers/postgres/postgres-migration-driver.js.map +1 -0
- package/cjs/drivers/postgres/postgres-query-builder.d.ts +254 -0
- package/cjs/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-query-builder.js +933 -0
- package/cjs/drivers/postgres/postgres-query-builder.js.map +1 -0
- package/cjs/drivers/postgres/postgres-query-parser.d.ts +328 -0
- package/cjs/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-query-parser.js +868 -0
- package/cjs/drivers/postgres/postgres-query-parser.js.map +1 -0
- package/cjs/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
- package/cjs/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-sql-serializer.js +400 -0
- package/cjs/drivers/postgres/postgres-sql-serializer.js.map +1 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.js +197 -0
- package/cjs/drivers/postgres/postgres-sync-adapter.js.map +1 -0
- package/cjs/drivers/postgres/types.d.ts +144 -0
- package/cjs/drivers/postgres/types.d.ts.map +1 -0
- package/cjs/drivers/sql/index.d.ts +10 -0
- package/cjs/drivers/sql/index.d.ts.map +1 -0
- package/cjs/drivers/sql/sql-dialect.contract.d.ts +204 -0
- package/cjs/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
- package/cjs/drivers/sql/sql-types.d.ts +202 -0
- package/cjs/drivers/sql/sql-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/errors/transaction-rollback.error.d.ts +20 -0
- package/cjs/errors/transaction-rollback.error.d.ts.map +1 -0
- package/cjs/errors/transaction-rollback.error.js +27 -0
- package/cjs/errors/transaction-rollback.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 +45 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/migration/column-builder.d.ts +417 -0
- package/cjs/migration/column-builder.d.ts.map +1 -0
- package/cjs/migration/column-builder.js +586 -0
- package/cjs/migration/column-builder.js.map +1 -0
- package/cjs/migration/column-helpers.d.ts +275 -0
- package/cjs/migration/column-helpers.d.ts.map +1 -0
- package/cjs/migration/column-helpers.js +389 -0
- package/cjs/migration/column-helpers.js.map +1 -0
- package/cjs/migration/foreign-key-builder.d.ts +103 -0
- package/cjs/migration/foreign-key-builder.d.ts.map +1 -0
- package/cjs/migration/foreign-key-builder.js +121 -0
- package/cjs/migration/foreign-key-builder.js.map +1 -0
- package/cjs/migration/index.d.ts +7 -0
- package/cjs/migration/index.d.ts.map +1 -0
- package/cjs/migration/migration-runner.d.ts +278 -0
- package/cjs/migration/migration-runner.d.ts.map +1 -0
- package/cjs/migration/migration-runner.js +815 -0
- package/cjs/migration/migration-runner.js.map +1 -0
- package/cjs/migration/migration.d.ts +1992 -0
- package/cjs/migration/migration.d.ts.map +1 -0
- package/cjs/migration/migration.js +2162 -0
- package/cjs/migration/migration.js.map +1 -0
- package/cjs/migration/sql-grammar.d.ts +61 -0
- package/cjs/migration/sql-grammar.d.ts.map +1 -0
- package/cjs/migration/sql-grammar.js +164 -0
- package/cjs/migration/sql-grammar.js.map +1 -0
- package/cjs/migration/sql-serializer.d.ts +22 -0
- package/cjs/migration/sql-serializer.d.ts.map +1 -0
- package/cjs/migration/sql-serializer.js +26 -0
- package/cjs/migration/sql-serializer.js.map +1 -0
- package/cjs/migration/types.d.ts +155 -0
- package/cjs/migration/types.d.ts.map +1 -0
- package/cjs/model/methods/accessor-methods.d.ts +13 -0
- package/cjs/model/methods/accessor-methods.d.ts.map +1 -0
- package/cjs/model/methods/accessor-methods.js +51 -0
- package/cjs/model/methods/accessor-methods.js.map +1 -0
- package/cjs/model/methods/delete-methods.d.ts +10 -0
- package/cjs/model/methods/delete-methods.d.ts.map +1 -0
- package/cjs/model/methods/delete-methods.js +10 -0
- package/cjs/model/methods/delete-methods.js.map +1 -0
- package/cjs/model/methods/dirty-methods.d.ts +10 -0
- package/cjs/model/methods/dirty-methods.d.ts.map +1 -0
- package/cjs/model/methods/dirty-methods.js +15 -0
- package/cjs/model/methods/dirty-methods.js.map +1 -0
- package/cjs/model/methods/hydration-methods.d.ts +10 -0
- package/cjs/model/methods/hydration-methods.d.ts.map +1 -0
- package/cjs/model/methods/hydration-methods.js +57 -0
- package/cjs/model/methods/hydration-methods.js.map +1 -0
- package/cjs/model/methods/instance-event-methods.d.ts +7 -0
- package/cjs/model/methods/instance-event-methods.d.ts.map +1 -0
- package/cjs/model/methods/instance-event-methods.js +15 -0
- package/cjs/model/methods/instance-event-methods.js.map +1 -0
- package/cjs/model/methods/meta-methods.d.ts +7 -0
- package/cjs/model/methods/meta-methods.d.ts.map +1 -0
- package/cjs/model/methods/meta-methods.js +78 -0
- package/cjs/model/methods/meta-methods.js.map +1 -0
- package/cjs/model/methods/query-methods.d.ts +24 -0
- package/cjs/model/methods/query-methods.d.ts.map +1 -0
- package/cjs/model/methods/query-methods.js +164 -0
- package/cjs/model/methods/query-methods.js.map +1 -0
- package/cjs/model/methods/restore-methods.d.ts +10 -0
- package/cjs/model/methods/restore-methods.d.ts.map +1 -0
- package/cjs/model/methods/restore-methods.js +13 -0
- package/cjs/model/methods/restore-methods.js.map +1 -0
- package/cjs/model/methods/scope-methods.d.ts +7 -0
- package/cjs/model/methods/scope-methods.d.ts.map +1 -0
- package/cjs/model/methods/scope-methods.js +15 -0
- package/cjs/model/methods/scope-methods.js.map +1 -0
- package/cjs/model/methods/serialization-methods.d.ts +3 -0
- package/cjs/model/methods/serialization-methods.d.ts.map +1 -0
- package/cjs/model/methods/serialization-methods.js +27 -0
- package/cjs/model/methods/serialization-methods.js.map +1 -0
- package/cjs/model/methods/static-event-methods.d.ts +9 -0
- package/cjs/model/methods/static-event-methods.d.ts.map +1 -0
- package/cjs/model/methods/static-event-methods.js +29 -0
- package/cjs/model/methods/static-event-methods.js.map +1 -0
- package/cjs/model/methods/write-methods.d.ts +10 -0
- package/cjs/model/methods/write-methods.d.ts.map +1 -0
- package/cjs/model/methods/write-methods.js +52 -0
- package/cjs/model/methods/write-methods.js.map +1 -0
- package/cjs/model/model.d.ts +1647 -0
- package/cjs/model/model.d.ts.map +1 -0
- package/cjs/model/model.js +1657 -0
- package/cjs/model/model.js.map +1 -0
- package/cjs/model/model.types.d.ts +44 -0
- package/cjs/model/model.types.d.ts.map +1 -0
- package/cjs/model/register-model.d.ts +81 -0
- package/cjs/model/register-model.d.ts.map +1 -0
- package/cjs/model/register-model.js +94 -0
- package/cjs/model/register-model.js.map +1 -0
- package/cjs/query-builder/query-builder.d.ts +556 -0
- package/cjs/query-builder/query-builder.d.ts.map +1 -0
- package/cjs/query-builder/query-builder.js +1070 -0
- package/cjs/query-builder/query-builder.js.map +1 -0
- package/cjs/relations/helpers.d.ts +156 -0
- package/cjs/relations/helpers.d.ts.map +1 -0
- package/cjs/relations/helpers.js +202 -0
- package/cjs/relations/helpers.js.map +1 -0
- package/cjs/relations/index.d.ts +35 -0
- package/cjs/relations/index.d.ts.map +1 -0
- package/cjs/relations/pivot-operations.d.ts +160 -0
- package/cjs/relations/pivot-operations.d.ts.map +1 -0
- package/cjs/relations/pivot-operations.js +293 -0
- package/cjs/relations/pivot-operations.js.map +1 -0
- package/cjs/relations/relation-hydrator.d.ts +68 -0
- package/cjs/relations/relation-hydrator.d.ts.map +1 -0
- package/cjs/relations/relation-hydrator.js +81 -0
- package/cjs/relations/relation-hydrator.js.map +1 -0
- package/cjs/relations/relation-loader.d.ts +194 -0
- package/cjs/relations/relation-loader.d.ts.map +1 -0
- package/cjs/relations/relation-loader.js +466 -0
- package/cjs/relations/relation-loader.js.map +1 -0
- package/cjs/relations/types.d.ts +306 -0
- package/cjs/relations/types.d.ts.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 +214 -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 +434 -0
- package/cjs/restorer/database-restorer.js.map +1 -0
- package/cjs/sql-database-dirty-tracker.d.ts +13 -0
- package/cjs/sql-database-dirty-tracker.d.ts.map +1 -0
- package/cjs/sql-database-dirty-tracker.js +14 -0
- package/cjs/sql-database-dirty-tracker.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/test-migrations/test-enhanced-features.migration.d.ts +15 -0
- package/cjs/test-migrations/test-enhanced-features.migration.d.ts.map +1 -0
- package/cjs/types.d.ts +371 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/utils/connect-to-database.d.ts +307 -0
- package/cjs/utils/connect-to-database.d.ts.map +1 -0
- package/cjs/utils/connect-to-database.js +130 -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/is-valid-date-value.d.ts +5 -0
- package/cjs/utils/is-valid-date-value.d.ts.map +1 -0
- package/cjs/utils/is-valid-date-value.js +25 -0
- package/cjs/utils/is-valid-date-value.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 +251 -0
- package/cjs/utils/once-connected.js.map +1 -0
- package/cjs/validation/database-seal-plugins.d.ts +12 -0
- package/cjs/validation/database-seal-plugins.d.ts.map +1 -0
- package/cjs/validation/database-seal-plugins.js +1 -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 +43 -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 +407 -0
- package/cjs/writer/database-writer.js.map +1 -0
- package/esm/data-source/data-source-registry.d.ts +108 -0
- package/esm/data-source/data-source-registry.d.ts.map +1 -0
- package/esm/data-source/data-source-registry.js +145 -0
- package/esm/data-source/data-source-registry.js.map +1 -0
- package/esm/data-source/data-source.d.ts +147 -0
- package/esm/data-source/data-source.d.ts.map +1 -0
- package/esm/data-source/data-source.js +83 -0
- package/esm/data-source/data-source.js.map +1 -0
- package/esm/database-dirty-tracker.d.ts +252 -0
- package/esm/database-dirty-tracker.d.ts.map +1 -0
- package/esm/database-dirty-tracker.js +386 -0
- package/esm/database-dirty-tracker.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-blueprint.d.ts +30 -0
- package/esm/drivers/mongodb/mongodb-blueprint.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-blueprint.js +51 -0
- package/esm/drivers/mongodb/mongodb-blueprint.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-driver.d.ts +325 -0
- package/esm/drivers/mongodb/mongodb-driver.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-driver.js +838 -0
- package/esm/drivers/mongodb/mongodb-driver.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-id-generator.d.ts +116 -0
- package/esm/drivers/mongodb/mongodb-id-generator.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-id-generator.js +149 -0
- package/esm/drivers/mongodb/mongodb-id-generator.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.d.ts +317 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.js +666 -0
- package/esm/drivers/mongodb/mongodb-migration-driver.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-builder.d.ts +1122 -0
- package/esm/drivers/mongodb/mongodb-query-builder.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-builder.js +1988 -0
- package/esm/drivers/mongodb/mongodb-query-builder.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-operations.d.ts +226 -0
- package/esm/drivers/mongodb/mongodb-query-operations.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-operations.js +270 -0
- package/esm/drivers/mongodb/mongodb-query-operations.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-parser.d.ts +262 -0
- package/esm/drivers/mongodb/mongodb-query-parser.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-query-parser.js +1351 -0
- package/esm/drivers/mongodb/mongodb-query-parser.js.map +1 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts +79 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.d.ts.map +1 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.js +146 -0
- package/esm/drivers/mongodb/mongodb-sync-adapter.js.map +1 -0
- package/esm/drivers/mongodb/types.d.ts +43 -0
- package/esm/drivers/mongodb/types.d.ts.map +1 -0
- package/esm/drivers/postgres/index.d.ts +16 -0
- package/esm/drivers/postgres/index.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-blueprint.d.ts +64 -0
- package/esm/drivers/postgres/postgres-blueprint.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-blueprint.js +121 -0
- package/esm/drivers/postgres/postgres-blueprint.js.map +1 -0
- package/esm/drivers/postgres/postgres-dialect.d.ts +136 -0
- package/esm/drivers/postgres/postgres-dialect.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-dialect.js +268 -0
- package/esm/drivers/postgres/postgres-dialect.js.map +1 -0
- package/esm/drivers/postgres/postgres-driver.d.ts +432 -0
- package/esm/drivers/postgres/postgres-driver.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-driver.js +1010 -0
- package/esm/drivers/postgres/postgres-driver.js.map +1 -0
- package/esm/drivers/postgres/postgres-migration-driver.d.ts +397 -0
- package/esm/drivers/postgres/postgres-migration-driver.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-migration-driver.js +900 -0
- package/esm/drivers/postgres/postgres-migration-driver.js.map +1 -0
- package/esm/drivers/postgres/postgres-query-builder.d.ts +254 -0
- package/esm/drivers/postgres/postgres-query-builder.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-query-builder.js +933 -0
- package/esm/drivers/postgres/postgres-query-builder.js.map +1 -0
- package/esm/drivers/postgres/postgres-query-parser.d.ts +328 -0
- package/esm/drivers/postgres/postgres-query-parser.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-query-parser.js +868 -0
- package/esm/drivers/postgres/postgres-query-parser.js.map +1 -0
- package/esm/drivers/postgres/postgres-sql-serializer.d.ts +37 -0
- package/esm/drivers/postgres/postgres-sql-serializer.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-sql-serializer.js +400 -0
- package/esm/drivers/postgres/postgres-sql-serializer.js.map +1 -0
- package/esm/drivers/postgres/postgres-sync-adapter.d.ts +83 -0
- package/esm/drivers/postgres/postgres-sync-adapter.d.ts.map +1 -0
- package/esm/drivers/postgres/postgres-sync-adapter.js +197 -0
- package/esm/drivers/postgres/postgres-sync-adapter.js.map +1 -0
- package/esm/drivers/postgres/types.d.ts +144 -0
- package/esm/drivers/postgres/types.d.ts.map +1 -0
- package/esm/drivers/sql/index.d.ts +10 -0
- package/esm/drivers/sql/index.d.ts.map +1 -0
- package/esm/drivers/sql/sql-dialect.contract.d.ts +204 -0
- package/esm/drivers/sql/sql-dialect.contract.d.ts.map +1 -0
- package/esm/drivers/sql/sql-types.d.ts +202 -0
- package/esm/drivers/sql/sql-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/errors/transaction-rollback.error.d.ts +20 -0
- package/esm/errors/transaction-rollback.error.d.ts.map +1 -0
- package/esm/errors/transaction-rollback.error.js +27 -0
- package/esm/errors/transaction-rollback.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 +45 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -0
- package/esm/migration/column-builder.d.ts +417 -0
- package/esm/migration/column-builder.d.ts.map +1 -0
- package/esm/migration/column-builder.js +586 -0
- package/esm/migration/column-builder.js.map +1 -0
- package/esm/migration/column-helpers.d.ts +275 -0
- package/esm/migration/column-helpers.d.ts.map +1 -0
- package/esm/migration/column-helpers.js +389 -0
- package/esm/migration/column-helpers.js.map +1 -0
- package/esm/migration/foreign-key-builder.d.ts +103 -0
- package/esm/migration/foreign-key-builder.d.ts.map +1 -0
- package/esm/migration/foreign-key-builder.js +121 -0
- package/esm/migration/foreign-key-builder.js.map +1 -0
- package/esm/migration/index.d.ts +7 -0
- package/esm/migration/index.d.ts.map +1 -0
- package/esm/migration/migration-runner.d.ts +278 -0
- package/esm/migration/migration-runner.d.ts.map +1 -0
- package/esm/migration/migration-runner.js +815 -0
- package/esm/migration/migration-runner.js.map +1 -0
- package/esm/migration/migration.d.ts +1992 -0
- package/esm/migration/migration.d.ts.map +1 -0
- package/esm/migration/migration.js +2162 -0
- package/esm/migration/migration.js.map +1 -0
- package/esm/migration/sql-grammar.d.ts +61 -0
- package/esm/migration/sql-grammar.d.ts.map +1 -0
- package/esm/migration/sql-grammar.js +164 -0
- package/esm/migration/sql-grammar.js.map +1 -0
- package/esm/migration/sql-serializer.d.ts +22 -0
- package/esm/migration/sql-serializer.d.ts.map +1 -0
- package/esm/migration/sql-serializer.js +26 -0
- package/esm/migration/sql-serializer.js.map +1 -0
- package/esm/migration/types.d.ts +155 -0
- package/esm/migration/types.d.ts.map +1 -0
- package/esm/model/methods/accessor-methods.d.ts +13 -0
- package/esm/model/methods/accessor-methods.d.ts.map +1 -0
- package/esm/model/methods/accessor-methods.js +51 -0
- package/esm/model/methods/accessor-methods.js.map +1 -0
- package/esm/model/methods/delete-methods.d.ts +10 -0
- package/esm/model/methods/delete-methods.d.ts.map +1 -0
- package/esm/model/methods/delete-methods.js +10 -0
- package/esm/model/methods/delete-methods.js.map +1 -0
- package/esm/model/methods/dirty-methods.d.ts +10 -0
- package/esm/model/methods/dirty-methods.d.ts.map +1 -0
- package/esm/model/methods/dirty-methods.js +15 -0
- package/esm/model/methods/dirty-methods.js.map +1 -0
- package/esm/model/methods/hydration-methods.d.ts +10 -0
- package/esm/model/methods/hydration-methods.d.ts.map +1 -0
- package/esm/model/methods/hydration-methods.js +57 -0
- package/esm/model/methods/hydration-methods.js.map +1 -0
- package/esm/model/methods/instance-event-methods.d.ts +7 -0
- package/esm/model/methods/instance-event-methods.d.ts.map +1 -0
- package/esm/model/methods/instance-event-methods.js +15 -0
- package/esm/model/methods/instance-event-methods.js.map +1 -0
- package/esm/model/methods/meta-methods.d.ts +7 -0
- package/esm/model/methods/meta-methods.d.ts.map +1 -0
- package/esm/model/methods/meta-methods.js +78 -0
- package/esm/model/methods/meta-methods.js.map +1 -0
- package/esm/model/methods/query-methods.d.ts +24 -0
- package/esm/model/methods/query-methods.d.ts.map +1 -0
- package/esm/model/methods/query-methods.js +164 -0
- package/esm/model/methods/query-methods.js.map +1 -0
- package/esm/model/methods/restore-methods.d.ts +10 -0
- package/esm/model/methods/restore-methods.d.ts.map +1 -0
- package/esm/model/methods/restore-methods.js +13 -0
- package/esm/model/methods/restore-methods.js.map +1 -0
- package/esm/model/methods/scope-methods.d.ts +7 -0
- package/esm/model/methods/scope-methods.d.ts.map +1 -0
- package/esm/model/methods/scope-methods.js +15 -0
- package/esm/model/methods/scope-methods.js.map +1 -0
- package/esm/model/methods/serialization-methods.d.ts +3 -0
- package/esm/model/methods/serialization-methods.d.ts.map +1 -0
- package/esm/model/methods/serialization-methods.js +27 -0
- package/esm/model/methods/serialization-methods.js.map +1 -0
- package/esm/model/methods/static-event-methods.d.ts +9 -0
- package/esm/model/methods/static-event-methods.d.ts.map +1 -0
- package/esm/model/methods/static-event-methods.js +29 -0
- package/esm/model/methods/static-event-methods.js.map +1 -0
- package/esm/model/methods/write-methods.d.ts +10 -0
- package/esm/model/methods/write-methods.d.ts.map +1 -0
- package/esm/model/methods/write-methods.js +52 -0
- package/esm/model/methods/write-methods.js.map +1 -0
- package/esm/model/model.d.ts +1647 -0
- package/esm/model/model.d.ts.map +1 -0
- package/esm/model/model.js +1657 -0
- package/esm/model/model.js.map +1 -0
- package/esm/model/model.types.d.ts +44 -0
- package/esm/model/model.types.d.ts.map +1 -0
- package/esm/model/register-model.d.ts +81 -0
- package/esm/model/register-model.d.ts.map +1 -0
- package/esm/model/register-model.js +94 -0
- package/esm/model/register-model.js.map +1 -0
- package/esm/query-builder/query-builder.d.ts +556 -0
- package/esm/query-builder/query-builder.d.ts.map +1 -0
- package/esm/query-builder/query-builder.js +1070 -0
- package/esm/query-builder/query-builder.js.map +1 -0
- package/esm/relations/helpers.d.ts +156 -0
- package/esm/relations/helpers.d.ts.map +1 -0
- package/esm/relations/helpers.js +202 -0
- package/esm/relations/helpers.js.map +1 -0
- package/esm/relations/index.d.ts +35 -0
- package/esm/relations/index.d.ts.map +1 -0
- package/esm/relations/pivot-operations.d.ts +160 -0
- package/esm/relations/pivot-operations.d.ts.map +1 -0
- package/esm/relations/pivot-operations.js +293 -0
- package/esm/relations/pivot-operations.js.map +1 -0
- package/esm/relations/relation-hydrator.d.ts +68 -0
- package/esm/relations/relation-hydrator.d.ts.map +1 -0
- package/esm/relations/relation-hydrator.js +81 -0
- package/esm/relations/relation-hydrator.js.map +1 -0
- package/esm/relations/relation-loader.d.ts +194 -0
- package/esm/relations/relation-loader.d.ts.map +1 -0
- package/esm/relations/relation-loader.js +466 -0
- package/esm/relations/relation-loader.js.map +1 -0
- package/esm/relations/types.d.ts +306 -0
- package/esm/relations/types.d.ts.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 +214 -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 +434 -0
- package/esm/restorer/database-restorer.js.map +1 -0
- package/esm/sql-database-dirty-tracker.d.ts +13 -0
- package/esm/sql-database-dirty-tracker.d.ts.map +1 -0
- package/esm/sql-database-dirty-tracker.js +14 -0
- package/esm/sql-database-dirty-tracker.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/test-migrations/test-enhanced-features.migration.d.ts +15 -0
- package/esm/test-migrations/test-enhanced-features.migration.d.ts.map +1 -0
- package/esm/types.d.ts +371 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/utils/connect-to-database.d.ts +307 -0
- package/esm/utils/connect-to-database.d.ts.map +1 -0
- package/esm/utils/connect-to-database.js +130 -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/is-valid-date-value.d.ts +5 -0
- package/esm/utils/is-valid-date-value.d.ts.map +1 -0
- package/esm/utils/is-valid-date-value.js +25 -0
- package/esm/utils/is-valid-date-value.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 +251 -0
- package/esm/utils/once-connected.js.map +1 -0
- package/esm/validation/database-seal-plugins.d.ts +12 -0
- package/esm/validation/database-seal-plugins.d.ts.map +1 -0
- package/esm/validation/database-seal-plugins.js +1 -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 +43 -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 +407 -0
- package/esm/writer/database-writer.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model sync event name helpers.
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe event names for model sync operations.
|
|
5
|
+
* Avoids hardcoded string literals throughout the codebase.
|
|
6
|
+
*
|
|
7
|
+
* @module cascade-next/sync/model-events
|
|
8
|
+
*/
|
|
9
|
+
import type { ChildModel, Model } from "../model/model";
|
|
10
|
+
/**
|
|
11
|
+
* Event name prefix for all model sync events.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MODEL_EVENT_PREFIX = "model";
|
|
14
|
+
/**
|
|
15
|
+
* Model sync event types.
|
|
16
|
+
*/
|
|
17
|
+
export declare const ModelSyncEventType: {
|
|
18
|
+
readonly UPDATED: "updated";
|
|
19
|
+
readonly DELETED: "deleted";
|
|
20
|
+
};
|
|
21
|
+
export type ModelSyncEventTypeName = (typeof ModelSyncEventType)[keyof typeof ModelSyncEventType];
|
|
22
|
+
/**
|
|
23
|
+
* Get the event name for a model update.
|
|
24
|
+
*
|
|
25
|
+
* @param modelClass - The model class
|
|
26
|
+
* @returns Event name string (e.g., "model.Category.updated")
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const eventName = getModelUpdatedEvent(Category);
|
|
31
|
+
* // Returns: "model.Category.updated"
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function getModelUpdatedEvent(modelClass: ChildModel<Model>): string;
|
|
35
|
+
/**
|
|
36
|
+
* Get the event name for a model deletion.
|
|
37
|
+
*
|
|
38
|
+
* @param modelClass - The model class
|
|
39
|
+
* @returns Event name string (e.g., "model.Category.deleted")
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const eventName = getModelDeletedEvent(Category);
|
|
44
|
+
* // Returns: "model.Category.deleted"
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function getModelDeletedEvent(modelClass: ChildModel<Model>): string;
|
|
48
|
+
/**
|
|
49
|
+
* Get the event name for a model by name string.
|
|
50
|
+
*
|
|
51
|
+
* @param modelName - The model class name
|
|
52
|
+
* @param eventType - The event type
|
|
53
|
+
* @returns Event name string
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const eventName = getModelEvent("Category", "updated");
|
|
58
|
+
* // Returns: "model.Category.updated"
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function getModelEvent(modelName: string, eventType: ModelSyncEventTypeName): string;
|
|
62
|
+
//# sourceMappingURL=model-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-events.d.ts","sourceRoot":"","sources":["../../src/sync/model-events.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAElG;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAE1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAE1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,sBAAsB,GAAG,MAAM,CAE1F"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model sync event name helpers.
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe event names for model sync operations.
|
|
5
|
+
* Avoids hardcoded string literals throughout the codebase.
|
|
6
|
+
*
|
|
7
|
+
* @module cascade-next/sync/model-events
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Event name prefix for all model sync events.
|
|
11
|
+
*/
|
|
12
|
+
const MODEL_EVENT_PREFIX = "model";
|
|
13
|
+
/**
|
|
14
|
+
* Model sync event types.
|
|
15
|
+
*/
|
|
16
|
+
const ModelSyncEventType = {
|
|
17
|
+
UPDATED: "updated",
|
|
18
|
+
DELETED: "deleted",
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Get the event name for a model update.
|
|
22
|
+
*
|
|
23
|
+
* @param modelClass - The model class
|
|
24
|
+
* @returns Event name string (e.g., "model.Category.updated")
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const eventName = getModelUpdatedEvent(Category);
|
|
29
|
+
* // Returns: "model.Category.updated"
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
function getModelUpdatedEvent(modelClass) {
|
|
33
|
+
return `${MODEL_EVENT_PREFIX}.${modelClass.name}.${ModelSyncEventType.UPDATED}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get the event name for a model deletion.
|
|
37
|
+
*
|
|
38
|
+
* @param modelClass - The model class
|
|
39
|
+
* @returns Event name string (e.g., "model.Category.deleted")
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const eventName = getModelDeletedEvent(Category);
|
|
44
|
+
* // Returns: "model.Category.deleted"
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
function getModelDeletedEvent(modelClass) {
|
|
48
|
+
return `${MODEL_EVENT_PREFIX}.${modelClass.name}.${ModelSyncEventType.DELETED}`;
|
|
49
|
+
}export{MODEL_EVENT_PREFIX,ModelSyncEventType,getModelDeletedEvent,getModelUpdatedEvent};//# sourceMappingURL=model-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-events.js","sources":["../../src/sync/model-events.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;AAOG;AAIH;;AAEG;AACI,MAAM,kBAAkB,GAAG,QAAQ;AAE1C;;AAEG;AACU,MAAA,kBAAkB,GAAG;AAChC,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;EACT;AAIX;;;;;;;;;;;AAWG;AACG,SAAU,oBAAoB,CAAC,UAA6B,EAAA;IAChE,OAAO,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAI,UAAU,CAAC,IAAI,CAAA,CAAA,EAAI,kBAAkB,CAAC,OAAO,CAAA,CAAE,CAAC;AAClF,CAAC;AAED;;;;;;;;;;;AAWG;AACG,SAAU,oBAAoB,CAAC,UAA6B,EAAA;IAChE,OAAO,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAI,UAAU,CAAC,IAAI,CAAA,CAAA,EAAI,kBAAkB,CAAC,OAAO,CAAA,CAAE,CAAC;AAClF"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model sync operation class.
|
|
3
|
+
*
|
|
4
|
+
* Manages a single sync relationship between a source and target model.
|
|
5
|
+
* Subscribes to source model events and triggers sync operations when
|
|
6
|
+
* the source is updated or deleted.
|
|
7
|
+
*
|
|
8
|
+
* @module cascade-next/sync/model-sync-operation
|
|
9
|
+
*/
|
|
10
|
+
import type { ChildModel, Model } from "../model/model";
|
|
11
|
+
import type { ModelSyncConfig, ModelSyncOperationContract } from "./types";
|
|
12
|
+
/**
|
|
13
|
+
* Manages a single model sync operation.
|
|
14
|
+
*
|
|
15
|
+
* Subscribes to source model events (updated, deleted) and triggers
|
|
16
|
+
* sync operations to update embedded data in target models.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // Created via modelSync.sync() or Model.sync()
|
|
21
|
+
* const operation = new ModelSyncOperation(Category, Product, "category", false);
|
|
22
|
+
* operation
|
|
23
|
+
* .embed("embedMinimal")
|
|
24
|
+
* .watchFields(["name", "slug"])
|
|
25
|
+
* .unsetOnDelete();
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare class ModelSyncOperation implements ModelSyncOperationContract {
|
|
29
|
+
/**
|
|
30
|
+
* Configuration for this sync operation.
|
|
31
|
+
*/
|
|
32
|
+
private readonly config;
|
|
33
|
+
/**
|
|
34
|
+
* Active event subscriptions for cleanup.
|
|
35
|
+
*/
|
|
36
|
+
private readonly subscriptions;
|
|
37
|
+
/**
|
|
38
|
+
* Whether this operation is currently subscribed to events.
|
|
39
|
+
*/
|
|
40
|
+
private isSubscribed;
|
|
41
|
+
/**
|
|
42
|
+
* Create a new model sync operation.
|
|
43
|
+
*
|
|
44
|
+
* @param sourceModel - Source model class that triggers sync
|
|
45
|
+
* @param targetModel - Target model class that receives data
|
|
46
|
+
* @param targetField - Field path in target model
|
|
47
|
+
* @param isMany - Whether this syncs to an array field
|
|
48
|
+
*/
|
|
49
|
+
constructor(sourceModelClass: ChildModel<Model>, targetModelClass: ChildModel<Model>, targetField: string, isMany: boolean);
|
|
50
|
+
/**
|
|
51
|
+
* Set the embed method to call on source model.
|
|
52
|
+
*
|
|
53
|
+
* @param embed - getter property name (e.g., "embedData", "embedMinimal") Or Array of fields
|
|
54
|
+
* @returns This operation for chaining
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* Category.sync(Product, "category").embed("embedMinimal");
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
embed(method: string | string[]): this;
|
|
62
|
+
/**
|
|
63
|
+
* Set the identifier field for array matching.
|
|
64
|
+
* Required when syncing to array fields (syncMany).
|
|
65
|
+
*
|
|
66
|
+
* @param field - Field name used as identifier (default: "id")
|
|
67
|
+
* @returns This operation for chaining
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* Tag.syncMany(Post, "tags").identifyBy("tagId");
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
identifyBy(field: string): this;
|
|
75
|
+
/**
|
|
76
|
+
* Set the maximum sync depth for chained operations.
|
|
77
|
+
*
|
|
78
|
+
* @param depth - Maximum depth (default: 3)
|
|
79
|
+
* @returns This operation for chaining
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* Category.sync(Product, "category").maxDepth(2);
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
maxDepth(depth: number): this;
|
|
87
|
+
/**
|
|
88
|
+
* Set which fields to watch for changes.
|
|
89
|
+
* Sync only triggers when these fields change.
|
|
90
|
+
*
|
|
91
|
+
* @param fields - Array of field names to watch (empty = all)
|
|
92
|
+
* @returns This operation for chaining
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* Category.sync(Product, "category").watchFields(["name", "slug"]);
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
watchFields(fields: string[]): this;
|
|
100
|
+
/**
|
|
101
|
+
* Unset the target field when source is deleted.
|
|
102
|
+
*
|
|
103
|
+
* @returns This operation for chaining
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* Category.sync(Product, "category").unsetOnDelete();
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
unsetOnDelete(): this;
|
|
111
|
+
/**
|
|
112
|
+
* Delete target documents when source is deleted.
|
|
113
|
+
*
|
|
114
|
+
* @returns This operation for chaining
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* User.sync(Profile, "user").removeOnDelete();
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
removeOnDelete(): this;
|
|
122
|
+
/**
|
|
123
|
+
* Subscribe to source model events.
|
|
124
|
+
* Called automatically in constructor.
|
|
125
|
+
*/
|
|
126
|
+
private subscribe;
|
|
127
|
+
/**
|
|
128
|
+
* Unsubscribe from all events and cleanup.
|
|
129
|
+
* Called automatically when using modelSync.register().
|
|
130
|
+
*/
|
|
131
|
+
unsubscribe(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Cleanup the sync operations
|
|
134
|
+
*/
|
|
135
|
+
$cleanup(): void;
|
|
136
|
+
/**
|
|
137
|
+
* Handle model updated event.
|
|
138
|
+
* Triggers sync to update embedded data in target models.
|
|
139
|
+
*/
|
|
140
|
+
private handleModelUpdated;
|
|
141
|
+
/**
|
|
142
|
+
* Handle model deleted event.
|
|
143
|
+
* Triggers unset or remove based on configuration.
|
|
144
|
+
*/
|
|
145
|
+
private handleModelDeleted;
|
|
146
|
+
/**
|
|
147
|
+
* Check if sync should proceed based on watched fields.
|
|
148
|
+
*/
|
|
149
|
+
private shouldSync;
|
|
150
|
+
/**
|
|
151
|
+
* Build sync config compatible with SyncManager.
|
|
152
|
+
*/
|
|
153
|
+
private buildSyncConfig;
|
|
154
|
+
/**
|
|
155
|
+
* Remove target documents that reference the deleted source.
|
|
156
|
+
*/
|
|
157
|
+
private removeTargetDocuments;
|
|
158
|
+
/**
|
|
159
|
+
* Get the current configuration (for debugging/testing).
|
|
160
|
+
*/
|
|
161
|
+
getConfig(): Readonly<ModelSyncConfig>;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=model-sync-operation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-sync-operation.d.ts","sourceRoot":"","sources":["../../src/sync/model-sync-operation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAE3E;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,kBAAmB,YAAW,0BAA0B;IACnE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IAEzD;;OAEG;IACH,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;;;;OAOG;gBAED,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,EACnC,gBAAgB,EAAE,UAAU,CAAC,KAAK,CAAC,EACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,OAAO;IAsBjB;;;;;;;;;;OAUG;IACI,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAK7C;;;;;;;;;;;OAWG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKtC;;;;;;;;;;OAUG;IACI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKpC;;;;;;;;;;;OAWG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK1C;;;;;;;;;OASG;IACI,aAAa,IAAI,IAAI;IAK5B;;;;;;;;;OASG;IACI,cAAc,IAAI,IAAI;IAS7B;;;OAGG;IACH,OAAO,CAAC,SAAS;IAoBjB;;;OAGG;IACI,WAAW,IAAI,IAAI;IAS1B;;OAEG;IACI,QAAQ;IAQf;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAgCxB;IAEF;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CA8BxB;IAMF;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;YACW,qBAAqB;IAQnC;;OAEG;IACI,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC;CAG9C"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import events from'@mongez/events';import {getModelUpdatedEvent,getModelDeletedEvent}from'./model-events.js';import {DEFAULT_MAX_SYNC_DEPTH}from'./sync-context.js';import {SyncManager}from'./sync-manager.js';/**
|
|
2
|
+
* Model sync operation class.
|
|
3
|
+
*
|
|
4
|
+
* Manages a single sync relationship between a source and target model.
|
|
5
|
+
* Subscribes to source model events and triggers sync operations when
|
|
6
|
+
* the source is updated or deleted.
|
|
7
|
+
*
|
|
8
|
+
* @module cascade-next/sync/model-sync-operation
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Manages a single model sync operation.
|
|
12
|
+
*
|
|
13
|
+
* Subscribes to source model events (updated, deleted) and triggers
|
|
14
|
+
* sync operations to update embedded data in target models.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Created via modelSync.sync() or Model.sync()
|
|
19
|
+
* const operation = new ModelSyncOperation(Category, Product, "category", false);
|
|
20
|
+
* operation
|
|
21
|
+
* .embed("embedMinimal")
|
|
22
|
+
* .watchFields(["name", "slug"])
|
|
23
|
+
* .unsetOnDelete();
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
class ModelSyncOperation {
|
|
27
|
+
/**
|
|
28
|
+
* Configuration for this sync operation.
|
|
29
|
+
*/
|
|
30
|
+
config;
|
|
31
|
+
/**
|
|
32
|
+
* Active event subscriptions for cleanup.
|
|
33
|
+
*/
|
|
34
|
+
subscriptions = [];
|
|
35
|
+
/**
|
|
36
|
+
* Whether this operation is currently subscribed to events.
|
|
37
|
+
*/
|
|
38
|
+
isSubscribed = false;
|
|
39
|
+
/**
|
|
40
|
+
* Create a new model sync operation.
|
|
41
|
+
*
|
|
42
|
+
* @param sourceModel - Source model class that triggers sync
|
|
43
|
+
* @param targetModel - Target model class that receives data
|
|
44
|
+
* @param targetField - Field path in target model
|
|
45
|
+
* @param isMany - Whether this syncs to an array field
|
|
46
|
+
*/
|
|
47
|
+
constructor(sourceModelClass, targetModelClass, targetField, isMany) {
|
|
48
|
+
this.config = {
|
|
49
|
+
sourceModel: sourceModelClass,
|
|
50
|
+
targetModel: targetModelClass,
|
|
51
|
+
targetField,
|
|
52
|
+
isMany,
|
|
53
|
+
embedKey: "embedData",
|
|
54
|
+
identifierField: "id",
|
|
55
|
+
maxSyncDepth: DEFAULT_MAX_SYNC_DEPTH,
|
|
56
|
+
watchFields: [],
|
|
57
|
+
unsetOnDelete: false,
|
|
58
|
+
removeOnDelete: false,
|
|
59
|
+
};
|
|
60
|
+
this.subscribe();
|
|
61
|
+
}
|
|
62
|
+
// ============================================================================
|
|
63
|
+
// FLUENT CONFIGURATION
|
|
64
|
+
// ============================================================================
|
|
65
|
+
/**
|
|
66
|
+
* Set the embed method to call on source model.
|
|
67
|
+
*
|
|
68
|
+
* @param embed - getter property name (e.g., "embedData", "embedMinimal") Or Array of fields
|
|
69
|
+
* @returns This operation for chaining
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* Category.sync(Product, "category").embed("embedMinimal");
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
embed(method) {
|
|
77
|
+
this.config.embedKey = method;
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Set the identifier field for array matching.
|
|
82
|
+
* Required when syncing to array fields (syncMany).
|
|
83
|
+
*
|
|
84
|
+
* @param field - Field name used as identifier (default: "id")
|
|
85
|
+
* @returns This operation for chaining
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* Tag.syncMany(Post, "tags").identifyBy("tagId");
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
identifyBy(field) {
|
|
93
|
+
this.config.identifierField = field;
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Set the maximum sync depth for chained operations.
|
|
98
|
+
*
|
|
99
|
+
* @param depth - Maximum depth (default: 3)
|
|
100
|
+
* @returns This operation for chaining
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* Category.sync(Product, "category").maxDepth(2);
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
maxDepth(depth) {
|
|
108
|
+
this.config.maxSyncDepth = depth;
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Set which fields to watch for changes.
|
|
113
|
+
* Sync only triggers when these fields change.
|
|
114
|
+
*
|
|
115
|
+
* @param fields - Array of field names to watch (empty = all)
|
|
116
|
+
* @returns This operation for chaining
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* Category.sync(Product, "category").watchFields(["name", "slug"]);
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
watchFields(fields) {
|
|
124
|
+
this.config.watchFields = fields;
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Unset the target field when source is deleted.
|
|
129
|
+
*
|
|
130
|
+
* @returns This operation for chaining
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* Category.sync(Product, "category").unsetOnDelete();
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
unsetOnDelete() {
|
|
138
|
+
this.config.unsetOnDelete = true;
|
|
139
|
+
return this;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Delete target documents when source is deleted.
|
|
143
|
+
*
|
|
144
|
+
* @returns This operation for chaining
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* User.sync(Profile, "user").removeOnDelete();
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
removeOnDelete() {
|
|
152
|
+
this.config.removeOnDelete = true;
|
|
153
|
+
return this;
|
|
154
|
+
}
|
|
155
|
+
// ============================================================================
|
|
156
|
+
// LIFECYCLE
|
|
157
|
+
// ============================================================================
|
|
158
|
+
/**
|
|
159
|
+
* Subscribe to source model events.
|
|
160
|
+
* Called automatically in constructor.
|
|
161
|
+
*/
|
|
162
|
+
subscribe() {
|
|
163
|
+
if (this.isSubscribed) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const sourceModel = this.config.sourceModel;
|
|
167
|
+
// Subscribe to model.updated event
|
|
168
|
+
this.subscriptions.push(events.subscribe(getModelUpdatedEvent(sourceModel), this.handleModelUpdated));
|
|
169
|
+
// Subscribe to model.deleted event
|
|
170
|
+
this.subscriptions.push(events.subscribe(getModelDeletedEvent(sourceModel), this.handleModelDeleted));
|
|
171
|
+
this.isSubscribed = true;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Unsubscribe from all events and cleanup.
|
|
175
|
+
* Called automatically when using modelSync.register().
|
|
176
|
+
*/
|
|
177
|
+
unsubscribe() {
|
|
178
|
+
for (const subscription of this.subscriptions) {
|
|
179
|
+
subscription.unsubscribe?.();
|
|
180
|
+
}
|
|
181
|
+
this.subscriptions.length = 0;
|
|
182
|
+
this.isSubscribed = false;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Cleanup the sync operations
|
|
186
|
+
*/
|
|
187
|
+
$cleanup() {
|
|
188
|
+
return this.unsubscribe();
|
|
189
|
+
}
|
|
190
|
+
// ============================================================================
|
|
191
|
+
// EVENT HANDLERS
|
|
192
|
+
// ============================================================================
|
|
193
|
+
/**
|
|
194
|
+
* Handle model updated event.
|
|
195
|
+
* Triggers sync to update embedded data in target models.
|
|
196
|
+
*/
|
|
197
|
+
handleModelUpdated = async (model, changedFields) => {
|
|
198
|
+
// Check if we should sync based on watched fields
|
|
199
|
+
if (!this.shouldSync(changedFields)) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
try {
|
|
203
|
+
const primaryKey = this.config.sourceModel.primaryKey || "id";
|
|
204
|
+
const sourceId = model.get(primaryKey);
|
|
205
|
+
if (!sourceId) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
// Get the driver from the source model's data source
|
|
209
|
+
const dataSource = this.config.sourceModel.getDataSource();
|
|
210
|
+
const driver = dataSource.driver;
|
|
211
|
+
// Create sync manager and execute
|
|
212
|
+
const syncManager = new SyncManager(this.config.sourceModel, driver);
|
|
213
|
+
await syncManager.syncUpdateWithConfig(sourceId, model, changedFields, this.buildSyncConfig());
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.error(`[ModelSync] Failed to sync ${this.config.sourceModel.name} -> ${this.config.targetModel.name}:`, error);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* Handle model deleted event.
|
|
221
|
+
* Triggers unset or remove based on configuration.
|
|
222
|
+
*/
|
|
223
|
+
handleModelDeleted = async (model) => {
|
|
224
|
+
if (!this.config.unsetOnDelete && !this.config.removeOnDelete) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
try {
|
|
228
|
+
const primaryKey = this.config.sourceModel.primaryKey || "id";
|
|
229
|
+
const sourceId = model.get(primaryKey);
|
|
230
|
+
if (!sourceId) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
const dataSource = this.config.sourceModel.getDataSource();
|
|
234
|
+
const driver = dataSource.driver;
|
|
235
|
+
if (this.config.removeOnDelete) {
|
|
236
|
+
// Delete all target documents that reference this source
|
|
237
|
+
await this.removeTargetDocuments(sourceId, driver);
|
|
238
|
+
}
|
|
239
|
+
else if (this.config.unsetOnDelete) {
|
|
240
|
+
// Unset the field in target documents
|
|
241
|
+
const syncManager = new SyncManager(this.config.sourceModel, driver);
|
|
242
|
+
await syncManager.syncDeleteWithConfig(sourceId, this.buildSyncConfig());
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
console.error(`[ModelSync] Failed to handle delete for ${this.config.sourceModel.name}:`, error);
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
// ============================================================================
|
|
250
|
+
// HELPERS
|
|
251
|
+
// ============================================================================
|
|
252
|
+
/**
|
|
253
|
+
* Check if sync should proceed based on watched fields.
|
|
254
|
+
*/
|
|
255
|
+
shouldSync(changedFields) {
|
|
256
|
+
if (this.config.watchFields.length === 0) {
|
|
257
|
+
return true; // Watch all fields
|
|
258
|
+
}
|
|
259
|
+
return this.config.watchFields.some((field) => changedFields.includes(field));
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Build sync config compatible with SyncManager.
|
|
263
|
+
*/
|
|
264
|
+
buildSyncConfig() {
|
|
265
|
+
return {
|
|
266
|
+
targetField: this.config.targetField,
|
|
267
|
+
isMany: this.config.isMany,
|
|
268
|
+
embedKey: this.config.embedKey,
|
|
269
|
+
identifierField: this.config.identifierField,
|
|
270
|
+
maxSyncDepth: this.config.maxSyncDepth,
|
|
271
|
+
preventCircularSync: true,
|
|
272
|
+
watchFields: this.config.watchFields,
|
|
273
|
+
unsetOnDelete: this.config.unsetOnDelete,
|
|
274
|
+
targetModelClass: this.config.targetModel,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Remove target documents that reference the deleted source.
|
|
279
|
+
*/
|
|
280
|
+
async removeTargetDocuments(sourceId, driver) {
|
|
281
|
+
const filter = this.config.isMany
|
|
282
|
+
? { [`${this.config.targetField}.${this.config.identifierField}`]: sourceId }
|
|
283
|
+
: { [`${this.config.targetField}.${this.config.identifierField}`]: sourceId };
|
|
284
|
+
await driver.deleteMany(this.config.targetModel.table, filter);
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Get the current configuration (for debugging/testing).
|
|
288
|
+
*/
|
|
289
|
+
getConfig() {
|
|
290
|
+
return { ...this.config };
|
|
291
|
+
}
|
|
292
|
+
}export{ModelSyncOperation};//# sourceMappingURL=model-sync-operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-sync-operation.js","sources":["../../src/sync/model-sync-operation.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|