question_store.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from typing import Optional, List
  2. from sqlalchemy.orm import Session, joinedload
  3. from ..models.question_model import QuestionModel
  4. from .base_store import BaseStore
  5. class QuestionStore(BaseStore[QuestionModel]):
  6. """
  7. 题目存储类,继承自BaseStore
  8. 提供题目相关的特定操作
  9. """
  10. def __init__(self, db: Session):
  11. super().__init__(db, QuestionModel)
  12. def get_by_subject(self, subject: str) -> List[QuestionModel]:
  13. """根据学科获取题目列表"""
  14. return self.db.query(
  15. self.model).filter(self.model.subject == subject).all()
  16. def get_by_type(self, type: str) -> List[QuestionModel]:
  17. """根据题型获取题目列表"""
  18. return self.db.query(self.model).filter(self.model.type == type).all()
  19. def get_by_difficulty(self, difficulty: int) -> List[QuestionModel]:
  20. """根据难度获取题目列表"""
  21. return self.db.query(
  22. self.model).filter(self.model.difficulty == difficulty).all()
  23. def get_questions_with_options(self) -> List[QuestionModel]:
  24. """获取包含选项信息的题目列表"""
  25. return self.db.query(self.model).options(joinedload(
  26. self.model.options)).all()
  27. def get_questions_with_knowledge_points(self) -> List[QuestionModel]:
  28. """获取包含知识点信息的题目列表"""
  29. return self.db.query(self.model).options(
  30. joinedload(self.model.knowledge_points)).all()