user.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. """用户 CRUD"""
  2. from typing import List, Optional, Tuple
  3. from sqlalchemy.orm import Session
  4. from app.models.system import SysRole, SysUser
  5. def get_user_by_username(db: Session, username: str) -> Optional[SysUser]:
  6. return (
  7. db.query(SysUser)
  8. .filter(SysUser.username == username, SysUser.del_flag == "0")
  9. .first()
  10. )
  11. def get_user_by_id(db: Session, user_id: str) -> Optional[SysUser]:
  12. return (
  13. db.query(SysUser)
  14. .filter(SysUser.id == user_id, SysUser.del_flag == "0")
  15. .first()
  16. )
  17. def get_role_by_id(db: Session, role_id: str) -> Optional[SysRole]:
  18. return (
  19. db.query(SysRole)
  20. .filter(SysRole.id == role_id, SysRole.del_flag == "0")
  21. .first()
  22. )
  23. def get_role_by_code(db: Session, role_code: str) -> Optional[SysRole]:
  24. return (
  25. db.query(SysRole)
  26. .filter(SysRole.role_code == role_code, SysRole.del_flag == "0")
  27. .first()
  28. )
  29. def list_users(db: Session) -> List[SysUser]:
  30. return (
  31. db.query(SysUser)
  32. .filter(SysUser.del_flag == "0")
  33. .order_by(SysUser.create_time.desc())
  34. .all()
  35. )
  36. def create_user(
  37. db: Session,
  38. *,
  39. username: str,
  40. password_hash: str,
  41. display_name: str,
  42. role_id: str,
  43. status: str = "0",
  44. ) -> SysUser:
  45. row = SysUser(
  46. username=username,
  47. password_hash=password_hash,
  48. display_name=display_name,
  49. role_id=role_id,
  50. status=status,
  51. del_flag="0",
  52. )
  53. db.add(row)
  54. db.commit()
  55. db.refresh(row)
  56. return row
  57. def update_user(
  58. db: Session,
  59. user: SysUser,
  60. *,
  61. display_name: Optional[str] = None,
  62. role_id: Optional[str] = None,
  63. status: Optional[str] = None,
  64. password_hash: Optional[str] = None,
  65. ) -> SysUser:
  66. if display_name is not None:
  67. user.display_name = display_name
  68. if role_id is not None:
  69. user.role_id = role_id
  70. if status is not None:
  71. user.status = status
  72. if password_hash is not None:
  73. user.password_hash = password_hash
  74. db.commit()
  75. db.refresh(user)
  76. return user
  77. def get_user_with_role(
  78. db: Session, user_id: str
  79. ) -> Tuple[Optional[SysUser], Optional[SysRole]]:
  80. user = get_user_by_id(db, user_id)
  81. if not user:
  82. return None, None
  83. role = get_role_by_id(db, user.role_id)
  84. return user, role