crud.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. # -*- coding: utf-8 -*-
  2. from typing import Sequence
  3. from app.core.base_crud import CRUDBase
  4. from app.api.v1.module_system.auth.schema import AuthSchema
  5. from .model import BizVarDictModel
  6. from .schema import BizVarDictCreateSchema, BizVarDictUpdateSchema, BizVarDictOutSchema
  7. class BizVarDictCRUD(CRUDBase[BizVarDictModel, BizVarDictCreateSchema, BizVarDictUpdateSchema]):
  8. """变量信息数据层"""
  9. def __init__(self, auth: AuthSchema) -> None:
  10. """
  11. 初始化CRUD数据层
  12. 参数:
  13. - auth (AuthSchema): 认证信息模型
  14. """
  15. super().__init__(model=BizVarDictModel, auth=auth)
  16. async def get_by_id_vardict_crud(self, id: int, preload: list | None = None) -> BizVarDictModel | None:
  17. """
  18. 详情
  19. 参数:
  20. - id (int): 对象ID
  21. - preload (list | None): 预加载关系,未提供时使用模型默认项
  22. 返回:
  23. - BizVarDictModel | None: 模型实例或None
  24. """
  25. return await self.get(id=id, preload=preload)
  26. async def list_vardict_crud(self, search: dict | None = None, order_by: list[dict] | None = None, preload: list | None = None) -> Sequence[BizVarDictModel]:
  27. """
  28. 列表查询
  29. 参数:
  30. - search (dict | None): 查询参数
  31. - order_by (list[dict] | None): 排序参数,未提供时使用模型默认项
  32. - preload (list | None): 预加载关系,未提供时使用模型默认项
  33. 返回:
  34. - Sequence[BizVarDictModel]: 模型实例序列
  35. """
  36. return await self.list(search=search, order_by=order_by, preload=preload)
  37. async def create_vardict_crud(self, data: BizVarDictCreateSchema) -> BizVarDictModel | None:
  38. """
  39. 创建
  40. 参数:
  41. - data (BizVarDictCreateSchema): 创建模型
  42. 返回:
  43. - BizVarDictModel | None: 模型实例或None
  44. """
  45. return await self.create(data=data)
  46. async def update_vardict_crud(self, id: int, data: BizVarDictUpdateSchema) -> BizVarDictModel | None:
  47. """
  48. 更新
  49. 参数:
  50. - id (int): 对象ID
  51. - data (BizVarDictUpdateSchema): 更新模型
  52. 返回:
  53. - BizVarDictModel | None: 模型实例或None
  54. """
  55. return await self.update(id=id, data=data)
  56. async def delete_vardict_crud(self, ids: list[int]) -> None:
  57. """
  58. 批量删除
  59. 参数:
  60. - ids (list[int]): 对象ID列表
  61. 返回:
  62. - None
  63. """
  64. return await self.delete(ids=ids)
  65. async def set_available_vardict_crud(self, ids: list[int], status: str) -> None:
  66. """
  67. 批量设置可用状态
  68. 参数:
  69. - ids (list[int]): 对象ID列表
  70. - status (str): 可用状态
  71. 返回:
  72. - None
  73. """
  74. return await self.set(ids=ids, status=status)
  75. async def page_vardict_crud(self, offset: int, limit: int, order_by: list[dict] | None = None, search: dict | None = None, preload: list | None = None) -> dict:
  76. """
  77. 分页查询
  78. 参数:
  79. - offset (int): 偏移量
  80. - limit (int): 每页数量
  81. - order_by (list[dict] | None): 排序参数,未提供时使用模型默认项
  82. - search (dict | None): 查询参数,未提供时查询所有
  83. - preload (list | None): 预加载关系,未提供时使用模型默认项
  84. 返回:
  85. - Dict: 分页数据
  86. """
  87. order_by_list = order_by or [{'id': 'asc'}]
  88. search_dict = search or {}
  89. return await self.page(
  90. offset=offset,
  91. limit=limit,
  92. order_by=order_by_list,
  93. search=search_dict,
  94. out_schema=BizVarDictOutSchema,
  95. preload=preload
  96. )