"""warm pool — create user_job_pool + add user_feed.exhausted_at. The actual change this deploy ships: the warm-pool table and the exhaustion-guard column. Additive + non-breaking (old code ignores them). On prod: stamp 0001 (existing schema), then this runs. Revision ID: 0002_pool_and_exhausted Revises: 0001_baseline Create Date: 2026-06-26 """ from alembic import op import sqlalchemy as sa revision = "0002_pool_and_exhausted" down_revision = "0001_baseline" branch_labels = None depends_on = None def upgrade() -> None: op.create_table( "user_job_pool", sa.Column("user_id", sa.String(), primary_key=True), sa.Column("query_sig", sa.String(), primary_key=True), sa.Column("job_id", sa.String(), primary_key=True), sa.Column("job", sa.JSON(), nullable=True), sa.Column("pooled_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=True), ) op.add_column("user_feed", sa.Column("exhausted_at", sa.DateTime(timezone=True), nullable=True)) def downgrade() -> None: op.drop_column("user_feed", "exhausted_at") op.drop_table("user_job_pool")