"""automate uplaods

Revision ID: 4fd69294b07c
Revises: 69f502262462
Create Date: 2026-01-09 13:59:07.123378

"""
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 = '4fd69294b07c'
down_revision: Union[str, None] = '69f502262462'
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('inventory_snapshot_daily', sa.Column('in_transit_qty', sa.Float(), nullable=False))
    op.alter_column('purchase_order_lines', 'unit_cost',
               existing_type=sa.DOUBLE_PRECISION(precision=53),
               nullable=True)
    op.add_column('purchase_order_receive', sa.Column('received_date', sa.DateTime(timezone=True), nullable=False))
    op.drop_column('purchase_order_receive', 'expected_delivery_date')
    op.drop_column('purchase_order_receive', 'order_date')
    op.alter_column('purchase_order_receive_lines', 'unit_cost',
               existing_type=sa.DOUBLE_PRECISION(precision=53),
               nullable=True)
    op.drop_column('purchase_order_receive_lines', 'ordered_qty')
    op.add_column('purchase_order_return', sa.Column('returned_date', sa.DateTime(timezone=True), nullable=False))
    op.drop_column('purchase_order_return', 'order_date')
    op.alter_column('sales_order_lines', 'unit_price',
               existing_type=sa.DOUBLE_PRECISION(precision=53),
               nullable=True)
    op.add_column('sales_orders', sa.Column('sold_date', sa.DateTime(timezone=True), nullable=False))
    op.drop_column('sales_orders', 'order_date')
    op.drop_column('sales_orders', 'sold_at')
    op.add_column('sales_return_orders', sa.Column('returned_date', sa.DateTime(timezone=True), nullable=False))
    op.drop_column('sales_return_orders', 'returned_at')
    op.add_column('users', sa.Column('ref_company_id', sa.Integer(), nullable=True))
    op.add_column('users', sa.Column('models', sa.JSON(), nullable=True))
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_column('users', 'models')
    op.drop_column('users', 'ref_company_id')
    op.add_column('sales_return_orders', sa.Column('returned_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=False))
    op.drop_column('sales_return_orders', 'returned_date')
    op.add_column('sales_orders', sa.Column('sold_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=False))
    op.add_column('sales_orders', sa.Column('order_date', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=False))
    op.drop_column('sales_orders', 'sold_date')
    op.alter_column('sales_order_lines', 'unit_price',
               existing_type=sa.DOUBLE_PRECISION(precision=53),
               nullable=False)
    op.add_column('purchase_order_return', sa.Column('order_date', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=False))
    op.drop_column('purchase_order_return', 'returned_date')
    op.add_column('purchase_order_receive_lines', sa.Column('ordered_qty', sa.INTEGER(), autoincrement=False, nullable=False))
    op.alter_column('purchase_order_receive_lines', 'unit_cost',
               existing_type=sa.DOUBLE_PRECISION(precision=53),
               nullable=False)
    op.add_column('purchase_order_receive', sa.Column('order_date', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=False))
    op.add_column('purchase_order_receive', sa.Column('expected_delivery_date', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
    op.drop_column('purchase_order_receive', 'received_date')
    op.alter_column('purchase_order_lines', 'unit_cost',
               existing_type=sa.DOUBLE_PRECISION(precision=53),
               nullable=False)
    op.drop_column('inventory_snapshot_daily', 'in_transit_qty')
    # ### end Alembic commands ###
