Refactor schema.py to use timezone-aware datetime for timestamp field

This commit is contained in:
ogabrielluiz 2024-06-17 11:32:26 -03:00
commit 3ff0ac3a74

View file

@ -1,5 +1,5 @@
import json import json
from datetime import datetime from datetime import datetime, timezone
from typing import Any, Optional from typing import Any, Optional
from pydantic import BaseModel, Field, field_serializer, field_validator from pydantic import BaseModel, Field, field_serializer, field_validator
@ -17,7 +17,7 @@ class DefaultModel(BaseModel):
def json(self, **kwargs): def json(self, **kwargs):
# Usa a função de serialização personalizada # Usa a função de serialização personalizada
return super().json(**kwargs, encoder=self.custom_encoder) return super().model_dump_json(**kwargs, encoder=self.custom_encoder)
@staticmethod @staticmethod
def custom_encoder(obj): def custom_encoder(obj):
@ -83,7 +83,7 @@ class TransactionModelResponse(DefaultModel):
class MessageModel(DefaultModel): class MessageModel(DefaultModel):
index: Optional[int] = Field(default=None) index: Optional[int] = Field(default=None)
flow_id: Optional[str] = Field(default=None, alias="flow_id") flow_id: Optional[str] = Field(default=None, alias="flow_id")
timestamp: datetime = Field(default_factory=datetime.now) timestamp: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
sender: str sender: str
sender_name: str sender_name: str
session_id: str session_id: str
@ -97,6 +97,12 @@ class MessageModel(DefaultModel):
v = json.loads(v) v = json.loads(v)
return v return v
@field_serializer("timestamp")
@classmethod
def serialize_timestamp(cls, v):
v = v.replace(microsecond=0)
return v.strftime("%Y-%m-%d %H:%M:%S")
@field_serializer("files") @field_serializer("files")
@classmethod @classmethod
def serialize_files(cls, v): def serialize_files(cls, v):