You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.9 KiB
62 lines
1.9 KiB
"""init |
|
|
|
Revision ID: 001 |
|
Revises: |
|
Create Date: 2026-03-21 |
|
|
|
""" |
|
from typing import Sequence, Union |
|
|
|
import sqlalchemy as sa |
|
from alembic import op |
|
|
|
revision: str = "001" |
|
down_revision: Union[str, None] = None |
|
branch_labels: Union[str, Sequence[str], None] = None |
|
depends_on: Union[str, Sequence[str], None] = None |
|
|
|
|
|
def upgrade() -> None: |
|
op.create_table( |
|
"tests", |
|
sa.Column("id", sa.Integer(), nullable=False), |
|
sa.Column("title", sa.String(255), nullable=False), |
|
sa.Column("description", sa.Text(), nullable=True), |
|
sa.Column("passing_score", sa.Integer(), nullable=False), |
|
sa.Column("time_limit", sa.Integer(), nullable=True), |
|
sa.Column("allow_navigation_back", sa.Boolean(), nullable=False, server_default="true"), |
|
sa.Column("is_active", sa.Boolean(), nullable=False, server_default="true"), |
|
sa.Column("version", sa.Integer(), nullable=False, server_default="1"), |
|
sa.Column( |
|
"created_at", |
|
sa.DateTime(timezone=True), |
|
server_default=sa.text("now()"), |
|
), |
|
sa.PrimaryKeyConstraint("id"), |
|
) |
|
|
|
op.create_table( |
|
"questions", |
|
sa.Column("id", sa.Integer(), nullable=False), |
|
sa.Column("test_id", sa.Integer(), sa.ForeignKey("tests.id"), nullable=False), |
|
sa.Column("text", sa.Text(), nullable=False), |
|
sa.Column("order", sa.Integer(), nullable=False), |
|
sa.PrimaryKeyConstraint("id"), |
|
) |
|
|
|
op.create_table( |
|
"answers", |
|
sa.Column("id", sa.Integer(), nullable=False), |
|
sa.Column( |
|
"question_id", sa.Integer(), sa.ForeignKey("questions.id"), nullable=False |
|
), |
|
sa.Column("text", sa.Text(), nullable=False), |
|
sa.Column("is_correct", sa.Boolean(), nullable=False), |
|
sa.PrimaryKeyConstraint("id"), |
|
) |
|
|
|
|
|
def downgrade() -> None: |
|
op.drop_table("answers") |
|
op.drop_table("questions") |
|
op.drop_table("tests")
|
|
|