@contember/schema-migrations 2.0.0-alpha.9 → 2.0.0-beta.2
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/dist/development/src/MigrationDescriber.cjs.map +1 -1
- package/dist/development/src/MigrationDescriber.js.map +1 -1
- package/dist/development/src/SchemaDiffer.cjs +4 -3
- package/dist/development/src/SchemaDiffer.cjs.map +1 -1
- package/dist/development/src/SchemaDiffer.js +5 -4
- package/dist/development/src/SchemaDiffer.js.map +1 -1
- package/dist/development/src/SchemaMigrator.cjs.map +1 -1
- package/dist/development/src/SchemaMigrator.js.map +1 -1
- package/dist/development/src/modifications/ModificationHandler.cjs.map +1 -1
- package/dist/development/src/modifications/ModificationHandler.js.map +1 -1
- package/dist/development/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/development/src/modifications/ModificationHandlerFactory.js.map +1 -1
- package/dist/development/src/modifications/NoopModification.cjs.map +1 -1
- package/dist/development/src/modifications/NoopModification.js.map +1 -1
- package/dist/development/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs +4 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js +4 -1
- package/dist/development/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
- package/dist/development/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/CreateTargetModification.js.map +1 -1
- package/dist/development/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/CreateTriggerModification.js.map +1 -1
- package/dist/development/src/modifications/actions/RemoveTargetModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/RemoveTargetModification.js.map +1 -1
- package/dist/development/src/modifications/actions/RemoveTriggerModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/RemoveTriggerModification.js.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTargetModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTargetModification.js.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
- package/dist/development/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
- package/dist/development/src/modifications/columns/CreateColumnModification.js.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
- package/dist/development/src/modifications/columns/columnUtils.cjs +1 -1
- package/dist/development/src/modifications/columns/columnUtils.cjs.map +1 -1
- package/dist/development/src/modifications/columns/columnUtils.js +1 -1
- package/dist/development/src/modifications/columns/columnUtils.js.map +1 -1
- package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
- package/dist/development/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
- package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
- package/dist/development/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
- package/dist/development/src/modifications/constraints/utils.cjs.map +1 -1
- package/dist/development/src/modifications/constraints/utils.js.map +1 -1
- package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
- package/dist/development/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
- package/dist/development/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
- package/dist/development/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
- package/dist/development/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/CreateEntityModification.js.map +1 -1
- package/dist/development/src/modifications/entities/CreateViewModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/CreateViewModification.js.map +1 -1
- package/dist/development/src/modifications/entities/RemoveEntityModification.cjs +18 -1
- package/dist/development/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/RemoveEntityModification.js +19 -2
- package/dist/development/src/modifications/entities/RemoveEntityModification.js.map +1 -1
- package/dist/development/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
- package/dist/development/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
- package/dist/development/src/modifications/entities/UpdateViewModification.js.map +1 -1
- package/dist/development/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
- package/dist/development/src/modifications/enums/CreateEnumModification.js.map +1 -1
- package/dist/development/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
- package/dist/development/src/modifications/enums/RemoveEnumModification.js.map +1 -1
- package/dist/development/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
- package/dist/development/src/modifications/enums/UpdateEnumModification.js.map +1 -1
- package/dist/development/src/modifications/enums/enumUtils.cjs.map +1 -1
- package/dist/development/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
- package/dist/development/src/modifications/fields/RemoveFieldModification.js.map +1 -1
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/development/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
- package/dist/development/src/modifications/indexes/CreateIndexModification.js.map +1 -1
- package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
- package/dist/development/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
- package/dist/development/src/modifications/indexes/utils.cjs.map +1 -1
- package/dist/development/src/modifications/indexes/utils.js.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
- package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
- package/dist/development/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/CreateRelationModification.js.map +1 -1
- package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
- package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
- package/dist/development/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
- package/dist/development/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
- package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
- package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
- package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
- package/dist/development/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
- package/dist/development/src/modifications/relations/helpers.cjs.map +1 -1
- package/dist/development/src/modifications/relations/helpers.js.map +1 -1
- package/dist/development/src/modifications/relations/normalization.cjs.map +1 -1
- package/dist/development/src/modifications/relations/normalization.js.map +1 -1
- package/dist/development/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
- package/dist/development/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
- package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
- package/dist/development/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
- package/dist/development/src/modifications/utils/createJunctionTable.cjs.map +1 -1
- package/dist/development/src/modifications/utils/createJunctionTable.js.map +1 -1
- package/dist/development/src/modifications/utils/diffUtils.cjs.map +1 -1
- package/dist/development/src/modifications/utils/diffUtils.js.map +1 -1
- package/dist/development/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
- package/dist/development/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
- package/dist/development/src/modifications/utils/sqlUpdateUtils.cjs.map +1 -1
- package/dist/development/src/modifications/utils/sqlUpdateUtils.js.map +1 -1
- package/dist/development/src/modifications/utils/viewDependencies.cjs.map +1 -1
- package/dist/development/src/modifications/utils/viewDependencies.js.map +1 -1
- package/dist/development/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs +4 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js +4 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
- package/dist/development/src/utils/deepCopy.cjs.map +1 -1
- package/dist/development/src/utils/deepCopy.js.map +1 -1
- package/dist/production/src/MigrationDescriber.cjs.map +1 -1
- package/dist/production/src/MigrationDescriber.js.map +1 -1
- package/dist/production/src/SchemaDiffer.cjs +4 -3
- package/dist/production/src/SchemaDiffer.cjs.map +1 -1
- package/dist/production/src/SchemaDiffer.js +5 -4
- package/dist/production/src/SchemaDiffer.js.map +1 -1
- package/dist/production/src/SchemaMigrator.cjs.map +1 -1
- package/dist/production/src/SchemaMigrator.js.map +1 -1
- package/dist/production/src/modifications/ModificationHandler.cjs.map +1 -1
- package/dist/production/src/modifications/ModificationHandler.js.map +1 -1
- package/dist/production/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/production/src/modifications/ModificationHandlerFactory.js.map +1 -1
- package/dist/production/src/modifications/NoopModification.cjs.map +1 -1
- package/dist/production/src/modifications/NoopModification.js.map +1 -1
- package/dist/production/src/modifications/acl/PatchAclSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/acl/PatchAclSchemaModification.js.map +1 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs +4 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js +4 -1
- package/dist/production/src/modifications/acl/UpdateAclSchemaModification.js.map +1 -1
- package/dist/production/src/modifications/actions/CreateTargetModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/CreateTargetModification.js.map +1 -1
- package/dist/production/src/modifications/actions/CreateTriggerModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/CreateTriggerModification.js.map +1 -1
- package/dist/production/src/modifications/actions/RemoveTargetModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/RemoveTargetModification.js.map +1 -1
- package/dist/production/src/modifications/actions/RemoveTriggerModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/RemoveTriggerModification.js.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTargetModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTargetModification.js.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTriggerModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/UpdateTriggerModification.js.map +1 -1
- package/dist/production/src/modifications/columns/CreateColumnModification.cjs.map +1 -1
- package/dist/production/src/modifications/columns/CreateColumnModification.js.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.js.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/columns/UpdateColumnNameModification.js.map +1 -1
- package/dist/production/src/modifications/columns/columnUtils.cjs +1 -1
- package/dist/production/src/modifications/columns/columnUtils.cjs.map +1 -1
- package/dist/production/src/modifications/columns/columnUtils.js +1 -1
- package/dist/production/src/modifications/columns/columnUtils.js.map +1 -1
- package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map +1 -1
- package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js.map +1 -1
- package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map +1 -1
- package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.js.map +1 -1
- package/dist/production/src/modifications/constraints/utils.cjs.map +1 -1
- package/dist/production/src/modifications/constraints/utils.js.map +1 -1
- package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.cjs.map +1 -1
- package/dist/production/src/modifications/differs/RemoveChangedFieldDiffer.js.map +1 -1
- package/dist/production/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
- package/dist/production/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
- package/dist/production/src/modifications/entities/CreateEntityModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/CreateEntityModification.js.map +1 -1
- package/dist/production/src/modifications/entities/CreateViewModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/CreateViewModification.js.map +1 -1
- package/dist/production/src/modifications/entities/RemoveEntityModification.cjs +18 -1
- package/dist/production/src/modifications/entities/RemoveEntityModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/RemoveEntityModification.js +19 -2
- package/dist/production/src/modifications/entities/RemoveEntityModification.js.map +1 -1
- package/dist/production/src/modifications/entities/ToggleEventLogModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/ToggleEventLogModification.js.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityNameModification.js.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityOrderByModification.js.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/UpdateEntityTableNameModification.js.map +1 -1
- package/dist/production/src/modifications/entities/UpdateViewModification.cjs.map +1 -1
- package/dist/production/src/modifications/entities/UpdateViewModification.js.map +1 -1
- package/dist/production/src/modifications/enums/CreateEnumModification.cjs.map +1 -1
- package/dist/production/src/modifications/enums/CreateEnumModification.js.map +1 -1
- package/dist/production/src/modifications/enums/RemoveEnumModification.cjs.map +1 -1
- package/dist/production/src/modifications/enums/RemoveEnumModification.js.map +1 -1
- package/dist/production/src/modifications/enums/UpdateEnumModification.cjs.map +1 -1
- package/dist/production/src/modifications/enums/UpdateEnumModification.js.map +1 -1
- package/dist/production/src/modifications/enums/enumUtils.cjs.map +1 -1
- package/dist/production/src/modifications/fields/RemoveFieldModification.cjs.map +1 -1
- package/dist/production/src/modifications/fields/RemoveFieldModification.js.map +1 -1
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/production/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
- package/dist/production/src/modifications/indexes/CreateIndexModification.js.map +1 -1
- package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
- package/dist/production/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
- package/dist/production/src/modifications/indexes/utils.cjs.map +1 -1
- package/dist/production/src/modifications/indexes/utils.js.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.js.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.js.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/ConvertOneToManyRelationModification.js.map +1 -1
- package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/CreateRelationInverseSideModification.js.map +1 -1
- package/dist/production/src/modifications/relations/CreateRelationModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/CreateRelationModification.js.map +1 -1
- package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/DisableOrphanRemovalModification.js.map +1 -1
- package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/EnableOrphanRemovalModification.js.map +1 -1
- package/dist/production/src/modifications/relations/MakeRelationNotNullModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/MakeRelationNotNullModification.js.map +1 -1
- package/dist/production/src/modifications/relations/MakeRelationNullableModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/MakeRelationNullableModification.js.map +1 -1
- package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/ToggleJunctionEventLogModification.js.map +1 -1
- package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/UpdateRelationOnDeleteModification.js.map +1 -1
- package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.cjs.map +1 -1
- package/dist/production/src/modifications/relations/UpdateRelationOrderByModification.js.map +1 -1
- package/dist/production/src/modifications/relations/helpers.cjs.map +1 -1
- package/dist/production/src/modifications/relations/helpers.js.map +1 -1
- package/dist/production/src/modifications/relations/normalization.cjs.map +1 -1
- package/dist/production/src/modifications/relations/normalization.js.map +1 -1
- package/dist/production/src/modifications/settings/UpdateSettingsModification.cjs.map +1 -1
- package/dist/production/src/modifications/settings/UpdateSettingsModification.js.map +1 -1
- package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.cjs.map +1 -1
- package/dist/production/src/modifications/upgrade/RemoveIndexNamesModification.js.map +1 -1
- package/dist/production/src/modifications/utils/createJunctionTable.cjs.map +1 -1
- package/dist/production/src/modifications/utils/createJunctionTable.js.map +1 -1
- package/dist/production/src/modifications/utils/diffUtils.cjs.map +1 -1
- package/dist/production/src/modifications/utils/diffUtils.js.map +1 -1
- package/dist/production/src/modifications/utils/schemaUpdateUtils.cjs.map +1 -1
- package/dist/production/src/modifications/utils/schemaUpdateUtils.js.map +1 -1
- package/dist/production/src/modifications/utils/sqlUpdateUtils.cjs.map +1 -1
- package/dist/production/src/modifications/utils/sqlUpdateUtils.js.map +1 -1
- package/dist/production/src/modifications/utils/viewDependencies.cjs.map +1 -1
- package/dist/production/src/modifications/utils/viewDependencies.js.map +1 -1
- package/dist/production/src/modifications/validation/PatchValidationSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/validation/PatchValidationSchemaModification.js.map +1 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.cjs +4 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.cjs.map +1 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js +4 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
- package/dist/production/src/utils/deepCopy.cjs.map +1 -1
- package/dist/production/src/utils/deepCopy.js.map +1 -1
- package/dist/tests/src/tests.d.ts +1 -1
- package/dist/tests/src/tests.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/SchemaDiffer.d.ts +4 -1
- package/dist/types/SchemaDiffer.d.ts.map +1 -1
- package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts +4 -0
- package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
- package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts +4 -0
- package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/SchemaDiffer.ts +8 -3
- package/src/modifications/acl/UpdateAclSchemaModification.ts +8 -1
- package/src/modifications/columns/columnUtils.ts +1 -1
- package/src/modifications/entities/RemoveEntityModification.ts +15 -3
- package/src/modifications/validation/UpdateValidationSchemaModification.ts +8 -1
- package/tests/cases/integration/convertManyHasOneToOneHasOneRelation.test.ts +23 -19
- package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +57 -55
- package/tests/cases/integration/convertOneToManyRelation.test.ts +46 -42
- package/tests/cases/integration/createAndDropIndex.test.ts +5 -4
- package/tests/cases/integration/createColumn.test.ts +79 -8
- package/tests/cases/integration/createEntity.test.ts +5 -4
- package/tests/cases/integration/createEnum.test.ts +3 -2
- package/tests/cases/integration/createManyHasMany.test.ts +3 -2
- package/tests/cases/integration/createManyHasOne.test.ts +3 -2
- package/tests/cases/integration/createOneHasMany.test.ts +3 -2
- package/tests/cases/integration/createOneHasOne.test.ts +3 -2
- package/tests/cases/integration/createRelationInverseSide.test.ts +5 -4
- package/tests/cases/integration/createUnique.test.ts +11 -10
- package/tests/cases/integration/createView.test.ts +5 -4
- package/tests/cases/integration/disableOrphanRemoval.test.ts +3 -2
- package/tests/cases/integration/enableOrphanRemoval.test.ts +3 -2
- package/tests/cases/integration/makeColumnNotNull.test.ts +3 -2
- package/tests/cases/integration/makeRelationNotNull.test.ts +3 -2
- package/tests/cases/integration/makeRelationNullable.test.ts +5 -4
- package/tests/cases/integration/patchAclSchema.test.ts +3 -2
- package/tests/cases/integration/removeEntity.test.ts +103 -6
- package/tests/cases/integration/removeEnum.test.ts +3 -2
- package/tests/cases/integration/removeField.test.ts +13 -12
- package/tests/cases/integration/toggleEventLog.test.ts +5 -4
- package/tests/cases/integration/toggleJunctionEventLog.test.ts +5 -4
- package/tests/cases/integration/updateColumnDefinition.test.ts +11 -10
- package/tests/cases/integration/updateEntityName.test.ts +9 -8
- package/tests/cases/integration/updateEntityOrderBy.test.ts +5 -4
- package/tests/cases/integration/updateEnum.test.ts +3 -2
- package/tests/cases/integration/updateFieldName.test.ts +13 -12
- package/tests/cases/integration/updateRelationOnDelete.test.ts +4 -2
- package/tests/cases/integration/updateRelationOrderBy.test.ts +3 -2
- package/tests/cases/integration/updateView.test.ts +9 -8
- package/tests/src/tests.ts +17 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateEnumModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/UpdateEnumModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createCheck, getConstraintName } from './enumUtils'\n\nexport class UpdateEnumModificationHandler implements ModificationHandler<UpdateEnumModificationData> {\n\tconstructor(private readonly data: UpdateEnumModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tDROP CONSTRAINT ${getConstraintName(this.data.enumName)}`)\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(({ model }) => ({\n\t\t\t...model,\n\t\t\tenums: {\n\t\t\t\t...model.enums,\n\t\t\t\t[this.data.enumName]: this.data.values,\n\t\t\t},\n\t\t}))\n\t}\n\n\tdescribe() {\n\t\tconst currentValues = this.schema.model.enums[this.data.enumName]\n\t\tconst missingValues = currentValues.filter(it => !this.data.values.includes(it))\n\t\tconst failureWarning =\n\t\t\tmissingValues.length > 0\n\t\t\t\t? `Removing values (${missingValues.join(', ')}) from enum, this may fail in runtime`\n\t\t\t\t: undefined\n\t\treturn { message: `Update enum ${this.data.enumName}`, failureWarning }\n\t}\n}\n\nexport interface UpdateEnumModificationData {\n\tenumName: string\n\tvalues: readonly string[]\n}\n\nexport const updateEnumModification = createModificationType({\n\tid: 'updateEnum',\n\thandler: UpdateEnumModificationHandler,\n})\n\nexport class UpdateEnumDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.model.enums)\n\t\t\t.filter(\n\t\t\t\t([name]) =>\n\t\t\t\t\toriginalSchema.model.enums[name] &&\n\t\t\t\t\t!deepEqual(updatedSchema.model.enums[name], originalSchema.model.enums[name]),\n\t\t\t)\n\t\t\t.map(([enumName, values]) => updateEnumModification.createModification({ enumName, values }))\n\t}\n}\n"],"names":["getConstraintName","createCheck","updateModel","createModificationType"],"mappings":";;;;;;AAOO,MAAM,8BAAyF;AAAA,EACrG,YAA6B,MAAmD,QAAgB;AAAnE,SAAA,OAAA;AAAmD,SAAA,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"UpdateEnumModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/UpdateEnumModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createCheck, getConstraintName } from './enumUtils'\n\nexport class UpdateEnumModificationHandler implements ModificationHandler<UpdateEnumModificationData> {\n\tconstructor(private readonly data: UpdateEnumModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tDROP CONSTRAINT ${getConstraintName(this.data.enumName)}`)\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(({ model }) => ({\n\t\t\t...model,\n\t\t\tenums: {\n\t\t\t\t...model.enums,\n\t\t\t\t[this.data.enumName]: this.data.values,\n\t\t\t},\n\t\t}))\n\t}\n\n\tdescribe() {\n\t\tconst currentValues = this.schema.model.enums[this.data.enumName]\n\t\tconst missingValues = currentValues.filter(it => !this.data.values.includes(it))\n\t\tconst failureWarning =\n\t\t\tmissingValues.length > 0\n\t\t\t\t? `Removing values (${missingValues.join(', ')}) from enum, this may fail in runtime`\n\t\t\t\t: undefined\n\t\treturn { message: `Update enum ${this.data.enumName}`, failureWarning }\n\t}\n}\n\nexport interface UpdateEnumModificationData {\n\tenumName: string\n\tvalues: readonly string[]\n}\n\nexport const updateEnumModification = createModificationType({\n\tid: 'updateEnum',\n\thandler: UpdateEnumModificationHandler,\n})\n\nexport class UpdateEnumDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.model.enums)\n\t\t\t.filter(\n\t\t\t\t([name]) =>\n\t\t\t\t\toriginalSchema.model.enums[name] &&\n\t\t\t\t\t!deepEqual(updatedSchema.model.enums[name], originalSchema.model.enums[name]),\n\t\t\t)\n\t\t\t.map(([enumName, values]) => updateEnumModification.createModification({ enumName, values }))\n\t}\n}\n"],"names":["getConstraintName","createCheck","updateModel","createModificationType"],"mappings":";;;;;;AAOO,MAAM,8BAAyF;AAAA,EACrG,YAA6B,MAAmD,QAAgB;AAAnE,SAAA,OAAA;AAAmD,SAAA,SAAA;AAAA,EAAA;AAAA,EAEzE,UAAU,SAAiC;AACjD,YAAQ,IAAI;AAAA,mBACK,KAAK,KAAK,QAAQ;AAAA,qBAChBA,UAAkB,kBAAA,KAAK,KAAK,QAAQ,CAAC,EAAE;AAC1D,YAAQ,IAAI;AAAA,mBACK,KAAK,KAAK,QAAQ;AAAA,oBACjBA,4BAAkB,KAAK,KAAK,QAAQ,CAAC,WAAWC,UAAA,YAAY,KAAK,KAAK,MAAM,CAAC,GAAG;AAAA,EAAA;AAAA,EAG5F,mBAAkC;AACxC,WAAOC,kBAAY,YAAA,CAAC,EAAE,aAAa;AAAA,MAClC,GAAG;AAAA,MACH,OAAO;AAAA,QACN,GAAG,MAAM;AAAA,QACT,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,KAAK;AAAA,MAAA;AAAA,IACjC,EACC;AAAA,EAAA;AAAA,EAGH,WAAW;AACV,UAAM,gBAAgB,KAAK,OAAO,MAAM,MAAM,KAAK,KAAK,QAAQ;AAC1D,UAAA,gBAAgB,cAAc,OAAO,CAAM,OAAA,CAAC,KAAK,KAAK,OAAO,SAAS,EAAE,CAAC;AACzE,UAAA,iBACL,cAAc,SAAS,IACpB,oBAAoB,cAAc,KAAK,IAAI,CAAC,0CAC5C;AACJ,WAAO,EAAE,SAAS,eAAe,KAAK,KAAK,QAAQ,IAAI,eAAe;AAAA,EAAA;AAExE;AAOO,MAAM,yBAAyBC,oBAAAA,uBAAuB;AAAA,EAC5D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,iBAAmC;AAAA,EAC/C,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,QAAQ,cAAc,MAAM,KAAK,EAC7C;AAAA,MACA,CAAC,CAAC,IAAI,MACL,eAAe,MAAM,MAAM,IAAI,KAC/B,CAAC,UAAU,cAAc,MAAM,MAAM,IAAI,GAAG,eAAe,MAAM,MAAM,IAAI,CAAC;AAAA,IAE7E,EAAA,IAAI,CAAC,CAAC,UAAU,MAAM,MAAM,uBAAuB,mBAAmB,EAAE,UAAU,OAAA,CAAQ,CAAC;AAAA,EAAA;AAE/F;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateEnumModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/UpdateEnumModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createCheck, getConstraintName } from './enumUtils'\n\nexport class UpdateEnumModificationHandler implements ModificationHandler<UpdateEnumModificationData> {\n\tconstructor(private readonly data: UpdateEnumModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tDROP CONSTRAINT ${getConstraintName(this.data.enumName)}`)\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(({ model }) => ({\n\t\t\t...model,\n\t\t\tenums: {\n\t\t\t\t...model.enums,\n\t\t\t\t[this.data.enumName]: this.data.values,\n\t\t\t},\n\t\t}))\n\t}\n\n\tdescribe() {\n\t\tconst currentValues = this.schema.model.enums[this.data.enumName]\n\t\tconst missingValues = currentValues.filter(it => !this.data.values.includes(it))\n\t\tconst failureWarning =\n\t\t\tmissingValues.length > 0\n\t\t\t\t? `Removing values (${missingValues.join(', ')}) from enum, this may fail in runtime`\n\t\t\t\t: undefined\n\t\treturn { message: `Update enum ${this.data.enumName}`, failureWarning }\n\t}\n}\n\nexport interface UpdateEnumModificationData {\n\tenumName: string\n\tvalues: readonly string[]\n}\n\nexport const updateEnumModification = createModificationType({\n\tid: 'updateEnum',\n\thandler: UpdateEnumModificationHandler,\n})\n\nexport class UpdateEnumDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.model.enums)\n\t\t\t.filter(\n\t\t\t\t([name]) =>\n\t\t\t\t\toriginalSchema.model.enums[name] &&\n\t\t\t\t\t!deepEqual(updatedSchema.model.enums[name], originalSchema.model.enums[name]),\n\t\t\t)\n\t\t\t.map(([enumName, values]) => updateEnumModification.createModification({ enumName, values }))\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,8BAAyF;AAAA,EACrG,YAA6B,MAAmD,QAAgB;AAAnE,SAAA,OAAA;AAAmD,SAAA,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"UpdateEnumModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/UpdateEnumModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createCheck, getConstraintName } from './enumUtils'\n\nexport class UpdateEnumModificationHandler implements ModificationHandler<UpdateEnumModificationData> {\n\tconstructor(private readonly data: UpdateEnumModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tDROP CONSTRAINT ${getConstraintName(this.data.enumName)}`)\n\t\tbuilder.sql(`\n\t\t\tALTER DOMAIN \"${this.data.enumName}\"\n\t\t\tADD CONSTRAINT ${getConstraintName(this.data.enumName)} CHECK (${createCheck(this.data.values)})`)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(({ model }) => ({\n\t\t\t...model,\n\t\t\tenums: {\n\t\t\t\t...model.enums,\n\t\t\t\t[this.data.enumName]: this.data.values,\n\t\t\t},\n\t\t}))\n\t}\n\n\tdescribe() {\n\t\tconst currentValues = this.schema.model.enums[this.data.enumName]\n\t\tconst missingValues = currentValues.filter(it => !this.data.values.includes(it))\n\t\tconst failureWarning =\n\t\t\tmissingValues.length > 0\n\t\t\t\t? `Removing values (${missingValues.join(', ')}) from enum, this may fail in runtime`\n\t\t\t\t: undefined\n\t\treturn { message: `Update enum ${this.data.enumName}`, failureWarning }\n\t}\n}\n\nexport interface UpdateEnumModificationData {\n\tenumName: string\n\tvalues: readonly string[]\n}\n\nexport const updateEnumModification = createModificationType({\n\tid: 'updateEnum',\n\thandler: UpdateEnumModificationHandler,\n})\n\nexport class UpdateEnumDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.model.enums)\n\t\t\t.filter(\n\t\t\t\t([name]) =>\n\t\t\t\t\toriginalSchema.model.enums[name] &&\n\t\t\t\t\t!deepEqual(updatedSchema.model.enums[name], originalSchema.model.enums[name]),\n\t\t\t)\n\t\t\t.map(([enumName, values]) => updateEnumModification.createModification({ enumName, values }))\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,8BAAyF;AAAA,EACrG,YAA6B,MAAmD,QAAgB;AAAnE,SAAA,OAAA;AAAmD,SAAA,SAAA;AAAA,EAAA;AAAA,EAEzE,UAAU,SAAiC;AACjD,YAAQ,IAAI;AAAA,mBACK,KAAK,KAAK,QAAQ;AAAA,qBAChB,kBAAkB,KAAK,KAAK,QAAQ,CAAC,EAAE;AAC1D,YAAQ,IAAI;AAAA,mBACK,KAAK,KAAK,QAAQ;AAAA,oBACjB,kBAAkB,KAAK,KAAK,QAAQ,CAAC,WAAW,YAAY,KAAK,KAAK,MAAM,CAAC,GAAG;AAAA,EAAA;AAAA,EAG5F,mBAAkC;AACxC,WAAO,YAAY,CAAC,EAAE,aAAa;AAAA,MAClC,GAAG;AAAA,MACH,OAAO;AAAA,QACN,GAAG,MAAM;AAAA,QACT,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,KAAK;AAAA,MAAA;AAAA,IACjC,EACC;AAAA,EAAA;AAAA,EAGH,WAAW;AACV,UAAM,gBAAgB,KAAK,OAAO,MAAM,MAAM,KAAK,KAAK,QAAQ;AAC1D,UAAA,gBAAgB,cAAc,OAAO,CAAM,OAAA,CAAC,KAAK,KAAK,OAAO,SAAS,EAAE,CAAC;AACzE,UAAA,iBACL,cAAc,SAAS,IACpB,oBAAoB,cAAc,KAAK,IAAI,CAAC,0CAC5C;AACJ,WAAO,EAAE,SAAS,eAAe,KAAK,KAAK,QAAQ,IAAI,eAAe;AAAA,EAAA;AAExE;AAOO,MAAM,yBAAyB,uBAAuB;AAAA,EAC5D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,iBAAmC;AAAA,EAC/C,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,QAAQ,cAAc,MAAM,KAAK,EAC7C;AAAA,MACA,CAAC,CAAC,IAAI,MACL,eAAe,MAAM,MAAM,IAAI,KAC/B,CAAC,UAAU,cAAc,MAAM,MAAM,IAAI,GAAG,eAAe,MAAM,MAAM,IAAI,CAAC;AAAA,IAE7E,EAAA,IAAI,CAAC,CAAC,UAAU,MAAM,MAAM,uBAAuB,mBAAmB,EAAE,UAAU,OAAA,CAAQ,CAAC;AAAA,EAAA;AAE/F;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enumUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/enumUtils.ts"],"sourcesContent":["import { escapeSqlString } from '../../utils/escapeSqlString'\n\nexport const createCheck = (values: readonly string[]) => {\n\tconst joinedValues = values.map(it => `'${escapeSqlString(it)}'`).join(',')\n\treturn `VALUE IN(${joinedValues})`\n}\n\nexport const getConstraintName = (enumName: string) => `${enumName}_check`.toLowerCase()\n"],"names":["escapeSqlString"],"mappings":";;;AAEa,MAAA,cAAc,CAAC,WAA8B;AACnD,QAAA,eAAe,OAAO,IAAI,CAAM,OAAA,IAAIA,
|
|
1
|
+
{"version":3,"file":"enumUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/enums/enumUtils.ts"],"sourcesContent":["import { escapeSqlString } from '../../utils/escapeSqlString'\n\nexport const createCheck = (values: readonly string[]) => {\n\tconst joinedValues = values.map(it => `'${escapeSqlString(it)}'`).join(',')\n\treturn `VALUE IN(${joinedValues})`\n}\n\nexport const getConstraintName = (enumName: string) => `${enumName}_check`.toLowerCase()\n"],"names":["escapeSqlString"],"mappings":";;;AAEa,MAAA,cAAc,CAAC,WAA8B;AACnD,QAAA,eAAe,OAAO,IAAI,CAAM,OAAA,IAAIA,gBAAgB,gBAAA,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG;AAC1E,SAAO,YAAY,YAAY;AAChC;AAEO,MAAM,oBAAoB,CAAC,aAAqB,GAAG,QAAQ,SAAS,YAAY;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveFieldModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/RemoveFieldModification.ts"],"sourcesContent":["import { acceptFieldVisitor, isInverseRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { removeField, SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'\nimport { isDefined } from '../../utils/isDefined'\n\nexport class RemoveFieldModificationHandler implements ModificationHandler<RemoveFieldModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: RemoveFieldModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tacceptFieldVisitor(this.schema.model, this.data.entityName, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, column.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tbuilder.dropTable(relation.joiningTable.tableName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn removeField(this.data.entityName, this.data.fieldName, this.options.formatVersion)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Remove field ${this.data.entityName}.${this.data.fieldName}`, isDestructive: true }\n\t}\n\n}\n\nexport interface RemoveFieldModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const removeFieldModification = createModificationType({\n\tid: 'removeField',\n\thandler: RemoveFieldModificationHandler,\n})\n\nexport class RemoveFieldDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities)\n\t\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t\t.flatMap(entity => {\n\t\t\t\tconst originalEntity = originalSchema.model.entities[entity.name]\n\n\t\t\t\treturn Object.values(originalEntity.fields)\n\t\t\t\t\t.filter(field => !entity.fields[field.name])\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tif (isRelation(field) && isInverseRelation(field)) {\n\t\t\t\t\t\t\tconst target = updatedSchema.model.entities[field.target]\n\t\t\t\t\t\t\tif (!target || !target.fields[field.ownedBy]) {\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn removeFieldModification.createModification({\n\t\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined)\n\t\t\t})\n\t}\n}\n"],"names":["acceptFieldVisitor","entity","removeField","createModificationType","isRelation","isInverseRelation","isDefined"],"mappings":";;;;;;AAOO,MAAM,+BAA2F;AAAA,EAEvG,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"RemoveFieldModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/RemoveFieldModification.ts"],"sourcesContent":["import { acceptFieldVisitor, isInverseRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { removeField, SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'\nimport { isDefined } from '../../utils/isDefined'\n\nexport class RemoveFieldModificationHandler implements ModificationHandler<RemoveFieldModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: RemoveFieldModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tacceptFieldVisitor(this.schema.model, this.data.entityName, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, column.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tbuilder.dropTable(relation.joiningTable.tableName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn removeField(this.data.entityName, this.data.fieldName, this.options.formatVersion)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Remove field ${this.data.entityName}.${this.data.fieldName}`, isDestructive: true }\n\t}\n\n}\n\nexport interface RemoveFieldModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const removeFieldModification = createModificationType({\n\tid: 'removeField',\n\thandler: RemoveFieldModificationHandler,\n})\n\nexport class RemoveFieldDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities)\n\t\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t\t.flatMap(entity => {\n\t\t\t\tconst originalEntity = originalSchema.model.entities[entity.name]\n\n\t\t\t\treturn Object.values(originalEntity.fields)\n\t\t\t\t\t.filter(field => !entity.fields[field.name])\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tif (isRelation(field) && isInverseRelation(field)) {\n\t\t\t\t\t\t\tconst target = updatedSchema.model.entities[field.target]\n\t\t\t\t\t\t\tif (!target || !target.fields[field.ownedBy]) {\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn removeFieldModification.createModification({\n\t\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined)\n\t\t\t})\n\t}\n}\n"],"names":["acceptFieldVisitor","entity","removeField","createModificationType","isRelation","isInverseRelation","isDefined"],"mappings":";;;;;;AAOO,MAAM,+BAA2F;AAAA,EAEvG,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAGX,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAEkBA,mCAAA,KAAK,OAAO,OAAO,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW;AAAA,MAChF,aAAa,CAAC,EAAE,QAAAC,SAAQ,aAAa;AACpC,gBAAQ,WAAWA,QAAO,WAAW,OAAO,UAAU;AAAA,MACvD;AAAA,MACA,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC1C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,iBAAiB,MAAM;AAAA,MAAC;AAAA,MACxB,sBAAsB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC/C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,uBAAuB,MAAM;AAAA,MAAC;AAAA,MAC9B,wBAAwB,CAAC,EAAE,eAAe;AACjC,gBAAA,UAAU,SAAS,aAAa,SAAS;AAAA,MAClD;AAAA,MACA,yBAAyB,MAAM;AAAA,MAAA;AAAA,IAAC,CAChC;AAAA,EAAA;AAAA,EAGK,mBAAkC;AACjC,WAAAC,8BAAY,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW,KAAK,QAAQ,aAAa;AAAA,EAAA;AAAA,EAGzF,WAAW;AACV,WAAO,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,KAAK;AAAA,EAAA;AAGvG;AAOO,MAAM,0BAA0BC,oBAAAA,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAU,WAAA;AAClB,YAAM,iBAAiB,eAAe,MAAM,SAAS,OAAO,IAAI;AAEhE,aAAO,OAAO,OAAO,eAAe,MAAM,EACxC,OAAO,CAAA,UAAS,CAAC,OAAO,OAAO,MAAM,IAAI,CAAC,EAC1C,IAAI,CAAS,UAAA;AACb,YAAIC,YAAW,WAAA,KAAK,KAAKC,YAAA,kBAAkB,KAAK,GAAG;AAClD,gBAAM,SAAS,cAAc,MAAM,SAAS,MAAM,MAAM;AACxD,cAAI,CAAC,UAAU,CAAC,OAAO,OAAO,MAAM,OAAO,GAAG;AACtC,mBAAA;AAAA,UAAA;AAAA,QACR;AAED,eAAO,wBAAwB,mBAAmB;AAAA,UACjD,YAAY,OAAO;AAAA,UACnB,WAAW,MAAM;AAAA,QAAA,CACjB;AAAA,MAAA,CACD,EACA,OAAOC,mBAAS;AAAA,IAAA,CAClB;AAAA,EAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveFieldModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/RemoveFieldModification.ts"],"sourcesContent":["import { acceptFieldVisitor, isInverseRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { removeField, SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'\nimport { isDefined } from '../../utils/isDefined'\n\nexport class RemoveFieldModificationHandler implements ModificationHandler<RemoveFieldModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: RemoveFieldModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tacceptFieldVisitor(this.schema.model, this.data.entityName, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, column.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tbuilder.dropTable(relation.joiningTable.tableName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn removeField(this.data.entityName, this.data.fieldName, this.options.formatVersion)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Remove field ${this.data.entityName}.${this.data.fieldName}`, isDestructive: true }\n\t}\n\n}\n\nexport interface RemoveFieldModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const removeFieldModification = createModificationType({\n\tid: 'removeField',\n\thandler: RemoveFieldModificationHandler,\n})\n\nexport class RemoveFieldDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities)\n\t\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t\t.flatMap(entity => {\n\t\t\t\tconst originalEntity = originalSchema.model.entities[entity.name]\n\n\t\t\t\treturn Object.values(originalEntity.fields)\n\t\t\t\t\t.filter(field => !entity.fields[field.name])\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tif (isRelation(field) && isInverseRelation(field)) {\n\t\t\t\t\t\t\tconst target = updatedSchema.model.entities[field.target]\n\t\t\t\t\t\t\tif (!target || !target.fields[field.ownedBy]) {\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn removeFieldModification.createModification({\n\t\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined)\n\t\t\t})\n\t}\n}\n"],"names":["entity"],"mappings":";;;;AAOO,MAAM,+BAA2F;AAAA,EAEvG,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"RemoveFieldModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/RemoveFieldModification.ts"],"sourcesContent":["import { acceptFieldVisitor, isInverseRelation, isRelation } from '@contember/schema-utils'\nimport { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { removeField, SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerOptions } from '../ModificationHandler'\nimport { isDefined } from '../../utils/isDefined'\n\nexport class RemoveFieldModificationHandler implements ModificationHandler<RemoveFieldModificationData> {\n\n\tconstructor(\n\t\tprivate readonly data: RemoveFieldModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {}\n\n\tpublic createSql(builder: MigrationBuilder): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tacceptFieldVisitor(this.schema.model, this.data.entityName, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, column.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.dropColumn(entity.tableName, relation.joiningColumn.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {},\n\t\t\tvisitManyHasManyOwning: ({ relation }) => {\n\t\t\t\tbuilder.dropTable(relation.joiningTable.tableName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn removeField(this.data.entityName, this.data.fieldName, this.options.formatVersion)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Remove field ${this.data.entityName}.${this.data.fieldName}`, isDestructive: true }\n\t}\n\n}\n\nexport interface RemoveFieldModificationData {\n\tentityName: string\n\tfieldName: string\n}\n\nexport const removeFieldModification = createModificationType({\n\tid: 'removeField',\n\thandler: RemoveFieldModificationHandler,\n})\n\nexport class RemoveFieldDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities)\n\t\t\t.filter(({ name }) => originalSchema.model.entities[name])\n\t\t\t.flatMap(entity => {\n\t\t\t\tconst originalEntity = originalSchema.model.entities[entity.name]\n\n\t\t\t\treturn Object.values(originalEntity.fields)\n\t\t\t\t\t.filter(field => !entity.fields[field.name])\n\t\t\t\t\t.map(field => {\n\t\t\t\t\t\tif (isRelation(field) && isInverseRelation(field)) {\n\t\t\t\t\t\t\tconst target = updatedSchema.model.entities[field.target]\n\t\t\t\t\t\t\tif (!target || !target.fields[field.ownedBy]) {\n\t\t\t\t\t\t\t\treturn undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn removeFieldModification.createModification({\n\t\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\t\tfieldName: field.name,\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t\t.filter(isDefined)\n\t\t\t})\n\t}\n}\n"],"names":["entity"],"mappings":";;;;AAOO,MAAM,+BAA2F;AAAA,EAEvG,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AAAA,EAAA;AAAA,EAGX,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAEkB,uBAAA,KAAK,OAAO,OAAO,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW;AAAA,MAChF,aAAa,CAAC,EAAE,QAAAA,SAAQ,aAAa;AACpC,gBAAQ,WAAWA,QAAO,WAAW,OAAO,UAAU;AAAA,MACvD;AAAA,MACA,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC1C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,iBAAiB,MAAM;AAAA,MAAC;AAAA,MACxB,sBAAsB,CAAC,EAAE,QAAAA,SAAQ,eAAe;AAC/C,gBAAQ,WAAWA,QAAO,WAAW,SAAS,cAAc,UAAU;AAAA,MACvE;AAAA,MACA,uBAAuB,MAAM;AAAA,MAAC;AAAA,MAC9B,wBAAwB,CAAC,EAAE,eAAe;AACjC,gBAAA,UAAU,SAAS,aAAa,SAAS;AAAA,MAClD;AAAA,MACA,yBAAyB,MAAM;AAAA,MAAA;AAAA,IAAC,CAChC;AAAA,EAAA;AAAA,EAGK,mBAAkC;AACjC,WAAA,YAAY,KAAK,KAAK,YAAY,KAAK,KAAK,WAAW,KAAK,QAAQ,aAAa;AAAA,EAAA;AAAA,EAGzF,WAAW;AACV,WAAO,EAAE,SAAS,gBAAgB,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,KAAK;AAAA,EAAA;AAGvG;AAOO,MAAM,0BAA0B,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAC/C,OAAO,CAAC,EAAE,KAAK,MAAM,eAAe,MAAM,SAAS,IAAI,CAAC,EACxD,QAAQ,CAAU,WAAA;AAClB,YAAM,iBAAiB,eAAe,MAAM,SAAS,OAAO,IAAI;AAEhE,aAAO,OAAO,OAAO,eAAe,MAAM,EACxC,OAAO,CAAA,UAAS,CAAC,OAAO,OAAO,MAAM,IAAI,CAAC,EAC1C,IAAI,CAAS,UAAA;AACb,YAAI,WAAW,KAAK,KAAK,kBAAkB,KAAK,GAAG;AAClD,gBAAM,SAAS,cAAc,MAAM,SAAS,MAAM,MAAM;AACxD,cAAI,CAAC,UAAU,CAAC,OAAO,OAAO,MAAM,OAAO,GAAG;AACtC,mBAAA;AAAA,UAAA;AAAA,QACR;AAED,eAAO,wBAAwB,mBAAmB;AAAA,UACjD,YAAY,OAAO;AAAA,UACnB,WAAW,MAAM;AAAA,QAAA,CACjB;AAAA,MAAA,CACD,EACA,OAAO,SAAS;AAAA,IAAA,CAClB;AAAA,EAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateFieldNameModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/UpdateFieldNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Input, Model, Schema, Value } from '@contember/schema'\nimport {\n\tSchemaUpdater,\n\tupdateAcl,\n\tupdateAclEveryEntity,\n\tupdateAclEveryPredicate,\n\tupdateAclEveryRole,\n\tupdateAclFieldPermissions,\n\tupdateEntity,\n\tupdateEveryEntity,\n\tupdateEveryField,\n\tupdateModel,\n\tupdateSchema,\n} from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { acceptFieldVisitor, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport {\n\tVERSION_ACL_PATCH,\n\tVERSION_UPDATE_CONSTRAINT_FIELDS,\n\tVERSION_UPDATE_INDEX_FIELDS,\n} from '../ModificationVersions'\nimport { changeValue } from '../utils/valueUtils'\nimport { updateColumnNameModification } from '../columns'\nimport { NoopModification } from '../NoopModification'\n\nexport class UpdateFieldNameModificationHandler implements ModificationHandler<UpdateFieldNameModificationData> {\n\tprivate renameColumnSubModification: ModificationHandler<any> = new NoopModification()\n\n\tconstructor(\n\t\tprivate readonly data: UpdateFieldNameModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tif (this.data.columnName) {\n\t\t\tthis.renameColumnSubModification = updateColumnNameModification.createHandler({\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t}, this.schema, this.options)\n\t\t}\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tthis.renameColumnSubModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst updateConstraintFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tunique: entity.unique.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t })\n\t\t\t\t: undefined\n\t\tconst updateIndexFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_INDEX_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tindexes: entity.indexes.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t: undefined\n\t\tconst updateRelationReferences = updateEveryEntity(\n\t\t\tupdateEveryField(({ field, entity }) => {\n\t\t\t\tconst isUpdatedRelation = (entity: Model.Entity, relation: Model.AnyRelation | null) => {\n\t\t\t\t\treturn entity.name === this.data.entityName && relation && relation.name === this.data.fieldName\n\t\t\t\t}\n\n\t\t\t\treturn acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\tvisitColumn: ({ column }) => column,\n\t\t\t\t\tvisitManyHasOne: ({ targetEntity, relation, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasMany: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t\tconst updateFieldName = updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\tconst { [this.data.fieldName]: updated, ...fields } = entity.fields\n\t\t\treturn {\n\t\t\t\t...entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...fields,\n\t\t\t\t\t[this.data.newFieldName]: { ...updated, name: this.data.newFieldName },\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t\tconst updateAclOp =\n\t\t\tthis.options.formatVersion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== this.data.entityName) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!permissions[this.data.fieldName]) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [this.data.fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t[this.data.newFieldName]: field,\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName, schema }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\tconst currentEntity = schema.model.entities[entityName]\n\t\t\t\t\t\t\t\treturn processor.process<Input.Condition<Value.FieldValue<never>> | string, never>(\n\t\t\t\t\t\t\t\t\tcurrentEntity,\n\t\t\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.column.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.relation.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined\n\t\treturn updateSchema(\n\t\t\tupdateAclOp,\n\t\t\tthis.renameColumnSubModification.getSchemaUpdater(),\n\t\t\tupdateModel(\n\t\t\t\tupdateConstraintFields,\n\t\t\t\tupdateIndexFields,\n\t\t\t\tupdateRelationReferences,\n\t\t\t\tupdateFieldName,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change field name ${this.data.entityName}.${this.data.fieldName} to ${this.data.newFieldName}` }\n\t}\n}\n\nexport interface UpdateFieldNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewFieldName: string\n\tcolumnName?: string\n}\n\nexport const updateFieldNameModification = createModificationType({\n\tid: 'updateFieldName',\n\thandler: UpdateFieldNameModificationHandler,\n})\n"],"names":["NoopModification","updateColumnNameModification","VERSION_UPDATE_CONSTRAINT_FIELDS","updateEntity","changeValue","VERSION_UPDATE_INDEX_FIELDS","updateEveryEntity","updateEveryField","entity","acceptFieldVisitor","VERSION_ACL_PATCH","updateAcl","updateAclEveryRole","updateAclEveryEntity","updateAclFieldPermissions","updateAclEveryPredicate","PredicateDefinitionProcessor","updateSchema","updateModel","createModificationType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UpdateFieldNameModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/UpdateFieldNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Input, Model, Schema, Value } from '@contember/schema'\nimport {\n\tSchemaUpdater,\n\tupdateAcl,\n\tupdateAclEveryEntity,\n\tupdateAclEveryPredicate,\n\tupdateAclEveryRole,\n\tupdateAclFieldPermissions,\n\tupdateEntity,\n\tupdateEveryEntity,\n\tupdateEveryField,\n\tupdateModel,\n\tupdateSchema,\n} from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { acceptFieldVisitor, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport {\n\tVERSION_ACL_PATCH,\n\tVERSION_UPDATE_CONSTRAINT_FIELDS,\n\tVERSION_UPDATE_INDEX_FIELDS,\n} from '../ModificationVersions'\nimport { changeValue } from '../utils/valueUtils'\nimport { updateColumnNameModification } from '../columns'\nimport { NoopModification } from '../NoopModification'\n\nexport class UpdateFieldNameModificationHandler implements ModificationHandler<UpdateFieldNameModificationData> {\n\tprivate renameColumnSubModification: ModificationHandler<any> = new NoopModification()\n\n\tconstructor(\n\t\tprivate readonly data: UpdateFieldNameModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tif (this.data.columnName) {\n\t\t\tthis.renameColumnSubModification = updateColumnNameModification.createHandler({\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t}, this.schema, this.options)\n\t\t}\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tthis.renameColumnSubModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst updateConstraintFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tunique: entity.unique.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t })\n\t\t\t\t: undefined\n\t\tconst updateIndexFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_INDEX_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tindexes: entity.indexes.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t: undefined\n\t\tconst updateRelationReferences = updateEveryEntity(\n\t\t\tupdateEveryField(({ field, entity }) => {\n\t\t\t\tconst isUpdatedRelation = (entity: Model.Entity, relation: Model.AnyRelation | null) => {\n\t\t\t\t\treturn entity.name === this.data.entityName && relation && relation.name === this.data.fieldName\n\t\t\t\t}\n\n\t\t\t\treturn acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\tvisitColumn: ({ column }) => column,\n\t\t\t\t\tvisitManyHasOne: ({ targetEntity, relation, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasMany: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t\tconst updateFieldName = updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\tconst { [this.data.fieldName]: updated, ...fields } = entity.fields\n\t\t\treturn {\n\t\t\t\t...entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...fields,\n\t\t\t\t\t[this.data.newFieldName]: { ...updated, name: this.data.newFieldName },\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t\tconst updateAclOp =\n\t\t\tthis.options.formatVersion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== this.data.entityName) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!permissions[this.data.fieldName]) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [this.data.fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t[this.data.newFieldName]: field,\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName, schema }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\tconst currentEntity = schema.model.entities[entityName]\n\t\t\t\t\t\t\t\treturn processor.process<Input.Condition<Value.FieldValue<never>> | string, never>(\n\t\t\t\t\t\t\t\t\tcurrentEntity,\n\t\t\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.column.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.relation.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined\n\t\treturn updateSchema(\n\t\t\tupdateAclOp,\n\t\t\tthis.renameColumnSubModification.getSchemaUpdater(),\n\t\t\tupdateModel(\n\t\t\t\tupdateConstraintFields,\n\t\t\t\tupdateIndexFields,\n\t\t\t\tupdateRelationReferences,\n\t\t\t\tupdateFieldName,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change field name ${this.data.entityName}.${this.data.fieldName} to ${this.data.newFieldName}` }\n\t}\n}\n\nexport interface UpdateFieldNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewFieldName: string\n\tcolumnName?: string\n}\n\nexport const updateFieldNameModification = createModificationType({\n\tid: 'updateFieldName',\n\thandler: UpdateFieldNameModificationHandler,\n})\n"],"names":["NoopModification","updateColumnNameModification","VERSION_UPDATE_CONSTRAINT_FIELDS","updateEntity","changeValue","VERSION_UPDATE_INDEX_FIELDS","updateEveryEntity","updateEveryField","entity","acceptFieldVisitor","VERSION_ACL_PATCH","updateAcl","updateAclEveryRole","updateAclEveryEntity","updateAclFieldPermissions","updateAclEveryPredicate","PredicateDefinitionProcessor","updateSchema","updateModel","createModificationType"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateFieldNameModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/UpdateFieldNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Input, Model, Schema, Value } from '@contember/schema'\nimport {\n\tSchemaUpdater,\n\tupdateAcl,\n\tupdateAclEveryEntity,\n\tupdateAclEveryPredicate,\n\tupdateAclEveryRole,\n\tupdateAclFieldPermissions,\n\tupdateEntity,\n\tupdateEveryEntity,\n\tupdateEveryField,\n\tupdateModel,\n\tupdateSchema,\n} from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { acceptFieldVisitor, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport {\n\tVERSION_ACL_PATCH,\n\tVERSION_UPDATE_CONSTRAINT_FIELDS,\n\tVERSION_UPDATE_INDEX_FIELDS,\n} from '../ModificationVersions'\nimport { changeValue } from '../utils/valueUtils'\nimport { updateColumnNameModification } from '../columns'\nimport { NoopModification } from '../NoopModification'\n\nexport class UpdateFieldNameModificationHandler implements ModificationHandler<UpdateFieldNameModificationData> {\n\tprivate renameColumnSubModification: ModificationHandler<any> = new NoopModification()\n\n\tconstructor(\n\t\tprivate readonly data: UpdateFieldNameModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tif (this.data.columnName) {\n\t\t\tthis.renameColumnSubModification = updateColumnNameModification.createHandler({\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t}, this.schema, this.options)\n\t\t}\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tthis.renameColumnSubModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst updateConstraintFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tunique: entity.unique.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t })\n\t\t\t\t: undefined\n\t\tconst updateIndexFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_INDEX_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tindexes: entity.indexes.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t: undefined\n\t\tconst updateRelationReferences = updateEveryEntity(\n\t\t\tupdateEveryField(({ field, entity }) => {\n\t\t\t\tconst isUpdatedRelation = (entity: Model.Entity, relation: Model.AnyRelation | null) => {\n\t\t\t\t\treturn entity.name === this.data.entityName && relation && relation.name === this.data.fieldName\n\t\t\t\t}\n\n\t\t\t\treturn acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\tvisitColumn: ({ column }) => column,\n\t\t\t\t\tvisitManyHasOne: ({ targetEntity, relation, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasMany: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t\tconst updateFieldName = updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\tconst { [this.data.fieldName]: updated, ...fields } = entity.fields\n\t\t\treturn {\n\t\t\t\t...entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...fields,\n\t\t\t\t\t[this.data.newFieldName]: { ...updated, name: this.data.newFieldName },\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t\tconst updateAclOp =\n\t\t\tthis.options.formatVersion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== this.data.entityName) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!permissions[this.data.fieldName]) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [this.data.fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t[this.data.newFieldName]: field,\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName, schema }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\tconst currentEntity = schema.model.entities[entityName]\n\t\t\t\t\t\t\t\treturn processor.process<Input.Condition<Value.FieldValue<never>> | string, never>(\n\t\t\t\t\t\t\t\t\tcurrentEntity,\n\t\t\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.column.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.relation.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined\n\t\treturn updateSchema(\n\t\t\tupdateAclOp,\n\t\t\tthis.renameColumnSubModification.getSchemaUpdater(),\n\t\t\tupdateModel(\n\t\t\t\tupdateConstraintFields,\n\t\t\t\tupdateIndexFields,\n\t\t\t\tupdateRelationReferences,\n\t\t\t\tupdateFieldName,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change field name ${this.data.entityName}.${this.data.fieldName} to ${this.data.newFieldName}` }\n\t}\n}\n\nexport interface UpdateFieldNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewFieldName: string\n\tcolumnName?: string\n}\n\nexport const updateFieldNameModification = createModificationType({\n\tid: 'updateFieldName',\n\thandler: UpdateFieldNameModificationHandler,\n})\n"],"names":["entity"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UpdateFieldNameModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/fields/UpdateFieldNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Input, Model, Schema, Value } from '@contember/schema'\nimport {\n\tSchemaUpdater,\n\tupdateAcl,\n\tupdateAclEveryEntity,\n\tupdateAclEveryPredicate,\n\tupdateAclEveryRole,\n\tupdateAclFieldPermissions,\n\tupdateEntity,\n\tupdateEveryEntity,\n\tupdateEveryField,\n\tupdateModel,\n\tupdateSchema,\n} from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { acceptFieldVisitor, PredicateDefinitionProcessor } from '@contember/schema-utils'\nimport {\n\tVERSION_ACL_PATCH,\n\tVERSION_UPDATE_CONSTRAINT_FIELDS,\n\tVERSION_UPDATE_INDEX_FIELDS,\n} from '../ModificationVersions'\nimport { changeValue } from '../utils/valueUtils'\nimport { updateColumnNameModification } from '../columns'\nimport { NoopModification } from '../NoopModification'\n\nexport class UpdateFieldNameModificationHandler implements ModificationHandler<UpdateFieldNameModificationData> {\n\tprivate renameColumnSubModification: ModificationHandler<any> = new NoopModification()\n\n\tconstructor(\n\t\tprivate readonly data: UpdateFieldNameModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tif (this.data.columnName) {\n\t\t\tthis.renameColumnSubModification = updateColumnNameModification.createHandler({\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t}, this.schema, this.options)\n\t\t}\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tthis.renameColumnSubModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst updateConstraintFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_CONSTRAINT_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tunique: entity.unique.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t })\n\t\t\t\t: undefined\n\t\tconst updateIndexFields =\n\t\t\tthis.options.formatVersion >= VERSION_UPDATE_INDEX_FIELDS\n\t\t\t\t? updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...entity,\n\t\t\t\t\t\tindexes: entity.indexes.map(unique => ({\n\t\t\t\t\t\t\t...unique,\n\t\t\t\t\t\t\tfields: unique.fields.map(changeValue(this.data.fieldName, this.data.newFieldName)),\n\t\t\t\t\t\t})),\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t: undefined\n\t\tconst updateRelationReferences = updateEveryEntity(\n\t\t\tupdateEveryField(({ field, entity }) => {\n\t\t\t\tconst isUpdatedRelation = (entity: Model.Entity, relation: Model.AnyRelation | null) => {\n\t\t\t\t\treturn entity.name === this.data.entityName && relation && relation.name === this.data.fieldName\n\t\t\t\t}\n\n\t\t\t\treturn acceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\tvisitColumn: ({ column }) => column,\n\t\t\t\t\tvisitManyHasOne: ({ targetEntity, relation, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasMany: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitOneHasOneInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyOwning: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, inversedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t\tvisitManyHasManyInverse: ({ relation, targetEntity, targetRelation }) => {\n\t\t\t\t\t\treturn isUpdatedRelation(targetEntity, targetRelation)\n\t\t\t\t\t\t\t? { ...relation, ownedBy: this.data.newFieldName }\n\t\t\t\t\t\t\t: relation\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\t\tconst updateFieldName = updateEntity(this.data.entityName, ({ entity }) => {\n\t\t\tconst { [this.data.fieldName]: updated, ...fields } = entity.fields\n\t\t\treturn {\n\t\t\t\t...entity,\n\t\t\t\tfields: {\n\t\t\t\t\t...fields,\n\t\t\t\t\t[this.data.newFieldName]: { ...updated, name: this.data.newFieldName },\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\t\tconst updateAclOp =\n\t\t\tthis.options.formatVersion >= VERSION_ACL_PATCH\n\t\t\t\t? updateAcl(\n\t\t\t\t\tupdateAclEveryRole(\n\t\t\t\t\t\tupdateAclEveryEntity(\n\t\t\t\t\t\t\tupdateAclFieldPermissions((permissions, entityName) => {\n\t\t\t\t\t\t\t\tif (entityName !== this.data.entityName) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!permissions[this.data.fieldName]) {\n\t\t\t\t\t\t\t\t\treturn permissions\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst { [this.data.fieldName]: field, ...other } = permissions\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t[this.data.newFieldName]: field,\n\t\t\t\t\t\t\t\t\t...other,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tupdateAclEveryPredicate(({ predicate, entityName, schema }) => {\n\t\t\t\t\t\t\t\tconst processor = new PredicateDefinitionProcessor(schema.model)\n\t\t\t\t\t\t\t\tconst currentEntity = schema.model.entities[entityName]\n\t\t\t\t\t\t\t\treturn processor.process<Input.Condition<Value.FieldValue<never>> | string, never>(\n\t\t\t\t\t\t\t\t\tcurrentEntity,\n\t\t\t\t\t\t\t\t\tpredicate,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\thandleColumn: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.column.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t\thandleRelation: ctx =>\n\t\t\t\t\t\t\t\t\t\t\tctx.entity.name === this.data.entityName && ctx.relation.name === this.data.fieldName\n\t\t\t\t\t\t\t\t\t\t\t\t? [this.data.newFieldName, ctx.value]\n\t\t\t\t\t\t\t\t\t\t\t\t: ctx.value,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t )\n\t\t\t\t: undefined\n\t\treturn updateSchema(\n\t\t\tupdateAclOp,\n\t\t\tthis.renameColumnSubModification.getSchemaUpdater(),\n\t\t\tupdateModel(\n\t\t\t\tupdateConstraintFields,\n\t\t\t\tupdateIndexFields,\n\t\t\t\tupdateRelationReferences,\n\t\t\t\tupdateFieldName,\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change field name ${this.data.entityName}.${this.data.fieldName} to ${this.data.newFieldName}` }\n\t}\n}\n\nexport interface UpdateFieldNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewFieldName: string\n\tcolumnName?: string\n}\n\nexport const updateFieldNameModification = createModificationType({\n\tid: 'updateFieldName',\n\thandler: UpdateFieldNameModificationHandler,\n})\n"],"names":["entity"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateIndexModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')}) on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx.fields, it.fields)))\n\t\t\t\t.map(index => createIndexModification.createModification({\n\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\tindex,\n\t\t\t\t})),\n\t\t)\n\t}\n}\n"],"names":["getIndexColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAaO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"CreateIndexModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')}) on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx.fields, it.fields)))\n\t\t\t\t.map(index => createIndexModification.createModification({\n\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\tindex,\n\t\t\t\t})),\n\t\t)\n\t}\n}\n"],"names":["getIndexColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAaO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAA;AAAA,EAE1E,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,KAAK,MAAM;AAC/B,UAAM,UAAUA,MAAAA,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAEK,UAAA,cAAcC,UAAAA,eAAe,OAAO,SAAS;AAC7C,UAAA,gBAAgB,QAAQ,IAAIA,wBAAc;AAExC,YAAA,IAAI,mBAAmB,WAAW,KAAK,cAAc,KAAK,IAAI,CAAC,GAAG;AAE/C,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AACjC,WAAAC,kBAAA;AAAA,MACNC,+BAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IACH;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,gBAAgB,KAAK,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU;AAAA,IAC9F;AAAA,EAAA;AAEF;AAEO,MAAM,0BAA0BC,oBAAAA,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,QACL,OAAO,CAAA,OAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,QAAQ,KAAK,CAAO,QAAA,UAAU,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC9G,IAAI,CAAS,UAAA,wBAAwB,mBAAmB;AAAA,QACxD,YAAY,OAAO;AAAA,QACnB;AAAA,MAAA,CACA,CAAC;AAAA,IACJ;AAAA,EAAA;AAEF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateIndexModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')}) on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx.fields, it.fields)))\n\t\t\t\t.map(index => createIndexModification.createModification({\n\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\tindex,\n\t\t\t\t})),\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAaO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"CreateIndexModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/CreateIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getIndexColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateIndexModificationHandler implements ModificationHandler<CreateIndexModificationData> {\n\tconstructor(private readonly data: CreateIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.index.fields\n\t\tconst columns = getIndexColumns({\n\t\t\tfields,\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tbuilder.sql(`CREATE INDEX ON ${tableNameId} (${columnNameIds.join(', ')})`)\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => ({\n\t\t\t\t...entity,\n\t\t\t\tindexes: [\n\t\t\t\t\t...entity.indexes,\n\t\t\t\t\tthis.data.index,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Create index(${this.data.index.fields.join(', ')}) on entity ${this.data.entityName}`,\n\t\t}\n\t}\n}\n\nexport const createIndexModification = createModificationType({\n\tid: 'createIndex',\n\thandler: CreateIndexModificationHandler,\n})\n\nexport interface CreateIndexModificationData {\n\tentityName: string\n\tindex: Model.Index\n}\n\nexport class CreateIndexDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].indexes.find(idx => deepEqual(idx.fields, it.fields)))\n\t\t\t\t.map(index => createIndexModification.createModification({\n\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\tindex,\n\t\t\t\t})),\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAaO,MAAM,+BAA2F;AAAA,EACvG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAA;AAAA,EAE1E,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,KAAK,MAAM;AAC/B,UAAM,UAAU,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAEK,UAAA,cAAc,eAAe,OAAO,SAAS;AAC7C,UAAA,gBAAgB,QAAQ,IAAI,cAAc;AAExC,YAAA,IAAI,mBAAmB,WAAW,KAAK,cAAc,KAAK,IAAI,CAAC,GAAG;AAE/C,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AACjC,WAAA;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IACH;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,gBAAgB,KAAK,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU;AAAA,IAC9F;AAAA,EAAA;AAEF;AAEO,MAAM,0BAA0B,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,kBAAoC;AAAA,EAChD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,QACL,OAAO,CAAA,OAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,QAAQ,KAAK,CAAO,QAAA,UAAU,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC9G,IAAI,CAAS,UAAA,wBAAwB,mBAAmB;AAAA,QACxD,YAAY,OAAO;AAAA,QACnB;AAAA,MAAA,CACA,CAAC;AAAA,IACJ;AAAA,EAAA;AAEF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveIndexModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/RemoveIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { getIndexColumns } from './utils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class RemoveIndexModificationHandler implements ModificationHandler<RemoveIndexModificationData> {\n\tconstructor(private readonly data: RemoveIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.getFields()\n\n\t\tconst columns = getIndexColumns({\n\t\t\tentity,\n\t\t\tfields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst indexNames = databaseMetadata.indexes.filter({ tableName: entity.tableName, columnNames: columns }).getNames()\n\n\t\tfor (const name of indexNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst fields = this.getFields()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst indexes = entity.indexes.filter(it => !deepEqual(it.fields, fields))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst fields = this.getFields()\n\t\treturn { message: `Remove index (${fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetFields() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst fields = 'indexName' in this.data\n\t\t\t? entity.indexes.find(it => it.name === this.data.indexName)?.fields\n\t\t\t: this.data.fields\n\t\tif (!fields) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn fields\n\t}\n}\n\nexport const removeIndexModification = createModificationType({\n\tid: 'removeIndex',\n\thandler: RemoveIndexModificationHandler,\n})\n\n\nexport type RemoveIndexModificationData =\n\t| {\n\t\tentityName: string\n\t\tindexName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tindexName?: never\n\t}\n\nexport class RemoveIndexDiffer implements Differ {\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(\n\t\t\t\t\tit => {\n\t\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn !updatedEntity.indexes.find(index => deepEqual(index.fields, it.fields))\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.map(index =>\n\t\t\t\t\tremoveIndexModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tfields: index.fields,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t)\n\t}\n}\n"],"names":["getIndexColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAaO,MAAM,+BAA4F;AAAA,EACxG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"RemoveIndexModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/RemoveIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { getIndexColumns } from './utils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class RemoveIndexModificationHandler implements ModificationHandler<RemoveIndexModificationData> {\n\tconstructor(private readonly data: RemoveIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.getFields()\n\n\t\tconst columns = getIndexColumns({\n\t\t\tentity,\n\t\t\tfields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst indexNames = databaseMetadata.indexes.filter({ tableName: entity.tableName, columnNames: columns }).getNames()\n\n\t\tfor (const name of indexNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst fields = this.getFields()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst indexes = entity.indexes.filter(it => !deepEqual(it.fields, fields))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst fields = this.getFields()\n\t\treturn { message: `Remove index (${fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetFields() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst fields = 'indexName' in this.data\n\t\t\t? entity.indexes.find(it => it.name === this.data.indexName)?.fields\n\t\t\t: this.data.fields\n\t\tif (!fields) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn fields\n\t}\n}\n\nexport const removeIndexModification = createModificationType({\n\tid: 'removeIndex',\n\thandler: RemoveIndexModificationHandler,\n})\n\n\nexport type RemoveIndexModificationData =\n\t| {\n\t\tentityName: string\n\t\tindexName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tindexName?: never\n\t}\n\nexport class RemoveIndexDiffer implements Differ {\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(\n\t\t\t\t\tit => {\n\t\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn !updatedEntity.indexes.find(index => deepEqual(index.fields, it.fields))\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.map(index =>\n\t\t\t\t\tremoveIndexModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tfields: index.fields,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t)\n\t}\n}\n"],"names":["getIndexColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAaO,MAAM,+BAA4F;AAAA,EACxG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAA;AAAA,EAE1E,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,UAAU;AAE9B,UAAM,UAAUA,MAAAA,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAED,UAAM,aAAa,iBAAiB,QAAQ,OAAO,EAAE,WAAW,OAAO,WAAW,aAAa,QAAS,CAAA,EAAE,SAAS;AAEnH,eAAW,QAAQ,YAAY;AAC9B,cAAQ,IAAI,cAAcC,UAAAA,eAAe,IAAI,CAAC,EAAE;AAAA,IAAA;AAEtB,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AAClC,UAAA,SAAS,KAAK,UAAU;AACvB,WAAAC,kBAAA;AAAA,MACNC,+BAAa,KAAK,KAAK,YAAY,CAAC,EAAE,aAAa;AAC5C,cAAA,UAAU,OAAO,QAAQ,OAAO,CAAA,OAAM,CAAC,UAAU,GAAG,QAAQ,MAAM,CAAC;AAClE,eAAA;AAAA,UACN,GAAG;AAAA,UACH;AAAA,QACD;AAAA,MACA,CAAA;AAAA,IACF;AAAA,EAAA;AAAA,EAGD,WAAW;AACJ,UAAA,SAAS,KAAK,UAAU;AACvB,WAAA,EAAE,SAAS,iBAAiB,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU,GAAG;AAAA,EAAA;AAAA,EAG3F,YAAY;AACX,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,SAAS,eAAe,KAAK,OAChC,OAAO,QAAQ,KAAK,CAAA,OAAM,GAAG,SAAS,KAAK,KAAK,SAAS,GAAG,SAC5D,KAAK,KAAK;AACb,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA;AAAA,EAAA;AAET;AAEO,MAAM,0BAA0BC,oBAAAA,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAeM,MAAM,kBAAoC;AAAA,EAEhD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,eAAe,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC3D,OAAO,QACL;AAAA,QACA,CAAM,OAAA;AACL,gBAAM,gBAAgB,cAAc,MAAM,SAAS,OAAO,IAAI;AAC9D,cAAI,CAAC,eAAe;AACZ,mBAAA;AAAA,UAAA;AAED,iBAAA,CAAC,cAAc,QAAQ,KAAK,CAAA,UAAS,UAAU,MAAM,QAAQ,GAAG,MAAM,CAAC;AAAA,QAAA;AAAA,MAC/E,EAEA;AAAA,QAAI,CAAA,UACJ,wBAAwB,mBAAmB;AAAA,UAC1C,YAAY,OAAO;AAAA,UACnB,QAAQ,MAAM;AAAA,QACd,CAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAEF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveIndexModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/RemoveIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { getIndexColumns } from './utils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class RemoveIndexModificationHandler implements ModificationHandler<RemoveIndexModificationData> {\n\tconstructor(private readonly data: RemoveIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.getFields()\n\n\t\tconst columns = getIndexColumns({\n\t\t\tentity,\n\t\t\tfields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst indexNames = databaseMetadata.indexes.filter({ tableName: entity.tableName, columnNames: columns }).getNames()\n\n\t\tfor (const name of indexNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst fields = this.getFields()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst indexes = entity.indexes.filter(it => !deepEqual(it.fields, fields))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst fields = this.getFields()\n\t\treturn { message: `Remove index (${fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetFields() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst fields = 'indexName' in this.data\n\t\t\t? entity.indexes.find(it => it.name === this.data.indexName)?.fields\n\t\t\t: this.data.fields\n\t\tif (!fields) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn fields\n\t}\n}\n\nexport const removeIndexModification = createModificationType({\n\tid: 'removeIndex',\n\thandler: RemoveIndexModificationHandler,\n})\n\n\nexport type RemoveIndexModificationData =\n\t| {\n\t\tentityName: string\n\t\tindexName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tindexName?: never\n\t}\n\nexport class RemoveIndexDiffer implements Differ {\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(\n\t\t\t\t\tit => {\n\t\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn !updatedEntity.indexes.find(index => deepEqual(index.fields, it.fields))\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.map(index =>\n\t\t\t\t\tremoveIndexModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tfields: index.fields,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAaO,MAAM,+BAA4F;AAAA,EACxG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"RemoveIndexModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/RemoveIndexModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n} from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { getIndexColumns } from './utils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class RemoveIndexModificationHandler implements ModificationHandler<RemoveIndexModificationData> {\n\tconstructor(private readonly data: RemoveIndexModificationData, private readonly schema: Schema) {}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tif (entity.view) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.getFields()\n\n\t\tconst columns = getIndexColumns({\n\t\t\tentity,\n\t\t\tfields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tconst indexNames = databaseMetadata.indexes.filter({ tableName: entity.tableName, columnNames: columns }).getNames()\n\n\t\tfor (const name of indexNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst fields = this.getFields()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst indexes = entity.indexes.filter(it => !deepEqual(it.fields, fields))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tindexes,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst fields = this.getFields()\n\t\treturn { message: `Remove index (${fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetFields() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst fields = 'indexName' in this.data\n\t\t\t? entity.indexes.find(it => it.name === this.data.indexName)?.fields\n\t\t\t: this.data.fields\n\t\tif (!fields) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn fields\n\t}\n}\n\nexport const removeIndexModification = createModificationType({\n\tid: 'removeIndex',\n\thandler: RemoveIndexModificationHandler,\n})\n\n\nexport type RemoveIndexModificationData =\n\t| {\n\t\tentityName: string\n\t\tindexName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tindexName?: never\n\t}\n\nexport class RemoveIndexDiffer implements Differ {\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.indexes\n\t\t\t\t.filter(\n\t\t\t\t\tit => {\n\t\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn !updatedEntity.indexes.find(index => deepEqual(index.fields, it.fields))\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\t.map(index =>\n\t\t\t\t\tremoveIndexModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tfields: index.fields,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAaO,MAAM,+BAA4F;AAAA,EACxG,YAA6B,MAAoD,QAAgB;AAApE,SAAA,OAAA;AAAoD,SAAA,SAAA;AAAA,EAAA;AAAA,EAE1E,UAAU,SAA2B,EAAE,kBAAkB,8BAAyE;AACxI,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IAAA;AAEK,UAAA,SAAS,KAAK,UAAU;AAE9B,UAAM,UAAU,gBAAgB;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IAAA,CACnB;AAED,UAAM,aAAa,iBAAiB,QAAQ,OAAO,EAAE,WAAW,OAAO,WAAW,aAAa,QAAS,CAAA,EAAE,SAAS;AAEnH,eAAW,QAAQ,YAAY;AAC9B,cAAQ,IAAI,cAAc,eAAe,IAAI,CAAC,EAAE;AAAA,IAAA;AAEtB,+BAAA;AAAA,EAAA;AAAA,EAGrB,mBAAkC;AAClC,UAAA,SAAS,KAAK,UAAU;AACvB,WAAA;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,aAAa;AAC5C,cAAA,UAAU,OAAO,QAAQ,OAAO,CAAA,OAAM,CAAC,UAAU,GAAG,QAAQ,MAAM,CAAC;AAClE,eAAA;AAAA,UACN,GAAG;AAAA,UACH;AAAA,QACD;AAAA,MACA,CAAA;AAAA,IACF;AAAA,EAAA;AAAA,EAGD,WAAW;AACJ,UAAA,SAAS,KAAK,UAAU;AACvB,WAAA,EAAE,SAAS,iBAAiB,OAAO,KAAK,IAAI,CAAC,eAAe,KAAK,KAAK,UAAU,GAAG;AAAA,EAAA;AAAA,EAG3F,YAAY;AACX,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,SAAS,eAAe,KAAK,OAChC,OAAO,QAAQ,KAAK,CAAA,OAAM,GAAG,SAAS,KAAK,KAAK,SAAS,GAAG,SAC5D,KAAK,KAAK;AACb,QAAI,CAAC,QAAQ;AACZ,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA;AAAA,EAAA;AAET;AAEO,MAAM,0BAA0B,uBAAuB;AAAA,EAC7D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAeM,MAAM,kBAAoC;AAAA,EAEhD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,eAAe,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC3D,OAAO,QACL;AAAA,QACA,CAAM,OAAA;AACL,gBAAM,gBAAgB,cAAc,MAAM,SAAS,OAAO,IAAI;AAC9D,cAAI,CAAC,eAAe;AACZ,mBAAA;AAAA,UAAA;AAED,iBAAA,CAAC,cAAc,QAAQ,KAAK,CAAA,UAAS,UAAU,MAAM,QAAQ,GAAG,MAAM,CAAC;AAAA,QAAA;AAAA,MAC/E,EAEA;AAAA,QAAI,CAAA,UACJ,wBAAwB,mBAAmB;AAAA,UAC1C,YAAY,OAAO;AAAA,UACnB,QAAQ,MAAM;AAAA,QACd,CAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAEF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/utils.ts"],"sourcesContent":["import { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport const getIndexColumns = ({ entity, fields, model }: { fields: readonly string[]; model: Model.Schema; entity: Model.Entity }) => {\n\treturn fields.map(fieldName => {\n\t\treturn acceptFieldVisitor(model, entity, fieldName, {\n\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\treturn column.columnName\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t})\n\t})\n}\n"],"names":["acceptFieldVisitor"],"mappings":";;;AAGO,MAAM,kBAAkB,CAAC,EAAE,QAAQ,QAAQ,YAAsF;AAChI,SAAA,OAAO,IAAI,CAAa,cAAA;AACvB,WAAAA,+BAAmB,OAAO,QAAQ,WAAW;AAAA,MACnD,aAAa,CAAC,EAAE,aAAa;AAC5B,eAAO,OAAO;AAAA,MACf;AAAA,MACA,iBAAiB,CAAC,EAAE,eAAe;AAClC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,sBAAsB,CAAC,EAAE,eAAe;AACvC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,iBAAiB,MAAM;AACtB,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,uBAAuB,MAAM;AAC5B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,MACA,wBAAwB,MAAM;AAC7B,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,yBAAyB,MAAM;AAC9B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/utils.ts"],"sourcesContent":["import { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport const getIndexColumns = ({ entity, fields, model }: { fields: readonly string[]; model: Model.Schema; entity: Model.Entity }) => {\n\treturn fields.map(fieldName => {\n\t\treturn acceptFieldVisitor(model, entity, fieldName, {\n\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\treturn column.columnName\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t})\n\t})\n}\n"],"names":["acceptFieldVisitor"],"mappings":";;;AAGO,MAAM,kBAAkB,CAAC,EAAE,QAAQ,QAAQ,YAAsF;AAChI,SAAA,OAAO,IAAI,CAAa,cAAA;AACvB,WAAAA,+BAAmB,OAAO,QAAQ,WAAW;AAAA,MACnD,aAAa,CAAC,EAAE,aAAa;AAC5B,eAAO,OAAO;AAAA,MACf;AAAA,MACA,iBAAiB,CAAC,EAAE,eAAe;AAClC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,sBAAsB,CAAC,EAAE,eAAe;AACvC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,iBAAiB,MAAM;AACtB,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,uBAAuB,MAAM;AAC5B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,MACA,wBAAwB,MAAM;AAC7B,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,yBAAyB,MAAM;AAC9B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAAA;AAAA,IAC7F,CACA;AAAA,EAAA,CACD;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/utils.ts"],"sourcesContent":["import { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport const getIndexColumns = ({ entity, fields, model }: { fields: readonly string[]; model: Model.Schema; entity: Model.Entity }) => {\n\treturn fields.map(fieldName => {\n\t\treturn acceptFieldVisitor(model, entity, fieldName, {\n\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\treturn column.columnName\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t})\n\t})\n}\n"],"names":[],"mappings":";AAGO,MAAM,kBAAkB,CAAC,EAAE,QAAQ,QAAQ,YAAsF;AAChI,SAAA,OAAO,IAAI,CAAa,cAAA;AACvB,WAAA,mBAAmB,OAAO,QAAQ,WAAW;AAAA,MACnD,aAAa,CAAC,EAAE,aAAa;AAC5B,eAAO,OAAO;AAAA,MACf;AAAA,MACA,iBAAiB,CAAC,EAAE,eAAe;AAClC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,sBAAsB,CAAC,EAAE,eAAe;AACvC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,iBAAiB,MAAM;AACtB,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,uBAAuB,MAAM;AAC5B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,MACA,wBAAwB,MAAM;AAC7B,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,yBAAyB,MAAM;AAC9B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/indexes/utils.ts"],"sourcesContent":["import { acceptFieldVisitor } from '@contember/schema-utils'\nimport { Model } from '@contember/schema'\n\nexport const getIndexColumns = ({ entity, fields, model }: { fields: readonly string[]; model: Model.Schema; entity: Model.Entity }) => {\n\treturn fields.map(fieldName => {\n\t\treturn acceptFieldVisitor(model, entity, fieldName, {\n\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\treturn column.columnName\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ relation }) => {\n\t\t\t\treturn relation.joiningColumn.columnName\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on 1:1 inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error(`Cannot create index on m:m inverse relation in ${entity.name}.${fieldName}`)\n\t\t\t},\n\t\t})\n\t})\n}\n"],"names":[],"mappings":";AAGO,MAAM,kBAAkB,CAAC,EAAE,QAAQ,QAAQ,YAAsF;AAChI,SAAA,OAAO,IAAI,CAAa,cAAA;AACvB,WAAA,mBAAmB,OAAO,QAAQ,WAAW;AAAA,MACnD,aAAa,CAAC,EAAE,aAAa;AAC5B,eAAO,OAAO;AAAA,MACf;AAAA,MACA,iBAAiB,CAAC,EAAE,eAAe;AAClC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,sBAAsB,CAAC,EAAE,eAAe;AACvC,eAAO,SAAS,cAAc;AAAA,MAC/B;AAAA,MACA,iBAAiB,MAAM;AACtB,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,uBAAuB,MAAM;AAC5B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAC7F;AAAA,MACA,wBAAwB,MAAM;AAC7B,cAAM,IAAI,MAAM,0CAA0C,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MACrF;AAAA,MACA,yBAAyB,MAAM;AAC9B,cAAM,IAAI,MAAM,kDAAkD,OAAO,IAAI,IAAI,SAAS,EAAE;AAAA,MAAA;AAAA,IAC7F,CACA;AAAA,EAAA,CACD;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvertOneHasManyToManyHasManyRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isInverseRelation, isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { updateFieldNameModification } from '../fields'\n\nexport class ConvertOneHasManyToManyHasManyRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToManyHasManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tthis.subModification = updateFieldNameModification.createHandler(\n\t\t\t{\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\tnewFieldName: this.data.owningSide.name,\n\t\t\t},\n\t\t\tschema,\n\t\t\tthis.options,\n\t\t)\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst { relation: oldRelation } = this.getRelation()\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\n\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, normalizeManyHasManyRelation(this.data.owningSide))\n\t\tconst joiningTable = this.data.owningSide.joiningTable\n\t\tbuilder.sql(`\n\t\t\tINSERT INTO ${wrapIdentifier(joiningTable.tableName)} (\n\t\t\t\t${wrapIdentifier(joiningTable.joiningColumn.columnName)},\n\t\t\t\t${wrapIdentifier(joiningTable.inverseJoiningColumn.columnName)}\n\t\t\t\t)\n\t\t\tSELECT ${wrapIdentifier(entity.primaryColumn)}, ${wrapIdentifier(oldRelation.joiningColumn.columnName)}\n\t\t\tFROM ${wrapIdentifier(entity.tableName)}\n\t\t\tWHERE ${wrapIdentifier(oldRelation.joiningColumn.columnName)} IS NOT NULL`)\n\n\t\tbuilder.dropColumn(entity.tableName, oldRelation.joiningColumn.columnName)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName } = this.data\n\t\treturn updateSchema(\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tupdateModel(updateEntity(entityName, addField(normalizeManyHasManyRelation(this.data.owningSide)))),\n\t\t\tthis.data.inverseSide ? updateModel(updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasMany relation to ManyHasMany on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation(): { entity: Model.Entity; relation: Model.ManyHasOneRelation } {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport const convertOneHasManyToManyHasManyRelationModification = createModificationType({\n\tid: 'convertOneHasManyToManyHasManyRelation',\n\thandler: ConvertOneHasManyToManyHasManyRelationModificationHandler,\n})\n\nexport interface ConvertOneHasManyToManyHasManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\towningSide: PartialManyHasManyRelation\n\tinverseSide?: Model.ManyHasManyInverseRelation\n}\n\nexport class ConvertOneHasManyToManyHasManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisInverseRelation(originalRelation) &&\n\t\t\t\tisInverseRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasMany &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasMany\n\t\t\t) {\n\t\t\t\tconst owningOldName = originalRelation.ownedBy\n\t\t\t\tconst owningNewName = updatedRelation.ownedBy\n\t\t\t\tconst owningSide = updatedSchema.model.entities[updatedRelation.target].fields[owningNewName]\n\t\t\t\tif (owningSide.type !== Model.RelationType.ManyHasMany || !isOwningRelation(owningSide)) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn convertOneHasManyToManyHasManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedRelation.target,\n\t\t\t\t\tfieldName: owningOldName,\n\t\t\t\t\towningSide,\n\t\t\t\t\tinverseSide: updatedRelation,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","createJunctionTableSql","normalizeManyHasManyRelation","wrapIdentifier","updateSchema","updateModel","updateEntity","addField","Model","createModificationType","updateRelations","isInverseRelation","isOwningRelation"],"mappings":";;;;;;;;;;;;;;AAgBO,MAAM,0DAAiJ;AAAA,EAG7J,YACkB,MACAA,SACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAAA;AACA,SAAA,UAAA;AALV,kBAAA,MAAA,iBAAA;AAOP,SAAK,kBAAkBC,4BAAAA,4BAA4B;AAAA,MAClD;AAAA,QACC,YAAY,KAAK,KAAK;AAAA,QACtB,WAAW,KAAK,KAAK;AAAA,QACrB,cAAc,KAAK,KAAK,WAAW;AAAA,MACpC;AAAA,MACAD;AAAA,MACA,KAAK;AAAA,
|
|
1
|
+
{"version":3,"file":"ConvertOneHasManyToManyHasManyRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isInverseRelation, isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { updateFieldNameModification } from '../fields'\n\nexport class ConvertOneHasManyToManyHasManyRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToManyHasManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tthis.subModification = updateFieldNameModification.createHandler(\n\t\t\t{\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\tnewFieldName: this.data.owningSide.name,\n\t\t\t},\n\t\t\tschema,\n\t\t\tthis.options,\n\t\t)\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst { relation: oldRelation } = this.getRelation()\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\n\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, normalizeManyHasManyRelation(this.data.owningSide))\n\t\tconst joiningTable = this.data.owningSide.joiningTable\n\t\tbuilder.sql(`\n\t\t\tINSERT INTO ${wrapIdentifier(joiningTable.tableName)} (\n\t\t\t\t${wrapIdentifier(joiningTable.joiningColumn.columnName)},\n\t\t\t\t${wrapIdentifier(joiningTable.inverseJoiningColumn.columnName)}\n\t\t\t\t)\n\t\t\tSELECT ${wrapIdentifier(entity.primaryColumn)}, ${wrapIdentifier(oldRelation.joiningColumn.columnName)}\n\t\t\tFROM ${wrapIdentifier(entity.tableName)}\n\t\t\tWHERE ${wrapIdentifier(oldRelation.joiningColumn.columnName)} IS NOT NULL`)\n\n\t\tbuilder.dropColumn(entity.tableName, oldRelation.joiningColumn.columnName)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName } = this.data\n\t\treturn updateSchema(\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tupdateModel(updateEntity(entityName, addField(normalizeManyHasManyRelation(this.data.owningSide)))),\n\t\t\tthis.data.inverseSide ? updateModel(updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasMany relation to ManyHasMany on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation(): { entity: Model.Entity; relation: Model.ManyHasOneRelation } {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport const convertOneHasManyToManyHasManyRelationModification = createModificationType({\n\tid: 'convertOneHasManyToManyHasManyRelation',\n\thandler: ConvertOneHasManyToManyHasManyRelationModificationHandler,\n})\n\nexport interface ConvertOneHasManyToManyHasManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\towningSide: PartialManyHasManyRelation\n\tinverseSide?: Model.ManyHasManyInverseRelation\n}\n\nexport class ConvertOneHasManyToManyHasManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisInverseRelation(originalRelation) &&\n\t\t\t\tisInverseRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasMany &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasMany\n\t\t\t) {\n\t\t\t\tconst owningOldName = originalRelation.ownedBy\n\t\t\t\tconst owningNewName = updatedRelation.ownedBy\n\t\t\t\tconst owningSide = updatedSchema.model.entities[updatedRelation.target].fields[owningNewName]\n\t\t\t\tif (owningSide.type !== Model.RelationType.ManyHasMany || !isOwningRelation(owningSide)) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn convertOneHasManyToManyHasManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedRelation.target,\n\t\t\t\t\tfieldName: owningOldName,\n\t\t\t\t\towningSide,\n\t\t\t\t\tinverseSide: updatedRelation,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","createJunctionTableSql","normalizeManyHasManyRelation","wrapIdentifier","updateSchema","updateModel","updateEntity","addField","Model","createModificationType","updateRelations","isInverseRelation","isOwningRelation"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvertOneHasManyToManyHasManyRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isInverseRelation, isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { updateFieldNameModification } from '../fields'\n\nexport class ConvertOneHasManyToManyHasManyRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToManyHasManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tthis.subModification = updateFieldNameModification.createHandler(\n\t\t\t{\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\tnewFieldName: this.data.owningSide.name,\n\t\t\t},\n\t\t\tschema,\n\t\t\tthis.options,\n\t\t)\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst { relation: oldRelation } = this.getRelation()\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\n\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, normalizeManyHasManyRelation(this.data.owningSide))\n\t\tconst joiningTable = this.data.owningSide.joiningTable\n\t\tbuilder.sql(`\n\t\t\tINSERT INTO ${wrapIdentifier(joiningTable.tableName)} (\n\t\t\t\t${wrapIdentifier(joiningTable.joiningColumn.columnName)},\n\t\t\t\t${wrapIdentifier(joiningTable.inverseJoiningColumn.columnName)}\n\t\t\t\t)\n\t\t\tSELECT ${wrapIdentifier(entity.primaryColumn)}, ${wrapIdentifier(oldRelation.joiningColumn.columnName)}\n\t\t\tFROM ${wrapIdentifier(entity.tableName)}\n\t\t\tWHERE ${wrapIdentifier(oldRelation.joiningColumn.columnName)} IS NOT NULL`)\n\n\t\tbuilder.dropColumn(entity.tableName, oldRelation.joiningColumn.columnName)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName } = this.data\n\t\treturn updateSchema(\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tupdateModel(updateEntity(entityName, addField(normalizeManyHasManyRelation(this.data.owningSide)))),\n\t\t\tthis.data.inverseSide ? updateModel(updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasMany relation to ManyHasMany on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation(): { entity: Model.Entity; relation: Model.ManyHasOneRelation } {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport const convertOneHasManyToManyHasManyRelationModification = createModificationType({\n\tid: 'convertOneHasManyToManyHasManyRelation',\n\thandler: ConvertOneHasManyToManyHasManyRelationModificationHandler,\n})\n\nexport interface ConvertOneHasManyToManyHasManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\towningSide: PartialManyHasManyRelation\n\tinverseSide?: Model.ManyHasManyInverseRelation\n}\n\nexport class ConvertOneHasManyToManyHasManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisInverseRelation(originalRelation) &&\n\t\t\t\tisInverseRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasMany &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasMany\n\t\t\t) {\n\t\t\t\tconst owningOldName = originalRelation.ownedBy\n\t\t\t\tconst owningNewName = updatedRelation.ownedBy\n\t\t\t\tconst owningSide = updatedSchema.model.entities[updatedRelation.target].fields[owningNewName]\n\t\t\t\tif (owningSide.type !== Model.RelationType.ManyHasMany || !isOwningRelation(owningSide)) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn convertOneHasManyToManyHasManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedRelation.target,\n\t\t\t\t\tfieldName: owningOldName,\n\t\t\t\t\towningSide,\n\t\t\t\t\tinverseSide: updatedRelation,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAgBO,MAAM,0DAAiJ;AAAA,EAG7J,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AALV,kBAAA,MAAA,iBAAA;AAOP,SAAK,kBAAkB,4BAA4B;AAAA,MAClD;AAAA,QACC,YAAY,KAAK,KAAK;AAAA,QACtB,WAAW,KAAK,KAAK;AAAA,QACrB,cAAc,KAAK,KAAK,WAAW;AAAA,MACpC;AAAA,MACA;AAAA,MACA,KAAK;AAAA,
|
|
1
|
+
{"version":3,"file":"ConvertOneHasManyToManyHasManyRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler, ModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isInverseRelation, isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { createJunctionTableSql } from '../utils/createJunctionTable'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { normalizeManyHasManyRelation, PartialManyHasManyRelation } from './normalization'\nimport { updateFieldNameModification } from '../fields'\n\nexport class ConvertOneHasManyToManyHasManyRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToManyHasManyRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToManyHasManyRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tthis.subModification = updateFieldNameModification.createHandler(\n\t\t\t{\n\t\t\t\tentityName: this.data.entityName,\n\t\t\t\tfieldName: this.data.fieldName,\n\t\t\t\tnewFieldName: this.data.owningSide.name,\n\t\t\t},\n\t\t\tschema,\n\t\t\tthis.options,\n\t\t)\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { systemSchema }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst targetEntity = this.schema.model.entities[this.data.owningSide.target]\n\t\tconst { relation: oldRelation } = this.getRelation()\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\n\t\tcreateJunctionTableSql(builder, systemSchema, this.schema, entity, targetEntity, normalizeManyHasManyRelation(this.data.owningSide))\n\t\tconst joiningTable = this.data.owningSide.joiningTable\n\t\tbuilder.sql(`\n\t\t\tINSERT INTO ${wrapIdentifier(joiningTable.tableName)} (\n\t\t\t\t${wrapIdentifier(joiningTable.joiningColumn.columnName)},\n\t\t\t\t${wrapIdentifier(joiningTable.inverseJoiningColumn.columnName)}\n\t\t\t\t)\n\t\t\tSELECT ${wrapIdentifier(entity.primaryColumn)}, ${wrapIdentifier(oldRelation.joiningColumn.columnName)}\n\t\t\tFROM ${wrapIdentifier(entity.tableName)}\n\t\t\tWHERE ${wrapIdentifier(oldRelation.joiningColumn.columnName)} IS NOT NULL`)\n\n\t\tbuilder.dropColumn(entity.tableName, oldRelation.joiningColumn.columnName)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { entityName } = this.data\n\t\treturn updateSchema(\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tupdateModel(updateEntity(entityName, addField(normalizeManyHasManyRelation(this.data.owningSide)))),\n\t\t\tthis.data.inverseSide ? updateModel(updateEntity(this.data.owningSide.target, addField(this.data.inverseSide))) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts OneHasMany relation to ManyHasMany on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t}\n\t}\n\n\tprivate getRelation(): { entity: Model.Entity; relation: Model.ManyHasOneRelation } {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport const convertOneHasManyToManyHasManyRelationModification = createModificationType({\n\tid: 'convertOneHasManyToManyHasManyRelation',\n\thandler: ConvertOneHasManyToManyHasManyRelationModificationHandler,\n})\n\nexport interface ConvertOneHasManyToManyHasManyRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\towningSide: PartialManyHasManyRelation\n\tinverseSide?: Model.ManyHasManyInverseRelation\n}\n\nexport class ConvertOneHasManyToManyHasManyRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisInverseRelation(originalRelation) &&\n\t\t\t\tisInverseRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.OneHasMany &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.ManyHasMany\n\t\t\t) {\n\t\t\t\tconst owningOldName = originalRelation.ownedBy\n\t\t\t\tconst owningNewName = updatedRelation.ownedBy\n\t\t\t\tconst owningSide = updatedSchema.model.entities[updatedRelation.target].fields[owningNewName]\n\t\t\t\tif (owningSide.type !== Model.RelationType.ManyHasMany || !isOwningRelation(owningSide)) {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t\treturn convertOneHasManyToManyHasManyRelationModification.createModification({\n\t\t\t\t\tentityName: updatedRelation.target,\n\t\t\t\t\tfieldName: owningOldName,\n\t\t\t\t\towningSide,\n\t\t\t\t\tinverseSide: updatedRelation,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvertOneHasManyToOneHasOneRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneHasManyToOneHasOneRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToOneHasOneRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToOneHasOneRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.indexes.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.ManyHasOneRelation, Model.OneHasOneOwningRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t),\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasManyRelation, Model.OneHasOneInverseRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t\tnullable: true,\n\t\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts ManyHasOne relation to OneHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning: 'Make sure no conflicting rows exists, otherwise this may fail in runtime.',\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneHasManyToOneHasOneRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneHasManyToOneHasOneRelationModification = createModificationType({\n\tid: 'convertOneHasManyToOneHasOneRelation',\n\thandler: ConvertOneHasManyToOneHasOneRelationModificationHandler,\n})\n\nexport class ConvertOneHasManyToOneHasOneRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.ManyHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneHasManyToOneHasOneRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","NoopModification","wrapIdentifier","updateSchema","updateModel","updateEntity","updateField","Model","createModificationType","updateRelations","isOwningRelation"],"mappings":";;;;;;;;;;;;;AAgBO,MAAM,wDAA6I;AAAA,EAGzJ,YACkB,MACAA,SACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAAA;AACA,SAAA,UAAA;AALV,kBAAA,MAAA,iBAAA;AAOP,UAAM,EAAE,SAAA,IAAa,KAAK,YAAY;AACtC,SAAK,kBAAkB,KAAK,2BAA2B,SAAS,aAC/DC,4BAAAA,4BAA4B;AAAA,MAC3B;AAAA,QACC,YAAY,SAAS;AAAA,QACrB,WAAW,SAAS;AAAA,QACpB,cAAc,KAAK;AAAA,MACpB;AAAA,MACAD;AAAA,MACA,KAAK;AAAA,
|
|
1
|
+
{"version":3,"file":"ConvertOneHasManyToOneHasOneRelationModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneHasManyToOneHasOneRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToOneHasOneRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToOneHasOneRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.indexes.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.ManyHasOneRelation, Model.OneHasOneOwningRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t),\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasManyRelation, Model.OneHasOneInverseRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t\tnullable: true,\n\t\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts ManyHasOne relation to OneHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning: 'Make sure no conflicting rows exists, otherwise this may fail in runtime.',\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneHasManyToOneHasOneRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneHasManyToOneHasOneRelationModification = createModificationType({\n\tid: 'convertOneHasManyToOneHasOneRelation',\n\thandler: ConvertOneHasManyToOneHasOneRelationModificationHandler,\n})\n\nexport class ConvertOneHasManyToOneHasOneRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.ManyHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneHasManyToOneHasOneRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":["schema","updateFieldNameModification","NoopModification","wrapIdentifier","updateSchema","updateModel","updateEntity","updateField","Model","createModificationType","updateRelations","isOwningRelation"],"mappings":";;;;;;;;;;;;;AAgBO,MAAM,wDAA6I;AAAA,EAGzJ,YACkB,MACAA,SACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAAA;AACA,SAAA,UAAA;AALV,kBAAA,MAAA,iBAAA;AAOP,UAAM,EAAE,SAAA,IAAa,KAAK,YAAY;AACtC,SAAK,kBAAkB,KAAK,2BAA2B,SAAS,aAC/DC,4BAAAA,4BAA4B;AAAA,MAC3B;AAAA,QACC,YAAY,SAAS;AAAA,QACrB,WAAW,SAAS;AAAA,QACpB,cAAc,KAAK;AAAA,MACpB;AAAA,MACAD;AAAA,MACA,KAAK;AAAA,IACN,IACE,IAAIE,iBAAAA,iBAAiB;AAAA,EAAA;AAAA,EAGlB,UAAU,SAA2B,SAAoD;AAC/F,UAAM,EAAE,QAAQ,aAAa,KAAK,YAAY;AACxC,UAAA,aAAa,SAAS,cAAc;AAEpC,UAAA,cAAcC,UAAAA,eAAe,OAAO,SAAS;AAC7C,UAAA,eAAeA,yBAAe,UAAU;AAE9C,UAAM,wBAAwB,QAAQ,iBAAiB,QAAQ,OAAO;AAAA,MACrE,WAAW,OAAO;AAAA,MAClB,aAAa,CAAC,UAAU;AAAA,IACxB,CAAA,EAAE,SAAS;AAEZ,eAAW,QAAQ,uBAAuB;AACzC,cAAQ,IAAI,cAAcA,UAAAA,eAAe,IAAI,CAAC,EAAE;AAAA,IAAA;AAEjD,YAAQ,IAAI,eAAe,WAAW,gBAAgB,YAAY,GAAG;AAErE,YAAQ,2BAA2B;AAE9B,SAAA,gBAAgB,UAAU,SAAS,OAAO;AAAA,EAAA;AAAA,EAGzC,mBAAkC;AACxC,UAAM,EAAE,SAAA,IAAa,KAAK,YAAY;AACtC,UAAM,EAAE,YAAY,UAAU,IAAI,KAAK;AACvC,UAAM,mBAAmB,KAAK,KAAK,2BAA2B,SAAS;AAChE,WAAAC,kBAAA;AAAA,MACNC,kBAAA;AAAA,QACCC,kBAAA;AAAA,UACC;AAAA,UACAC,kBAAA;AAAA,YACC;AAAA,YACA,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe;AAAA,cACnC,MAAMC,OAAAA,MAAM,aAAa;AAAA,cACzB,GAAG;AAAA,YACJ;AAAA,UAAA;AAAA,QACD;AAAA,MAEF;AAAA,MACA,KAAK,gBAAgB,iBAAiB;AAAA,MACtC,mBACCH,kBAAA;AAAA,QACCC,kBAAA;AAAA,UACC,SAAS;AAAA,UACTC,kBAAA;AAAA,YACC;AAAA,YACA,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe;AAAA,cACnC,MAAMC,OAAAA,MAAM,aAAa;AAAA,cACzB,UAAU;AAAA,cACV,GAAG;AAAA,YACJ;AAAA,UAAA;AAAA,QACD;AAAA,MACD,IACG;AAAA,IACN;AAAA,EAAA;AAAA,EAGD,WAAW;AACH,WAAA;AAAA,MACN,SAAS,gDAAgD,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;AAAA,MACpG,gBAAgB;AAAA,IACjB;AAAA,EAAA;AAAA,EAGO,cAAc;AACrB,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,WAAW,OAAO,OAAO,KAAK,KAAK,SAAS;AAClD,QAAI,SAAS,SAASA,aAAM,aAAa,YAAY;AACpD,YAAM,IAAI,MAAM;AAAA,IAAA;AAEV,WAAA,EAAE,QAAQ,SAAS;AAAA,EAAA;AAE5B;AAQO,MAAM,mDAAmDC,oBAAAA,uBAAuB;AAAA,EACtF,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,2CAA6D;AAAA,EACzE,WAAW,gBAAwB,eAAuB;AAClD,WAAAC,UAAAA,gBAAgB,gBAAgB,eAAe,CAAC,EAAE,kBAAkB,iBAAiB,oBAAoB;AAC/G,UACCC,YAAAA,iBAAiB,gBAAgB,KACjCA,YAAA,iBAAiB,eAAe,KAChC,iBAAiB,SAASH,OAAA,MAAM,aAAa,cAC7C,gBAAgB,SAASA,OAAA,MAAM,aAAa,WAC3C;AACD,cAAM,uBAAuB,iBAAiB,cAAc,gBAAgB,cAAc,iBAAiB,eAAe,gBAAgB;AAC1I,eAAO,iDAAiD,mBAAmB;AAAA,UAC1E,YAAY,cAAc;AAAA,UAC1B,WAAW,gBAAgB;AAAA,UAC3B,GAAI,uBAAuB;AAAA,YAC1B,yBAAyB,gBAAgB;AAAA,UAAA,IACtC,CAAA;AAAA,QAAC,CACL;AAAA,MAAA;AAEK,aAAA;AAAA,IAAA,CACP;AAAA,EAAA;AAEH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvertOneHasManyToOneHasOneRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneHasManyToOneHasOneRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToOneHasOneRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToOneHasOneRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.indexes.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.ManyHasOneRelation, Model.OneHasOneOwningRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t),\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasManyRelation, Model.OneHasOneInverseRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t\tnullable: true,\n\t\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts ManyHasOne relation to OneHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning: 'Make sure no conflicting rows exists, otherwise this may fail in runtime.',\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneHasManyToOneHasOneRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneHasManyToOneHasOneRelationModification = createModificationType({\n\tid: 'convertOneHasManyToOneHasOneRelation',\n\thandler: ConvertOneHasManyToOneHasOneRelationModificationHandler,\n})\n\nexport class ConvertOneHasManyToOneHasOneRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.ManyHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneHasManyToOneHasOneRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAgBO,MAAM,wDAA6I;AAAA,EAGzJ,YACkB,MACA,QACA,SAChB;AAHgB,SAAA,OAAA;AACA,SAAA,SAAA;AACA,SAAA,UAAA;AALV,kBAAA,MAAA,iBAAA;AAOP,UAAM,EAAE,SAAA,IAAa,KAAK,YAAY;AACtC,SAAK,kBAAkB,KAAK,2BAA2B,SAAS,aAC/D,4BAA4B;AAAA,MAC3B;AAAA,QACC,YAAY,SAAS;AAAA,QACrB,WAAW,SAAS;AAAA,QACpB,cAAc,KAAK;AAAA,MACpB;AAAA,MACA;AAAA,MACA,KAAK;AAAA,
|
|
1
|
+
{"version":3,"file":"ConvertOneHasManyToOneHasOneRelationModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel, updateSchema } from '../utils/schemaUpdateUtils'\nimport {\n\tcreateModificationType,\n\tDiffer,\n\tModificationHandler,\n\tModificationHandlerCreateSqlOptions,\n\tModificationHandlerOptions,\n} from '../ModificationHandler'\nimport { isOwningRelation } from '@contember/schema-utils'\nimport { updateRelations } from '../utils/diffUtils'\nimport { NoopModification } from '../NoopModification'\nimport { updateFieldNameModification } from '../fields'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class ConvertOneHasManyToOneHasOneRelationModificationHandler implements ModificationHandler<ConvertOneHasManyToOneHasOneRelationModificationData> {\n\tprivate subModification: ModificationHandler<any>\n\n\tconstructor(\n\t\tprivate readonly data: ConvertOneHasManyToOneHasOneRelationModificationData,\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly options: ModificationHandlerOptions,\n\t) {\n\t\tconst { relation } = this.getRelation()\n\t\tthis.subModification = data.newInverseSideFieldName && relation.inversedBy ?\n\t\t\tupdateFieldNameModification.createHandler(\n\t\t\t\t{\n\t\t\t\t\tentityName: relation.target,\n\t\t\t\t\tfieldName: relation.inversedBy,\n\t\t\t\t\tnewFieldName: data.newInverseSideFieldName,\n\t\t\t\t},\n\t\t\t\tschema,\n\t\t\t\tthis.options,\n\t\t\t)\n\t\t\t: new NoopModification()\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, options: ModificationHandlerCreateSqlOptions): void {\n\t\tconst { entity, relation } = this.getRelation()\n\t\tconst columnName = relation.joiningColumn.columnName\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameId = wrapIdentifier(columnName)\n\n\t\tconst uniqueConstraintNames = options.databaseMetadata.indexes.filter({\n\t\t\ttableName: entity.tableName,\n\t\t\tcolumnNames: [columnName],\n\t\t}).getNames()\n\n\t\tfor (const name of uniqueConstraintNames) {\n\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t}\n\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameId})`)\n\n\t\toptions.invalidateDatabaseMetadata()\n\n\t\tthis.subModification.createSql(builder, options)\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst { relation } = this.getRelation()\n\t\tconst { entityName, fieldName } = this.data\n\t\tconst inverseFieldName = this.data.newInverseSideFieldName ?? relation.inversedBy\n\t\treturn updateSchema(\n\t\t\tupdateModel(\n\t\t\t\tupdateEntity(\n\t\t\t\t\tentityName,\n\t\t\t\t\tupdateField<Model.ManyHasOneRelation, Model.OneHasOneOwningRelation>(\n\t\t\t\t\t\tfieldName,\n\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t),\n\t\t\tthis.subModification.getSchemaUpdater(),\n\t\t\tinverseFieldName ?\n\t\t\t\tupdateModel(\n\t\t\t\t\tupdateEntity(\n\t\t\t\t\t\trelation.target,\n\t\t\t\t\t\tupdateField<Model.OneHasManyRelation, Model.OneHasOneInverseRelation>(\n\t\t\t\t\t\t\tinverseFieldName,\n\t\t\t\t\t\t\t({ field: { type, ...field } }) => ({\n\t\t\t\t\t\t\t\ttype: Model.RelationType.OneHasOne,\n\t\t\t\t\t\t\t\tnullable: true,\n\t\t\t\t\t\t\t\t...field,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t) : undefined,\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn {\n\t\t\tmessage: `Converts ManyHasOne relation to OneHasOne on ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning: 'Make sure no conflicting rows exists, otherwise this may fail in runtime.',\n\t\t}\n\t}\n\n\tprivate getRelation() {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst relation = entity.fields[this.data.fieldName]\n\t\tif (relation.type !== Model.RelationType.ManyHasOne) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn { entity, relation }\n\t}\n}\n\nexport interface ConvertOneHasManyToOneHasOneRelationModificationData {\n\tentityName: string\n\tfieldName: string\n\tnewInverseSideFieldName?: string\n}\n\nexport const convertOneHasManyToOneHasOneRelationModification = createModificationType({\n\tid: 'convertOneHasManyToOneHasOneRelation',\n\thandler: ConvertOneHasManyToOneHasOneRelationModificationHandler,\n})\n\nexport class ConvertOneHasManyToOneHasOneRelationDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateRelations(originalSchema, updatedSchema, ({ originalRelation, updatedRelation, updatedEntity }) => {\n\t\t\tif (\n\t\t\t\tisOwningRelation(originalRelation) &&\n\t\t\t\tisOwningRelation(updatedRelation) &&\n\t\t\t\toriginalRelation.type === Model.RelationType.ManyHasOne &&\n\t\t\t\tupdatedRelation.type === Model.RelationType.OneHasOne\n\t\t\t) {\n\t\t\t\tconst isInverseSideRenamed = originalRelation.inversedBy && updatedRelation.inversedBy && originalRelation.inversedBy !== updatedRelation.inversedBy\n\t\t\t\treturn convertOneHasManyToOneHasOneRelationModification.createModification({\n\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\tfieldName: updatedRelation.name,\n\t\t\t\t\t...(isInverseSideRenamed ? {\n\t\t\t\t\t\tnewInverseSideFieldName: updatedRelation.inversedBy,\n\t\t\t\t\t} : {}),\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn undefined\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
|