"""add ownership and SLA deadlines to data quality issues Revision ID: f43d829ab610 Revises: d1f83bc64170 """ import sqlalchemy as sa from alembic import op revision = "f43d829ab610" down_revision = "d1f83bc64170" branch_labels = None depends_on = None def upgrade() -> None: op.add_column( "data_quality_issues", sa.Column("due_at", sa.DateTime(timezone=True), nullable=True), ) op.add_column( "data_quality_issues", sa.Column("assigned_to_user_id", sa.Uuid(), nullable=True), ) op.create_foreign_key( "fk_data_quality_issues_assigned_user", "data_quality_issues", "users", ["assigned_to_user_id"], ["id"], ondelete="SET NULL", ) op.create_index("ix_data_quality_issues_due_at", "data_quality_issues", ["due_at"]) op.create_index( "ix_data_quality_issues_assigned_to_user_id", "data_quality_issues", ["assigned_to_user_id"], ) op.execute( """ UPDATE data_quality_issues SET due_at = detected_at + CASE severity WHEN 'high' THEN interval '4 hours' WHEN 'low' THEN interval '3 days' ELSE interval '1 day' END WHERE status = 'open' AND due_at IS NULL """ ) def downgrade() -> None: op.drop_index( "ix_data_quality_issues_assigned_to_user_id", table_name="data_quality_issues", ) op.drop_index("ix_data_quality_issues_due_at", table_name="data_quality_issues") op.drop_constraint( "fk_data_quality_issues_assigned_user", "data_quality_issues", type_="foreignkey", ) op.drop_column("data_quality_issues", "assigned_to_user_id") op.drop_column("data_quality_issues", "due_at")