Refactor schema.py to use timezone-aware datetime for timestamp field
This commit is contained in:
parent
89493a4700
commit
3ff0ac3a74
1 changed files with 9 additions and 3 deletions
|
|
@ -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):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue