"""Add approval tracking to store handover

Revision ID: f194f27d2c02
Revises: 9fdcf6d00d6b
Create Date: 2026-08-05 14:04:08.868452

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

# revision identifiers, used by Alembic.
"""Add approval tracking to store handover

Revision ID: f194f27d2c02
Revises: 9fdcf6d00d6b
Create Date: 2026-08-05 14:04:08.868452

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

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


def upgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.add_column('chassis_store_handover', sa.Column('store_manager_approved_by', sa.UUID(), nullable=True))
    op.add_column('chassis_store_handover', sa.Column('store_manager_approved_at', sa.DateTime(timezone=True), nullable=True))
    op.add_column('chassis_store_handover', sa.Column('yard_supervisor_approved_by', sa.UUID(), nullable=True))
    op.add_column('chassis_store_handover', sa.Column('yard_supervisor_approved_at', sa.DateTime(timezone=True), nullable=True))
    op.create_foreign_key(None, 'chassis_store_handover', 'login_users', ['yard_supervisor_approved_by'], ['user_id'])
    op.create_foreign_key(None, 'chassis_store_handover', 'login_users', ['store_manager_approved_by'], ['user_id'])
    op.drop_column('chassis_store_handover', 'signature_dalite_supervisor_name')
    op.drop_column('chassis_store_handover', 'signed_dalite_supervisor')
    op.drop_column('chassis_store_handover', 'signature_yard_supervisor_name')
    op.drop_column('chassis_store_handover', 'signature_store_person_name')
    op.drop_column('chassis_store_handover', 'signed_security')
    op.drop_column('chassis_store_handover', 'signature_security_name')
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.add_column('chassis_store_handover', sa.Column('signature_security_name', sa.VARCHAR(length=150), autoincrement=False, nullable=True))
    op.add_column('chassis_store_handover', sa.Column('signed_security', sa.BOOLEAN(), server_default=sa.text('false'), autoincrement=False, nullable=False))
    op.add_column('chassis_store_handover', sa.Column('signature_store_person_name', sa.VARCHAR(length=150), autoincrement=False, nullable=True))
    op.add_column('chassis_store_handover', sa.Column('signature_yard_supervisor_name', sa.VARCHAR(length=150), autoincrement=False, nullable=True))
    op.add_column('chassis_store_handover', sa.Column('signed_dalite_supervisor', sa.BOOLEAN(), server_default=sa.text('false'), autoincrement=False, nullable=False))
    op.add_column('chassis_store_handover', sa.Column('signature_dalite_supervisor_name', sa.VARCHAR(length=150), autoincrement=False, nullable=True))
    op.drop_constraint(None, 'chassis_store_handover', type_='foreignkey')
    op.drop_constraint(None, 'chassis_store_handover', type_='foreignkey')
    op.drop_column('chassis_store_handover', 'yard_supervisor_approved_at')
    op.drop_column('chassis_store_handover', 'yard_supervisor_approved_by')
    op.drop_column('chassis_store_handover', 'store_manager_approved_at')
    op.drop_column('chassis_store_handover', 'store_manager_approved_by')
    # ### end Alembic commands ###
