"""fix email template_key uniqueness to composite (application_id, template_key)

Revision ID: 000000000003
Revises: 000000000002
Create Date: 2026-02-09

The template_key column had a global unique constraint, preventing
multi-tenant use (e.g. two different applications both creating
"auth_magic_link"). This migration replaces the single-column unique
constraint with a composite unique index on (application_id, template_key).
"""

from alembic import op

revision = "000000000003"
down_revision = "000000000002"
branch_labels = None
depends_on = None


def upgrade() -> None:
    # Drop the single-column unique constraint if it exists
    op.execute("""
        ALTER TABLE email_templates
        DROP CONSTRAINT IF EXISTS email_templates_template_key_key;
    """)

    # Also drop the index-based form if present
    op.execute("""
        DROP INDEX IF EXISTS ix_email_templates_template_key;
    """)

    # Create composite unique index
    op.execute("""
        CREATE UNIQUE INDEX IF NOT EXISTS uq_email_templates_app_key
        ON email_templates (application_id, template_key);
    """)


def downgrade() -> None:
    op.execute("""
        DROP INDEX IF EXISTS uq_email_templates_app_key;
    """)

    # Restore original single-column unique constraint
    op.execute("""
        ALTER TABLE email_templates
        ADD CONSTRAINT email_templates_template_key_key UNIQUE (template_key);
    """)
