user_store.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from typing import Optional, List
  2. from sqlalchemy.orm import Session
  3. from ..models.user_model import UserModel
  4. from .base_store import BaseStore
  5. class UserStore(BaseStore[UserModel]):
  6. """
  7. 用户存储类,继承自BaseStore
  8. 提供用户相关的特定操作
  9. """
  10. def __init__(self, db: Session):
  11. super().__init__(db, UserModel)
  12. def get_by_username(self, username: str) -> Optional[UserModel]:
  13. """根据用户名获取用户"""
  14. return self.db.query(
  15. self.model).filter(self.model.username == username).first()
  16. def get_by_grade(self, grade: str) -> List[UserModel]:
  17. """根据年级获取用户"""
  18. return self.db.query(
  19. self.model).filter(self.model.grade == grade).all()
  20. def get_by_target_score(self, min_score: int,
  21. max_score: int) -> List[UserModel]:
  22. """根据目标分数范围获取用户"""
  23. return self.db.query(self.model).filter(
  24. self.model.target_score >= min_score, self.model.target_score
  25. <= max_score).all()
  26. def get_by_learning_style(self, learning_style: str) -> List[UserModel]:
  27. """根据学习风格获取用户"""
  28. return self.db.query(self.model).filter(
  29. self.model.learning_style == learning_style).all()