File size: 787 Bytes
3ef184a 87dbdac 3ef184a 87dbdac 3ef184a 87dbdac 3ef184a 87dbdac 3ef184a 87dbdac 3ef184a 87dbdac |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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."""
@abstractmethod
def to_schema(self, model: T) -> U:
"""Map from model to schema."""
pass
@abstractmethod
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]
|