"""add member trend scores and news articles tables Revision ID: 0008 Revises: 0007 Create Date: 2026-03-01 """ import sqlalchemy as sa from alembic import op revision = "0008" down_revision = "0007" branch_labels = None depends_on = None def upgrade(): op.create_table( "member_trend_scores", sa.Column("id", sa.Integer(), autoincrement=True, nullable=False), sa.Column("member_id", sa.String(), nullable=False), sa.Column("score_date", sa.Date(), nullable=False), sa.Column("newsapi_count", sa.Integer(), nullable=True, default=0), sa.Column("gnews_count", sa.Integer(), nullable=True, default=0), sa.Column("gtrends_score", sa.Float(), nullable=True, default=0.0), sa.Column("composite_score", sa.Float(), nullable=True, default=0.0), sa.ForeignKeyConstraint(["member_id"], ["members.bioguide_id"], ondelete="CASCADE"), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("member_id", "score_date", name="uq_member_trend_scores_member_date"), ) op.create_index("ix_member_trend_scores_member_id", "member_trend_scores", ["member_id"]) op.create_index("ix_member_trend_scores_score_date", "member_trend_scores", ["score_date"]) op.create_index("ix_member_trend_scores_composite", "member_trend_scores", ["composite_score"]) op.create_table( "member_news_articles", sa.Column("id", sa.Integer(), autoincrement=True, nullable=False), sa.Column("member_id", sa.String(), nullable=False), sa.Column("source", sa.String(200), nullable=True), sa.Column("headline", sa.Text(), nullable=True), sa.Column("url", sa.String(), nullable=True), sa.Column("published_at", sa.DateTime(timezone=True), nullable=True), sa.Column("relevance_score", sa.Float(), nullable=True, default=0.0), sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now()), sa.ForeignKeyConstraint(["member_id"], ["members.bioguide_id"], ondelete="CASCADE"), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("member_id", "url", name="uq_member_news_member_url"), ) op.create_index("ix_member_news_articles_member_id", "member_news_articles", ["member_id"]) op.create_index("ix_member_news_articles_published_at", "member_news_articles", ["published_at"]) def downgrade(): op.drop_table("member_news_articles") op.drop_table("member_trend_scores")