Files
2026-04-01 13:48:40 -07:00

29 lines
920 B
Python

from typing import Any, Dict, Optional, Generic, TypeVar
from pydantic import BaseModel
from datetime import datetime
InputType = TypeVar("InputType", bound=BaseModel)
class ServiceInput(Generic[InputType]):
""" Base unificada de entradas """
def __init__(self, raw_data: Any, source: str = "api"):
self.raw_data = raw_data
self.source = source
self.timestamp = datetime.utcnow()
self._validated = None
def validate(self, schema: type[InputType]) -> InputType:
"""Validacion de datos en contra de un schema"""
self._validated = schema(**self.raw_data)
return self._validated
def get_validated(self) -> Optional[InputType]:
return self._validated
def to_dict(self) -> Dict:
return {
"source": self.source,
"timestamp": self.timestamp.isoformat(),
"data": self.raw_data,
}