Law/alembic/versions/0026_request_service_requests_string_ids.py
2026-02-27 18:46:07 +03:00

57 lines
1.4 KiB
Python

"""normalize request_service_requests link column types to varchar
Revision ID: 0026_srv_req_str_ids
Revises: 0025_service_requests
Create Date: 2026-02-27 15:40:00.000000
"""
from __future__ import annotations
import sqlalchemy as sa
from alembic import op
# revision identifiers, used by Alembic.
revision = "0026_srv_req_str_ids"
down_revision = "0025_service_requests"
branch_labels = None
depends_on = None
def _postgres_alter_to_varchar(column_name: str) -> None:
op.execute(
sa.text(
f"""
ALTER TABLE request_service_requests
ALTER COLUMN {column_name} TYPE VARCHAR(60)
USING {column_name}::text
"""
)
)
def _postgres_alter_to_uuid(column_name: str) -> None:
op.execute(
sa.text(
f"""
ALTER TABLE request_service_requests
ALTER COLUMN {column_name} TYPE UUID
USING NULLIF({column_name}, '')::uuid
"""
)
)
def upgrade() -> None:
bind = op.get_bind()
if bind.dialect.name == "postgresql":
for name in ("request_id", "client_id", "assigned_lawyer_id", "resolved_by_admin_id"):
_postgres_alter_to_varchar(name)
def downgrade() -> None:
bind = op.get_bind()
if bind.dialect.name == "postgresql":
for name in ("request_id", "client_id", "assigned_lawyer_id", "resolved_by_admin_id"):
_postgres_alter_to_uuid(name)