"""Track which articles a learner has opened, for "recently viewed". Revision ID: w5c6d7e8f9a0 Revises: v4b5c6d7e8f9 """ from alembic import op revision = "w5c6d7e8f9a0" down_revision = "v4b5c6d7e8f9" branch_labels = None depends_on = None def upgrade(): op.execute(""" CREATE TABLE IF NOT EXISTS article_views ( id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, article_id INTEGER NOT NULL REFERENCES articles(id) ON DELETE CASCADE, viewed_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT uq_article_view UNIQUE (user_id, article_id) ) """) op.execute("CREATE INDEX IF NOT EXISTS ix_article_views_user ON article_views(user_id, viewed_at DESC)") def downgrade(): op.execute("DROP TABLE IF EXISTS article_views")