from typing import Optional, List from sqlalchemy.orm import Session, joinedload from ..models.role_model import RoleModel from .base_store import BaseStore class RoleStore(BaseStore[RoleModel]): """ 角色存储类,继承自BaseStore 提供角色相关的特定操作 """ def __init__(self, db: Session): super().__init__(db, RoleModel) def get_by_name(self, name: str) -> Optional[RoleModel]: """根据角色名称获取角色""" return self.db.query( self.model).filter(self.model.name == name).first() def get_by_code(self, code: str) -> Optional[RoleModel]: """根据角色代码获取角色""" return self.db.query( self.model).filter(self.model.code == code).first() def get_active_roles(self) -> List[RoleModel]: """获取所有激活的角色""" return self.db.query( self.model).filter(self.model.status == True).all() def get_roles_with_users(self) -> List[RoleModel]: """获取包含用户信息的角色列表""" return self.db.query(self.model).options(joinedload( self.model.users)).all() def get_roles_with_permissions(self) -> List[RoleModel]: """获取包含权限信息的角色列表""" return self.db.query(self.model).options( joinedload(self.model.permissions)).all()