pdf-quiz-generator/backend/alembic/versions/n7a8b9c0d142_collections.py
Daniel 73ef007e0a feat: facet filters, personal libraries, adaptive shortcuts, restart, rename support
Create/bank pages use AMBOSS-style facets: Exams, Disciplines, Symptoms, Systems, Articles, Saved. Personal question libraries with add-to-library in study modal. Adaptive session shortcuts from performance (including weakest topics). Quiz restart with fresh attempt. Category counts computed with two grouped queries. Migration n7a8b9c0d142. 63 backend and 97 frontend tests pass.
2026-09-09 04:31:40 +02:00

33 lines
1,014 B
Python

"""Personal question libraries.
Revision ID: n7a8b9c0d142
Revises: m6a7b8c9d031
"""
from alembic import op
revision = "n7a8b9c0d142"
down_revision = "m6a7b8c9d031"
branch_labels = None
depends_on = None
def upgrade():
op.execute("""
CREATE TABLE IF NOT EXISTS user_collections (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
title VARCHAR(200) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
)""")
op.execute("""
CREATE TABLE IF NOT EXISTS user_collection_questions (
id SERIAL PRIMARY KEY,
collection_id INTEGER NOT NULL REFERENCES user_collections(id) ON DELETE CASCADE,
question_id INTEGER NOT NULL REFERENCES questions(id) ON DELETE CASCADE,
CONSTRAINT uq_collection_question UNIQUE (collection_id, question_id)
)""")
def downgrade():
op.execute("DROP TABLE IF EXISTS user_collection_questions")
op.execute("DROP TABLE IF EXISTS user_collections")