"""tabela de cliente (cliente, investimento_cliente, projecao_volume_cliente)

Revision ID: bb22393499ec
Revises: b12bc2b93e24
Create Date: 2026-09-18 17:00:00.000000

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


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


def upgrade() -> None:
    op.create_table(
        'cliente',
        sa.Column('id', sa.Integer(), nullable=False),
        sa.Column('codigo', sa.String(length=20), nullable=False),
        sa.Column('nome', sa.String(length=200), nullable=False),
        sa.Column('cnpj', sa.String(length=20), nullable=True),
        sa.Column('cenario_id', sa.Integer(), nullable=True),
        sa.ForeignKeyConstraint(['cenario_id'], ['cenario_precificacao.id'], ),
        sa.PrimaryKeyConstraint('id'),
        sa.UniqueConstraint('codigo'),
    )
    op.create_table(
        'investimento_cliente',
        sa.Column('id', sa.Integer(), nullable=False),
        sa.Column('cliente_id', sa.Integer(), nullable=False),
        sa.Column('valor_entrada', sa.Numeric(precision=14, scale=6), nullable=False),
        sa.Column('valor_manutencao_anual', sa.Numeric(precision=14, scale=6), nullable=False),
        sa.ForeignKeyConstraint(['cliente_id'], ['cliente.id'], ),
        sa.PrimaryKeyConstraint('id'),
        sa.UniqueConstraint('cliente_id'),
    )
    op.create_table(
        'projecao_volume_cliente',
        sa.Column('id', sa.Integer(), nullable=False),
        sa.Column('cliente_id', sa.Integer(), nullable=False),
        sa.Column('volume_mensal_estimado', sa.Numeric(precision=14, scale=6), nullable=False),
        sa.ForeignKeyConstraint(['cliente_id'], ['cliente.id'], ),
        sa.PrimaryKeyConstraint('id'),
        sa.UniqueConstraint('cliente_id'),
    )


def downgrade() -> None:
    op.drop_table('projecao_volume_cliente')
    op.drop_table('investimento_cliente')
    op.drop_table('cliente')
