"""Add approval fields to penerimaan table.

Revision ID: g1j2k3l4m5n6
Revises: f0i1j2k3l4m5
Create Date: 2026-04-12
"""
from alembic import op
import sqlalchemy as sa

revision = "g1j2k3l4m5n6"
down_revision = "f0i1j2k3l4m5"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.add_column("penerimaan", sa.Column("status", sa.String(20), nullable=False, server_default="draft"))
    op.add_column("penerimaan", sa.Column("submitted_by_id", sa.Integer(), sa.ForeignKey("master_user.id", ondelete="SET NULL"), nullable=True))
    op.add_column("penerimaan", sa.Column("submitted_at", sa.DateTime(timezone=True), nullable=True))
    op.add_column("penerimaan", sa.Column("reviewed_by_id", sa.Integer(), sa.ForeignKey("master_user.id", ondelete="SET NULL"), nullable=True))
    op.add_column("penerimaan", sa.Column("reviewed_at", sa.DateTime(timezone=True), nullable=True))
    op.add_column("penerimaan", sa.Column("catatan_review", sa.Text(), nullable=True))
    op.add_column("penerimaan", sa.Column("unlocked_by_id", sa.Integer(), sa.ForeignKey("master_user.id", ondelete="SET NULL"), nullable=True))
    op.add_column("penerimaan", sa.Column("unlocked_at", sa.DateTime(timezone=True), nullable=True))
    op.add_column("penerimaan", sa.Column("unlock_reason", sa.Text(), nullable=True))


def downgrade() -> None:
    for col in ["unlock_reason", "unlocked_at", "unlocked_by_id",
                "catatan_review", "reviewed_at", "reviewed_by_id",
                "submitted_at", "submitted_by_id", "status"]:
        op.drop_column("penerimaan", col)
