12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- from typing import Optional, List
- from datetime import datetime
- from sqlalchemy.orm import Session, joinedload
- from ..models.exam_model import ExamModel
- from .base_store import BaseStore
- class ExamStore(BaseStore[ExamModel]):
- """
- 考试存储类,继承自BaseStore
- 提供考试相关的特定操作
- """
- def __init__(self, db: Session):
- super().__init__(db, ExamModel)
- def get_by_name(self, name: str) -> Optional[ExamModel]:
- """根据考试名称获取考试"""
- return self.db.query(
- self.model).filter(self.model.name == name).first()
- def get_by_subject(self, subject: str) -> List[ExamModel]:
- """根据学科获取考试列表"""
- return self.db.query(
- self.model).filter(self.model.subject == subject).all()
- def get_active_exams(self) -> List[ExamModel]:
- """获取所有激活的考试"""
- return self.db.query(
- self.model).filter(self.model.status == 'active').all()
- def get_upcoming_exams(self) -> List[ExamModel]:
- """获取即将开始的考试"""
- now = datetime.now()
- return self.db.query(self.model)\
- .filter(self.model.start_time > now)\
- .order_by(self.model.start_time.asc())\
- .all()
- def get_exams_with_questions(self) -> List[ExamModel]:
- """获取包含题目信息的考试列表"""
- return self.db.query(self.model).options(
- joinedload(self.model.questions)).all()
|