Files
plantillas-proyectos/backend/alembic/versions/506969b0a256_company_prosec_boolean_to_integer.py

38 lines
1.2 KiB
Python

"""company prosec boolean to integer
Revision ID: 506969b0a256
Revises: a7b8c9d0e1f2
Create Date: 2026-06-02 00:00:00.000000
"""
from typing import Sequence, Union
from alembic import op
revision: str = "506969b0a256"
down_revision: Union[str, None] = "a7b8c9d0e1f2"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
# Convierte prosec de boolean a integer para almacenar el ID del sector PROSEC.
# El default 'false' debe eliminarse antes de cambiar el tipo.
op.execute("ALTER TABLE a76.company ALTER COLUMN prosec DROP DEFAULT")
op.execute("ALTER TABLE a76.company ALTER COLUMN prosec DROP NOT NULL")
op.execute(
"ALTER TABLE a76.company ALTER COLUMN prosec TYPE integer USING prosec::int"
)
def downgrade() -> None:
op.execute(
"""
ALTER TABLE a76.company
ALTER COLUMN prosec TYPE boolean
USING CASE WHEN prosec IS NULL OR prosec = 0 THEN false ELSE true END
"""
)
op.execute("ALTER TABLE a76.company ALTER COLUMN prosec SET DEFAULT false")
op.execute("ALTER TABLE a76.company ALTER COLUMN prosec SET NOT NULL")