"""Harden nullable financial-period uniqueness.

Revision ID: 0005
Revises: 0004
"""

from alembic import op


revision = "0005"
down_revision = "0004"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.execute(
        "ALTER TABLE financial_periods "
        "DROP CONSTRAINT IF EXISTS uq_financial_period"
    )
    op.execute(
        "ALTER TABLE financial_periods "
        "ADD CONSTRAINT uq_financial_period "
        "UNIQUE NULLS NOT DISTINCT "
        "(security_id, period_end, period_type, filing_date)"
    )


def downgrade() -> None:
    op.execute(
        "ALTER TABLE financial_periods "
        "DROP CONSTRAINT IF EXISTS uq_financial_period"
    )
    op.execute(
        "ALTER TABLE financial_periods "
        "ADD CONSTRAINT uq_financial_period "
        "UNIQUE "
        "(security_id, period_end, period_type, filing_date)"
    )
