crud.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. from collections.abc import Sequence
  2. from typing import Any
  3. from app.api.v1.module_system.auth.schema import AuthSchema
  4. from app.core.base_crud import CRUDBase
  5. from .model import PositionModel
  6. from .schema import PositionCreateSchema, PositionUpdateSchema
  7. class PositionCRUD(CRUDBase[PositionModel, PositionCreateSchema, PositionUpdateSchema]):
  8. """岗位模块数据层"""
  9. def __init__(self, auth: AuthSchema) -> None:
  10. """
  11. 初始化岗位数据层。
  12. 参数:
  13. - auth (AuthSchema): 认证信息模型(含 DB 会话等上下文)。
  14. 返回:
  15. - None
  16. """
  17. self.auth = auth
  18. super().__init__(model=PositionModel, auth=auth)
  19. async def get_by_id_crud(
  20. self, id: int, preload: list[str] | None = None
  21. ) -> PositionModel | None:
  22. """
  23. 根据 id 获取岗位信息。
  24. 参数:
  25. - id (int): 岗位 ID。
  26. - preload (list[str] | None): 预加载关系,未提供时使用模型默认项
  27. 返回:
  28. - PositionModel | None: 岗位信息,未找到返回 None。
  29. """
  30. return await self.get(id=id, preload=preload)
  31. async def get_list_crud(
  32. self,
  33. search: dict | None = None,
  34. order_by: list[dict[str, Any]] | None = None,
  35. preload: list[str] | None = None,
  36. ) -> Sequence[PositionModel]:
  37. """
  38. 获取岗位列表。
  39. 参数:
  40. - search (dict | None): 搜索条件。
  41. - order_by (list[dict[str, Any]] | None): 排序字段列表。
  42. - preload (list[str] | None): 预加载关系,未提供时使用模型默认项
  43. 返回:
  44. - Sequence[PositionModel]: 岗位列表。
  45. """
  46. return await self.list(search=search, order_by=order_by, preload=preload)
  47. async def set_available_crud(self, ids: list[int], status: str) -> None:
  48. """
  49. 批量设置岗位可用状态。
  50. 参数:
  51. - ids (list[int]): 岗位 ID 列表。
  52. - status (bool): 可用状态。
  53. 返回:
  54. - None
  55. """
  56. await self.set(ids=ids, status=status)
  57. async def get_name_crud(self, ids: list[int]) -> list[str]:
  58. """
  59. 根据 id 列表获取岗位名称。
  60. 参数:
  61. - ids (list[int]): 岗位 ID 列表。
  62. 返回:
  63. - list[str]: 岗位名称列表。
  64. """
  65. position_names = []
  66. for id in ids:
  67. obj = await self.get(id=id)
  68. if obj:
  69. position_names.append(obj.name)
  70. return position_names