"""Add CASCADE on message.conversation_id FK and language column on conversation.

Revision ID: 0019_cascade_message_fk_and_language_column
Revises: 0018_add_service_block_zones
Create Date: 2026-03-11
"""

from collections.abc import Sequence

import sqlalchemy as sa

from alembic import op

revision: str = "0019_cascade_message_fk_and_language_column"
down_revision: str | None = "0018_add_service_block_zones"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None


def upgrade() -> None:
    # 1. Add CASCADE to message.conversation_id FK
    op.drop_constraint("message_conversation_id_fkey", "message", type_="foreignkey")
    op.create_foreign_key(
        "message_conversation_id_fkey",
        "message",
        "conversation",
        ["conversation_id"],
        ["id"],
        ondelete="CASCADE",
    )

    # 2. Add language column to conversation
    op.add_column(
        "conversation",
        sa.Column("language", sa.String(5), nullable=True),
    )


def downgrade() -> None:
    # Remove language column
    op.drop_column("conversation", "language")

    # Restore FK without CASCADE
    op.drop_constraint("message_conversation_id_fkey", "message", type_="foreignkey")
    op.create_foreign_key(
        "message_conversation_id_fkey",
        "message",
        "conversation",
        ["conversation_id"],
        ["id"],
    )
