@contember/schema-migrations 2.1.0-beta.2 → 2.2.0-alpha.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/index.cjs +3 -0
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +3 -0
- package/dist/development/index.js.map +1 -1
- package/dist/development/src/MigrationDescriber.cjs.map +1 -1
- package/dist/development/src/MigrationDescriber.js.map +1 -1
- package/dist/development/src/SchemaDiffer.cjs +27 -12
- package/dist/development/src/SchemaDiffer.cjs.map +1 -1
- package/dist/development/src/SchemaDiffer.js +27 -12
- 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 +2 -0
- package/dist/development/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/development/src/modifications/ModificationHandlerFactory.js +2 -0
- 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.map +1 -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/PatchTriggerModification.cjs.map +1 -1
- package/dist/development/src/modifications/actions/PatchTriggerModification.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.map +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/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 +4 -1
- package/dist/development/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
- package/dist/development/src/modifications/differs/RemoveViewDiffer.js +5 -2
- package/dist/development/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
- package/dist/development/src/modifications/differs/UpdateViewDiffer.cjs +45 -0
- package/dist/development/src/modifications/differs/UpdateViewDiffer.cjs.map +1 -0
- package/dist/development/src/modifications/differs/UpdateViewDiffer.js +45 -0
- package/dist/development/src/modifications/differs/UpdateViewDiffer.js.map +1 -0
- 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.map +1 -1
- 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/enums/enumUtils.js.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 +10 -4
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.js +10 -4
- package/dist/development/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/development/src/modifications/indexes/CreateIndexModification.cjs +23 -7
- package/dist/development/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
- package/dist/development/src/modifications/indexes/CreateIndexModification.js +23 -7
- package/dist/development/src/modifications/indexes/CreateIndexModification.js.map +1 -1
- package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs +52 -17
- package/dist/development/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
- package/dist/development/src/modifications/indexes/RemoveIndexModification.js +52 -17
- package/dist/development/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
- package/dist/development/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.cjs +140 -0
- package/dist/development/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.cjs.map +1 -0
- package/dist/development/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.js +140 -0
- package/dist/development/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.js.map +1 -0
- 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/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/viewDependencies.cjs +15 -1
- package/dist/development/src/modifications/utils/viewDependencies.cjs.map +1 -1
- package/dist/development/src/modifications/utils/viewDependencies.js +16 -2
- 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.map +1 -1
- package/dist/development/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
- package/dist/production/index.cjs +3 -0
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +3 -0
- package/dist/production/index.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 +27 -12
- package/dist/production/src/SchemaDiffer.cjs.map +1 -1
- package/dist/production/src/SchemaDiffer.js +27 -12
- 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 +2 -0
- package/dist/production/src/modifications/ModificationHandlerFactory.cjs.map +1 -1
- package/dist/production/src/modifications/ModificationHandlerFactory.js +2 -0
- 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.map +1 -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/PatchTriggerModification.cjs.map +1 -1
- package/dist/production/src/modifications/actions/PatchTriggerModification.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.map +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/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 +4 -1
- package/dist/production/src/modifications/differs/RemoveViewDiffer.cjs.map +1 -1
- package/dist/production/src/modifications/differs/RemoveViewDiffer.js +5 -2
- package/dist/production/src/modifications/differs/RemoveViewDiffer.js.map +1 -1
- package/dist/production/src/modifications/differs/UpdateViewDiffer.cjs +45 -0
- package/dist/production/src/modifications/differs/UpdateViewDiffer.cjs.map +1 -0
- package/dist/production/src/modifications/differs/UpdateViewDiffer.js +45 -0
- package/dist/production/src/modifications/differs/UpdateViewDiffer.js.map +1 -0
- 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.map +1 -1
- 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/enums/enumUtils.js.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 +10 -4
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.cjs.map +1 -1
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.js +10 -4
- package/dist/production/src/modifications/fields/UpdateFieldNameModification.js.map +1 -1
- package/dist/production/src/modifications/indexes/CreateIndexModification.cjs +23 -7
- package/dist/production/src/modifications/indexes/CreateIndexModification.cjs.map +1 -1
- package/dist/production/src/modifications/indexes/CreateIndexModification.js +23 -7
- package/dist/production/src/modifications/indexes/CreateIndexModification.js.map +1 -1
- package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs +52 -17
- package/dist/production/src/modifications/indexes/RemoveIndexModification.cjs.map +1 -1
- package/dist/production/src/modifications/indexes/RemoveIndexModification.js +52 -17
- package/dist/production/src/modifications/indexes/RemoveIndexModification.js.map +1 -1
- package/dist/production/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.cjs +140 -0
- package/dist/production/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.cjs.map +1 -0
- package/dist/production/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.js +140 -0
- package/dist/production/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.js.map +1 -0
- 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/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/viewDependencies.cjs +15 -1
- package/dist/production/src/modifications/utils/viewDependencies.cjs.map +1 -1
- package/dist/production/src/modifications/utils/viewDependencies.js +16 -2
- 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.map +1 -1
- package/dist/production/src/modifications/validation/UpdateValidationSchemaModification.js.map +1 -1
- package/dist/tests/cases/integration/convertManyHasManyToJoiningEntity.test.d.ts +2 -0
- package/dist/tests/cases/integration/convertManyHasManyToJoiningEntity.test.d.ts.map +1 -0
- package/dist/tests/cases/integration/skipNonModelDiffers.test.d.ts +2 -0
- package/dist/tests/cases/integration/skipNonModelDiffers.test.d.ts.map +1 -0
- package/dist/tests/src/tests.d.ts +4 -3
- package/dist/tests/src/tests.d.ts.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/types/MigrationDescriber.d.ts +2 -2
- package/dist/types/MigrationDescriber.d.ts.map +1 -1
- package/dist/types/SchemaDiffer.d.ts +12 -5
- package/dist/types/SchemaDiffer.d.ts.map +1 -1
- package/dist/types/SchemaMigrator.d.ts +2 -2
- package/dist/types/SchemaMigrator.d.ts.map +1 -1
- package/dist/types/index.d.ts +6 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modifications/ModificationHandler.d.ts +2 -2
- package/dist/types/modifications/ModificationHandler.d.ts.map +1 -1
- package/dist/types/modifications/ModificationHandlerFactory.d.ts +1 -1
- package/dist/types/modifications/ModificationHandlerFactory.d.ts.map +1 -1
- package/dist/types/modifications/NoopModification.d.ts +2 -2
- package/dist/types/modifications/NoopModification.d.ts.map +1 -1
- package/dist/types/modifications/acl/PatchAclSchemaModification.d.ts +3 -3
- package/dist/types/modifications/acl/PatchAclSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts +4 -4
- package/dist/types/modifications/acl/UpdateAclSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/acl/index.d.ts +2 -2
- package/dist/types/modifications/acl/index.d.ts.map +1 -1
- package/dist/types/modifications/actions/CreateTargetModification.d.ts +4 -4
- package/dist/types/modifications/actions/CreateTargetModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/CreateTriggerModification.d.ts +4 -4
- package/dist/types/modifications/actions/CreateTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/PatchTriggerModification.d.ts +3 -3
- package/dist/types/modifications/actions/PatchTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/RemoveTargetModification.d.ts +4 -4
- package/dist/types/modifications/actions/RemoveTargetModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/RemoveTriggerModification.d.ts +4 -4
- package/dist/types/modifications/actions/RemoveTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/UpdateTargetModification.d.ts +4 -4
- package/dist/types/modifications/actions/UpdateTargetModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/UpdateTriggerModification.d.ts +4 -4
- package/dist/types/modifications/actions/UpdateTriggerModification.d.ts.map +1 -1
- package/dist/types/modifications/actions/index.d.ts +4 -4
- package/dist/types/modifications/actions/index.d.ts.map +1 -1
- package/dist/types/modifications/columns/CreateColumnModification.d.ts +4 -4
- package/dist/types/modifications/columns/CreateColumnModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts +4 -4
- package/dist/types/modifications/columns/UpdateColumnDefinitionModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/UpdateColumnNameModification.d.ts +4 -4
- package/dist/types/modifications/columns/UpdateColumnNameModification.d.ts.map +1 -1
- package/dist/types/modifications/columns/index.d.ts +3 -3
- package/dist/types/modifications/columns/index.d.ts.map +1 -1
- package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts +4 -4
- package/dist/types/modifications/constraints/CreateUniqueConstraintModification.d.ts.map +1 -1
- package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts +4 -4
- package/dist/types/modifications/constraints/RemoveUniqueConstraintModification.d.ts.map +1 -1
- package/dist/types/modifications/constraints/index.d.ts +3 -3
- package/dist/types/modifications/constraints/index.d.ts.map +1 -1
- package/dist/types/modifications/differs/RemoveChangedFieldDiffer.d.ts +2 -2
- package/dist/types/modifications/differs/RemoveChangedFieldDiffer.d.ts.map +1 -1
- package/dist/types/modifications/differs/RemoveViewDiffer.d.ts +14 -3
- package/dist/types/modifications/differs/RemoveViewDiffer.d.ts.map +1 -1
- package/dist/types/modifications/differs/UpdateViewDiffer.d.ts +19 -0
- package/dist/types/modifications/differs/UpdateViewDiffer.d.ts.map +1 -0
- package/dist/types/modifications/differs/index.d.ts +3 -2
- package/dist/types/modifications/differs/index.d.ts.map +1 -1
- package/dist/types/modifications/entities/CreateEntityModification.d.ts +4 -4
- package/dist/types/modifications/entities/CreateEntityModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/CreateViewModification.d.ts +4 -4
- package/dist/types/modifications/entities/CreateViewModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/RemoveEntityModification.d.ts +4 -4
- package/dist/types/modifications/entities/RemoveEntityModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/ToggleEventLogModification.d.ts +4 -4
- package/dist/types/modifications/entities/ToggleEventLogModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateEntityNameModification.d.ts +3 -3
- package/dist/types/modifications/entities/UpdateEntityNameModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateEntityOrderByModification.d.ts +4 -4
- package/dist/types/modifications/entities/UpdateEntityOrderByModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateEntityTableNameModification.d.ts +4 -4
- package/dist/types/modifications/entities/UpdateEntityTableNameModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/UpdateViewModification.d.ts +3 -3
- package/dist/types/modifications/entities/UpdateViewModification.d.ts.map +1 -1
- package/dist/types/modifications/entities/index.d.ts +7 -7
- package/dist/types/modifications/entities/index.d.ts.map +1 -1
- package/dist/types/modifications/enums/CreateEnumModification.d.ts +4 -4
- package/dist/types/modifications/enums/CreateEnumModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/RemoveEnumModification.d.ts +4 -4
- package/dist/types/modifications/enums/RemoveEnumModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/UpdateEnumModification.d.ts +4 -4
- package/dist/types/modifications/enums/UpdateEnumModification.d.ts.map +1 -1
- package/dist/types/modifications/enums/index.d.ts +3 -3
- package/dist/types/modifications/enums/index.d.ts.map +1 -1
- package/dist/types/modifications/fields/RemoveFieldModification.d.ts +4 -4
- package/dist/types/modifications/fields/RemoveFieldModification.d.ts.map +1 -1
- package/dist/types/modifications/fields/UpdateFieldNameModification.d.ts +3 -3
- package/dist/types/modifications/fields/UpdateFieldNameModification.d.ts.map +1 -1
- package/dist/types/modifications/fields/index.d.ts +2 -2
- package/dist/types/modifications/fields/index.d.ts.map +1 -1
- package/dist/types/modifications/index.d.ts +13 -13
- package/dist/types/modifications/index.d.ts.map +1 -1
- package/dist/types/modifications/indexes/CreateIndexModification.d.ts +4 -4
- package/dist/types/modifications/indexes/CreateIndexModification.d.ts.map +1 -1
- package/dist/types/modifications/indexes/RemoveIndexModification.d.ts +18 -6
- package/dist/types/modifications/indexes/RemoveIndexModification.d.ts.map +1 -1
- package/dist/types/modifications/indexes/index.d.ts +2 -2
- package/dist/types/modifications/indexes/index.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertManyHasManyToJoiningEntityModification.d.ts +52 -0
- package/dist/types/modifications/relations/ConvertManyHasManyToJoiningEntityModification.d.ts.map +1 -0
- package/dist/types/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts +5 -5
- package/dist/types/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.d.ts +4 -4
- package/dist/types/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ConvertOneToManyRelationModification.d.ts +4 -4
- package/dist/types/modifications/relations/ConvertOneToManyRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/CreateRelationInverseSideModification.d.ts +4 -4
- package/dist/types/modifications/relations/CreateRelationInverseSideModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/CreateRelationModification.d.ts +5 -5
- package/dist/types/modifications/relations/CreateRelationModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/DisableOrphanRemovalModification.d.ts +4 -4
- package/dist/types/modifications/relations/DisableOrphanRemovalModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/EnableOrphanRemovalModification.d.ts +4 -4
- package/dist/types/modifications/relations/EnableOrphanRemovalModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/MakeRelationNotNullModification.d.ts +4 -4
- package/dist/types/modifications/relations/MakeRelationNotNullModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/MakeRelationNullableModification.d.ts +4 -4
- package/dist/types/modifications/relations/MakeRelationNullableModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/ToggleJunctionEventLogModification.d.ts +4 -4
- package/dist/types/modifications/relations/ToggleJunctionEventLogModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/UpdateRelationOnDeleteModification.d.ts +4 -4
- package/dist/types/modifications/relations/UpdateRelationOnDeleteModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/UpdateRelationOrderByModification.d.ts +4 -4
- package/dist/types/modifications/relations/UpdateRelationOrderByModification.d.ts.map +1 -1
- package/dist/types/modifications/relations/index.d.ts +12 -11
- package/dist/types/modifications/relations/index.d.ts.map +1 -1
- package/dist/types/modifications/settings/UpdateSettingsModification.d.ts +4 -4
- package/dist/types/modifications/settings/UpdateSettingsModification.d.ts.map +1 -1
- package/dist/types/modifications/settings/index.d.ts +1 -1
- package/dist/types/modifications/settings/index.d.ts.map +1 -1
- package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts +3 -3
- package/dist/types/modifications/upgrade/RemoveIndexNamesModification.d.ts.map +1 -1
- package/dist/types/modifications/utils/diffUtils.d.ts +1 -1
- package/dist/types/modifications/utils/diffUtils.d.ts.map +1 -1
- package/dist/types/modifications/utils/viewDependencies.d.ts +11 -1
- package/dist/types/modifications/utils/viewDependencies.d.ts.map +1 -1
- package/dist/types/modifications/validation/PatchValidationSchemaModification.d.ts +3 -3
- package/dist/types/modifications/validation/PatchValidationSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts +4 -4
- package/dist/types/modifications/validation/UpdateValidationSchemaModification.d.ts.map +1 -1
- package/dist/types/modifications/validation/index.d.ts +2 -2
- package/dist/types/modifications/validation/index.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/MigrationDescriber.ts +2 -2
- package/src/SchemaDiffer.ts +52 -25
- package/src/SchemaMigrator.ts +2 -2
- package/src/index.ts +6 -6
- package/src/modifications/ModificationHandler.ts +2 -2
- package/src/modifications/ModificationHandlerFactory.ts +21 -19
- package/src/modifications/NoopModification.ts +2 -2
- package/src/modifications/acl/PatchAclSchemaModification.ts +3 -3
- package/src/modifications/acl/UpdateAclSchemaModification.ts +3 -3
- package/src/modifications/acl/index.ts +2 -2
- package/src/modifications/actions/CreateTargetModification.ts +2 -2
- package/src/modifications/actions/CreateTriggerModification.ts +2 -2
- package/src/modifications/actions/PatchTriggerModification.ts +3 -3
- package/src/modifications/actions/RemoveTargetModification.ts +2 -2
- package/src/modifications/actions/RemoveTriggerModification.ts +2 -2
- package/src/modifications/actions/UpdateTargetModification.ts +2 -2
- package/src/modifications/actions/UpdateTriggerModification.ts +3 -3
- package/src/modifications/actions/index.ts +4 -4
- package/src/modifications/columns/CreateColumnModification.ts +5 -5
- package/src/modifications/columns/UpdateColumnDefinitionModification.ts +6 -6
- package/src/modifications/columns/UpdateColumnNameModification.ts +3 -3
- package/src/modifications/columns/columnUtils.ts +1 -1
- package/src/modifications/columns/index.ts +3 -3
- package/src/modifications/constraints/CreateUniqueConstraintModification.ts +4 -4
- package/src/modifications/constraints/RemoveUniqueConstraintModification.ts +4 -4
- package/src/modifications/constraints/index.ts +3 -3
- package/src/modifications/differs/RemoveChangedFieldDiffer.ts +3 -3
- package/src/modifications/differs/RemoveViewDiffer.ts +17 -5
- package/src/modifications/differs/UpdateViewDiffer.ts +58 -0
- package/src/modifications/differs/index.ts +3 -2
- package/src/modifications/entities/CreateEntityModification.ts +5 -5
- package/src/modifications/entities/CreateViewModification.ts +3 -3
- package/src/modifications/entities/RemoveEntityModification.ts +4 -4
- package/src/modifications/entities/ToggleEventLogModification.ts +3 -3
- package/src/modifications/entities/UpdateEntityNameModification.ts +12 -7
- package/src/modifications/entities/UpdateEntityOrderByModification.ts +2 -2
- package/src/modifications/entities/UpdateEntityTableNameModification.ts +2 -2
- package/src/modifications/entities/UpdateViewModification.ts +2 -2
- package/src/modifications/entities/index.ts +7 -7
- package/src/modifications/enums/CreateEnumModification.ts +3 -3
- package/src/modifications/enums/RemoveEnumModification.ts +2 -2
- package/src/modifications/enums/UpdateEnumModification.ts +4 -4
- package/src/modifications/enums/enumUtils.ts +1 -1
- package/src/modifications/enums/index.ts +3 -3
- package/src/modifications/fields/RemoveFieldModification.ts +3 -3
- package/src/modifications/fields/UpdateFieldNameModification.ts +26 -10
- package/src/modifications/fields/index.ts +2 -2
- package/src/modifications/index.ts +13 -13
- package/src/modifications/indexes/CreateIndexModification.ts +47 -11
- package/src/modifications/indexes/RemoveIndexModification.ts +92 -23
- package/src/modifications/indexes/index.ts +2 -2
- package/src/modifications/relations/ConvertManyHasManyToJoiningEntityModification.ts +218 -0
- package/src/modifications/relations/ConvertOneHasManyToManyHasManyRelationModification.ts +7 -7
- package/src/modifications/relations/ConvertOneHasManyToOneHasOneRelationModification.ts +6 -6
- package/src/modifications/relations/ConvertOneToManyRelationModification.ts +6 -6
- package/src/modifications/relations/CreateRelationInverseSideModification.ts +3 -3
- package/src/modifications/relations/CreateRelationModification.ts +9 -9
- package/src/modifications/relations/DisableOrphanRemovalModification.ts +3 -3
- package/src/modifications/relations/EnableOrphanRemovalModification.ts +3 -3
- package/src/modifications/relations/MakeRelationNotNullModification.ts +4 -4
- package/src/modifications/relations/MakeRelationNullableModification.ts +4 -4
- package/src/modifications/relations/ToggleJunctionEventLogModification.ts +5 -5
- package/src/modifications/relations/UpdateRelationOnDeleteModification.ts +5 -5
- package/src/modifications/relations/UpdateRelationOrderByModification.ts +3 -3
- package/src/modifications/relations/helpers.ts +1 -1
- package/src/modifications/relations/index.ts +12 -11
- package/src/modifications/settings/UpdateSettingsModification.ts +2 -2
- package/src/modifications/settings/index.ts +1 -1
- package/src/modifications/upgrade/RemoveIndexNamesModification.ts +2 -2
- package/src/modifications/utils/createJunctionTable.ts +3 -3
- package/src/modifications/utils/diffUtils.ts +2 -2
- package/src/modifications/utils/schemaUpdateUtils.ts +3 -3
- package/src/modifications/utils/viewDependencies.ts +26 -2
- package/src/modifications/validation/PatchValidationSchemaModification.ts +3 -3
- package/src/modifications/validation/UpdateValidationSchemaModification.ts +3 -3
- package/src/modifications/validation/index.ts +2 -2
- package/tests/cases/integration/convertManyHasManyToJoiningEntity.test.ts +339 -0
- package/tests/cases/integration/convertManyHasOneToOneHasOneRelation.test.ts +2 -2
- package/tests/cases/integration/convertOneHasManyToManyHasManyRelation.test.ts +2 -2
- package/tests/cases/integration/convertOneToManyRelation.test.ts +2 -2
- package/tests/cases/integration/createAndDropIndex.test.ts +482 -3
- package/tests/cases/integration/createColumn.test.ts +29 -2
- package/tests/cases/integration/createEntity.test.ts +2 -2
- package/tests/cases/integration/createEnum.test.ts +2 -2
- package/tests/cases/integration/createManyHasMany.test.ts +2 -2
- package/tests/cases/integration/createManyHasOne.test.ts +2 -2
- package/tests/cases/integration/createOneHasMany.test.ts +2 -2
- package/tests/cases/integration/createOneHasOne.test.ts +2 -2
- package/tests/cases/integration/createRelationInverseSide.test.ts +2 -2
- package/tests/cases/integration/createUnique.test.ts +3 -3
- package/tests/cases/integration/disableOrphanRemoval.test.ts +2 -2
- package/tests/cases/integration/enableOrphanRemoval.test.ts +2 -2
- package/tests/cases/integration/makeColumnNotNull.test.ts +2 -2
- package/tests/cases/integration/makeRelationNotNull.test.ts +2 -2
- package/tests/cases/integration/makeRelationNullable.test.ts +2 -2
- package/tests/cases/integration/patchAclSchema.test.ts +2 -2
- package/tests/cases/integration/patchTrigger.test.ts +1 -1
- package/tests/cases/integration/removeEntity.test.ts +2 -2
- package/tests/cases/integration/removeEnum.test.ts +2 -2
- package/tests/cases/integration/removeField.test.ts +3 -3
- package/tests/cases/integration/skipNonModelDiffers.test.ts +97 -0
- package/tests/cases/integration/toggleEventLog.test.ts +2 -2
- package/tests/cases/integration/toggleJunctionEventLog.test.ts +2 -2
- package/tests/cases/integration/updateColumnDefinition.test.ts +3 -3
- package/tests/cases/integration/updateEntityName.test.ts +2 -2
- package/tests/cases/integration/updateEntityOrderBy.test.ts +2 -2
- package/tests/cases/integration/updateEnum.test.ts +2 -2
- package/tests/cases/integration/updateFieldName.test.ts +38 -3
- package/tests/cases/integration/updateRelationOnDelete.test.ts +2 -2
- package/tests/cases/integration/updateRelationOrderBy.test.ts +2 -2
- package/tests/cases/integration/updateView.test.ts +221 -233
- package/tests/src/tests.ts +6 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateTriggerModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/actions/UpdateTriggerModification.ts"],"sourcesContent":["import { Actions, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchTriggerModification } from './PatchTriggerModification'\n\nexport class UpdateTriggerModificationHandler implements ModificationHandler<UpdateTriggerModificationData> {\n\tconstructor(private readonly data: UpdateTriggerModificationData) {\n\t}\n\n\tpublic createSql(): void {\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\treturn ({\n\t\t\t\t...schema,\n\t\t\t\tactions: {\n\t\t\t\t\t...schema.actions,\n\t\t\t\t\ttriggers: {\n\t\t\t\t\t\t...schema.actions.triggers,\n\t\t\t\t\t\t[this.data.trigger.name]: this.data.trigger,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Update trigger ${this.data.trigger.name}` }\n\t}\n}\n\nexport interface UpdateTriggerModificationData {\n\ttrigger: Actions.AnyTrigger\n}\n\nexport const updateTriggerModification = createModificationType({\n\tid: 'updateTrigger',\n\thandler: UpdateTriggerModificationHandler,\n})\n\nexport class UpdateTriggerDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.actions.triggers)\n\t\t\t.filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name]))\n\t\t\t.map(([name, trigger]) => {\n\t\t\t\tconst originalTrigger = originalSchema.actions.triggers[name]\n\n\t\t\t\tconst patch = createPatch(originalTrigger, trigger)\n\t\t\t\tif (patch.length <= (this.options?.maxPatchSize ?? 1000)) {\n\t\t\t\t\treturn patchTriggerModification.createModification({\n\t\t\t\t\t\ttriggerName: name,\n\t\t\t\t\t\tpatch,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\treturn updateTriggerModification.createModification({ trigger })\n\t\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,iCAA+F;AAAA,EAC3G,YAA6B,MAAqC;AAArC,SAAA,OAAA;AAAA,EAC7B;AAAA,EAEO,YAAkB;AAAA,EACzB;AAAA,EAEO,mBAAkC;AACxC,WAAO,CAAC,EAAE,aAAa;AACtB,aAAQ;AAAA,QACP,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,UAAU;AAAA,YACT,GAAG,OAAO,QAAQ;AAAA,YAClB,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK;AAAA,UAAA;AAAA,QACrC;AAAA,MACD;AAAA,IAEF;AAAA,EACD;AAAA,EAEA,WAAW;AACV,WAAO,EAAE,SAAS,kBAAkB,KAAK,KAAK,QAAQ,IAAI,GAAA;AAAA,EAC3D;AACD;AAMO,MAAM,4BAA4B,uBAAuB;AAAA,EAC/D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,oBAAsC;AAAA,EAClD,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAIlB;AAAA,EAEA,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,QAAQ,cAAc,QAAQ,QAAQ,EAClD,OAAO,CAAC,CAAC,MAAM,OAAO,MAAM,eAAe,QAAQ,SAAS,IAAI,KAAK,CAAC,UAAU,SAAS,eAAe,QAAQ,SAAS,IAAI,CAAC,CAAC,EAC/H,IAAI,CAAC,CAAC,MAAM,OAAO,MAAM;AACzB,YAAM,kBAAkB,eAAe,QAAQ,SAAS,IAAI;AAE5D,YAAM,QAAQ,YAAY,iBAAiB,OAAO;AAClD,UAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAO;AACzD,eAAO,yBAAyB,mBAAmB;AAAA,UAClD,aAAa;AAAA,UACb;AAAA,QAAA,CACA;AAAA,MACF;AAEA,aAAO,0BAA0B,mBAAmB,EAAE,SAAS;AAAA,IAChE,CAAC;AAAA,EACH;AACD;"}
|
|
1
|
+
{"version":3,"file":"UpdateTriggerModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/actions/UpdateTriggerModification.ts"],"sourcesContent":["import { Actions, Schema } from '@contember/schema'\nimport { SchemaUpdater } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'\nimport deepEqual from 'fast-deep-equal'\nimport { createPatch } from 'rfc6902'\nimport { patchTriggerModification } from './PatchTriggerModification.js'\n\nexport class UpdateTriggerModificationHandler implements ModificationHandler<UpdateTriggerModificationData> {\n\tconstructor(private readonly data: UpdateTriggerModificationData) {\n\t}\n\n\tpublic createSql(): void {\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn ({ schema }) => {\n\t\t\treturn ({\n\t\t\t\t...schema,\n\t\t\t\tactions: {\n\t\t\t\t\t...schema.actions,\n\t\t\t\t\ttriggers: {\n\t\t\t\t\t\t...schema.actions.triggers,\n\t\t\t\t\t\t[this.data.trigger.name]: this.data.trigger,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Update trigger ${this.data.trigger.name}` }\n\t}\n}\n\nexport interface UpdateTriggerModificationData {\n\ttrigger: Actions.AnyTrigger\n}\n\nexport const updateTriggerModification = createModificationType({\n\tid: 'updateTrigger',\n\thandler: UpdateTriggerModificationHandler,\n})\n\nexport class UpdateTriggerDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly options?: {\n\t\t\tmaxPatchSize?: number\n\t\t},\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.entries(updatedSchema.actions.triggers)\n\t\t\t.filter(([name, trigger]) => originalSchema.actions.triggers[name] && !deepEqual(trigger, originalSchema.actions.triggers[name]))\n\t\t\t.map(([name, trigger]) => {\n\t\t\t\tconst originalTrigger = originalSchema.actions.triggers[name]\n\n\t\t\t\tconst patch = createPatch(originalTrigger, trigger)\n\t\t\t\tif (patch.length <= (this.options?.maxPatchSize ?? 1000)) {\n\t\t\t\t\treturn patchTriggerModification.createModification({\n\t\t\t\t\t\ttriggerName: name,\n\t\t\t\t\t\tpatch,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\treturn updateTriggerModification.createModification({ trigger })\n\t\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;AAOO,MAAM,iCAA+F;AAAA,EAC3G,YAA6B,MAAqC;AAArC,SAAA,OAAA;AAAA,EAC7B;AAAA,EAEO,YAAkB;AAAA,EACzB;AAAA,EAEO,mBAAkC;AACxC,WAAO,CAAC,EAAE,aAAa;AACtB,aAAQ;AAAA,QACP,GAAG;AAAA,QACH,SAAS;AAAA,UACR,GAAG,OAAO;AAAA,UACV,UAAU;AAAA,YACT,GAAG,OAAO,QAAQ;AAAA,YAClB,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK;AAAA,UAAA;AAAA,QACrC;AAAA,MACD;AAAA,IAEF;AAAA,EACD;AAAA,EAEA,WAAW;AACV,WAAO,EAAE,SAAS,kBAAkB,KAAK,KAAK,QAAQ,IAAI,GAAA;AAAA,EAC3D;AACD;AAMO,MAAM,4BAA4B,uBAAuB;AAAA,EAC/D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,oBAAsC;AAAA,EAClD,YACkB,SAGhB;AAHgB,SAAA,UAAA;AAAA,EAIlB;AAAA,EAEA,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,QAAQ,cAAc,QAAQ,QAAQ,EAClD,OAAO,CAAC,CAAC,MAAM,OAAO,MAAM,eAAe,QAAQ,SAAS,IAAI,KAAK,CAAC,UAAU,SAAS,eAAe,QAAQ,SAAS,IAAI,CAAC,CAAC,EAC/H,IAAI,CAAC,CAAC,MAAM,OAAO,MAAM;AACzB,YAAM,kBAAkB,eAAe,QAAQ,SAAS,IAAI;AAE5D,YAAM,QAAQ,YAAY,iBAAiB,OAAO;AAClD,UAAI,MAAM,WAAW,KAAK,SAAS,gBAAgB,MAAO;AACzD,eAAO,yBAAyB,mBAAmB;AAAA,UAClD,aAAa;AAAA,UACb;AAAA,QAAA,CACA;AAAA,MACF;AAEA,aAAO,0BAA0B,mBAAmB,EAAE,SAAS;AAAA,IAChE,CAAC;AAAA,EACH;AACD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateColumnModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/CreateColumnModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { JSONValue, Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isColumn } from '@contember/schema-utils'\nimport { createFields } from '../utils/diffUtils'\nimport { getColumnSqlType } from '../utils/columnUtils'\nimport { fillSeed, formatSeedExpression } from './columnUtils'\n\nexport class CreateColumnModificationHandler implements ModificationHandler<CreateColumnModificationData> {\n\tconstructor(private readonly data: CreateColumnModificationData, private readonly schema: Schema) {}\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\tconst column = this.data.field\n\n\t\tconst columnType = getColumnSqlType(column)\n\n\t\tconst seedExpression = formatSeedExpression({\n\t\t\tmodel: this.schema.model,\n\t\t\tentity,\n\t\t\tcolumnType,\n\t\t\tfillValue: this.data.fillValue,\n\t\t\tcopyValue: this.data.copyValue,\n\t\t})\n\n\t\tbuilder.addColumn(entity.tableName, {\n\t\t\t[column.columnName]: {\n\t\t\t\ttype: columnType,\n\t\t\t\tnotNull: !column.nullable && seedExpression === null,\n\t\t\t\tsequenceGenerated: column.sequence,\n\t\t\t\tcollation: column.collation,\n\t\t\t},\n\t\t})\n\n\t\tif (seedExpression !== null) {\n\t\t\tif (this.data.valueMigrationStrategy === 'using') {\n\t\t\t\tbuilder.alterColumn(entity.tableName, column.columnName, {\n\t\t\t\t\tnotNull: !column.nullable ? true : undefined,\n\t\t\t\t\ttype: columnType,\n\t\t\t\t\tusing: seedExpression,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tfillSeed({\n\t\t\t\t\tbuilder,\n\t\t\t\t\ttype: 'creating',\n\t\t\t\t\tentity,\n\t\t\t\t\tcolumnName: column.columnName,\n\t\t\t\t\tnullable: column.nullable,\n\t\t\t\t\tseedExpression,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(updateEntity(this.data.entityName, addField(this.data.field)))\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\tconst notNull = !this.data.field.nullable\n\t\tconst hasValue = this.data.fillValue !== undefined || this.data.copyValue !== undefined\n\t\tconst failureWarning = notNull && !hasValue && !createdEntities.includes(this.data.entityName)\n\t\t\t? 'May fail in runtime, because column is not-null. Consider setting fillValue or copyValue'\n\t\t\t: undefined\n\t\treturn { message: `Add field ${this.data.entityName}.${this.data.field.name}`, failureWarning }\n\t}\n}\n\nexport interface CreateColumnModificationData {\n\tentityName: string\n\tfield: Model.AnyColumn\n\tfillValue?: JSONValue\n\tcopyValue?: string\n\tvalueMigrationStrategy?: 'using' | 'update'\n}\n\nexport const createColumnModification = createModificationType({\n\tid: 'createColumn',\n\thandler: CreateColumnModificationHandler,\n})\n\nexport class CreateColumnDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isColumn(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn createColumnModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfield: newField,\n\t\t\t\t...(newField.default !== undefined ? { fillValue: newField.default, valueMigrationStrategy: 'using' } : {}),\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["getColumnSqlType","formatSeedExpression","fillSeed","updateModel","updateEntity","addField","createModificationType","createFields","isColumn"],"mappings":";;;;;;;;AASO,MAAM,gCAA6F;AAAA,EACzG,YAA6B,MAAqD,QAAgB;AAArE,SAAA,OAAA;AAAqD,SAAA,SAAA;AAAA,EAAiB;AAAA,EAE5F,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK;AAEzB,UAAM,aAAaA,YAAAA,iBAAiB,MAAM;AAE1C,UAAM,iBAAiBC,cAAAA,qBAAqB;AAAA,MAC3C,OAAO,KAAK,OAAO;AAAA,MACnB;AAAA,MACA;AAAA,MACA,WAAW,KAAK,KAAK;AAAA,MACrB,WAAW,KAAK,KAAK;AAAA,IAAA,CACrB;AAED,YAAQ,UAAU,OAAO,WAAW;AAAA,MACnC,CAAC,OAAO,UAAU,GAAG;AAAA,QACpB,MAAM;AAAA,QACN,SAAS,CAAC,OAAO,YAAY,mBAAmB;AAAA,QAChD,mBAAmB,OAAO;AAAA,QAC1B,WAAW,OAAO;AAAA,MAAA;AAAA,IACnB,CACA;AAED,QAAI,mBAAmB,MAAM;AAC5B,UAAI,KAAK,KAAK,2BAA2B,SAAS;AACjD,gBAAQ,YAAY,OAAO,WAAW,OAAO,YAAY;AAAA,UACxD,SAAS,CAAC,OAAO,WAAW,OAAO;AAAA,UACnC,MAAM;AAAA,UACN,OAAO;AAAA,QAAA,CACP;AAAA,MACF,OAAO;AACNC,+BAAS;AAAA,UACR;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA,YAAY,OAAO;AAAA,UACnB,UAAU,OAAO;AAAA,UACjB;AAAA,QAAA,CACA;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAOC,8BAAYC,kBAAAA,aAAa,KAAK,KAAK,YAAYC,kBAAAA,SAAS,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EACjF;AAAA,EAEA,SAAS,EAAE,mBAAkD;AAC5D,UAAM,UAAU,CAAC,KAAK,KAAK,MAAM;AACjC,UAAM,WAAW,KAAK,KAAK,cAAc,UAAa,KAAK,KAAK,cAAc;AAC9E,UAAM,iBAAiB,WAAW,CAAC,YAAY,CAAC,gBAAgB,SAAS,KAAK,KAAK,UAAU,IAC1F,6FACA;AACH,WAAO,EAAE,SAAS,aAAa,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,eAAA;AAAA,EAChF;AACD;AAUO,MAAM,2BAA2BC,oBAAAA,uBAAuB;AAAA,EAC9D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,mBAAqC;AAAA,EACjD,WAAW,gBAAwB,eAAuB;AACzD,WAAOC,UAAAA,aAAa,gBAAgB,eAAe,CAAC,EAAE,UAAU,oBAAoB;AACnF,UAAI,CAACC,YAAAA,SAAS,QAAQ,GAAG;AACxB,eAAO;AAAA,MACR;AACA,aAAO,yBAAyB,mBAAmB;AAAA,QAClD,YAAY,cAAc;AAAA,QAC1B,OAAO;AAAA,QACP,GAAI,SAAS,YAAY,SAAY,EAAE,WAAW,SAAS,SAAS,wBAAwB,YAAY,CAAA;AAAA,MAAC,CACzG;AAAA,IACF,CAAC;AAAA,EACF;AACD;;;;"}
|
|
1
|
+
{"version":3,"file":"CreateColumnModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/CreateColumnModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { JSONValue, Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'\nimport { isColumn } from '@contember/schema-utils'\nimport { createFields } from '../utils/diffUtils.js'\nimport { getColumnSqlType } from '../utils/columnUtils.js'\nimport { fillSeed, formatSeedExpression } from './columnUtils.js'\n\nexport class CreateColumnModificationHandler implements ModificationHandler<CreateColumnModificationData> {\n\tconstructor(private readonly data: CreateColumnModificationData, private readonly schema: Schema) {}\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\tconst column = this.data.field\n\n\t\tconst columnType = getColumnSqlType(column)\n\n\t\tconst seedExpression = formatSeedExpression({\n\t\t\tmodel: this.schema.model,\n\t\t\tentity,\n\t\t\tcolumnType,\n\t\t\tfillValue: this.data.fillValue,\n\t\t\tcopyValue: this.data.copyValue,\n\t\t})\n\n\t\tbuilder.addColumn(entity.tableName, {\n\t\t\t[column.columnName]: {\n\t\t\t\ttype: columnType,\n\t\t\t\tnotNull: !column.nullable && seedExpression === null,\n\t\t\t\tsequenceGenerated: column.sequence,\n\t\t\t\tcollation: column.collation,\n\t\t\t},\n\t\t})\n\n\t\tif (seedExpression !== null) {\n\t\t\tif (this.data.valueMigrationStrategy === 'using') {\n\t\t\t\tbuilder.alterColumn(entity.tableName, column.columnName, {\n\t\t\t\t\tnotNull: !column.nullable ? true : undefined,\n\t\t\t\t\ttype: columnType,\n\t\t\t\t\tusing: seedExpression,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tfillSeed({\n\t\t\t\t\tbuilder,\n\t\t\t\t\ttype: 'creating',\n\t\t\t\t\tentity,\n\t\t\t\t\tcolumnName: column.columnName,\n\t\t\t\t\tnullable: column.nullable,\n\t\t\t\t\tseedExpression,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(updateEntity(this.data.entityName, addField(this.data.field)))\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\tconst notNull = !this.data.field.nullable\n\t\tconst hasValue = this.data.fillValue !== undefined || this.data.copyValue !== undefined\n\t\tconst failureWarning = notNull && !hasValue && !createdEntities.includes(this.data.entityName)\n\t\t\t? 'May fail in runtime, because column is not-null. Consider setting fillValue or copyValue'\n\t\t\t: undefined\n\t\treturn { message: `Add field ${this.data.entityName}.${this.data.field.name}`, failureWarning }\n\t}\n}\n\nexport interface CreateColumnModificationData {\n\tentityName: string\n\tfield: Model.AnyColumn\n\tfillValue?: JSONValue\n\tcopyValue?: string\n\tvalueMigrationStrategy?: 'using' | 'update'\n}\n\nexport const createColumnModification = createModificationType({\n\tid: 'createColumn',\n\thandler: CreateColumnModificationHandler,\n})\n\nexport class CreateColumnDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isColumn(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn createColumnModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfield: newField,\n\t\t\t\t...(newField.default !== undefined ? { fillValue: newField.default, valueMigrationStrategy: 'using' } : {}),\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["getColumnSqlType","formatSeedExpression","fillSeed","updateModel","updateEntity","addField","createModificationType","createFields","isColumn"],"mappings":";;;;;;;;AASO,MAAM,gCAA6F;AAAA,EACzG,YAA6B,MAAqD,QAAgB;AAArE,SAAA,OAAA;AAAqD,SAAA,SAAA;AAAA,EAAiB;AAAA,EAE5F,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK;AAEzB,UAAM,aAAaA,YAAAA,iBAAiB,MAAM;AAE1C,UAAM,iBAAiBC,cAAAA,qBAAqB;AAAA,MAC3C,OAAO,KAAK,OAAO;AAAA,MACnB;AAAA,MACA;AAAA,MACA,WAAW,KAAK,KAAK;AAAA,MACrB,WAAW,KAAK,KAAK;AAAA,IAAA,CACrB;AAED,YAAQ,UAAU,OAAO,WAAW;AAAA,MACnC,CAAC,OAAO,UAAU,GAAG;AAAA,QACpB,MAAM;AAAA,QACN,SAAS,CAAC,OAAO,YAAY,mBAAmB;AAAA,QAChD,mBAAmB,OAAO;AAAA,QAC1B,WAAW,OAAO;AAAA,MAAA;AAAA,IACnB,CACA;AAED,QAAI,mBAAmB,MAAM;AAC5B,UAAI,KAAK,KAAK,2BAA2B,SAAS;AACjD,gBAAQ,YAAY,OAAO,WAAW,OAAO,YAAY;AAAA,UACxD,SAAS,CAAC,OAAO,WAAW,OAAO;AAAA,UACnC,MAAM;AAAA,UACN,OAAO;AAAA,QAAA,CACP;AAAA,MACF,OAAO;AACNC,+BAAS;AAAA,UACR;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA,YAAY,OAAO;AAAA,UACnB,UAAU,OAAO;AAAA,UACjB;AAAA,QAAA,CACA;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAOC,8BAAYC,kBAAAA,aAAa,KAAK,KAAK,YAAYC,kBAAAA,SAAS,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EACjF;AAAA,EAEA,SAAS,EAAE,mBAAkD;AAC5D,UAAM,UAAU,CAAC,KAAK,KAAK,MAAM;AACjC,UAAM,WAAW,KAAK,KAAK,cAAc,UAAa,KAAK,KAAK,cAAc;AAC9E,UAAM,iBAAiB,WAAW,CAAC,YAAY,CAAC,gBAAgB,SAAS,KAAK,KAAK,UAAU,IAC1F,6FACA;AACH,WAAO,EAAE,SAAS,aAAa,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,eAAA;AAAA,EAChF;AACD;AAUO,MAAM,2BAA2BC,oBAAAA,uBAAuB;AAAA,EAC9D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,mBAAqC;AAAA,EACjD,WAAW,gBAAwB,eAAuB;AACzD,WAAOC,UAAAA,aAAa,gBAAgB,eAAe,CAAC,EAAE,UAAU,oBAAoB;AACnF,UAAI,CAACC,YAAAA,SAAS,QAAQ,GAAG;AACxB,eAAO;AAAA,MACR;AACA,aAAO,yBAAyB,mBAAmB;AAAA,QAClD,YAAY,cAAc;AAAA,QAC1B,OAAO;AAAA,QACP,GAAI,SAAS,YAAY,SAAY,EAAE,WAAW,SAAS,SAAS,wBAAwB,YAAY,CAAA;AAAA,MAAC,CACzG;AAAA,IACF,CAAC;AAAA,EACF;AACD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateColumnModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/CreateColumnModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { JSONValue, Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { isColumn } from '@contember/schema-utils'\nimport { createFields } from '../utils/diffUtils'\nimport { getColumnSqlType } from '../utils/columnUtils'\nimport { fillSeed, formatSeedExpression } from './columnUtils'\n\nexport class CreateColumnModificationHandler implements ModificationHandler<CreateColumnModificationData> {\n\tconstructor(private readonly data: CreateColumnModificationData, private readonly schema: Schema) {}\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\tconst column = this.data.field\n\n\t\tconst columnType = getColumnSqlType(column)\n\n\t\tconst seedExpression = formatSeedExpression({\n\t\t\tmodel: this.schema.model,\n\t\t\tentity,\n\t\t\tcolumnType,\n\t\t\tfillValue: this.data.fillValue,\n\t\t\tcopyValue: this.data.copyValue,\n\t\t})\n\n\t\tbuilder.addColumn(entity.tableName, {\n\t\t\t[column.columnName]: {\n\t\t\t\ttype: columnType,\n\t\t\t\tnotNull: !column.nullable && seedExpression === null,\n\t\t\t\tsequenceGenerated: column.sequence,\n\t\t\t\tcollation: column.collation,\n\t\t\t},\n\t\t})\n\n\t\tif (seedExpression !== null) {\n\t\t\tif (this.data.valueMigrationStrategy === 'using') {\n\t\t\t\tbuilder.alterColumn(entity.tableName, column.columnName, {\n\t\t\t\t\tnotNull: !column.nullable ? true : undefined,\n\t\t\t\t\ttype: columnType,\n\t\t\t\t\tusing: seedExpression,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tfillSeed({\n\t\t\t\t\tbuilder,\n\t\t\t\t\ttype: 'creating',\n\t\t\t\t\tentity,\n\t\t\t\t\tcolumnName: column.columnName,\n\t\t\t\t\tnullable: column.nullable,\n\t\t\t\t\tseedExpression,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(updateEntity(this.data.entityName, addField(this.data.field)))\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\tconst notNull = !this.data.field.nullable\n\t\tconst hasValue = this.data.fillValue !== undefined || this.data.copyValue !== undefined\n\t\tconst failureWarning = notNull && !hasValue && !createdEntities.includes(this.data.entityName)\n\t\t\t? 'May fail in runtime, because column is not-null. Consider setting fillValue or copyValue'\n\t\t\t: undefined\n\t\treturn { message: `Add field ${this.data.entityName}.${this.data.field.name}`, failureWarning }\n\t}\n}\n\nexport interface CreateColumnModificationData {\n\tentityName: string\n\tfield: Model.AnyColumn\n\tfillValue?: JSONValue\n\tcopyValue?: string\n\tvalueMigrationStrategy?: 'using' | 'update'\n}\n\nexport const createColumnModification = createModificationType({\n\tid: 'createColumn',\n\thandler: CreateColumnModificationHandler,\n})\n\nexport class CreateColumnDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isColumn(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn createColumnModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfield: newField,\n\t\t\t\t...(newField.default !== undefined ? { fillValue: newField.default, valueMigrationStrategy: 'using' } : {}),\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;;AASO,MAAM,gCAA6F;AAAA,EACzG,YAA6B,MAAqD,QAAgB;AAArE,SAAA,OAAA;AAAqD,SAAA,SAAA;AAAA,EAAiB;AAAA,EAE5F,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK;AAEzB,UAAM,aAAa,iBAAiB,MAAM;AAE1C,UAAM,iBAAiB,qBAAqB;AAAA,MAC3C,OAAO,KAAK,OAAO;AAAA,MACnB;AAAA,MACA;AAAA,MACA,WAAW,KAAK,KAAK;AAAA,MACrB,WAAW,KAAK,KAAK;AAAA,IAAA,CACrB;AAED,YAAQ,UAAU,OAAO,WAAW;AAAA,MACnC,CAAC,OAAO,UAAU,GAAG;AAAA,QACpB,MAAM;AAAA,QACN,SAAS,CAAC,OAAO,YAAY,mBAAmB;AAAA,QAChD,mBAAmB,OAAO;AAAA,QAC1B,WAAW,OAAO;AAAA,MAAA;AAAA,IACnB,CACA;AAED,QAAI,mBAAmB,MAAM;AAC5B,UAAI,KAAK,KAAK,2BAA2B,SAAS;AACjD,gBAAQ,YAAY,OAAO,WAAW,OAAO,YAAY;AAAA,UACxD,SAAS,CAAC,OAAO,WAAW,OAAO;AAAA,UACnC,MAAM;AAAA,UACN,OAAO;AAAA,QAAA,CACP;AAAA,MACF,OAAO;AACN,iBAAS;AAAA,UACR;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA,YAAY,OAAO;AAAA,UACnB,UAAU,OAAO;AAAA,UACjB;AAAA,QAAA,CACA;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAO,YAAY,aAAa,KAAK,KAAK,YAAY,SAAS,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EACjF;AAAA,EAEA,SAAS,EAAE,mBAAkD;AAC5D,UAAM,UAAU,CAAC,KAAK,KAAK,MAAM;AACjC,UAAM,WAAW,KAAK,KAAK,cAAc,UAAa,KAAK,KAAK,cAAc;AAC9E,UAAM,iBAAiB,WAAW,CAAC,YAAY,CAAC,gBAAgB,SAAS,KAAK,KAAK,UAAU,IAC1F,6FACA;AACH,WAAO,EAAE,SAAS,aAAa,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,eAAA;AAAA,EAChF;AACD;AAUO,MAAM,2BAA2B,uBAAuB;AAAA,EAC9D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,mBAAqC;AAAA,EACjD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,aAAa,gBAAgB,eAAe,CAAC,EAAE,UAAU,oBAAoB;AACnF,UAAI,CAAC,SAAS,QAAQ,GAAG;AACxB,eAAO;AAAA,MACR;AACA,aAAO,yBAAyB,mBAAmB;AAAA,QAClD,YAAY,cAAc;AAAA,QAC1B,OAAO;AAAA,QACP,GAAI,SAAS,YAAY,SAAY,EAAE,WAAW,SAAS,SAAS,wBAAwB,YAAY,CAAA;AAAA,MAAC,CACzG;AAAA,IACF,CAAC;AAAA,EACF;AACD;"}
|
|
1
|
+
{"version":3,"file":"CreateColumnModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/CreateColumnModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { JSONValue, Model, Schema } from '@contember/schema'\nimport { addField, SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'\nimport { isColumn } from '@contember/schema-utils'\nimport { createFields } from '../utils/diffUtils.js'\nimport { getColumnSqlType } from '../utils/columnUtils.js'\nimport { fillSeed, formatSeedExpression } from './columnUtils.js'\n\nexport class CreateColumnModificationHandler implements ModificationHandler<CreateColumnModificationData> {\n\tconstructor(private readonly data: CreateColumnModificationData, private readonly schema: Schema) {}\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\tconst column = this.data.field\n\n\t\tconst columnType = getColumnSqlType(column)\n\n\t\tconst seedExpression = formatSeedExpression({\n\t\t\tmodel: this.schema.model,\n\t\t\tentity,\n\t\t\tcolumnType,\n\t\t\tfillValue: this.data.fillValue,\n\t\t\tcopyValue: this.data.copyValue,\n\t\t})\n\n\t\tbuilder.addColumn(entity.tableName, {\n\t\t\t[column.columnName]: {\n\t\t\t\ttype: columnType,\n\t\t\t\tnotNull: !column.nullable && seedExpression === null,\n\t\t\t\tsequenceGenerated: column.sequence,\n\t\t\t\tcollation: column.collation,\n\t\t\t},\n\t\t})\n\n\t\tif (seedExpression !== null) {\n\t\t\tif (this.data.valueMigrationStrategy === 'using') {\n\t\t\t\tbuilder.alterColumn(entity.tableName, column.columnName, {\n\t\t\t\t\tnotNull: !column.nullable ? true : undefined,\n\t\t\t\t\ttype: columnType,\n\t\t\t\t\tusing: seedExpression,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tfillSeed({\n\t\t\t\t\tbuilder,\n\t\t\t\t\ttype: 'creating',\n\t\t\t\t\tentity,\n\t\t\t\t\tcolumnName: column.columnName,\n\t\t\t\t\tnullable: column.nullable,\n\t\t\t\t\tseedExpression,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(updateEntity(this.data.entityName, addField(this.data.field)))\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\tconst notNull = !this.data.field.nullable\n\t\tconst hasValue = this.data.fillValue !== undefined || this.data.copyValue !== undefined\n\t\tconst failureWarning = notNull && !hasValue && !createdEntities.includes(this.data.entityName)\n\t\t\t? 'May fail in runtime, because column is not-null. Consider setting fillValue or copyValue'\n\t\t\t: undefined\n\t\treturn { message: `Add field ${this.data.entityName}.${this.data.field.name}`, failureWarning }\n\t}\n}\n\nexport interface CreateColumnModificationData {\n\tentityName: string\n\tfield: Model.AnyColumn\n\tfillValue?: JSONValue\n\tcopyValue?: string\n\tvalueMigrationStrategy?: 'using' | 'update'\n}\n\nexport const createColumnModification = createModificationType({\n\tid: 'createColumn',\n\thandler: CreateColumnModificationHandler,\n})\n\nexport class CreateColumnDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn createFields(originalSchema, updatedSchema, ({ newField, updatedEntity }) => {\n\t\t\tif (!isColumn(newField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn createColumnModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfield: newField,\n\t\t\t\t...(newField.default !== undefined ? { fillValue: newField.default, valueMigrationStrategy: 'using' } : {}),\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;;AASO,MAAM,gCAA6F;AAAA,EACzG,YAA6B,MAAqD,QAAgB;AAArE,SAAA,OAAA;AAAqD,SAAA,SAAA;AAAA,EAAiB;AAAA,EAE5F,UAAU,SAAiC;AACjD,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,QAAI,OAAO,MAAM;AAChB;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK;AAEzB,UAAM,aAAa,iBAAiB,MAAM;AAE1C,UAAM,iBAAiB,qBAAqB;AAAA,MAC3C,OAAO,KAAK,OAAO;AAAA,MACnB;AAAA,MACA;AAAA,MACA,WAAW,KAAK,KAAK;AAAA,MACrB,WAAW,KAAK,KAAK;AAAA,IAAA,CACrB;AAED,YAAQ,UAAU,OAAO,WAAW;AAAA,MACnC,CAAC,OAAO,UAAU,GAAG;AAAA,QACpB,MAAM;AAAA,QACN,SAAS,CAAC,OAAO,YAAY,mBAAmB;AAAA,QAChD,mBAAmB,OAAO;AAAA,QAC1B,WAAW,OAAO;AAAA,MAAA;AAAA,IACnB,CACA;AAED,QAAI,mBAAmB,MAAM;AAC5B,UAAI,KAAK,KAAK,2BAA2B,SAAS;AACjD,gBAAQ,YAAY,OAAO,WAAW,OAAO,YAAY;AAAA,UACxD,SAAS,CAAC,OAAO,WAAW,OAAO;AAAA,UACnC,MAAM;AAAA,UACN,OAAO;AAAA,QAAA,CACP;AAAA,MACF,OAAO;AACN,iBAAS;AAAA,UACR;AAAA,UACA,MAAM;AAAA,UACN;AAAA,UACA,YAAY,OAAO;AAAA,UACnB,UAAU,OAAO;AAAA,UACjB;AAAA,QAAA,CACA;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAO,YAAY,aAAa,KAAK,KAAK,YAAY,SAAS,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,EACjF;AAAA,EAEA,SAAS,EAAE,mBAAkD;AAC5D,UAAM,UAAU,CAAC,KAAK,KAAK,MAAM;AACjC,UAAM,WAAW,KAAK,KAAK,cAAc,UAAa,KAAK,KAAK,cAAc;AAC9E,UAAM,iBAAiB,WAAW,CAAC,YAAY,CAAC,gBAAgB,SAAS,KAAK,KAAK,UAAU,IAC1F,6FACA;AACH,WAAO,EAAE,SAAS,aAAa,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,eAAA;AAAA,EAChF;AACD;AAUO,MAAM,2BAA2B,uBAAuB;AAAA,EAC9D,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAEM,MAAM,mBAAqC;AAAA,EACjD,WAAW,gBAAwB,eAAuB;AACzD,WAAO,aAAa,gBAAgB,eAAe,CAAC,EAAE,UAAU,oBAAoB;AACnF,UAAI,CAAC,SAAS,QAAQ,GAAG;AACxB,eAAO;AAAA,MACR;AACA,aAAO,yBAAyB,mBAAmB;AAAA,QAClD,YAAY,cAAc;AAAA,QAC1B,OAAO;AAAA,QACP,GAAI,SAAS,YAAY,SAAY,EAAE,WAAW,SAAS,SAAS,wBAAwB,YAAY,CAAA;AAAA,MAAC,CACzG;AAAA,IACF,CAAC;AAAA,EACF;AACD;"}
|
package/dist/production/src/modifications/columns/UpdateColumnDefinitionModification.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateColumnDefinitionModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/UpdateColumnDefinitionModification.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { JSONValue, Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { updateColumns } from '../utils/diffUtils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getColumnSqlType } from '../utils/columnUtils'\nimport { fillSeed, formatSeedExpression } from './columnUtils'\n\nexport class UpdateColumnDefinitionModificationHandler implements ModificationHandler<UpdateColumnDefinitionModificationData> {\n\tconstructor(private readonly data: UpdateColumnDefinitionModificationData, private readonly schema: Schema) {}\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\tconst oldColumn = entity.fields[this.data.fieldName] as Model.AnyColumn\n\t\tconst newColumn = this.data.definition\n\n\t\tconst hasNewSequence = !oldColumn.sequence && newColumn.sequence\n\t\tconst oldColumnType = getColumnSqlType(oldColumn)\n\t\tconst columnType = getColumnSqlType(newColumn)\n\t\tconst hasNewType = columnType !== oldColumnType\n\t\tconst hasNullableChanged = oldColumn.nullable !== newColumn.nullable\n\t\tconst hasNewCollation = newColumn.collation !== oldColumn.collation\n\n\t\tconst columnNameWrapped = wrapIdentifier(oldColumn.columnName)\n\t\tconst isChangedToArray = !oldColumn.list && newColumn.list\n\t\tconst usingCast = isChangedToArray\n\t\t\t? `CASE WHEN ${columnNameWrapped} IS NULL THEN ${\n\t\t\t\tnewColumn.nullable ? 'NULL' : `ARRAY[]::${columnType}`\n\t\t\t} ELSE ARRAY[${columnNameWrapped}]::${columnType} END`\n\t\t\t: `${columnNameWrapped}::${columnType}`\n\n\t\tconst seedExpression = formatSeedExpression({\n\t\t\tmodel: this.schema.model,\n\t\t\tentity,\n\t\t\tcolumnType,\n\t\t\tfillValue: this.data.fillValue,\n\t\t\tcopyValue: this.data.copyValue,\n\t\t})\n\t\tconst hasSeed = seedExpression !== null\n\t\tconst migrateWithUsing = hasSeed && this.data.valueMigrationStrategy === 'using'\n\t\tconst migrateWithUpdate = hasSeed && this.data.valueMigrationStrategy !== 'using'\n\n\t\tbuilder.alterColumn(entity.tableName, oldColumn.columnName, {\n\t\t\tcollation: hasNewCollation ? wrapIdentifier(newColumn.collation || 'default') : undefined,\n\t\t\ttype: hasNewCollation || hasNewSequence || hasNewType || migrateWithUsing ? columnType : undefined,\n\t\t\tnotNull: hasNullableChanged && (!migrateWithUpdate || newColumn.nullable) ? !newColumn.nullable : undefined,\n\t\t\tusing: (() => {\n\t\t\t\tif (hasNewSequence) {\n\t\t\t\t\treturn `COALESCE(${usingCast}, nextval(PG_GET_SERIAL_SEQUENCE(${escapeValue(entity.tableName)}, ${escapeValue(oldColumn.columnName)})))`\n\t\t\t\t}\n\t\t\t\tif (migrateWithUsing) {\n\t\t\t\t\treturn `COALESCE(${usingCast}, ${seedExpression})`\n\t\t\t\t}\n\n\t\t\t\tif (hasNewType) {\n\t\t\t\t\treturn usingCast\n\t\t\t\t}\n\t\t\t\treturn undefined\n\t\t\t})(),\n\t\t\tsequenceGenerated: oldColumn.sequence && !newColumn.sequence ? false : (!oldColumn.sequence ? newColumn.sequence : undefined),\n\t\t})\n\n\t\tif (migrateWithUpdate) {\n\t\t\tfillSeed({\n\t\t\t\tbuilder,\n\t\t\t\ttype: 'updating',\n\t\t\t\tentity,\n\t\t\t\tcolumnName: oldColumn.columnName,\n\t\t\t\tnullable: newColumn.nullable,\n\t\t\t\tseedExpression,\n\t\t\t})\n\t\t}\n\n\t\tconst seqAlter = []\n\t\tif (oldColumn.sequence && newColumn.sequence) {\n\t\t\tif (oldColumn.sequence.precedence !== newColumn.sequence.precedence) {\n\t\t\t\tseqAlter.push(`SET GENERATED ${newColumn.sequence.precedence}`)\n\t\t\t}\n\t\t\tif (oldColumn.sequence.start !== newColumn.sequence.start && typeof newColumn.sequence.start === 'number') {\n\t\t\t\tseqAlter.push(`SET START WITH ${newColumn.sequence.start}`)\n\t\t\t}\n\t\t\tif (newColumn.sequence.restart) {\n\t\t\t\tseqAlter.push('RESTART')\n\t\t\t}\n\t\t}\n\t\tif (seqAlter.length > 0) {\n\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} ALTER ${wrapIdentifier(oldColumn.columnName)} ${seqAlter.join(' ')}`)\n\t\t}\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.entityName,\n\t\t\t\tupdateField<Model.AnyColumn>(this.data.fieldName, ({ field }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...this.data.definition,\n\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\tcolumnName: field.columnName,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst current = this.schema.model.entities[this.data.entityName].fields[this.data.fieldName] as Model.AnyColumn\n\t\tconst changingToNotNull = current.nullable && !this.data.definition.nullable\n\t\tconst failureWarning = changingToNotNull ? 'Changing to not-null may fail in runtime.' : undefined\n\n\t\treturn {\n\t\t\tmessage: `Update column definition of field ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning,\n\t\t}\n\t}\n}\n\ntype SequenceDefinitionAlter =\n\t& Model.AnyColumn['sequence']\n\t& {\n\t\trestart?: boolean\n\t}\n\ntype ColumnDefinitionAlter =\n\t& Omit<Model.AnyColumn, 'sequence' | 'columnName' | 'name'>\n\t& {\n\t\tsequence?: SequenceDefinitionAlter\n\t}\n\nexport interface UpdateColumnDefinitionModificationData {\n\tentityName: string\n\tfieldName: string\n\tdefinition: ColumnDefinitionAlter\n\tfillValue?: JSONValue\n\tcopyValue?: string\n\tvalueMigrationStrategy?: 'using' | 'update'\n}\n\nexport const updateColumnDefinitionModification = createModificationType({\n\tid: 'updateColumnDefinition',\n\thandler: UpdateColumnDefinitionModificationHandler,\n})\n\nexport class UpdateColumnDefinitionDiffer implements Differ<UpdateColumnDefinitionModificationData> {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {\n\t\t\tconst {\n\t\t\t\tname: {},\n\t\t\t\tcolumnName: {},\n\t\t\t\t...updatedDefinition\n\t\t\t} = updatedColumn\n\t\t\tconst {\n\t\t\t\tname: {},\n\t\t\t\tcolumnName: {},\n\t\t\t\t...originalDefinition\n\t\t\t} = originalColumn\n\t\t\tif (deepEqual(updatedDefinition, originalDefinition)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\treturn updateColumnDefinitionModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfieldName: updatedColumn.name,\n\t\t\t\tdefinition: updatedDefinition,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["getColumnSqlType","wrapIdentifier","formatSeedExpression","escapeValue","fillSeed","updateModel","updateEntity","updateField","createModificationType","updateColumns"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UpdateColumnDefinitionModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/UpdateColumnDefinitionModification.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { JSONValue, Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'\nimport deepEqual from 'fast-deep-equal'\nimport { updateColumns } from '../utils/diffUtils.js'\nimport { wrapIdentifier } from '../../utils/dbHelpers.js'\nimport { getColumnSqlType } from '../utils/columnUtils.js'\nimport { fillSeed, formatSeedExpression } from './columnUtils.js'\n\nexport class UpdateColumnDefinitionModificationHandler implements ModificationHandler<UpdateColumnDefinitionModificationData> {\n\tconstructor(private readonly data: UpdateColumnDefinitionModificationData, private readonly schema: Schema) {}\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\tconst oldColumn = entity.fields[this.data.fieldName] as Model.AnyColumn\n\t\tconst newColumn = this.data.definition\n\n\t\tconst hasNewSequence = !oldColumn.sequence && newColumn.sequence\n\t\tconst oldColumnType = getColumnSqlType(oldColumn)\n\t\tconst columnType = getColumnSqlType(newColumn)\n\t\tconst hasNewType = columnType !== oldColumnType\n\t\tconst hasNullableChanged = oldColumn.nullable !== newColumn.nullable\n\t\tconst hasNewCollation = newColumn.collation !== oldColumn.collation\n\n\t\tconst columnNameWrapped = wrapIdentifier(oldColumn.columnName)\n\t\tconst isChangedToArray = !oldColumn.list && newColumn.list\n\t\tconst usingCast = isChangedToArray\n\t\t\t? `CASE WHEN ${columnNameWrapped} IS NULL THEN ${\n\t\t\t\tnewColumn.nullable ? 'NULL' : `ARRAY[]::${columnType}`\n\t\t\t} ELSE ARRAY[${columnNameWrapped}]::${columnType} END`\n\t\t\t: `${columnNameWrapped}::${columnType}`\n\n\t\tconst seedExpression = formatSeedExpression({\n\t\t\tmodel: this.schema.model,\n\t\t\tentity,\n\t\t\tcolumnType,\n\t\t\tfillValue: this.data.fillValue,\n\t\t\tcopyValue: this.data.copyValue,\n\t\t})\n\t\tconst hasSeed = seedExpression !== null\n\t\tconst migrateWithUsing = hasSeed && this.data.valueMigrationStrategy === 'using'\n\t\tconst migrateWithUpdate = hasSeed && this.data.valueMigrationStrategy !== 'using'\n\n\t\tbuilder.alterColumn(entity.tableName, oldColumn.columnName, {\n\t\t\tcollation: hasNewCollation ? wrapIdentifier(newColumn.collation || 'default') : undefined,\n\t\t\ttype: hasNewCollation || hasNewSequence || hasNewType || migrateWithUsing ? columnType : undefined,\n\t\t\tnotNull: hasNullableChanged && (!migrateWithUpdate || newColumn.nullable) ? !newColumn.nullable : undefined,\n\t\t\tusing: (() => {\n\t\t\t\tif (hasNewSequence) {\n\t\t\t\t\treturn `COALESCE(${usingCast}, nextval(PG_GET_SERIAL_SEQUENCE(${escapeValue(entity.tableName)}, ${escapeValue(oldColumn.columnName)})))`\n\t\t\t\t}\n\t\t\t\tif (migrateWithUsing) {\n\t\t\t\t\treturn `COALESCE(${usingCast}, ${seedExpression})`\n\t\t\t\t}\n\n\t\t\t\tif (hasNewType) {\n\t\t\t\t\treturn usingCast\n\t\t\t\t}\n\t\t\t\treturn undefined\n\t\t\t})(),\n\t\t\tsequenceGenerated: oldColumn.sequence && !newColumn.sequence ? false : (!oldColumn.sequence ? newColumn.sequence : undefined),\n\t\t})\n\n\t\tif (migrateWithUpdate) {\n\t\t\tfillSeed({\n\t\t\t\tbuilder,\n\t\t\t\ttype: 'updating',\n\t\t\t\tentity,\n\t\t\t\tcolumnName: oldColumn.columnName,\n\t\t\t\tnullable: newColumn.nullable,\n\t\t\t\tseedExpression,\n\t\t\t})\n\t\t}\n\n\t\tconst seqAlter = []\n\t\tif (oldColumn.sequence && newColumn.sequence) {\n\t\t\tif (oldColumn.sequence.precedence !== newColumn.sequence.precedence) {\n\t\t\t\tseqAlter.push(`SET GENERATED ${newColumn.sequence.precedence}`)\n\t\t\t}\n\t\t\tif (oldColumn.sequence.start !== newColumn.sequence.start && typeof newColumn.sequence.start === 'number') {\n\t\t\t\tseqAlter.push(`SET START WITH ${newColumn.sequence.start}`)\n\t\t\t}\n\t\t\tif (newColumn.sequence.restart) {\n\t\t\t\tseqAlter.push('RESTART')\n\t\t\t}\n\t\t}\n\t\tif (seqAlter.length > 0) {\n\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} ALTER ${wrapIdentifier(oldColumn.columnName)} ${seqAlter.join(' ')}`)\n\t\t}\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.entityName,\n\t\t\t\tupdateField<Model.AnyColumn>(this.data.fieldName, ({ field }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...this.data.definition,\n\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\tcolumnName: field.columnName,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst current = this.schema.model.entities[this.data.entityName].fields[this.data.fieldName] as Model.AnyColumn\n\t\tconst changingToNotNull = current.nullable && !this.data.definition.nullable\n\t\tconst failureWarning = changingToNotNull ? 'Changing to not-null may fail in runtime.' : undefined\n\n\t\treturn {\n\t\t\tmessage: `Update column definition of field ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning,\n\t\t}\n\t}\n}\n\ntype SequenceDefinitionAlter =\n\t& Model.AnyColumn['sequence']\n\t& {\n\t\trestart?: boolean\n\t}\n\ntype ColumnDefinitionAlter =\n\t& Omit<Model.AnyColumn, 'sequence' | 'columnName' | 'name'>\n\t& {\n\t\tsequence?: SequenceDefinitionAlter\n\t}\n\nexport interface UpdateColumnDefinitionModificationData {\n\tentityName: string\n\tfieldName: string\n\tdefinition: ColumnDefinitionAlter\n\tfillValue?: JSONValue\n\tcopyValue?: string\n\tvalueMigrationStrategy?: 'using' | 'update'\n}\n\nexport const updateColumnDefinitionModification = createModificationType({\n\tid: 'updateColumnDefinition',\n\thandler: UpdateColumnDefinitionModificationHandler,\n})\n\nexport class UpdateColumnDefinitionDiffer implements Differ<UpdateColumnDefinitionModificationData> {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {\n\t\t\tconst {\n\t\t\t\tname: {},\n\t\t\t\tcolumnName: {},\n\t\t\t\t...updatedDefinition\n\t\t\t} = updatedColumn\n\t\t\tconst {\n\t\t\t\tname: {},\n\t\t\t\tcolumnName: {},\n\t\t\t\t...originalDefinition\n\t\t\t} = originalColumn\n\t\t\tif (deepEqual(updatedDefinition, originalDefinition)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\treturn updateColumnDefinitionModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfieldName: updatedColumn.name,\n\t\t\t\tdefinition: updatedDefinition,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["getColumnSqlType","wrapIdentifier","formatSeedExpression","escapeValue","fillSeed","updateModel","updateEntity","updateField","createModificationType","updateColumns"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateColumnDefinitionModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/UpdateColumnDefinitionModification.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { JSONValue, Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { updateColumns } from '../utils/diffUtils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getColumnSqlType } from '../utils/columnUtils'\nimport { fillSeed, formatSeedExpression } from './columnUtils'\n\nexport class UpdateColumnDefinitionModificationHandler implements ModificationHandler<UpdateColumnDefinitionModificationData> {\n\tconstructor(private readonly data: UpdateColumnDefinitionModificationData, private readonly schema: Schema) {}\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\tconst oldColumn = entity.fields[this.data.fieldName] as Model.AnyColumn\n\t\tconst newColumn = this.data.definition\n\n\t\tconst hasNewSequence = !oldColumn.sequence && newColumn.sequence\n\t\tconst oldColumnType = getColumnSqlType(oldColumn)\n\t\tconst columnType = getColumnSqlType(newColumn)\n\t\tconst hasNewType = columnType !== oldColumnType\n\t\tconst hasNullableChanged = oldColumn.nullable !== newColumn.nullable\n\t\tconst hasNewCollation = newColumn.collation !== oldColumn.collation\n\n\t\tconst columnNameWrapped = wrapIdentifier(oldColumn.columnName)\n\t\tconst isChangedToArray = !oldColumn.list && newColumn.list\n\t\tconst usingCast = isChangedToArray\n\t\t\t? `CASE WHEN ${columnNameWrapped} IS NULL THEN ${\n\t\t\t\tnewColumn.nullable ? 'NULL' : `ARRAY[]::${columnType}`\n\t\t\t} ELSE ARRAY[${columnNameWrapped}]::${columnType} END`\n\t\t\t: `${columnNameWrapped}::${columnType}`\n\n\t\tconst seedExpression = formatSeedExpression({\n\t\t\tmodel: this.schema.model,\n\t\t\tentity,\n\t\t\tcolumnType,\n\t\t\tfillValue: this.data.fillValue,\n\t\t\tcopyValue: this.data.copyValue,\n\t\t})\n\t\tconst hasSeed = seedExpression !== null\n\t\tconst migrateWithUsing = hasSeed && this.data.valueMigrationStrategy === 'using'\n\t\tconst migrateWithUpdate = hasSeed && this.data.valueMigrationStrategy !== 'using'\n\n\t\tbuilder.alterColumn(entity.tableName, oldColumn.columnName, {\n\t\t\tcollation: hasNewCollation ? wrapIdentifier(newColumn.collation || 'default') : undefined,\n\t\t\ttype: hasNewCollation || hasNewSequence || hasNewType || migrateWithUsing ? columnType : undefined,\n\t\t\tnotNull: hasNullableChanged && (!migrateWithUpdate || newColumn.nullable) ? !newColumn.nullable : undefined,\n\t\t\tusing: (() => {\n\t\t\t\tif (hasNewSequence) {\n\t\t\t\t\treturn `COALESCE(${usingCast}, nextval(PG_GET_SERIAL_SEQUENCE(${escapeValue(entity.tableName)}, ${escapeValue(oldColumn.columnName)})))`\n\t\t\t\t}\n\t\t\t\tif (migrateWithUsing) {\n\t\t\t\t\treturn `COALESCE(${usingCast}, ${seedExpression})`\n\t\t\t\t}\n\n\t\t\t\tif (hasNewType) {\n\t\t\t\t\treturn usingCast\n\t\t\t\t}\n\t\t\t\treturn undefined\n\t\t\t})(),\n\t\t\tsequenceGenerated: oldColumn.sequence && !newColumn.sequence ? false : (!oldColumn.sequence ? newColumn.sequence : undefined),\n\t\t})\n\n\t\tif (migrateWithUpdate) {\n\t\t\tfillSeed({\n\t\t\t\tbuilder,\n\t\t\t\ttype: 'updating',\n\t\t\t\tentity,\n\t\t\t\tcolumnName: oldColumn.columnName,\n\t\t\t\tnullable: newColumn.nullable,\n\t\t\t\tseedExpression,\n\t\t\t})\n\t\t}\n\n\t\tconst seqAlter = []\n\t\tif (oldColumn.sequence && newColumn.sequence) {\n\t\t\tif (oldColumn.sequence.precedence !== newColumn.sequence.precedence) {\n\t\t\t\tseqAlter.push(`SET GENERATED ${newColumn.sequence.precedence}`)\n\t\t\t}\n\t\t\tif (oldColumn.sequence.start !== newColumn.sequence.start && typeof newColumn.sequence.start === 'number') {\n\t\t\t\tseqAlter.push(`SET START WITH ${newColumn.sequence.start}`)\n\t\t\t}\n\t\t\tif (newColumn.sequence.restart) {\n\t\t\t\tseqAlter.push('RESTART')\n\t\t\t}\n\t\t}\n\t\tif (seqAlter.length > 0) {\n\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} ALTER ${wrapIdentifier(oldColumn.columnName)} ${seqAlter.join(' ')}`)\n\t\t}\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.entityName,\n\t\t\t\tupdateField<Model.AnyColumn>(this.data.fieldName, ({ field }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...this.data.definition,\n\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\tcolumnName: field.columnName,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst current = this.schema.model.entities[this.data.entityName].fields[this.data.fieldName] as Model.AnyColumn\n\t\tconst changingToNotNull = current.nullable && !this.data.definition.nullable\n\t\tconst failureWarning = changingToNotNull ? 'Changing to not-null may fail in runtime.' : undefined\n\n\t\treturn {\n\t\t\tmessage: `Update column definition of field ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning,\n\t\t}\n\t}\n}\n\ntype SequenceDefinitionAlter =\n\t& Model.AnyColumn['sequence']\n\t& {\n\t\trestart?: boolean\n\t}\n\ntype ColumnDefinitionAlter =\n\t& Omit<Model.AnyColumn, 'sequence' | 'columnName' | 'name'>\n\t& {\n\t\tsequence?: SequenceDefinitionAlter\n\t}\n\nexport interface UpdateColumnDefinitionModificationData {\n\tentityName: string\n\tfieldName: string\n\tdefinition: ColumnDefinitionAlter\n\tfillValue?: JSONValue\n\tcopyValue?: string\n\tvalueMigrationStrategy?: 'using' | 'update'\n}\n\nexport const updateColumnDefinitionModification = createModificationType({\n\tid: 'updateColumnDefinition',\n\thandler: UpdateColumnDefinitionModificationHandler,\n})\n\nexport class UpdateColumnDefinitionDiffer implements Differ<UpdateColumnDefinitionModificationData> {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {\n\t\t\tconst {\n\t\t\t\tname: {},\n\t\t\t\tcolumnName: {},\n\t\t\t\t...updatedDefinition\n\t\t\t} = updatedColumn\n\t\t\tconst {\n\t\t\t\tname: {},\n\t\t\t\tcolumnName: {},\n\t\t\t\t...originalDefinition\n\t\t\t} = originalColumn\n\t\t\tif (deepEqual(updatedDefinition, originalDefinition)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\treturn updateColumnDefinitionModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfieldName: updatedColumn.name,\n\t\t\t\tdefinition: updatedDefinition,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UpdateColumnDefinitionModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/UpdateColumnDefinitionModification.ts"],"sourcesContent":["import { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { JSONValue, Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'\nimport deepEqual from 'fast-deep-equal'\nimport { updateColumns } from '../utils/diffUtils.js'\nimport { wrapIdentifier } from '../../utils/dbHelpers.js'\nimport { getColumnSqlType } from '../utils/columnUtils.js'\nimport { fillSeed, formatSeedExpression } from './columnUtils.js'\n\nexport class UpdateColumnDefinitionModificationHandler implements ModificationHandler<UpdateColumnDefinitionModificationData> {\n\tconstructor(private readonly data: UpdateColumnDefinitionModificationData, private readonly schema: Schema) {}\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\tconst oldColumn = entity.fields[this.data.fieldName] as Model.AnyColumn\n\t\tconst newColumn = this.data.definition\n\n\t\tconst hasNewSequence = !oldColumn.sequence && newColumn.sequence\n\t\tconst oldColumnType = getColumnSqlType(oldColumn)\n\t\tconst columnType = getColumnSqlType(newColumn)\n\t\tconst hasNewType = columnType !== oldColumnType\n\t\tconst hasNullableChanged = oldColumn.nullable !== newColumn.nullable\n\t\tconst hasNewCollation = newColumn.collation !== oldColumn.collation\n\n\t\tconst columnNameWrapped = wrapIdentifier(oldColumn.columnName)\n\t\tconst isChangedToArray = !oldColumn.list && newColumn.list\n\t\tconst usingCast = isChangedToArray\n\t\t\t? `CASE WHEN ${columnNameWrapped} IS NULL THEN ${\n\t\t\t\tnewColumn.nullable ? 'NULL' : `ARRAY[]::${columnType}`\n\t\t\t} ELSE ARRAY[${columnNameWrapped}]::${columnType} END`\n\t\t\t: `${columnNameWrapped}::${columnType}`\n\n\t\tconst seedExpression = formatSeedExpression({\n\t\t\tmodel: this.schema.model,\n\t\t\tentity,\n\t\t\tcolumnType,\n\t\t\tfillValue: this.data.fillValue,\n\t\t\tcopyValue: this.data.copyValue,\n\t\t})\n\t\tconst hasSeed = seedExpression !== null\n\t\tconst migrateWithUsing = hasSeed && this.data.valueMigrationStrategy === 'using'\n\t\tconst migrateWithUpdate = hasSeed && this.data.valueMigrationStrategy !== 'using'\n\n\t\tbuilder.alterColumn(entity.tableName, oldColumn.columnName, {\n\t\t\tcollation: hasNewCollation ? wrapIdentifier(newColumn.collation || 'default') : undefined,\n\t\t\ttype: hasNewCollation || hasNewSequence || hasNewType || migrateWithUsing ? columnType : undefined,\n\t\t\tnotNull: hasNullableChanged && (!migrateWithUpdate || newColumn.nullable) ? !newColumn.nullable : undefined,\n\t\t\tusing: (() => {\n\t\t\t\tif (hasNewSequence) {\n\t\t\t\t\treturn `COALESCE(${usingCast}, nextval(PG_GET_SERIAL_SEQUENCE(${escapeValue(entity.tableName)}, ${escapeValue(oldColumn.columnName)})))`\n\t\t\t\t}\n\t\t\t\tif (migrateWithUsing) {\n\t\t\t\t\treturn `COALESCE(${usingCast}, ${seedExpression})`\n\t\t\t\t}\n\n\t\t\t\tif (hasNewType) {\n\t\t\t\t\treturn usingCast\n\t\t\t\t}\n\t\t\t\treturn undefined\n\t\t\t})(),\n\t\t\tsequenceGenerated: oldColumn.sequence && !newColumn.sequence ? false : (!oldColumn.sequence ? newColumn.sequence : undefined),\n\t\t})\n\n\t\tif (migrateWithUpdate) {\n\t\t\tfillSeed({\n\t\t\t\tbuilder,\n\t\t\t\ttype: 'updating',\n\t\t\t\tentity,\n\t\t\t\tcolumnName: oldColumn.columnName,\n\t\t\t\tnullable: newColumn.nullable,\n\t\t\t\tseedExpression,\n\t\t\t})\n\t\t}\n\n\t\tconst seqAlter = []\n\t\tif (oldColumn.sequence && newColumn.sequence) {\n\t\t\tif (oldColumn.sequence.precedence !== newColumn.sequence.precedence) {\n\t\t\t\tseqAlter.push(`SET GENERATED ${newColumn.sequence.precedence}`)\n\t\t\t}\n\t\t\tif (oldColumn.sequence.start !== newColumn.sequence.start && typeof newColumn.sequence.start === 'number') {\n\t\t\t\tseqAlter.push(`SET START WITH ${newColumn.sequence.start}`)\n\t\t\t}\n\t\t\tif (newColumn.sequence.restart) {\n\t\t\t\tseqAlter.push('RESTART')\n\t\t\t}\n\t\t}\n\t\tif (seqAlter.length > 0) {\n\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} ALTER ${wrapIdentifier(oldColumn.columnName)} ${seqAlter.join(' ')}`)\n\t\t}\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.entityName,\n\t\t\t\tupdateField<Model.AnyColumn>(this.data.fieldName, ({ field }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...this.data.definition,\n\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\tcolumnName: field.columnName,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst current = this.schema.model.entities[this.data.entityName].fields[this.data.fieldName] as Model.AnyColumn\n\t\tconst changingToNotNull = current.nullable && !this.data.definition.nullable\n\t\tconst failureWarning = changingToNotNull ? 'Changing to not-null may fail in runtime.' : undefined\n\n\t\treturn {\n\t\t\tmessage: `Update column definition of field ${this.data.entityName}.${this.data.fieldName}`,\n\t\t\tfailureWarning,\n\t\t}\n\t}\n}\n\ntype SequenceDefinitionAlter =\n\t& Model.AnyColumn['sequence']\n\t& {\n\t\trestart?: boolean\n\t}\n\ntype ColumnDefinitionAlter =\n\t& Omit<Model.AnyColumn, 'sequence' | 'columnName' | 'name'>\n\t& {\n\t\tsequence?: SequenceDefinitionAlter\n\t}\n\nexport interface UpdateColumnDefinitionModificationData {\n\tentityName: string\n\tfieldName: string\n\tdefinition: ColumnDefinitionAlter\n\tfillValue?: JSONValue\n\tcopyValue?: string\n\tvalueMigrationStrategy?: 'using' | 'update'\n}\n\nexport const updateColumnDefinitionModification = createModificationType({\n\tid: 'updateColumnDefinition',\n\thandler: UpdateColumnDefinitionModificationHandler,\n})\n\nexport class UpdateColumnDefinitionDiffer implements Differ<UpdateColumnDefinitionModificationData> {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {\n\t\t\tconst {\n\t\t\t\tname: {},\n\t\t\t\tcolumnName: {},\n\t\t\t\t...updatedDefinition\n\t\t\t} = updatedColumn\n\t\t\tconst {\n\t\t\t\tname: {},\n\t\t\t\tcolumnName: {},\n\t\t\t\t...originalDefinition\n\t\t\t} = originalColumn\n\t\t\tif (deepEqual(updatedDefinition, originalDefinition)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\treturn updateColumnDefinitionModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfieldName: updatedColumn.name,\n\t\t\t\tdefinition: updatedDefinition,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateColumnNameModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/UpdateColumnNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { updateColumns } from '../utils/diffUtils'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\n\nexport class UpdateColumnNameModificationHandler implements ModificationHandler<UpdateColumnNameModificationData> {\n\tconstructor(private readonly data: UpdateColumnNameModificationData, private readonly schema: Schema) {\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, entity, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, column.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error('Cannot rename column of one-to-many relation')\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error('Cannot rename column of one-to-one inverse relation')\n\t\t\t},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.entityName,\n\t\t\t\tupdateField(this.data.fieldName, ({ field, entity }) =>\n\t\t\t\t\tacceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...column,\n\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...relation,\n\t\t\t\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\t\t\t\t...relation.joiningColumn,\n\t\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\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\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...relation,\n\t\t\t\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\t\t\t\t...relation.joiningColumn,\n\t\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\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\tvisitManyHasManyInverse: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitOneHasMany: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of one-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of one-to-one inverse relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change column name of field ${this.data.entityName}.${this.data.fieldName}` }\n\t}\n}\n\nexport interface UpdateColumnNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tcolumnName: string\n}\n\nexport const updateColumnNameModification = createModificationType({\n\tid: 'updateColumnName',\n\thandler: UpdateColumnNameModificationHandler,\n})\n\nexport class UpdateColumnNameDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {\n\t\t\tif (originalColumn.columnName === updatedColumn.columnName) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn updateColumnNameModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfieldName: updatedColumn.name,\n\t\t\t\tcolumnName: updatedColumn.columnName,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["acceptFieldVisitor","entity","updateModel","updateEntity","updateField","createModificationType","updateColumns"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UpdateColumnNameModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/UpdateColumnNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'\nimport { updateColumns } from '../utils/diffUtils.js'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\n\nexport class UpdateColumnNameModificationHandler implements ModificationHandler<UpdateColumnNameModificationData> {\n\tconstructor(private readonly data: UpdateColumnNameModificationData, private readonly schema: Schema) {\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, entity, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, column.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error('Cannot rename column of one-to-many relation')\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error('Cannot rename column of one-to-one inverse relation')\n\t\t\t},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.entityName,\n\t\t\t\tupdateField(this.data.fieldName, ({ field, entity }) =>\n\t\t\t\t\tacceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...column,\n\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...relation,\n\t\t\t\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\t\t\t\t...relation.joiningColumn,\n\t\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\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\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...relation,\n\t\t\t\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\t\t\t\t...relation.joiningColumn,\n\t\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\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\tvisitManyHasManyInverse: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitOneHasMany: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of one-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of one-to-one inverse relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change column name of field ${this.data.entityName}.${this.data.fieldName}` }\n\t}\n}\n\nexport interface UpdateColumnNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tcolumnName: string\n}\n\nexport const updateColumnNameModification = createModificationType({\n\tid: 'updateColumnName',\n\thandler: UpdateColumnNameModificationHandler,\n})\n\nexport class UpdateColumnNameDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {\n\t\t\tif (originalColumn.columnName === updatedColumn.columnName) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn updateColumnNameModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfieldName: updatedColumn.name,\n\t\t\t\tcolumnName: updatedColumn.columnName,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["acceptFieldVisitor","entity","updateModel","updateEntity","updateField","createModificationType","updateColumns"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateColumnNameModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/UpdateColumnNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler'\nimport { updateColumns } from '../utils/diffUtils'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\n\nexport class UpdateColumnNameModificationHandler implements ModificationHandler<UpdateColumnNameModificationData> {\n\tconstructor(private readonly data: UpdateColumnNameModificationData, private readonly schema: Schema) {\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, entity, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, column.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error('Cannot rename column of one-to-many relation')\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error('Cannot rename column of one-to-one inverse relation')\n\t\t\t},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.entityName,\n\t\t\t\tupdateField(this.data.fieldName, ({ field, entity }) =>\n\t\t\t\t\tacceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...column,\n\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...relation,\n\t\t\t\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\t\t\t\t...relation.joiningColumn,\n\t\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\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\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...relation,\n\t\t\t\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\t\t\t\t...relation.joiningColumn,\n\t\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\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\tvisitManyHasManyInverse: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitOneHasMany: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of one-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of one-to-one inverse relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change column name of field ${this.data.entityName}.${this.data.fieldName}` }\n\t}\n}\n\nexport interface UpdateColumnNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tcolumnName: string\n}\n\nexport const updateColumnNameModification = createModificationType({\n\tid: 'updateColumnName',\n\thandler: UpdateColumnNameModificationHandler,\n})\n\nexport class UpdateColumnNameDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {\n\t\t\tif (originalColumn.columnName === updatedColumn.columnName) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn updateColumnNameModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfieldName: updatedColumn.name,\n\t\t\t\tcolumnName: updatedColumn.columnName,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["entity"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UpdateColumnNameModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/UpdateColumnNameModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateField, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler } from '../ModificationHandler.js'\nimport { updateColumns } from '../utils/diffUtils.js'\nimport { acceptFieldVisitor } from '@contember/schema-utils'\n\nexport class UpdateColumnNameModificationHandler implements ModificationHandler<UpdateColumnNameModificationData> {\n\tconstructor(private readonly data: UpdateColumnNameModificationData, private readonly schema: Schema) {\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, entity, this.data.fieldName, {\n\t\t\tvisitColumn: ({ entity, column }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, column.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\tbuilder.renameColumn(entity.tableName, relation.joiningColumn.columnName, this.data.columnName)\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t},\n\t\t\tvisitOneHasMany: () => {\n\t\t\t\tthrow new Error('Cannot rename column of one-to-many relation')\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\tthrow new Error('Cannot rename column of one-to-one inverse relation')\n\t\t\t},\n\t\t})\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\treturn updateModel(\n\t\t\tupdateEntity(\n\t\t\t\tthis.data.entityName,\n\t\t\t\tupdateField(this.data.fieldName, ({ field, entity }) =>\n\t\t\t\t\tacceptFieldVisitor<Model.AnyField>(this.schema.model, entity, field, {\n\t\t\t\t\t\tvisitColumn: ({ column }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...column,\n\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitManyHasOne: ({ entity, relation }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...relation,\n\t\t\t\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\t\t\t\t...relation.joiningColumn,\n\t\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\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\tvisitOneHasOneOwning: ({ entity, relation }) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...relation,\n\t\t\t\t\t\t\t\tjoiningColumn: {\n\t\t\t\t\t\t\t\t\t...relation.joiningColumn,\n\t\t\t\t\t\t\t\t\tcolumnName: this.data.columnName,\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\tvisitManyHasManyInverse: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of many-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitOneHasMany: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of one-to-many relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t\t\t\t\tthrow new Error('Cannot rename column of one-to-one inverse relation')\n\t\t\t\t\t\t},\n\t\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\treturn { message: `Change column name of field ${this.data.entityName}.${this.data.fieldName}` }\n\t}\n}\n\nexport interface UpdateColumnNameModificationData {\n\tentityName: string\n\tfieldName: string\n\tcolumnName: string\n}\n\nexport const updateColumnNameModification = createModificationType({\n\tid: 'updateColumnName',\n\thandler: UpdateColumnNameModificationHandler,\n})\n\nexport class UpdateColumnNameDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateColumns(originalSchema, updatedSchema, ({ originalColumn, updatedColumn, updatedEntity }) => {\n\t\t\tif (originalColumn.columnName === updatedColumn.columnName) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\treturn updateColumnNameModification.createModification({\n\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\tfieldName: updatedColumn.name,\n\t\t\t\tcolumnName: updatedColumn.columnName,\n\t\t\t})\n\t\t})\n\t}\n}\n"],"names":["entity"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/columnUtils.ts"],"sourcesContent":["import { wrapIdentifier } from '../../utils/dbHelpers'\nimport { JSONValue, Model } from '@contember/schema'\nimport { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { getColumnName } from '@contember/schema-utils'\n\nexport const fillSeed = ({ builder, entity, columnName, nullable, type, seedExpression }: {\n\tentity: Model.Entity\n\tcolumnName: string\n\tnullable: boolean\n\tbuilder: MigrationBuilder\n\ttype: 'creating' | 'updating'\n\tseedExpression: string\n}) => {\n\tconst where = type === 'updating' ? ` WHERE ${wrapIdentifier(columnName)} IS NULL` : ''\n\tbuilder.sql(`UPDATE ${wrapIdentifier(entity.tableName)}\n\t\t\t\t SET ${wrapIdentifier(columnName)} = ${seedExpression}${where}`)\n\n\t// event log uses deferred constraint triggers, we need to fire them before ALTER\n\tbuilder.sql(`SET CONSTRAINTS ALL IMMEDIATE`)\n\tbuilder.sql(`SET CONSTRAINTS ALL DEFERRED`)\n\n\tif (!nullable) {\n\t\tbuilder.alterColumn(entity.tableName, columnName, {\n\t\t\tnotNull: true,\n\t\t})\n\t}\n}\n\nexport const formatSeedExpression = ({ model, entity, columnType, fillValue, copyValue }: {\n\tmodel: Model.Schema\n\tentity: Model.Entity\n\tcolumnType: string\n\tfillValue?: JSONValue\n\tcopyValue?: string\n}): string | null => {\n\tif (fillValue !== undefined) {\n\t\treturn escapeValue(fillValue).toString()\n\t} else if (copyValue !== undefined) {\n\t\tconst copyFrom = getColumnName(model, entity, copyValue)\n\t\treturn `${wrapIdentifier(copyFrom)}::${columnType}`\n\t}\n\treturn null\n}\n"],"names":["wrapIdentifier","escapeValue","getColumnName"],"mappings":";;;;;AAKO,MAAM,WAAW,CAAC,EAAE,SAAS,QAAQ,YAAY,UAAU,MAAM,qBAOlE;AACL,QAAM,QAAQ,SAAS,aAAa,UAAUA,UAAAA,eAAe,UAAU,CAAC,aAAa;AACrF,UAAQ,IAAI,UAAUA,UAAAA,eAAe,OAAO,SAAS,CAAC;AAAA,WAC5CA,UAAAA,eAAe,UAAU,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE;AAGlE,UAAQ,IAAI,+BAA+B;AAC3C,UAAQ,IAAI,8BAA8B;AAE1C,MAAI,CAAC,UAAU;AACd,YAAQ,YAAY,OAAO,WAAW,YAAY;AAAA,MACjD,SAAS;AAAA,IAAA,CACT;AAAA,EACF;AACD;AAEO,MAAM,uBAAuB,CAAC,EAAE,OAAO,QAAQ,YAAY,WAAW,gBAMxD;AACpB,MAAI,cAAc,QAAW;AAC5B,WAAOC,mBAAAA,YAAY,SAAS,EAAE,SAAA;AAAA,EAC/B,WAAW,cAAc,QAAW;AACnC,UAAM,WAAWC,YAAAA,cAAc,OAAO,QAAQ,SAAS;AACvD,WAAO,GAAGF,UAAAA,eAAe,QAAQ,CAAC,KAAK,UAAU;AAAA,EAClD;AACA,SAAO;AACR;;;"}
|
|
1
|
+
{"version":3,"file":"columnUtils.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/columnUtils.ts"],"sourcesContent":["import { wrapIdentifier } from '../../utils/dbHelpers.js'\nimport { JSONValue, Model } from '@contember/schema'\nimport { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { getColumnName } from '@contember/schema-utils'\n\nexport const fillSeed = ({ builder, entity, columnName, nullable, type, seedExpression }: {\n\tentity: Model.Entity\n\tcolumnName: string\n\tnullable: boolean\n\tbuilder: MigrationBuilder\n\ttype: 'creating' | 'updating'\n\tseedExpression: string\n}) => {\n\tconst where = type === 'updating' ? ` WHERE ${wrapIdentifier(columnName)} IS NULL` : ''\n\tbuilder.sql(`UPDATE ${wrapIdentifier(entity.tableName)}\n\t\t\t\t SET ${wrapIdentifier(columnName)} = ${seedExpression}${where}`)\n\n\t// event log uses deferred constraint triggers, we need to fire them before ALTER\n\tbuilder.sql(`SET CONSTRAINTS ALL IMMEDIATE`)\n\tbuilder.sql(`SET CONSTRAINTS ALL DEFERRED`)\n\n\tif (!nullable) {\n\t\tbuilder.alterColumn(entity.tableName, columnName, {\n\t\t\tnotNull: true,\n\t\t})\n\t}\n}\n\nexport const formatSeedExpression = ({ model, entity, columnType, fillValue, copyValue }: {\n\tmodel: Model.Schema\n\tentity: Model.Entity\n\tcolumnType: string\n\tfillValue?: JSONValue\n\tcopyValue?: string\n}): string | null => {\n\tif (fillValue !== undefined) {\n\t\treturn escapeValue(fillValue).toString()\n\t} else if (copyValue !== undefined) {\n\t\tconst copyFrom = getColumnName(model, entity, copyValue)\n\t\treturn `${wrapIdentifier(copyFrom)}::${columnType}`\n\t}\n\treturn null\n}\n"],"names":["wrapIdentifier","escapeValue","getColumnName"],"mappings":";;;;;AAKO,MAAM,WAAW,CAAC,EAAE,SAAS,QAAQ,YAAY,UAAU,MAAM,qBAOlE;AACL,QAAM,QAAQ,SAAS,aAAa,UAAUA,UAAAA,eAAe,UAAU,CAAC,aAAa;AACrF,UAAQ,IAAI,UAAUA,UAAAA,eAAe,OAAO,SAAS,CAAC;AAAA,WAC5CA,UAAAA,eAAe,UAAU,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE;AAGlE,UAAQ,IAAI,+BAA+B;AAC3C,UAAQ,IAAI,8BAA8B;AAE1C,MAAI,CAAC,UAAU;AACd,YAAQ,YAAY,OAAO,WAAW,YAAY;AAAA,MACjD,SAAS;AAAA,IAAA,CACT;AAAA,EACF;AACD;AAEO,MAAM,uBAAuB,CAAC,EAAE,OAAO,QAAQ,YAAY,WAAW,gBAMxD;AACpB,MAAI,cAAc,QAAW;AAC5B,WAAOC,mBAAAA,YAAY,SAAS,EAAE,SAAA;AAAA,EAC/B,WAAW,cAAc,QAAW;AACnC,UAAM,WAAWC,YAAAA,cAAc,OAAO,QAAQ,SAAS;AACvD,WAAO,GAAGF,UAAAA,eAAe,QAAQ,CAAC,KAAK,UAAU;AAAA,EAClD;AACA,SAAO;AACR;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/columnUtils.ts"],"sourcesContent":["import { wrapIdentifier } from '../../utils/dbHelpers'\nimport { JSONValue, Model } from '@contember/schema'\nimport { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { getColumnName } from '@contember/schema-utils'\n\nexport const fillSeed = ({ builder, entity, columnName, nullable, type, seedExpression }: {\n\tentity: Model.Entity\n\tcolumnName: string\n\tnullable: boolean\n\tbuilder: MigrationBuilder\n\ttype: 'creating' | 'updating'\n\tseedExpression: string\n}) => {\n\tconst where = type === 'updating' ? ` WHERE ${wrapIdentifier(columnName)} IS NULL` : ''\n\tbuilder.sql(`UPDATE ${wrapIdentifier(entity.tableName)}\n\t\t\t\t SET ${wrapIdentifier(columnName)} = ${seedExpression}${where}`)\n\n\t// event log uses deferred constraint triggers, we need to fire them before ALTER\n\tbuilder.sql(`SET CONSTRAINTS ALL IMMEDIATE`)\n\tbuilder.sql(`SET CONSTRAINTS ALL DEFERRED`)\n\n\tif (!nullable) {\n\t\tbuilder.alterColumn(entity.tableName, columnName, {\n\t\t\tnotNull: true,\n\t\t})\n\t}\n}\n\nexport const formatSeedExpression = ({ model, entity, columnType, fillValue, copyValue }: {\n\tmodel: Model.Schema\n\tentity: Model.Entity\n\tcolumnType: string\n\tfillValue?: JSONValue\n\tcopyValue?: string\n}): string | null => {\n\tif (fillValue !== undefined) {\n\t\treturn escapeValue(fillValue).toString()\n\t} else if (copyValue !== undefined) {\n\t\tconst copyFrom = getColumnName(model, entity, copyValue)\n\t\treturn `${wrapIdentifier(copyFrom)}::${columnType}`\n\t}\n\treturn null\n}\n"],"names":[],"mappings":";;;AAKO,MAAM,WAAW,CAAC,EAAE,SAAS,QAAQ,YAAY,UAAU,MAAM,qBAOlE;AACL,QAAM,QAAQ,SAAS,aAAa,UAAU,eAAe,UAAU,CAAC,aAAa;AACrF,UAAQ,IAAI,UAAU,eAAe,OAAO,SAAS,CAAC;AAAA,WAC5C,eAAe,UAAU,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE;AAGlE,UAAQ,IAAI,+BAA+B;AAC3C,UAAQ,IAAI,8BAA8B;AAE1C,MAAI,CAAC,UAAU;AACd,YAAQ,YAAY,OAAO,WAAW,YAAY;AAAA,MACjD,SAAS;AAAA,IAAA,CACT;AAAA,EACF;AACD;AAEO,MAAM,uBAAuB,CAAC,EAAE,OAAO,QAAQ,YAAY,WAAW,gBAMxD;AACpB,MAAI,cAAc,QAAW;AAC5B,WAAO,YAAY,SAAS,EAAE,SAAA;AAAA,EAC/B,WAAW,cAAc,QAAW;AACnC,UAAM,WAAW,cAAc,OAAO,QAAQ,SAAS;AACvD,WAAO,GAAG,eAAe,QAAQ,CAAC,KAAK,UAAU;AAAA,EAClD;AACA,SAAO;AACR;"}
|
|
1
|
+
{"version":3,"file":"columnUtils.js","sources":["../../../../../../packages/schema-migrations/src/modifications/columns/columnUtils.ts"],"sourcesContent":["import { wrapIdentifier } from '../../utils/dbHelpers.js'\nimport { JSONValue, Model } from '@contember/schema'\nimport { escapeValue, MigrationBuilder } from '@contember/database-migrations'\nimport { getColumnName } from '@contember/schema-utils'\n\nexport const fillSeed = ({ builder, entity, columnName, nullable, type, seedExpression }: {\n\tentity: Model.Entity\n\tcolumnName: string\n\tnullable: boolean\n\tbuilder: MigrationBuilder\n\ttype: 'creating' | 'updating'\n\tseedExpression: string\n}) => {\n\tconst where = type === 'updating' ? ` WHERE ${wrapIdentifier(columnName)} IS NULL` : ''\n\tbuilder.sql(`UPDATE ${wrapIdentifier(entity.tableName)}\n\t\t\t\t SET ${wrapIdentifier(columnName)} = ${seedExpression}${where}`)\n\n\t// event log uses deferred constraint triggers, we need to fire them before ALTER\n\tbuilder.sql(`SET CONSTRAINTS ALL IMMEDIATE`)\n\tbuilder.sql(`SET CONSTRAINTS ALL DEFERRED`)\n\n\tif (!nullable) {\n\t\tbuilder.alterColumn(entity.tableName, columnName, {\n\t\t\tnotNull: true,\n\t\t})\n\t}\n}\n\nexport const formatSeedExpression = ({ model, entity, columnType, fillValue, copyValue }: {\n\tmodel: Model.Schema\n\tentity: Model.Entity\n\tcolumnType: string\n\tfillValue?: JSONValue\n\tcopyValue?: string\n}): string | null => {\n\tif (fillValue !== undefined) {\n\t\treturn escapeValue(fillValue).toString()\n\t} else if (copyValue !== undefined) {\n\t\tconst copyFrom = getColumnName(model, entity, copyValue)\n\t\treturn `${wrapIdentifier(copyFrom)}::${columnType}`\n\t}\n\treturn null\n}\n"],"names":[],"mappings":";;;AAKO,MAAM,WAAW,CAAC,EAAE,SAAS,QAAQ,YAAY,UAAU,MAAM,qBAOlE;AACL,QAAM,QAAQ,SAAS,aAAa,UAAU,eAAe,UAAU,CAAC,aAAa;AACrF,UAAQ,IAAI,UAAU,eAAe,OAAO,SAAS,CAAC;AAAA,WAC5C,eAAe,UAAU,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE;AAGlE,UAAQ,IAAI,+BAA+B;AAC3C,UAAQ,IAAI,8BAA8B;AAE1C,MAAI,CAAC,UAAU;AACd,YAAQ,YAAY,OAAO,WAAW,YAAY;AAAA,MACjD,SAAS;AAAA,IAAA,CACT;AAAA,EACF;AACD;AAEO,MAAM,uBAAuB,CAAC,EAAE,OAAO,QAAQ,YAAY,WAAW,gBAMxD;AACpB,MAAI,cAAc,QAAW;AAC5B,WAAO,YAAY,SAAS,EAAE,SAAA;AAAA,EAC/B,WAAW,cAAc,QAAW;AACnC,UAAM,WAAW,cAAc,OAAO,QAAQ,SAAS;AACvD,WAAO,GAAG,eAAe,QAAQ,CAAC,KAAK,UAAU;AAAA,EAClD;AACA,SAAO;AACR;"}
|
package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateUniqueConstraintModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/constraints/CreateUniqueConstraintModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getUniqueConstraintColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateUniqueConstraintModificationHandler implements ModificationHandler<CreateUniqueConstraintModificationData> {\n\tconstructor(private readonly data: CreateUniqueConstraintModificationData, private readonly schema: Schema) {\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst shouldExecuteSql = !entity.view\n\t\t\t|| (this.data.unique.index && entity.view.materialized)\n\t\tif (!shouldExecuteSql) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.unique.fields\n\t\tconst columns = getUniqueConstraintColumns({\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t\tfields,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tif ('index' in this.data.unique && this.data.unique.index) {\n\t\t\tconst nulls = this.data.unique.nulls === 'not distinct' ? ' NULLS NOT DISTINCT' : ''\n\t\t\tconst methodClause = this.data.unique.method ? ` USING ${this.data.unique.method}` : ''\n\t\t\tbuilder.sql(`CREATE UNIQUE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(', ')})${nulls}`)\n\t\t} else {\n\t\t\tlet checkModifier = ''\n\t\t\tif (this.data.unique.timing === 'deferred') {\n\t\t\t\tcheckModifier = ' INITIALLY DEFERRED'\n\t\t\t} else if (this.data.unique.timing === 'deferrable') {\n\t\t\t\tcheckModifier = ' DEFERRABLE'\n\t\t\t}\n\n\t\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameIds.join(', ')})${checkModifier}`)\n\t\t}\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\tunique: [\n\t\t\t\t\t...entity.unique,\n\t\t\t\t\tthis.data.unique,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\treturn {\n\t\t\tmessage: `Create unique ${this.data.unique.index ? 'index' : 'constraint'} (${\n\t\t\t\tthis.data.unique.fields.join(', ')\n\t\t\t}) on entity ${this.data.entityName}`,\n\t\t\tfailureWarning: !createdEntities.includes(this.data.entityName)\n\t\t\t\t? 'Make sure no conflicting rows exists, otherwise this may fail in runtime.'\n\t\t\t\t: undefined,\n\t\t}\n\t}\n}\n\nexport const createUniqueConstraintModification = createModificationType({\n\tid: 'createUniqueConstraint',\n\thandler: CreateUniqueConstraintModificationHandler,\n})\n\nexport interface CreateUniqueConstraintModificationData {\n\tentityName: string\n\tunique: Model.UniqueConstraint | Model.UniqueIndex\n}\n\nexport class CreateUniqueConstraintDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.unique\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].unique.find(uniq => deepEqual(uniq.fields, it.fields)))\n\t\t\t\t.map(unique =>\n\t\t\t\t\tcreateUniqueConstraintModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tunique,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":["getUniqueConstraintColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAQO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA+D,QAAgB;AAA/E,SAAA,OAAA;AAA+D,SAAA,SAAA;AAAA,EAC5F;AAAA,EAEO,UAAU,SAA2B,EAAE,8BAAyE;AACtH,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,mBAAmB,CAAC,OAAO,QAC5B,KAAK,KAAK,OAAO,SAAS,OAAO,KAAK;AAC3C,QAAI,CAAC,kBAAkB;AACtB;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK,OAAO;AAChC,UAAM,UAAUA,MAAAA,2BAA2B;AAAA,MAC1C;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,MACnB;AAAA,IAAA,CACA;AAED,UAAM,cAAcC,UAAAA,eAAe,OAAO,SAAS;AACnD,UAAM,gBAAgB,QAAQ,IAAIA,wBAAc;AAEhD,QAAI,WAAW,KAAK,KAAK,UAAU,KAAK,KAAK,OAAO,OAAO;AAC1D,YAAM,QAAQ,KAAK,KAAK,OAAO,UAAU,iBAAiB,wBAAwB;AAClF,YAAM,eAAe,KAAK,KAAK,OAAO,SAAS,UAAU,KAAK,KAAK,OAAO,MAAM,KAAK;AACrF,cAAQ,IAAI,0BAA0B,WAAW,GAAG,YAAY,KAAK,cAAc,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;AAAA,IACzG,OAAO;AACN,UAAI,gBAAgB;AACpB,UAAI,KAAK,KAAK,OAAO,WAAW,YAAY;AAC3C,wBAAgB;AAAA,MACjB,WAAW,KAAK,KAAK,OAAO,WAAW,cAAc;AACpD,wBAAgB;AAAA,MACjB;AAEA,cAAQ,IAAI,eAAe,WAAW,gBAAgB,cAAc,KAAK,IAAI,CAAC,IAAI,aAAa,EAAE;AAAA,IAClG;AAEA,+BAAA;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAOC,kBAAAA;AAAAA,MACNC,kBAAAA,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,QAAQ;AAAA,UACP,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,SAAS,EAAE,mBAAkD;AAC5D,WAAO;AAAA,MACN,SAAS,iBAAiB,KAAK,KAAK,OAAO,QAAQ,UAAU,YAAY,KACxE,KAAK,KAAK,OAAO,OAAO,KAAK,IAAI,CAClC,eAAe,KAAK,KAAK,UAAU;AAAA,MACnC,gBAAgB,CAAC,gBAAgB,SAAS,KAAK,KAAK,UAAU,IAC3D,8EACA;AAAA,IAAA;AAAA,EAEL;AACD;AAEO,MAAM,qCAAqCC,oBAAAA,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,6BAA+C;AAAA,EAC3D,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,OACL,OAAO,QAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,OAAO,KAAK,UAAQ,UAAU,KAAK,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC/G;AAAA,QAAI,CAAA,WACJ,mCAAmC,mBAAmB;AAAA,UACrD,YAAY,OAAO;AAAA,UACnB;AAAA,QAAA,CACA;AAAA,MAAA;AAAA,IACF;AAAA,EAEH;AACD;;;;"}
|
|
1
|
+
{"version":3,"file":"CreateUniqueConstraintModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/constraints/CreateUniqueConstraintModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler.js'\nimport { wrapIdentifier } from '../../utils/dbHelpers.js'\nimport { getUniqueConstraintColumns } from './utils.js'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateUniqueConstraintModificationHandler implements ModificationHandler<CreateUniqueConstraintModificationData> {\n\tconstructor(private readonly data: CreateUniqueConstraintModificationData, private readonly schema: Schema) {\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst shouldExecuteSql = !entity.view\n\t\t\t|| (this.data.unique.index && entity.view.materialized)\n\t\tif (!shouldExecuteSql) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.unique.fields\n\t\tconst columns = getUniqueConstraintColumns({\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t\tfields,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tif ('index' in this.data.unique && this.data.unique.index) {\n\t\t\tconst nulls = this.data.unique.nulls === 'not distinct' ? ' NULLS NOT DISTINCT' : ''\n\t\t\tconst methodClause = this.data.unique.method ? ` USING ${this.data.unique.method}` : ''\n\t\t\tbuilder.sql(`CREATE UNIQUE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(', ')})${nulls}`)\n\t\t} else {\n\t\t\tlet checkModifier = ''\n\t\t\tif (this.data.unique.timing === 'deferred') {\n\t\t\t\tcheckModifier = ' INITIALLY DEFERRED'\n\t\t\t} else if (this.data.unique.timing === 'deferrable') {\n\t\t\t\tcheckModifier = ' DEFERRABLE'\n\t\t\t}\n\n\t\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameIds.join(', ')})${checkModifier}`)\n\t\t}\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\tunique: [\n\t\t\t\t\t...entity.unique,\n\t\t\t\t\tthis.data.unique,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\treturn {\n\t\t\tmessage: `Create unique ${this.data.unique.index ? 'index' : 'constraint'} (${\n\t\t\t\tthis.data.unique.fields.join(', ')\n\t\t\t}) on entity ${this.data.entityName}`,\n\t\t\tfailureWarning: !createdEntities.includes(this.data.entityName)\n\t\t\t\t? 'Make sure no conflicting rows exists, otherwise this may fail in runtime.'\n\t\t\t\t: undefined,\n\t\t}\n\t}\n}\n\nexport const createUniqueConstraintModification = createModificationType({\n\tid: 'createUniqueConstraint',\n\thandler: CreateUniqueConstraintModificationHandler,\n})\n\nexport interface CreateUniqueConstraintModificationData {\n\tentityName: string\n\tunique: Model.UniqueConstraint | Model.UniqueIndex\n}\n\nexport class CreateUniqueConstraintDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.unique\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].unique.find(uniq => deepEqual(uniq.fields, it.fields)))\n\t\t\t\t.map(unique =>\n\t\t\t\t\tcreateUniqueConstraintModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tunique,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":["getUniqueConstraintColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":";;;;;;;AAQO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA+D,QAAgB;AAA/E,SAAA,OAAA;AAA+D,SAAA,SAAA;AAAA,EAC5F;AAAA,EAEO,UAAU,SAA2B,EAAE,8BAAyE;AACtH,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,mBAAmB,CAAC,OAAO,QAC5B,KAAK,KAAK,OAAO,SAAS,OAAO,KAAK;AAC3C,QAAI,CAAC,kBAAkB;AACtB;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK,OAAO;AAChC,UAAM,UAAUA,MAAAA,2BAA2B;AAAA,MAC1C;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,MACnB;AAAA,IAAA,CACA;AAED,UAAM,cAAcC,UAAAA,eAAe,OAAO,SAAS;AACnD,UAAM,gBAAgB,QAAQ,IAAIA,wBAAc;AAEhD,QAAI,WAAW,KAAK,KAAK,UAAU,KAAK,KAAK,OAAO,OAAO;AAC1D,YAAM,QAAQ,KAAK,KAAK,OAAO,UAAU,iBAAiB,wBAAwB;AAClF,YAAM,eAAe,KAAK,KAAK,OAAO,SAAS,UAAU,KAAK,KAAK,OAAO,MAAM,KAAK;AACrF,cAAQ,IAAI,0BAA0B,WAAW,GAAG,YAAY,KAAK,cAAc,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;AAAA,IACzG,OAAO;AACN,UAAI,gBAAgB;AACpB,UAAI,KAAK,KAAK,OAAO,WAAW,YAAY;AAC3C,wBAAgB;AAAA,MACjB,WAAW,KAAK,KAAK,OAAO,WAAW,cAAc;AACpD,wBAAgB;AAAA,MACjB;AAEA,cAAQ,IAAI,eAAe,WAAW,gBAAgB,cAAc,KAAK,IAAI,CAAC,IAAI,aAAa,EAAE;AAAA,IAClG;AAEA,+BAAA;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAOC,kBAAAA;AAAAA,MACNC,kBAAAA,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,QAAQ;AAAA,UACP,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,SAAS,EAAE,mBAAkD;AAC5D,WAAO;AAAA,MACN,SAAS,iBAAiB,KAAK,KAAK,OAAO,QAAQ,UAAU,YAAY,KACxE,KAAK,KAAK,OAAO,OAAO,KAAK,IAAI,CAClC,eAAe,KAAK,KAAK,UAAU;AAAA,MACnC,gBAAgB,CAAC,gBAAgB,SAAS,KAAK,KAAK,UAAU,IAC3D,8EACA;AAAA,IAAA;AAAA,EAEL;AACD;AAEO,MAAM,qCAAqCC,oBAAAA,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,6BAA+C;AAAA,EAC3D,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,OACL,OAAO,QAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,OAAO,KAAK,UAAQ,UAAU,KAAK,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC/G;AAAA,QAAI,CAAA,WACJ,mCAAmC,mBAAmB;AAAA,UACrD,YAAY,OAAO;AAAA,UACnB;AAAA,QAAA,CACA;AAAA,MAAA;AAAA,IACF;AAAA,EAEH;AACD;;;;"}
|
package/dist/production/src/modifications/constraints/CreateUniqueConstraintModification.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateUniqueConstraintModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/constraints/CreateUniqueConstraintModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\nimport { getUniqueConstraintColumns } from './utils'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateUniqueConstraintModificationHandler implements ModificationHandler<CreateUniqueConstraintModificationData> {\n\tconstructor(private readonly data: CreateUniqueConstraintModificationData, private readonly schema: Schema) {\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst shouldExecuteSql = !entity.view\n\t\t\t|| (this.data.unique.index && entity.view.materialized)\n\t\tif (!shouldExecuteSql) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.unique.fields\n\t\tconst columns = getUniqueConstraintColumns({\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t\tfields,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tif ('index' in this.data.unique && this.data.unique.index) {\n\t\t\tconst nulls = this.data.unique.nulls === 'not distinct' ? ' NULLS NOT DISTINCT' : ''\n\t\t\tconst methodClause = this.data.unique.method ? ` USING ${this.data.unique.method}` : ''\n\t\t\tbuilder.sql(`CREATE UNIQUE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(', ')})${nulls}`)\n\t\t} else {\n\t\t\tlet checkModifier = ''\n\t\t\tif (this.data.unique.timing === 'deferred') {\n\t\t\t\tcheckModifier = ' INITIALLY DEFERRED'\n\t\t\t} else if (this.data.unique.timing === 'deferrable') {\n\t\t\t\tcheckModifier = ' DEFERRABLE'\n\t\t\t}\n\n\t\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameIds.join(', ')})${checkModifier}`)\n\t\t}\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\tunique: [\n\t\t\t\t\t...entity.unique,\n\t\t\t\t\tthis.data.unique,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\treturn {\n\t\t\tmessage: `Create unique ${this.data.unique.index ? 'index' : 'constraint'} (${\n\t\t\t\tthis.data.unique.fields.join(', ')\n\t\t\t}) on entity ${this.data.entityName}`,\n\t\t\tfailureWarning: !createdEntities.includes(this.data.entityName)\n\t\t\t\t? 'Make sure no conflicting rows exists, otherwise this may fail in runtime.'\n\t\t\t\t: undefined,\n\t\t}\n\t}\n}\n\nexport const createUniqueConstraintModification = createModificationType({\n\tid: 'createUniqueConstraint',\n\thandler: CreateUniqueConstraintModificationHandler,\n})\n\nexport interface CreateUniqueConstraintModificationData {\n\tentityName: string\n\tunique: Model.UniqueConstraint | Model.UniqueIndex\n}\n\nexport class CreateUniqueConstraintDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.unique\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].unique.find(uniq => deepEqual(uniq.fields, it.fields)))\n\t\t\t\t.map(unique =>\n\t\t\t\t\tcreateUniqueConstraintModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tunique,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAQO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA+D,QAAgB;AAA/E,SAAA,OAAA;AAA+D,SAAA,SAAA;AAAA,EAC5F;AAAA,EAEO,UAAU,SAA2B,EAAE,8BAAyE;AACtH,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,mBAAmB,CAAC,OAAO,QAC5B,KAAK,KAAK,OAAO,SAAS,OAAO,KAAK;AAC3C,QAAI,CAAC,kBAAkB;AACtB;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK,OAAO;AAChC,UAAM,UAAU,2BAA2B;AAAA,MAC1C;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,MACnB;AAAA,IAAA,CACA;AAED,UAAM,cAAc,eAAe,OAAO,SAAS;AACnD,UAAM,gBAAgB,QAAQ,IAAI,cAAc;AAEhD,QAAI,WAAW,KAAK,KAAK,UAAU,KAAK,KAAK,OAAO,OAAO;AAC1D,YAAM,QAAQ,KAAK,KAAK,OAAO,UAAU,iBAAiB,wBAAwB;AAClF,YAAM,eAAe,KAAK,KAAK,OAAO,SAAS,UAAU,KAAK,KAAK,OAAO,MAAM,KAAK;AACrF,cAAQ,IAAI,0BAA0B,WAAW,GAAG,YAAY,KAAK,cAAc,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;AAAA,IACzG,OAAO;AACN,UAAI,gBAAgB;AACpB,UAAI,KAAK,KAAK,OAAO,WAAW,YAAY;AAC3C,wBAAgB;AAAA,MACjB,WAAW,KAAK,KAAK,OAAO,WAAW,cAAc;AACpD,wBAAgB;AAAA,MACjB;AAEA,cAAQ,IAAI,eAAe,WAAW,gBAAgB,cAAc,KAAK,IAAI,CAAC,IAAI,aAAa,EAAE;AAAA,IAClG;AAEA,+BAAA;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAO;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,QAAQ;AAAA,UACP,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,SAAS,EAAE,mBAAkD;AAC5D,WAAO;AAAA,MACN,SAAS,iBAAiB,KAAK,KAAK,OAAO,QAAQ,UAAU,YAAY,KACxE,KAAK,KAAK,OAAO,OAAO,KAAK,IAAI,CAClC,eAAe,KAAK,KAAK,UAAU;AAAA,MACnC,gBAAgB,CAAC,gBAAgB,SAAS,KAAK,KAAK,UAAU,IAC3D,8EACA;AAAA,IAAA;AAAA,EAEL;AACD;AAEO,MAAM,qCAAqC,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,6BAA+C;AAAA,EAC3D,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,OACL,OAAO,QAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,OAAO,KAAK,UAAQ,UAAU,KAAK,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC/G;AAAA,QAAI,CAAA,WACJ,mCAAmC,mBAAmB;AAAA,UACrD,YAAY,OAAO;AAAA,UACnB;AAAA,QAAA,CACA;AAAA,MAAA;AAAA,IACF;AAAA,EAEH;AACD;"}
|
|
1
|
+
{"version":3,"file":"CreateUniqueConstraintModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/constraints/CreateUniqueConstraintModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler.js'\nimport { wrapIdentifier } from '../../utils/dbHelpers.js'\nimport { getUniqueConstraintColumns } from './utils.js'\nimport deepEqual from 'fast-deep-equal'\n\nexport class CreateUniqueConstraintModificationHandler implements ModificationHandler<CreateUniqueConstraintModificationData> {\n\tconstructor(private readonly data: CreateUniqueConstraintModificationData, private readonly schema: Schema) {\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst shouldExecuteSql = !entity.view\n\t\t\t|| (this.data.unique.index && entity.view.materialized)\n\t\tif (!shouldExecuteSql) {\n\t\t\treturn\n\t\t}\n\t\tconst fields = this.data.unique.fields\n\t\tconst columns = getUniqueConstraintColumns({\n\t\t\tentity,\n\t\t\tmodel: this.schema.model,\n\t\t\tfields,\n\t\t})\n\n\t\tconst tableNameId = wrapIdentifier(entity.tableName)\n\t\tconst columnNameIds = columns.map(wrapIdentifier)\n\n\t\tif ('index' in this.data.unique && this.data.unique.index) {\n\t\t\tconst nulls = this.data.unique.nulls === 'not distinct' ? ' NULLS NOT DISTINCT' : ''\n\t\t\tconst methodClause = this.data.unique.method ? ` USING ${this.data.unique.method}` : ''\n\t\t\tbuilder.sql(`CREATE UNIQUE INDEX ON ${tableNameId}${methodClause} (${columnNameIds.join(', ')})${nulls}`)\n\t\t} else {\n\t\t\tlet checkModifier = ''\n\t\t\tif (this.data.unique.timing === 'deferred') {\n\t\t\t\tcheckModifier = ' INITIALLY DEFERRED'\n\t\t\t} else if (this.data.unique.timing === 'deferrable') {\n\t\t\t\tcheckModifier = ' DEFERRABLE'\n\t\t\t}\n\n\t\t\tbuilder.sql(`ALTER TABLE ${tableNameId} ADD UNIQUE (${columnNameIds.join(', ')})${checkModifier}`)\n\t\t}\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\tunique: [\n\t\t\t\t\t...entity.unique,\n\t\t\t\t\tthis.data.unique,\n\t\t\t\t],\n\t\t\t})),\n\t\t)\n\t}\n\n\tdescribe({ createdEntities }: { createdEntities: string[] }) {\n\t\treturn {\n\t\t\tmessage: `Create unique ${this.data.unique.index ? 'index' : 'constraint'} (${\n\t\t\t\tthis.data.unique.fields.join(', ')\n\t\t\t}) on entity ${this.data.entityName}`,\n\t\t\tfailureWarning: !createdEntities.includes(this.data.entityName)\n\t\t\t\t? 'Make sure no conflicting rows exists, otherwise this may fail in runtime.'\n\t\t\t\t: undefined,\n\t\t}\n\t}\n}\n\nexport const createUniqueConstraintModification = createModificationType({\n\tid: 'createUniqueConstraint',\n\thandler: CreateUniqueConstraintModificationHandler,\n})\n\nexport interface CreateUniqueConstraintModificationData {\n\tentityName: string\n\tunique: Model.UniqueConstraint | Model.UniqueIndex\n}\n\nexport class CreateUniqueConstraintDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(updatedSchema.model.entities).flatMap(entity =>\n\t\t\tentity.unique\n\t\t\t\t.filter(it => !originalSchema.model.entities[entity.name].unique.find(uniq => deepEqual(uniq.fields, it.fields)))\n\t\t\t\t.map(unique =>\n\t\t\t\t\tcreateUniqueConstraintModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tunique,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":[],"mappings":";;;;;AAQO,MAAM,0CAAiH;AAAA,EAC7H,YAA6B,MAA+D,QAAgB;AAA/E,SAAA,OAAA;AAA+D,SAAA,SAAA;AAAA,EAC5F;AAAA,EAEO,UAAU,SAA2B,EAAE,8BAAyE;AACtH,UAAM,SAAS,KAAK,OAAO,MAAM,SAAS,KAAK,KAAK,UAAU;AAC9D,UAAM,mBAAmB,CAAC,OAAO,QAC5B,KAAK,KAAK,OAAO,SAAS,OAAO,KAAK;AAC3C,QAAI,CAAC,kBAAkB;AACtB;AAAA,IACD;AACA,UAAM,SAAS,KAAK,KAAK,OAAO;AAChC,UAAM,UAAU,2BAA2B;AAAA,MAC1C;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,MACnB;AAAA,IAAA,CACA;AAED,UAAM,cAAc,eAAe,OAAO,SAAS;AACnD,UAAM,gBAAgB,QAAQ,IAAI,cAAc;AAEhD,QAAI,WAAW,KAAK,KAAK,UAAU,KAAK,KAAK,OAAO,OAAO;AAC1D,YAAM,QAAQ,KAAK,KAAK,OAAO,UAAU,iBAAiB,wBAAwB;AAClF,YAAM,eAAe,KAAK,KAAK,OAAO,SAAS,UAAU,KAAK,KAAK,OAAO,MAAM,KAAK;AACrF,cAAQ,IAAI,0BAA0B,WAAW,GAAG,YAAY,KAAK,cAAc,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;AAAA,IACzG,OAAO;AACN,UAAI,gBAAgB;AACpB,UAAI,KAAK,KAAK,OAAO,WAAW,YAAY;AAC3C,wBAAgB;AAAA,MACjB,WAAW,KAAK,KAAK,OAAO,WAAW,cAAc;AACpD,wBAAgB;AAAA,MACjB;AAEA,cAAQ,IAAI,eAAe,WAAW,gBAAgB,cAAc,KAAK,IAAI,CAAC,IAAI,aAAa,EAAE;AAAA,IAClG;AAEA,+BAAA;AAAA,EACD;AAAA,EAEO,mBAAkC;AACxC,WAAO;AAAA,MACN,aAAa,KAAK,KAAK,YAAY,CAAC,EAAE,cAAc;AAAA,QACnD,GAAG;AAAA,QACH,QAAQ;AAAA,UACP,GAAG,OAAO;AAAA,UACV,KAAK,KAAK;AAAA,QAAA;AAAA,MACX,EACC;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,SAAS,EAAE,mBAAkD;AAC5D,WAAO;AAAA,MACN,SAAS,iBAAiB,KAAK,KAAK,OAAO,QAAQ,UAAU,YAAY,KACxE,KAAK,KAAK,OAAO,OAAO,KAAK,IAAI,CAClC,eAAe,KAAK,KAAK,UAAU;AAAA,MACnC,gBAAgB,CAAC,gBAAgB,SAAS,KAAK,KAAK,UAAU,IAC3D,8EACA;AAAA,IAAA;AAAA,EAEL;AACD;AAEO,MAAM,qCAAqC,uBAAuB;AAAA,EACxE,IAAI;AAAA,EACJ,SAAS;AACV,CAAC;AAOM,MAAM,6BAA+C;AAAA,EAC3D,WAAW,gBAAwB,eAAuB;AACzD,WAAO,OAAO,OAAO,cAAc,MAAM,QAAQ,EAAE;AAAA,MAAQ,CAAA,WAC1D,OAAO,OACL,OAAO,QAAM,CAAC,eAAe,MAAM,SAAS,OAAO,IAAI,EAAE,OAAO,KAAK,UAAQ,UAAU,KAAK,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC/G;AAAA,QAAI,CAAA,WACJ,mCAAmC,mBAAmB;AAAA,UACrD,YAAY,OAAO;AAAA,UACnB;AAAA,QAAA,CACA;AAAA,MAAA;AAAA,IACF;AAAA,EAEH;AACD;"}
|
package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveUniqueConstraintModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/constraints/RemoveUniqueConstraintModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { getUniqueConstraintColumns } from './utils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class RemoveUniqueConstraintModificationHandler implements ModificationHandler<RemoveUniqueConstraintModificationData> {\n\tconstructor(private readonly data: RemoveUniqueConstraintModificationData, private readonly schema: Schema) {\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst unique = this.getUnique()\n\n\t\tconst shouldExecuteSql = !entity.view\n\t\t\t|| (unique.index && entity.view.materialized)\n\n\t\tif (!shouldExecuteSql) {\n\t\t\treturn\n\t\t}\n\n\t\tconst columns = getUniqueConstraintColumns({\n\t\t\tentity,\n\t\t\tfields: unique.fields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tif (unique.index) {\n\t\t\tconst indexNames = databaseMetadata.indexes.filter({\n\t\t\t\ttableName: entity.tableName,\n\t\t\t\tcolumnNames: columns,\n\t\t\t\tunique: true,\n\t\t\t}).getNames()\n\n\t\t\tfor (const name of indexNames) {\n\t\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t\t}\n\t\t} else {\n\t\t\tconst constraintNames = databaseMetadata.uniqueConstraints.filter({\n\t\t\t\ttableName: entity.tableName,\n\t\t\t\tcolumnNames: columns,\n\t\t\t}).getNames()\n\n\t\t\tfor (const name of constraintNames) {\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t\t}\n\t\t}\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst thisUnique = this.getUnique()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst unique = entity.unique.filter(it => !deepEqual(it, thisUnique))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tunique,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst unique = this.getUnique()\n\t\treturn { message: `Remove unique ${unique.index ? 'index' : 'constraint'} (${unique.fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetUnique(): Model.Unique {\n\t\tif ('unique' in this.data) {\n\t\t\treturn this.data.unique\n\t\t}\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst unique = 'constraintName' in this.data\n\t\t\t? entity.unique.find(it => 'name' in it && it.name === this.data.constraintName)\n\t\t\t: entity.unique.find(it => deepEqual(it.fields, this.data.fields))\n\n\t\tif (!unique) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn unique\n\t}\n}\n\nexport const removeUniqueConstraintModification = createModificationType({\n\tid: 'removeUniqueConstraint',\n\thandler: RemoveUniqueConstraintModificationHandler,\n})\n\nexport type RemoveUniqueConstraintModificationData =\n\t| {\n\t\tentityName: string\n\t\tfields?: never\n\t\tconstraintName?: never\n\t\tunique: Model.Unique\n\t}\n\t// deprecated\n\t| {\n\t\tentityName: string\n\t\tconstraintName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tconstraintName?: never\n\t}\n\nexport class RemoveUniqueConstraintDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.unique\n\t\t\t\t.filter(it => {\n\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\treturn !updatedEntity.unique.find(uniq => deepEqual(uniq, it))\n\t\t\t\t})\n\t\t\t\t.map(unique =>\n\t\t\t\t\tremoveUniqueConstraintModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tunique: unique,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":["getUniqueConstraintColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RemoveUniqueConstraintModification.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/constraints/RemoveUniqueConstraintModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler.js'\nimport deepEqual from 'fast-deep-equal'\nimport { getUniqueConstraintColumns } from './utils.js'\nimport { wrapIdentifier } from '../../utils/dbHelpers.js'\n\nexport class RemoveUniqueConstraintModificationHandler implements ModificationHandler<RemoveUniqueConstraintModificationData> {\n\tconstructor(private readonly data: RemoveUniqueConstraintModificationData, private readonly schema: Schema) {\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst unique = this.getUnique()\n\n\t\tconst shouldExecuteSql = !entity.view\n\t\t\t|| (unique.index && entity.view.materialized)\n\n\t\tif (!shouldExecuteSql) {\n\t\t\treturn\n\t\t}\n\n\t\tconst columns = getUniqueConstraintColumns({\n\t\t\tentity,\n\t\t\tfields: unique.fields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tif (unique.index) {\n\t\t\tconst indexNames = databaseMetadata.indexes.filter({\n\t\t\t\ttableName: entity.tableName,\n\t\t\t\tcolumnNames: columns,\n\t\t\t\tunique: true,\n\t\t\t}).getNames()\n\n\t\t\tfor (const name of indexNames) {\n\t\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t\t}\n\t\t} else {\n\t\t\tconst constraintNames = databaseMetadata.uniqueConstraints.filter({\n\t\t\t\ttableName: entity.tableName,\n\t\t\t\tcolumnNames: columns,\n\t\t\t}).getNames()\n\n\t\t\tfor (const name of constraintNames) {\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t\t}\n\t\t}\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst thisUnique = this.getUnique()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst unique = entity.unique.filter(it => !deepEqual(it, thisUnique))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tunique,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst unique = this.getUnique()\n\t\treturn { message: `Remove unique ${unique.index ? 'index' : 'constraint'} (${unique.fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetUnique(): Model.Unique {\n\t\tif ('unique' in this.data) {\n\t\t\treturn this.data.unique\n\t\t}\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst unique = 'constraintName' in this.data\n\t\t\t? entity.unique.find(it => 'name' in it && it.name === this.data.constraintName)\n\t\t\t: entity.unique.find(it => deepEqual(it.fields, this.data.fields))\n\n\t\tif (!unique) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn unique\n\t}\n}\n\nexport const removeUniqueConstraintModification = createModificationType({\n\tid: 'removeUniqueConstraint',\n\thandler: RemoveUniqueConstraintModificationHandler,\n})\n\nexport type RemoveUniqueConstraintModificationData =\n\t| {\n\t\tentityName: string\n\t\tfields?: never\n\t\tconstraintName?: never\n\t\tunique: Model.Unique\n\t}\n\t// deprecated\n\t| {\n\t\tentityName: string\n\t\tconstraintName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tconstraintName?: never\n\t}\n\nexport class RemoveUniqueConstraintDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.unique\n\t\t\t\t.filter(it => {\n\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\treturn !updatedEntity.unique.find(uniq => deepEqual(uniq, it))\n\t\t\t\t})\n\t\t\t\t.map(unique =>\n\t\t\t\t\tremoveUniqueConstraintModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tunique: unique,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":["getUniqueConstraintColumns","wrapIdentifier","updateModel","updateEntity","createModificationType"],"mappings":"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"}
|
package/dist/production/src/modifications/constraints/RemoveUniqueConstraintModification.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveUniqueConstraintModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/constraints/RemoveUniqueConstraintModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler'\nimport deepEqual from 'fast-deep-equal'\nimport { getUniqueConstraintColumns } from './utils'\nimport { wrapIdentifier } from '../../utils/dbHelpers'\n\nexport class RemoveUniqueConstraintModificationHandler implements ModificationHandler<RemoveUniqueConstraintModificationData> {\n\tconstructor(private readonly data: RemoveUniqueConstraintModificationData, private readonly schema: Schema) {\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst unique = this.getUnique()\n\n\t\tconst shouldExecuteSql = !entity.view\n\t\t\t|| (unique.index && entity.view.materialized)\n\n\t\tif (!shouldExecuteSql) {\n\t\t\treturn\n\t\t}\n\n\t\tconst columns = getUniqueConstraintColumns({\n\t\t\tentity,\n\t\t\tfields: unique.fields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tif (unique.index) {\n\t\t\tconst indexNames = databaseMetadata.indexes.filter({\n\t\t\t\ttableName: entity.tableName,\n\t\t\t\tcolumnNames: columns,\n\t\t\t\tunique: true,\n\t\t\t}).getNames()\n\n\t\t\tfor (const name of indexNames) {\n\t\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t\t}\n\t\t} else {\n\t\t\tconst constraintNames = databaseMetadata.uniqueConstraints.filter({\n\t\t\t\ttableName: entity.tableName,\n\t\t\t\tcolumnNames: columns,\n\t\t\t}).getNames()\n\n\t\t\tfor (const name of constraintNames) {\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t\t}\n\t\t}\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst thisUnique = this.getUnique()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst unique = entity.unique.filter(it => !deepEqual(it, thisUnique))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tunique,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst unique = this.getUnique()\n\t\treturn { message: `Remove unique ${unique.index ? 'index' : 'constraint'} (${unique.fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetUnique(): Model.Unique {\n\t\tif ('unique' in this.data) {\n\t\t\treturn this.data.unique\n\t\t}\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst unique = 'constraintName' in this.data\n\t\t\t? entity.unique.find(it => 'name' in it && it.name === this.data.constraintName)\n\t\t\t: entity.unique.find(it => deepEqual(it.fields, this.data.fields))\n\n\t\tif (!unique) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn unique\n\t}\n}\n\nexport const removeUniqueConstraintModification = createModificationType({\n\tid: 'removeUniqueConstraint',\n\thandler: RemoveUniqueConstraintModificationHandler,\n})\n\nexport type RemoveUniqueConstraintModificationData =\n\t| {\n\t\tentityName: string\n\t\tfields?: never\n\t\tconstraintName?: never\n\t\tunique: Model.Unique\n\t}\n\t// deprecated\n\t| {\n\t\tentityName: string\n\t\tconstraintName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tconstraintName?: never\n\t}\n\nexport class RemoveUniqueConstraintDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.unique\n\t\t\t\t.filter(it => {\n\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\treturn !updatedEntity.unique.find(uniq => deepEqual(uniq, it))\n\t\t\t\t})\n\t\t\t\t.map(unique =>\n\t\t\t\t\tremoveUniqueConstraintModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tunique: unique,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RemoveUniqueConstraintModification.js","sources":["../../../../../../packages/schema-migrations/src/modifications/constraints/RemoveUniqueConstraintModification.ts"],"sourcesContent":["import { MigrationBuilder } from '@contember/database-migrations'\nimport { Model, Schema } from '@contember/schema'\nimport { SchemaUpdater, updateEntity, updateModel } from '../utils/schemaUpdateUtils.js'\nimport { createModificationType, Differ, ModificationHandler, ModificationHandlerCreateSqlOptions } from '../ModificationHandler.js'\nimport deepEqual from 'fast-deep-equal'\nimport { getUniqueConstraintColumns } from './utils.js'\nimport { wrapIdentifier } from '../../utils/dbHelpers.js'\n\nexport class RemoveUniqueConstraintModificationHandler implements ModificationHandler<RemoveUniqueConstraintModificationData> {\n\tconstructor(private readonly data: RemoveUniqueConstraintModificationData, private readonly schema: Schema) {\n\t}\n\n\tpublic createSql(builder: MigrationBuilder, { databaseMetadata, invalidateDatabaseMetadata }: ModificationHandlerCreateSqlOptions): void {\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst unique = this.getUnique()\n\n\t\tconst shouldExecuteSql = !entity.view\n\t\t\t|| (unique.index && entity.view.materialized)\n\n\t\tif (!shouldExecuteSql) {\n\t\t\treturn\n\t\t}\n\n\t\tconst columns = getUniqueConstraintColumns({\n\t\t\tentity,\n\t\t\tfields: unique.fields,\n\t\t\tmodel: this.schema.model,\n\t\t})\n\n\t\tif (unique.index) {\n\t\t\tconst indexNames = databaseMetadata.indexes.filter({\n\t\t\t\ttableName: entity.tableName,\n\t\t\t\tcolumnNames: columns,\n\t\t\t\tunique: true,\n\t\t\t}).getNames()\n\n\t\t\tfor (const name of indexNames) {\n\t\t\t\tbuilder.sql(`DROP INDEX ${wrapIdentifier(name)}`)\n\t\t\t}\n\t\t} else {\n\t\t\tconst constraintNames = databaseMetadata.uniqueConstraints.filter({\n\t\t\t\ttableName: entity.tableName,\n\t\t\t\tcolumnNames: columns,\n\t\t\t}).getNames()\n\n\t\t\tfor (const name of constraintNames) {\n\t\t\t\tbuilder.sql(`ALTER TABLE ${wrapIdentifier(entity.tableName)} DROP CONSTRAINT ${wrapIdentifier(name)}`)\n\t\t\t}\n\t\t}\n\n\t\tinvalidateDatabaseMetadata()\n\t}\n\n\tpublic getSchemaUpdater(): SchemaUpdater {\n\t\tconst thisUnique = this.getUnique()\n\t\treturn updateModel(\n\t\t\tupdateEntity(this.data.entityName, ({ entity }) => {\n\t\t\t\tconst unique = entity.unique.filter(it => !deepEqual(it, thisUnique))\n\t\t\t\treturn {\n\t\t\t\t\t...entity,\n\t\t\t\t\tunique,\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n\n\tdescribe() {\n\t\tconst unique = this.getUnique()\n\t\treturn { message: `Remove unique ${unique.index ? 'index' : 'constraint'} (${unique.fields.join(', ')}) on entity ${this.data.entityName}` }\n\t}\n\n\tgetUnique(): Model.Unique {\n\t\tif ('unique' in this.data) {\n\t\t\treturn this.data.unique\n\t\t}\n\t\tconst entity = this.schema.model.entities[this.data.entityName]\n\t\tconst unique = 'constraintName' in this.data\n\t\t\t? entity.unique.find(it => 'name' in it && it.name === this.data.constraintName)\n\t\t\t: entity.unique.find(it => deepEqual(it.fields, this.data.fields))\n\n\t\tif (!unique) {\n\t\t\tthrow new Error()\n\t\t}\n\t\treturn unique\n\t}\n}\n\nexport const removeUniqueConstraintModification = createModificationType({\n\tid: 'removeUniqueConstraint',\n\thandler: RemoveUniqueConstraintModificationHandler,\n})\n\nexport type RemoveUniqueConstraintModificationData =\n\t| {\n\t\tentityName: string\n\t\tfields?: never\n\t\tconstraintName?: never\n\t\tunique: Model.Unique\n\t}\n\t// deprecated\n\t| {\n\t\tentityName: string\n\t\tconstraintName: string\n\t\tfields?: never\n\t}\n\t| {\n\t\tentityName: string\n\t\tfields: readonly string[]\n\t\tconstraintName?: never\n\t}\n\nexport class RemoveUniqueConstraintDiffer implements Differ {\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn Object.values(originalSchema.model.entities).flatMap(entity =>\n\t\t\tentity.unique\n\t\t\t\t.filter(it => {\n\t\t\t\t\tconst updatedEntity = updatedSchema.model.entities[entity.name]\n\t\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t\treturn !updatedEntity.unique.find(uniq => deepEqual(uniq, it))\n\t\t\t\t})\n\t\t\t\t.map(unique =>\n\t\t\t\t\tremoveUniqueConstraintModification.createModification({\n\t\t\t\t\t\tentityName: entity.name,\n\t\t\t\t\t\tunique: unique,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t)\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveChangedFieldDiffer.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/differs/RemoveChangedFieldDiffer.ts"],"sourcesContent":["import { Differ } from '../ModificationHandler'\nimport { Model, Schema } from '@contember/schema'\nimport { updateFields } from '../utils/diffUtils'\nimport deepEqual from 'fast-deep-equal'\nimport { removeFieldModification } from '../fields'\n\nexport class RemoveChangedFieldDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly matcher: (originalField: Model.AnyField) => boolean,\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateFields(originalSchema, updatedSchema, ({ updatedField, originalField, updatedEntity }) => {\n\t\t\tif (!this.matcher(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!deepEqual({ ...updatedField, inversedBy: undefined }, { ...originalField, inversedBy: undefined })) {\n\t\t\t\treturn [\n\t\t\t\t\tremoveFieldModification.createModification({\n\t\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\t\tfieldName: updatedField.name,\n\t\t\t\t\t}),\n\t\t\t\t]\n\t\t\t}\n\t\t})\n\t}\n}\n"],"names":["updateFields","removeFieldModification"],"mappings":";;;;;;;;AAMO,MAAM,yBAA2C;AAAA,EACvD,YACkB,SAChB;AADgB,SAAA,UAAA;AAAA,EAElB;AAAA,EAEA,WAAW,gBAAwB,eAAuB;AACzD,WAAOA,UAAAA,aAAa,gBAAgB,eAAe,CAAC,EAAE,cAAc,eAAe,oBAAoB;AACtG,UAAI,CAAC,KAAK,QAAQ,aAAa,GAAG;AACjC,eAAO;AAAA,MACR;AACA,UAAI,CAAC,UAAU,EAAE,GAAG,cAAc,YAAY,UAAa,EAAE,GAAG,eAAe,YAAY,OAAA,CAAW,GAAG;AACxG,eAAO;AAAA,UACNC,wBAAAA,wBAAwB,mBAAmB;AAAA,YAC1C,YAAY,cAAc;AAAA,YAC1B,WAAW,aAAa;AAAA,UAAA,CACxB;AAAA,QAAA;AAAA,MAEH;AAAA,IACD,CAAC;AAAA,EACF;AACD;;"}
|
|
1
|
+
{"version":3,"file":"RemoveChangedFieldDiffer.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/differs/RemoveChangedFieldDiffer.ts"],"sourcesContent":["import { Differ } from '../ModificationHandler.js'\nimport { Model, Schema } from '@contember/schema'\nimport { updateFields } from '../utils/diffUtils.js'\nimport deepEqual from 'fast-deep-equal'\nimport { removeFieldModification } from '../fields/index.js'\n\nexport class RemoveChangedFieldDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly matcher: (originalField: Model.AnyField) => boolean,\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateFields(originalSchema, updatedSchema, ({ updatedField, originalField, updatedEntity }) => {\n\t\t\tif (!this.matcher(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!deepEqual({ ...updatedField, inversedBy: undefined }, { ...originalField, inversedBy: undefined })) {\n\t\t\t\treturn [\n\t\t\t\t\tremoveFieldModification.createModification({\n\t\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\t\tfieldName: updatedField.name,\n\t\t\t\t\t}),\n\t\t\t\t]\n\t\t\t}\n\t\t})\n\t}\n}\n"],"names":["updateFields","removeFieldModification"],"mappings":";;;;;;;;AAMO,MAAM,yBAA2C;AAAA,EACvD,YACkB,SAChB;AADgB,SAAA,UAAA;AAAA,EAElB;AAAA,EAEA,WAAW,gBAAwB,eAAuB;AACzD,WAAOA,UAAAA,aAAa,gBAAgB,eAAe,CAAC,EAAE,cAAc,eAAe,oBAAoB;AACtG,UAAI,CAAC,KAAK,QAAQ,aAAa,GAAG;AACjC,eAAO;AAAA,MACR;AACA,UAAI,CAAC,UAAU,EAAE,GAAG,cAAc,YAAY,UAAa,EAAE,GAAG,eAAe,YAAY,OAAA,CAAW,GAAG;AACxG,eAAO;AAAA,UACNC,wBAAAA,wBAAwB,mBAAmB;AAAA,YAC1C,YAAY,cAAc;AAAA,YAC1B,WAAW,aAAa;AAAA,UAAA,CACxB;AAAA,QAAA;AAAA,MAEH;AAAA,IACD,CAAC;AAAA,EACF;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveChangedFieldDiffer.js","sources":["../../../../../../packages/schema-migrations/src/modifications/differs/RemoveChangedFieldDiffer.ts"],"sourcesContent":["import { Differ } from '../ModificationHandler'\nimport { Model, Schema } from '@contember/schema'\nimport { updateFields } from '../utils/diffUtils'\nimport deepEqual from 'fast-deep-equal'\nimport { removeFieldModification } from '../fields'\n\nexport class RemoveChangedFieldDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly matcher: (originalField: Model.AnyField) => boolean,\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateFields(originalSchema, updatedSchema, ({ updatedField, originalField, updatedEntity }) => {\n\t\t\tif (!this.matcher(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!deepEqual({ ...updatedField, inversedBy: undefined }, { ...originalField, inversedBy: undefined })) {\n\t\t\t\treturn [\n\t\t\t\t\tremoveFieldModification.createModification({\n\t\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\t\tfieldName: updatedField.name,\n\t\t\t\t\t}),\n\t\t\t\t]\n\t\t\t}\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,yBAA2C;AAAA,EACvD,YACkB,SAChB;AADgB,SAAA,UAAA;AAAA,EAElB;AAAA,EAEA,WAAW,gBAAwB,eAAuB;AACzD,WAAO,aAAa,gBAAgB,eAAe,CAAC,EAAE,cAAc,eAAe,oBAAoB;AACtG,UAAI,CAAC,KAAK,QAAQ,aAAa,GAAG;AACjC,eAAO;AAAA,MACR;AACA,UAAI,CAAC,UAAU,EAAE,GAAG,cAAc,YAAY,UAAa,EAAE,GAAG,eAAe,YAAY,OAAA,CAAW,GAAG;AACxG,eAAO;AAAA,UACN,wBAAwB,mBAAmB;AAAA,YAC1C,YAAY,cAAc;AAAA,YAC1B,WAAW,aAAa;AAAA,UAAA,CACxB;AAAA,QAAA;AAAA,MAEH;AAAA,IACD,CAAC;AAAA,EACF;AACD;"}
|
|
1
|
+
{"version":3,"file":"RemoveChangedFieldDiffer.js","sources":["../../../../../../packages/schema-migrations/src/modifications/differs/RemoveChangedFieldDiffer.ts"],"sourcesContent":["import { Differ } from '../ModificationHandler.js'\nimport { Model, Schema } from '@contember/schema'\nimport { updateFields } from '../utils/diffUtils.js'\nimport deepEqual from 'fast-deep-equal'\nimport { removeFieldModification } from '../fields/index.js'\n\nexport class RemoveChangedFieldDiffer implements Differ {\n\tconstructor(\n\t\tprivate readonly matcher: (originalField: Model.AnyField) => boolean,\n\t) {\n\t}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\treturn updateFields(originalSchema, updatedSchema, ({ updatedField, originalField, updatedEntity }) => {\n\t\t\tif (!this.matcher(originalField)) {\n\t\t\t\treturn undefined\n\t\t\t}\n\t\t\tif (!deepEqual({ ...updatedField, inversedBy: undefined }, { ...originalField, inversedBy: undefined })) {\n\t\t\t\treturn [\n\t\t\t\t\tremoveFieldModification.createModification({\n\t\t\t\t\t\tentityName: updatedEntity.name,\n\t\t\t\t\t\tfieldName: updatedField.name,\n\t\t\t\t\t}),\n\t\t\t\t]\n\t\t\t}\n\t\t})\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAMO,MAAM,yBAA2C;AAAA,EACvD,YACkB,SAChB;AADgB,SAAA,UAAA;AAAA,EAElB;AAAA,EAEA,WAAW,gBAAwB,eAAuB;AACzD,WAAO,aAAa,gBAAgB,eAAe,CAAC,EAAE,cAAc,eAAe,oBAAoB;AACtG,UAAI,CAAC,KAAK,QAAQ,aAAa,GAAG;AACjC,eAAO;AAAA,MACR;AACA,UAAI,CAAC,UAAU,EAAE,GAAG,cAAc,YAAY,UAAa,EAAE,GAAG,eAAe,YAAY,OAAA,CAAW,GAAG;AACxG,eAAO;AAAA,UACN,wBAAwB,mBAAmB;AAAA,YAC1C,YAAY,cAAc;AAAA,YAC1B,WAAW,aAAa;AAAA,UAAA,CACxB;AAAA,QAAA;AAAA,MAEH;AAAA,IACD,CAAC;AAAA,EACF;AACD;"}
|
|
@@ -7,6 +7,9 @@ require("@contember/schema-utils");
|
|
|
7
7
|
require("@contember/database-migrations");
|
|
8
8
|
const UpdateColumnDefinitionModification = require("../columns/UpdateColumnDefinitionModification.cjs");
|
|
9
9
|
class RemoveViewDiffer {
|
|
10
|
+
constructor(recreateAllViews = false) {
|
|
11
|
+
this.recreateAllViews = recreateAllViews;
|
|
12
|
+
}
|
|
10
13
|
createDiff(originalSchema, updatedSchema) {
|
|
11
14
|
const changedOrRemovedViews = Object.values(originalSchema.model.entities).filter((it) => {
|
|
12
15
|
const updatedEntity = updatedSchema.model.entities[it.name];
|
|
@@ -23,7 +26,7 @@ class RemoveViewDiffer {
|
|
|
23
26
|
return true;
|
|
24
27
|
}
|
|
25
28
|
if (!deepEqual(updatedEntity.view, it.view)) {
|
|
26
|
-
return
|
|
29
|
+
return this.recreateAllViews || !viewDependencies.isReplaceableViewChange(it, updatedEntity);
|
|
27
30
|
}
|
|
28
31
|
return false;
|
|
29
32
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveViewDiffer.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/differs/RemoveViewDiffer.ts"],"sourcesContent":["import { Differ } from '../ModificationHandler'\nimport { Schema } from '@contember/schema'\nimport deepEqual from 'fast-deep-equal'\nimport { cascadeRemoveDependantViews } from '../utils/viewDependencies'\nimport { UpdateColumnDefinitionDiffer } from '../columns'\n\n/**\n * Remove
|
|
1
|
+
{"version":3,"file":"RemoveViewDiffer.cjs","sources":["../../../../../../packages/schema-migrations/src/modifications/differs/RemoveViewDiffer.ts"],"sourcesContent":["import { Differ } from '../ModificationHandler.js'\nimport { Schema } from '@contember/schema'\nimport deepEqual from 'fast-deep-equal'\nimport { cascadeRemoveDependantViews, isReplaceableViewChange } from '../utils/viewDependencies.js'\nimport { UpdateColumnDefinitionDiffer } from '../columns/index.js'\n\n/**\n * Remove views that were removed or changed in a way that requires a drop & recreate.\n *\n * View changes that can be applied in-place via `CREATE OR REPLACE VIEW` (see\n * {@link isReplaceableViewChange}) are intentionally skipped here so they don't trigger\n * the drop cascade onto dependant views – those are handled by `UpdateViewDiffer`.\n *\n * When `recreateAllViews` is set, the in-place optimization is disabled and every changed\n * view drops & recreates (with its dependant cascade) as before. This is the escape hatch\n * for the rare case where a view's actual output columns drifted without a matching field\n * change, which `CREATE OR REPLACE VIEW` would reject at execute time (`SQLSTATE 42P16`).\n */\nexport class RemoveViewDiffer implements Differ {\n\tconstructor(private readonly recreateAllViews: boolean = false) {}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tconst changedOrRemovedViews = Object.values(originalSchema.model.entities)\n\t\t\t.filter(it => {\n\t\t\t\tconst updatedEntity = updatedSchema.model.entities[it.name]\n\n\t\t\t\tif (!updatedEntity && !!it.view) {\n\t\t\t\t\treturn true // view entity removed\n\t\t\t\t}\n\n\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\treturn false // non-view entity removed\n\t\t\t\t}\n\n\t\t\t\tif (!updatedEntity.view && !it.view) {\n\t\t\t\t\treturn false // none is view\n\t\t\t\t}\n\n\t\t\t\tif (!!it.view !== !!updatedEntity.view) {\n\t\t\t\t\treturn true // change between regular entity and view entity\n\t\t\t\t}\n\n\t\t\t\tif (!deepEqual(updatedEntity.view, it.view)) {\n\t\t\t\t\t// view changed – cascade only when it cannot be replaced in-place\n\t\t\t\t\treturn this.recreateAllViews || !isReplaceableViewChange(it, updatedEntity)\n\t\t\t\t}\n\n\t\t\t\treturn false\n\t\t\t})\n\n\t\tconst columnDiffer = new UpdateColumnDefinitionDiffer()\n\t\tconst columnChanges = columnDiffer.createDiff(originalSchema, updatedSchema)\n\t\tif (changedOrRemovedViews.length === 0 && columnChanges.length === 0) {\n\t\t\treturn []\n\t\t}\n\n\t\tconst changedColumnsEntities = Array.from(new Set(columnChanges.map(it => it.entityName)))\n\t\t\t.map(it => originalSchema.model.entities[it])\n\t\treturn cascadeRemoveDependantViews(originalSchema.model, [...changedOrRemovedViews, ...changedColumnsEntities])\n\t}\n}\n"],"names":["isReplaceableViewChange","UpdateColumnDefinitionDiffer","cascadeRemoveDependantViews"],"mappings":";;;;;;;;AAkBO,MAAM,iBAAmC;AAAA,EAC/C,YAA6B,mBAA4B,OAAO;AAAnC,SAAA,mBAAA;AAAA,EAAoC;AAAA,EAEjE,WAAW,gBAAwB,eAAuB;AACzD,UAAM,wBAAwB,OAAO,OAAO,eAAe,MAAM,QAAQ,EACvE,OAAO,CAAA,OAAM;AACb,YAAM,gBAAgB,cAAc,MAAM,SAAS,GAAG,IAAI;AAE1D,UAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,MAAM;AAChC,eAAO;AAAA,MACR;AAEA,UAAI,CAAC,eAAe;AACnB,eAAO;AAAA,MACR;AAEA,UAAI,CAAC,cAAc,QAAQ,CAAC,GAAG,MAAM;AACpC,eAAO;AAAA,MACR;AAEA,UAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,cAAc,MAAM;AACvC,eAAO;AAAA,MACR;AAEA,UAAI,CAAC,UAAU,cAAc,MAAM,GAAG,IAAI,GAAG;AAE5C,eAAO,KAAK,oBAAoB,CAACA,iBAAAA,wBAAwB,IAAI,aAAa;AAAA,MAC3E;AAEA,aAAO;AAAA,IACR,CAAC;AAEF,UAAM,eAAe,IAAIC,gEAAA;AACzB,UAAM,gBAAgB,aAAa,WAAW,gBAAgB,aAAa;AAC3E,QAAI,sBAAsB,WAAW,KAAK,cAAc,WAAW,GAAG;AACrE,aAAO,CAAA;AAAA,IACR;AAEA,UAAM,yBAAyB,MAAM,KAAK,IAAI,IAAI,cAAc,IAAI,CAAA,OAAM,GAAG,UAAU,CAAC,CAAC,EACvF,IAAI,CAAA,OAAM,eAAe,MAAM,SAAS,EAAE,CAAC;AAC7C,WAAOC,iBAAAA,4BAA4B,eAAe,OAAO,CAAC,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAAA,EAC/G;AACD;;"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import deepEqual from "fast-deep-equal";
|
|
2
|
-
import { cascadeRemoveDependantViews } from "../utils/viewDependencies.js";
|
|
2
|
+
import { isReplaceableViewChange, cascadeRemoveDependantViews } from "../utils/viewDependencies.js";
|
|
3
3
|
import "@contember/schema";
|
|
4
4
|
import "@contember/schema-utils";
|
|
5
5
|
import "@contember/database-migrations";
|
|
6
6
|
import { UpdateColumnDefinitionDiffer } from "../columns/UpdateColumnDefinitionModification.js";
|
|
7
7
|
class RemoveViewDiffer {
|
|
8
|
+
constructor(recreateAllViews = false) {
|
|
9
|
+
this.recreateAllViews = recreateAllViews;
|
|
10
|
+
}
|
|
8
11
|
createDiff(originalSchema, updatedSchema) {
|
|
9
12
|
const changedOrRemovedViews = Object.values(originalSchema.model.entities).filter((it) => {
|
|
10
13
|
const updatedEntity = updatedSchema.model.entities[it.name];
|
|
@@ -21,7 +24,7 @@ class RemoveViewDiffer {
|
|
|
21
24
|
return true;
|
|
22
25
|
}
|
|
23
26
|
if (!deepEqual(updatedEntity.view, it.view)) {
|
|
24
|
-
return
|
|
27
|
+
return this.recreateAllViews || !isReplaceableViewChange(it, updatedEntity);
|
|
25
28
|
}
|
|
26
29
|
return false;
|
|
27
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoveViewDiffer.js","sources":["../../../../../../packages/schema-migrations/src/modifications/differs/RemoveViewDiffer.ts"],"sourcesContent":["import { Differ } from '../ModificationHandler'\nimport { Schema } from '@contember/schema'\nimport deepEqual from 'fast-deep-equal'\nimport { cascadeRemoveDependantViews } from '../utils/viewDependencies'\nimport { UpdateColumnDefinitionDiffer } from '../columns'\n\n/**\n * Remove
|
|
1
|
+
{"version":3,"file":"RemoveViewDiffer.js","sources":["../../../../../../packages/schema-migrations/src/modifications/differs/RemoveViewDiffer.ts"],"sourcesContent":["import { Differ } from '../ModificationHandler.js'\nimport { Schema } from '@contember/schema'\nimport deepEqual from 'fast-deep-equal'\nimport { cascadeRemoveDependantViews, isReplaceableViewChange } from '../utils/viewDependencies.js'\nimport { UpdateColumnDefinitionDiffer } from '../columns/index.js'\n\n/**\n * Remove views that were removed or changed in a way that requires a drop & recreate.\n *\n * View changes that can be applied in-place via `CREATE OR REPLACE VIEW` (see\n * {@link isReplaceableViewChange}) are intentionally skipped here so they don't trigger\n * the drop cascade onto dependant views – those are handled by `UpdateViewDiffer`.\n *\n * When `recreateAllViews` is set, the in-place optimization is disabled and every changed\n * view drops & recreates (with its dependant cascade) as before. This is the escape hatch\n * for the rare case where a view's actual output columns drifted without a matching field\n * change, which `CREATE OR REPLACE VIEW` would reject at execute time (`SQLSTATE 42P16`).\n */\nexport class RemoveViewDiffer implements Differ {\n\tconstructor(private readonly recreateAllViews: boolean = false) {}\n\n\tcreateDiff(originalSchema: Schema, updatedSchema: Schema) {\n\t\tconst changedOrRemovedViews = Object.values(originalSchema.model.entities)\n\t\t\t.filter(it => {\n\t\t\t\tconst updatedEntity = updatedSchema.model.entities[it.name]\n\n\t\t\t\tif (!updatedEntity && !!it.view) {\n\t\t\t\t\treturn true // view entity removed\n\t\t\t\t}\n\n\t\t\t\tif (!updatedEntity) {\n\t\t\t\t\treturn false // non-view entity removed\n\t\t\t\t}\n\n\t\t\t\tif (!updatedEntity.view && !it.view) {\n\t\t\t\t\treturn false // none is view\n\t\t\t\t}\n\n\t\t\t\tif (!!it.view !== !!updatedEntity.view) {\n\t\t\t\t\treturn true // change between regular entity and view entity\n\t\t\t\t}\n\n\t\t\t\tif (!deepEqual(updatedEntity.view, it.view)) {\n\t\t\t\t\t// view changed – cascade only when it cannot be replaced in-place\n\t\t\t\t\treturn this.recreateAllViews || !isReplaceableViewChange(it, updatedEntity)\n\t\t\t\t}\n\n\t\t\t\treturn false\n\t\t\t})\n\n\t\tconst columnDiffer = new UpdateColumnDefinitionDiffer()\n\t\tconst columnChanges = columnDiffer.createDiff(originalSchema, updatedSchema)\n\t\tif (changedOrRemovedViews.length === 0 && columnChanges.length === 0) {\n\t\t\treturn []\n\t\t}\n\n\t\tconst changedColumnsEntities = Array.from(new Set(columnChanges.map(it => it.entityName)))\n\t\t\t.map(it => originalSchema.model.entities[it])\n\t\treturn cascadeRemoveDependantViews(originalSchema.model, [...changedOrRemovedViews, ...changedColumnsEntities])\n\t}\n}\n"],"names":[],"mappings":";;;;;;AAkBO,MAAM,iBAAmC;AAAA,EAC/C,YAA6B,mBAA4B,OAAO;AAAnC,SAAA,mBAAA;AAAA,EAAoC;AAAA,EAEjE,WAAW,gBAAwB,eAAuB;AACzD,UAAM,wBAAwB,OAAO,OAAO,eAAe,MAAM,QAAQ,EACvE,OAAO,CAAA,OAAM;AACb,YAAM,gBAAgB,cAAc,MAAM,SAAS,GAAG,IAAI;AAE1D,UAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,MAAM;AAChC,eAAO;AAAA,MACR;AAEA,UAAI,CAAC,eAAe;AACnB,eAAO;AAAA,MACR;AAEA,UAAI,CAAC,cAAc,QAAQ,CAAC,GAAG,MAAM;AACpC,eAAO;AAAA,MACR;AAEA,UAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,cAAc,MAAM;AACvC,eAAO;AAAA,MACR;AAEA,UAAI,CAAC,UAAU,cAAc,MAAM,GAAG,IAAI,GAAG;AAE5C,eAAO,KAAK,oBAAoB,CAAC,wBAAwB,IAAI,aAAa;AAAA,MAC3E;AAEA,aAAO;AAAA,IACR,CAAC;AAEF,UAAM,eAAe,IAAI,6BAAA;AACzB,UAAM,gBAAgB,aAAa,WAAW,gBAAgB,aAAa;AAC3E,QAAI,sBAAsB,WAAW,KAAK,cAAc,WAAW,GAAG;AACrE,aAAO,CAAA;AAAA,IACR;AAEA,UAAM,yBAAyB,MAAM,KAAK,IAAI,IAAI,cAAc,IAAI,CAAA,OAAM,GAAG,UAAU,CAAC,CAAC,EACvF,IAAI,CAAA,OAAM,eAAe,MAAM,SAAS,EAAE,CAAC;AAC7C,WAAO,4BAA4B,eAAe,OAAO,CAAC,GAAG,uBAAuB,GAAG,sBAAsB,CAAC;AAAA,EAC/G;AACD;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const deepEqual = require("fast-deep-equal");
|
|
4
|
+
const viewDependencies = require("../utils/viewDependencies.cjs");
|
|
5
|
+
const UpdateViewModification = require("../entities/UpdateViewModification.cjs");
|
|
6
|
+
class UpdateViewDiffer {
|
|
7
|
+
createDiff(originalSchema, updatedSchema) {
|
|
8
|
+
const candidates = Object.values(updatedSchema.model.entities).filter((updated) => {
|
|
9
|
+
const original = originalSchema.model.entities[updated.name];
|
|
10
|
+
if (!original?.view || !updated.view) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
if (deepEqual(original.view, updated.view)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return viewDependencies.isReplaceableViewChange(original, updated);
|
|
17
|
+
});
|
|
18
|
+
const candidateNames = new Set(candidates.map((it) => it.name));
|
|
19
|
+
const visited = /* @__PURE__ */ new Set();
|
|
20
|
+
const ordered = [];
|
|
21
|
+
const visit = (entity) => {
|
|
22
|
+
if (visited.has(entity.name)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
visited.add(entity.name);
|
|
26
|
+
for (const dependency of entity.view?.dependencies ?? []) {
|
|
27
|
+
if (candidateNames.has(dependency)) {
|
|
28
|
+
visit(updatedSchema.model.entities[dependency]);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
ordered.push(entity);
|
|
32
|
+
};
|
|
33
|
+
for (const candidate of candidates) {
|
|
34
|
+
visit(candidate);
|
|
35
|
+
}
|
|
36
|
+
return ordered.map(
|
|
37
|
+
(entity) => UpdateViewModification.updateViewModification.createModification({
|
|
38
|
+
entityName: entity.name,
|
|
39
|
+
view: entity.view
|
|
40
|
+
})
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.UpdateViewDiffer = UpdateViewDiffer;
|
|
45
|
+
//# sourceMappingURL=UpdateViewDiffer.cjs.map
|