"""add interval column to alpaca_price_data Revision ID: h9b0c1d2e3f4 Revises: g8a9b0c1d2e3 Create Date: 2026-04-14 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = "h9b0c1d2e3f4" down_revision: Union[str, Sequence[str], None] = "g8a9b0c1d2e3" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # 1. Add interval column (default '1d' for existing rows) op.add_column( "alpaca_price_data", sa.Column("interval", sa.String(10), nullable=False, server_default="1d"), ) # 2. Drop old unique constraint and index op.drop_constraint("uq_alpaca_price_data", "alpaca_price_data", type_="unique") op.drop_index("idx_alpaca_price_ticker_date", table_name="alpaca_price_data") # 3. Create new unique constraint and index including interval op.create_unique_constraint( "uq_alpaca_price_data", "alpaca_price_data", ["ticker", "date", "interval"] ) op.create_index( "idx_alpaca_price_ticker_date", "alpaca_price_data", ["ticker", "date", "interval"] ) def downgrade() -> None: op.drop_constraint("uq_alpaca_price_data", "alpaca_price_data", type_="unique") op.drop_index("idx_alpaca_price_ticker_date", table_name="alpaca_price_data") op.create_unique_constraint( "uq_alpaca_price_data", "alpaca_price_data", ["ticker", "date"] ) op.create_index( "idx_alpaca_price_ticker_date", "alpaca_price_data", ["ticker", "date"] ) op.drop_column("alpaca_price_data", "interval")