"""restore_missing_procurement_tables

Revision ID: 2dc76e3c9a58
Revises: g3b4c5d6e7f8
Create Date: 2026-10-07 15:36:05.790905

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = '2dc76e3c9a58'
down_revision: Union[str, None] = 'g3b4c5d6e7f8'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    # Ensure tables exist for developers restoring from partial dumps
    op.execute("""
        CREATE TABLE IF NOT EXISTS rm_purchase_request (
            request_id UUID PRIMARY KEY,
            request_number VARCHAR(50) UNIQUE,
            vendor_id UUID REFERENCES vendor_master(vendor_id),
            chassis_id UUID REFERENCES chassis_master(chassis_id),
            status VARCHAR(30) DEFAULT 'DRAFT',
            created_by UUID REFERENCES login_users(user_id),
            requested_by UUID REFERENCES login_users(user_id),
            created_at TIMESTAMP WITH TIME ZONE DEFAULT timezone('utc', now()),
            updated_at TIMESTAMP WITH TIME ZONE
        );
        CREATE TABLE IF NOT EXISTS rm_purchase_request_detail (
            request_detail_id UUID PRIMARY KEY,
            request_id UUID REFERENCES rm_purchase_request(request_id),
            rm_id UUID REFERENCES rm_master(rm_id),
            shortage_qty NUMERIC(10,2) NOT NULL,
            stock_at_request NUMERIC(10,2)
        );
    """)

def downgrade() -> None:
    pass
