"""Campos da empresa vindos do registo comercial (portal IRN).

Até agora a ficha da empresa vinha do VIES (nome + morada em bloco) e do ptdata
(CAE), que morreu. As publicações do registo comercial dão dados mais fiáveis e
mais ricos: a firma oficial, a natureza jurídica e a sede desdobrada vêm no
cabeçalho de *qualquer* publicação, e o objecto e o capital vêm da constituição.

`registry_complete` distingue os dois casos: empresas constituídas depois de
~2006 têm constituição publicada e ficam com ficha completa; as mais antigas
ficam só com o cabeçalho. A UI mostra essa diferença em vez de apresentar
campos vazios sem explicação.
"""
from alembic import op

revision = "0022"
down_revision = "0021"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.execute(
        """
        ALTER TABLE companies
            ADD COLUMN IF NOT EXISTS natureza_juridica TEXT,
            ADD COLUMN IF NOT EXISTS distrito TEXT,
            ADD COLUMN IF NOT EXISTS concelho TEXT,
            ADD COLUMN IF NOT EXISTS freguesia TEXT,
            ADD COLUMN IF NOT EXISTS codigo_postal TEXT,
            ADD COLUMN IF NOT EXISTS localidade TEXT,
            ADD COLUMN IF NOT EXISTS objeto_social TEXT,
            ADD COLUMN IF NOT EXISTS capital_social NUMERIC(14,2),
            ADD COLUMN IF NOT EXISTS registry_complete BOOLEAN NOT NULL DEFAULT false,
            ADD COLUMN IF NOT EXISTS registry_fetched_at TIMESTAMPTZ;
        CREATE INDEX IF NOT EXISTS ix_companies_registry_fetched
            ON companies(registry_fetched_at NULLS FIRST);
        """
    )


def downgrade() -> None:
    op.execute(
        """
        ALTER TABLE companies
            DROP COLUMN IF EXISTS natureza_juridica,
            DROP COLUMN IF EXISTS distrito,
            DROP COLUMN IF EXISTS concelho,
            DROP COLUMN IF EXISTS freguesia,
            DROP COLUMN IF EXISTS codigo_postal,
            DROP COLUMN IF EXISTS localidade,
            DROP COLUMN IF EXISTS objeto_social,
            DROP COLUMN IF EXISTS capital_social,
            DROP COLUMN IF EXISTS registry_complete,
            DROP COLUMN IF EXISTS registry_fetched_at;
        """
    )
