"""add_pulled_back_rejected_fields_to_penerimaan_penyetoran_batch

Revision ID: cb74d91c508b
Revises: ca63d90b497a
Create Date: 2026-04-19 10:00:00.000000

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa

revision: str = 'cb74d91c508b'
down_revision: Union[str, Sequence[str], None] = 'f9j0k1l2m3n4'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    # penerimaan
    op.add_column('penerimaan', sa.Column('pulled_back_by_id', sa.Integer(), nullable=True))
    op.add_column('penerimaan', sa.Column('pulled_back_at', sa.DateTime(timezone=True), nullable=True))
    op.add_column('penerimaan', sa.Column('pulled_back_reason', sa.Text(), nullable=True))
    op.add_column('penerimaan', sa.Column('rejected_by_id', sa.Integer(), nullable=True))
    op.add_column('penerimaan', sa.Column('rejected_at', sa.DateTime(timezone=True), nullable=True))
    op.add_column('penerimaan', sa.Column('rejected_reason', sa.Text(), nullable=True))
    op.create_foreign_key(
        'fk_penerimaan_pulled_back_by', 'penerimaan',
        'master_user', ['pulled_back_by_id'], ['id'], ondelete='SET NULL'
    )
    op.create_foreign_key(
        'fk_penerimaan_rejected_by', 'penerimaan',
        'master_user', ['rejected_by_id'], ['id'], ondelete='SET NULL'
    )

    # penyetoran_batch
    op.add_column('penyetoran_batch', sa.Column('pulled_back_by_id', sa.Integer(), nullable=True))
    op.add_column('penyetoran_batch', sa.Column('pulled_back_at', sa.DateTime(timezone=True), nullable=True))
    op.add_column('penyetoran_batch', sa.Column('pulled_back_reason', sa.Text(), nullable=True))
    op.add_column('penyetoran_batch', sa.Column('rejected_by_id', sa.Integer(), nullable=True))
    op.add_column('penyetoran_batch', sa.Column('rejected_at', sa.DateTime(timezone=True), nullable=True))
    op.add_column('penyetoran_batch', sa.Column('rejected_reason', sa.Text(), nullable=True))
    op.create_foreign_key(
        'fk_penyetoran_batch_pulled_back_by', 'penyetoran_batch',
        'master_user', ['pulled_back_by_id'], ['id'], ondelete='SET NULL'
    )
    op.create_foreign_key(
        'fk_penyetoran_batch_rejected_by', 'penyetoran_batch',
        'master_user', ['rejected_by_id'], ['id'], ondelete='SET NULL'
    )


def downgrade() -> None:
    op.drop_constraint('fk_penyetoran_batch_rejected_by', 'penyetoran_batch', type_='foreignkey')
    op.drop_constraint('fk_penyetoran_batch_pulled_back_by', 'penyetoran_batch', type_='foreignkey')
    op.drop_column('penyetoran_batch', 'rejected_reason')
    op.drop_column('penyetoran_batch', 'rejected_at')
    op.drop_column('penyetoran_batch', 'rejected_by_id')
    op.drop_column('penyetoran_batch', 'pulled_back_reason')
    op.drop_column('penyetoran_batch', 'pulled_back_at')
    op.drop_column('penyetoran_batch', 'pulled_back_by_id')

    op.drop_constraint('fk_penerimaan_rejected_by', 'penerimaan', type_='foreignkey')
    op.drop_constraint('fk_penerimaan_pulled_back_by', 'penerimaan', type_='foreignkey')
    op.drop_column('penerimaan', 'rejected_reason')
    op.drop_column('penerimaan', 'rejected_at')
    op.drop_column('penerimaan', 'rejected_by_id')
    op.drop_column('penerimaan', 'pulled_back_reason')
    op.drop_column('penerimaan', 'pulled_back_at')
    op.drop_column('penerimaan', 'pulled_back_by_id')
