| 12345678910111213141516171819202122232425262728293031 |
- from typing import Optional
- from datetime import datetime, timezone
- from sqlalchemy import Column, String, Text, Integer, Float, DateTime, Boolean, JSON, func
- from sqlalchemy.orm import Mapped, mapped_column
- from app.models.user import Base
- class Question(Base):
- __tablename__ = "questions"
- id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
- question_id: Mapped[str] = mapped_column(String(64), unique=True, nullable=False, index=True)
- question_type: Mapped[str] = mapped_column(String(8), nullable=False) # A / B / X
- subject: Mapped[str] = mapped_column(String(64), nullable=False, index=True)
- chapter_id: Mapped[str] = mapped_column(String(64), nullable=False, index=True)
- difficulty: Mapped[int] = mapped_column(default=1) # 1-5
- content: Mapped[str] = mapped_column(Text, nullable=False)
- options: Mapped[list] = mapped_column(JSON, nullable=False)
- answer: Mapped[str] = mapped_column(String(16), nullable=False)
- explanation: Mapped[str] = mapped_column(Text, nullable=False)
- knowledge_point_ids: Mapped[Optional[list]] = mapped_column(JSON)
- source: Mapped[Optional[str]] = mapped_column(Text)
- frequency: Mapped[Optional[str]] = mapped_column(String(16))
- audited: Mapped[bool] = mapped_column(default=False)
- correct_count: Mapped[int] = mapped_column(default=0)
- attempt_count: Mapped[int] = mapped_column(default=0)
- created_at: Mapped[datetime] = mapped_column(
- DateTime(timezone=True), server_default=func.now()
- )
|