| 1234567891011121314151617181920212223242526272829303132333435363738 |
- from typing import Any, List, Dict, TypeVar, Generic
- from BACKEND.domain.dtos.base_dto import DtoBase, CreateDtoBase, UpdateDtoBase
- # 定义泛型类型变量
- GetSchemaType = TypeVar("GetSchemaType", bound=DtoBase)
- CreateSchemaType = TypeVar("CreateSchemaType", bound=CreateDtoBase)
- UpdateSchemaType = TypeVar("UpdateSchemaType", bound=UpdateDtoBase)
- class ServiceBase(Generic[GetSchemaType, CreateSchemaType, UpdateSchemaType]):
- __abstract__ = True
- def __init__(self, store_class):
- self.store_class = store_class
- def get(self, id: int, include_deleted: bool = False) -> GetSchemaType:
- model = self.store_class.get(id, include_deleted)
- return model.from_model()
- def list(
- self,
- page: int = 1,
- page_size: int = 20,
- keyword: str = None,
- filters: List = None,
- order: str = None,
- ) -> Dict[str, Any]:
- return self.store_class.list(page, page_size, keyword, filters, order)
- def create(self, obj_in: CreateSchemaType) -> Any:
- return self.store_class.create(obj_in.model_dump())
- def update(self, obj_in: UpdateSchemaType) -> Any:
- return self.store_class.update(obj_in.model_dump())
- def delete(self, id: int) -> None:
- return self.store_class.delete(id)
|