| from abc import ABC, abstractmethod | |
| from typing import TypeVar, Generic, List | |
| T = TypeVar("T") | |
| U = TypeVar("U") | |
| class BaseMapper(Generic[T, U], ABC): | |
| """Base mapper class for mapping between model and schema objects.""" | |
| def to_schema(self, model: T) -> U: | |
| """Map from model to schema.""" | |
| pass | |
| def to_model(self, schema: U) -> T: | |
| """Map from schema to model.""" | |
| pass | |
| def to_schema_list(self, models: List[T]) -> List[U]: | |
| """Map a list of models to schemas.""" | |
| return [self.to_schema(model) for model in models] | |
| def to_model_list(self, schemas: List[U]) -> List[T]: | |
| """Map a list of schemas to models.""" | |
| return [self.to_model(schema) for schema in schemas] | |