"""align translation column naming + add token counts. Revision ID: 0025 Revises: 0024 Create Date: 2026-05-27 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "0025" down_revision: Union[str, None] = "0024" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # strategic_log_translations with op.batch_alter_table("strategic_log_translations") as bop: bop.alter_column("llm_model", new_column_name="model", existing_type=sa.String(length=64), existing_nullable=True) bop.alter_column("llm_cost_usd", new_column_name="cost_usd", existing_type=sa.Float(), existing_nullable=True) bop.alter_column("content_md", new_column_name="content", existing_type=sa.Text(), existing_nullable=False) bop.add_column(sa.Column("prompt_tokens", sa.Integer(), nullable=True)) bop.add_column(sa.Column("completion_tokens", sa.Integer(), nullable=True)) # indicator_summary_translations with op.batch_alter_table("indicator_summary_translations") as bop: bop.alter_column("llm_model", new_column_name="model", existing_type=sa.String(length=64), existing_nullable=True) bop.alter_column("llm_cost_usd", new_column_name="cost_usd", existing_type=sa.Float(), existing_nullable=True) bop.alter_column("content_md", new_column_name="content", existing_type=sa.Text(), existing_nullable=False) bop.add_column(sa.Column("prompt_tokens", sa.Integer(), nullable=True)) bop.add_column(sa.Column("completion_tokens", sa.Integer(), nullable=True)) # csv_format_templates with op.batch_alter_table("csv_format_templates") as bop: bop.alter_column("llm_model", new_column_name="model", existing_type=sa.String(length=64), existing_nullable=True) bop.alter_column("llm_cost_usd", new_column_name="cost_usd", existing_type=sa.Float(), existing_nullable=True) bop.add_column(sa.Column("prompt_tokens", sa.Integer(), nullable=True)) bop.add_column(sa.Column("completion_tokens", sa.Integer(), nullable=True)) def downgrade() -> None: with op.batch_alter_table("csv_format_templates") as bop: bop.drop_column("completion_tokens") bop.drop_column("prompt_tokens") bop.alter_column("cost_usd", new_column_name="llm_cost_usd", existing_type=sa.Float(), existing_nullable=True) bop.alter_column("model", new_column_name="llm_model", existing_type=sa.String(length=64), existing_nullable=True) with op.batch_alter_table("indicator_summary_translations") as bop: bop.drop_column("completion_tokens") bop.drop_column("prompt_tokens") bop.alter_column("content", new_column_name="content_md", existing_type=sa.Text(), existing_nullable=False) bop.alter_column("cost_usd", new_column_name="llm_cost_usd", existing_type=sa.Float(), existing_nullable=True) bop.alter_column("model", new_column_name="llm_model", existing_type=sa.String(length=64), existing_nullable=True) with op.batch_alter_table("strategic_log_translations") as bop: bop.drop_column("completion_tokens") bop.drop_column("prompt_tokens") bop.alter_column("content", new_column_name="content_md", existing_type=sa.Text(), existing_nullable=False) bop.alter_column("cost_usd", new_column_name="llm_cost_usd", existing_type=sa.Float(), existing_nullable=True) bop.alter_column("model", new_column_name="llm_model", existing_type=sa.String(length=64), existing_nullable=True)