from typing import Optional, List from sqlalchemy.orm import Session from ..models.user_model import UserModel from .base_store import BaseStore class UserStore(BaseStore[UserModel]): """ 用户存储类,继承自BaseStore 提供用户相关的特定操作 """ def __init__(self, db: Session): super().__init__(db, UserModel) def get_by_username(self, username: str) -> Optional[UserModel]: """根据用户名获取用户""" return self.db.query( self.model).filter(self.model.username == username).first() def get_by_grade(self, grade: str) -> List[UserModel]: """根据年级获取用户""" return self.db.query( self.model).filter(self.model.grade == grade).all() def get_by_target_score(self, min_score: int, max_score: int) -> List[UserModel]: """根据目标分数范围获取用户""" return self.db.query(self.model).filter( self.model.target_score >= min_score, self.model.target_score <= max_score).all() def get_by_learning_style(self, learning_style: str) -> List[UserModel]: """根据学习风格获取用户""" return self.db.query(self.model).filter( self.model.learning_style == learning_style).all()