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)