"""Add oracle_server_id to telegram_users

Revision ID: 20260505_001
Revises:
Create Date: 2026-05-05

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa
from sqlalchemy import text

# revision identifiers, used by Alembic.
revision: str = '20260505_001'
down_revision: Union[str, None] = None
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    conn = op.get_bind()

    # Fresh installs: init_app_db() creates telegram_users with oracle_server_id already included.
    # This migration only needs to act on existing DBs that pre-date the column.
    table_exists = conn.execute(
        text("SELECT name FROM sqlite_master WHERE type='table' AND name='telegram_users'")
    ).fetchone()
    if not table_exists:
        return

    cols = [row[1] for row in conn.execute(text("PRAGMA table_info(telegram_users)")).fetchall()]
    if 'oracle_server_id' not in cols:
        with op.batch_alter_table('telegram_users') as batch_op:
            batch_op.add_column(sa.Column('oracle_server_id', sa.Text(), nullable=True))


def downgrade() -> None:
    conn = op.get_bind()
    table_exists = conn.execute(
        text("SELECT name FROM sqlite_master WHERE type='table' AND name='telegram_users'")
    ).fetchone()
    if not table_exists:
        return

    cols = [row[1] for row in conn.execute(text("PRAGMA table_info(telegram_users)")).fetchall()]
    if 'oracle_server_id' in cols:
        with op.batch_alter_table('telegram_users') as batch_op:
            batch_op.drop_column('oracle_server_id')
