role_store.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from typing import Optional, List
  2. from sqlalchemy.orm import Session, joinedload
  3. from ..models.role_model import RoleModel
  4. from .base_store import BaseStore
  5. class RoleStore(BaseStore[RoleModel]):
  6. """
  7. 角色存储类,继承自BaseStore
  8. 提供角色相关的特定操作
  9. """
  10. def __init__(self, db: Session):
  11. super().__init__(db, RoleModel)
  12. def get_by_name(self, name: str) -> Optional[RoleModel]:
  13. """根据角色名称获取角色"""
  14. return self.db.query(
  15. self.model).filter(self.model.name == name).first()
  16. def get_by_code(self, code: str) -> Optional[RoleModel]:
  17. """根据角色代码获取角色"""
  18. return self.db.query(
  19. self.model).filter(self.model.code == code).first()
  20. def get_active_roles(self) -> List[RoleModel]:
  21. """获取所有激活的角色"""
  22. return self.db.query(
  23. self.model).filter(self.model.status == True).all()
  24. def get_roles_with_users(self) -> List[RoleModel]:
  25. """获取包含用户信息的角色列表"""
  26. return self.db.query(self.model).options(joinedload(
  27. self.model.users)).all()
  28. def get_roles_with_permissions(self) -> List[RoleModel]:
  29. """获取包含权限信息的角色列表"""
  30. return self.db.query(self.model).options(
  31. joinedload(self.model.permissions)).all()