"""add is_active to all tables

Revision ID: 0008
Revises: 0007
Create Date: 2026-02-20

統一為所有資料表新增 is_active 布林欄位
- true: 資料啟用
- false: 資料不啟用
"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '0008'
down_revision = '0007'
branch_labels = None
depends_on = None


def upgrade() -> None:
    # 1. organizes (目前只有 status，新增 is_active，預設從 status 轉換)
    op.add_column('organizes', sa.Column('is_active', sa.Boolean(), nullable=True, comment='是否啟用'))
    op.execute("""
        UPDATE organizes
        SET is_active = CASE
            WHEN status = 'active' THEN true
            WHEN status = 'trial' THEN true
            ELSE false
        END
    """)
    op.alter_column('organizes', 'is_active', nullable=False)

    # 2. org_employees (目前只有 status，新增 is_active)
    op.add_column('org_employees', sa.Column('is_active', sa.Boolean(), nullable=True, comment='是否啟用'))
    op.execute("""
        UPDATE org_employees
        SET is_active = CASE
            WHEN status = 'active' THEN true
            ELSE false
        END
    """)
    op.alter_column('org_employees', 'is_active', nullable=False)

    # 3. org_batch_logs (目前只有 status，但這是執行狀態不是啟用狀態，仍新增 is_active)
    op.add_column('org_batch_logs', sa.Column('is_active', sa.Boolean(), nullable=False, server_default='true', comment='是否啟用'))

    # 4. 其他已有 is_active 的表不需處理
    # - org_departments (已有 is_active)
    # - business_units (已有 is_active)
    # - org_dept_members (已有 is_active)
    # - org_email_accounts (已有 is_active)
    # - org_network_drives (已有 is_active)
    # - org_user_roles (已有 is_active)
    # - org_user_role_assignments (已有 is_active)
    # - system_functions_cache (已有 is_active)

    # 5. 檢查其他表是否需要 is_active (根據業務邏輯)
    # - org_audit_logs: 審計日誌不需要 is_active (不可停用)
    # - org_permissions: 已有 is_active (透過 ended_at 判斷)
    #
    # 注意: tenant_domains, subscriptions, invoices, payments 等表可能不存在於目前的資料庫
    # 這些表屬於多租戶進階功能，將在後續 migration 中建立
    # 暫時跳過這些表的 is_active 處理


def downgrade() -> None:
    op.drop_column('org_batch_logs', 'is_active')
    op.drop_column('org_employees', 'is_active')
    op.drop_column('organizes', 'is_active')
