"""add telegram_config table

Revision ID: a3f4g5h6i7j8
Revises: z2d3e4f5g6h7
Create Date: 2026-05-02
"""
from alembic import op
import sqlalchemy as sa

revision = "a3f4g5h6i7j8"
down_revision = "ed7f8a9b0c1d"


def upgrade() -> None:
    op.create_table(
        "telegram_config",
        sa.Column("id", sa.Integer, primary_key=True),
        sa.Column("spbu_id", sa.Integer, sa.ForeignKey("master_spbu.id", ondelete="CASCADE"), nullable=False, unique=True),
        sa.Column("is_active", sa.Boolean, nullable=False, server_default="true"),
        # Group Operasional
        sa.Column("chat_operasional_id", sa.String(60), nullable=True),
        sa.Column("thread_penjualan_id", sa.Integer, nullable=True),
        sa.Column("thread_penerimaan_id", sa.Integer, nullable=True),
        sa.Column("thread_stock_id", sa.Integer, nullable=True),
        # Group Finansial
        sa.Column("chat_finansial_id", sa.String(60), nullable=True),
        sa.Column("thread_penyetoran_id", sa.Integer, nullable=True),
        sa.Column("thread_expense_id", sa.Integer, nullable=True),
        sa.Column("thread_pb_id", sa.Integer, nullable=True),
        sa.Column("thread_penebusan_id", sa.Integer, nullable=True),
        # Group GA
        sa.Column("chat_ga_id", sa.String(60), nullable=True),
        sa.Column("thread_absensi_id", sa.Integer, nullable=True),
        sa.Column("thread_housekeeping_id", sa.Integer, nullable=True),
        sa.Column("thread_sapras_id", sa.Integer, nullable=True),
        # timestamps
        sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False),
        sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.func.now(), onupdate=sa.func.now(), nullable=False),
    )
    op.create_index("ix_telegram_config_spbu_id", "telegram_config", ["spbu_id"])


def downgrade() -> None:
    op.drop_index("ix_telegram_config_spbu_id", "telegram_config")
    op.drop_table("telegram_config")
