"""adding invoicing

Revision ID: 19522332ad22
Revises: 945cc1e54aeb
Create Date: 2024-08-02 13:53:46.169479

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '19522332ad22'
down_revision = '945cc1e54aeb'
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    with op.batch_alter_table('invoice', schema=None) as batch_op:
        batch_op.add_column(sa.Column('customer_id', sa.Integer(), nullable=False))
        batch_op.add_column(sa.Column('order_date', sa.DateTime(), nullable=False))
        batch_op.add_column(sa.Column('shipped_electronically_to', sa.String(length=120), nullable=False))
        batch_op.add_column(sa.Column('plan_id', sa.Integer(), nullable=False))
        batch_op.add_column(sa.Column('plan_description', sa.String(length=256), nullable=False))
        batch_op.add_column(sa.Column('price', sa.Float(), nullable=False))
        batch_op.add_column(sa.Column('qty', sa.Integer(), nullable=False))
        batch_op.add_column(sa.Column('extended_price', sa.Float(), nullable=False))
        batch_op.add_column(sa.Column('subtotal', sa.Float(), nullable=False))
        batch_op.add_column(sa.Column('sales_tax', sa.Float(), nullable=False))
        batch_op.add_column(sa.Column('total', sa.Float(), nullable=False))
        batch_op.add_column(sa.Column('balance_due', sa.Float(), nullable=False))
        batch_op.add_column(sa.Column('is_paid', sa.Boolean(), nullable=False))
        batch_op.create_foreign_key(batch_op.f('fk_invoice_customer_id_user'), 'user', ['customer_id'], ['id'])
        batch_op.create_foreign_key(batch_op.f('fk_invoice_plan_id_plan'), 'plan', ['plan_id'], ['id'])
        batch_op.drop_column('due_date')
        batch_op.drop_column('created_at')
        batch_op.drop_column('paid_date')
        batch_op.drop_column('status')
        batch_op.drop_column('amount')

    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    with op.batch_alter_table('invoice', schema=None) as batch_op:
        batch_op.add_column(sa.Column('amount', sa.FLOAT(), nullable=False))
        batch_op.add_column(sa.Column('status', sa.VARCHAR(length=50), nullable=False))
        batch_op.add_column(sa.Column('paid_date', sa.DATETIME(), nullable=True))
        batch_op.add_column(sa.Column('created_at', sa.DATETIME(), nullable=True))
        batch_op.add_column(sa.Column('due_date', sa.DATETIME(), nullable=False))
        batch_op.drop_constraint(batch_op.f('fk_invoice_plan_id_plan'), type_='foreignkey')
        batch_op.drop_constraint(batch_op.f('fk_invoice_customer_id_user'), type_='foreignkey')
        batch_op.drop_column('is_paid')
        batch_op.drop_column('balance_due')
        batch_op.drop_column('total')
        batch_op.drop_column('sales_tax')
        batch_op.drop_column('subtotal')
        batch_op.drop_column('extended_price')
        batch_op.drop_column('qty')
        batch_op.drop_column('price')
        batch_op.drop_column('plan_description')
        batch_op.drop_column('plan_id')
        batch_op.drop_column('shipped_electronically_to')
        batch_op.drop_column('order_date')
        batch_op.drop_column('customer_id')

    # ### end Alembic commands ###
