"""configuração do preço sugerido: modo dos impostos (contábil | financeira)

Revision ID: c2e4a6b8d0f1
Revises: b1d3f5a7c9e2
Create Date: 2026-11-01 14:00:00.000000

`configuracao_preco` guarda, por Planejamento, como o motor de precificação trata os impostos. Só roda nos schemas de Planejamento (ver f1a9c3d7e284).
"""
from typing import Sequence, Union

import sqlalchemy as sa
from alembic import op


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


def _no_schema_comum() -> bool:
    contexto = op.get_context()
    return contexto.dialect.name == 'postgresql' and contexto.version_table_schema is None


def upgrade() -> None:
    if _no_schema_comum():
        return
    op.create_table(
        'configuracao_preco',
        sa.Column('id', sa.Integer(), primary_key=True),
        sa.Column('modo_impostos', sa.String(10), nullable=False, server_default='contabil'),
        sa.CheckConstraint("modo_impostos in ('contabil', 'financeira')", name='ck_configuracao_preco_modo'),
    )


def downgrade() -> None:
    if _no_schema_comum():
        return
    op.drop_table('configuracao_preco')
