23 lines
791 B
Python
23 lines
791 B
Python
from datetime import datetime, timezone, UTC
|
|
from pydantic import BaseModel, Field, model_validator
|
|
|
|
|
|
class Post(BaseModel):
|
|
id: str | None = None
|
|
date: datetime
|
|
topic: str
|
|
generation_ids: list[str] = Field(default_factory=list)
|
|
project_id: str | None = None
|
|
created_by: str
|
|
is_deleted: bool = False
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
|
|
updated_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
|
|
|
|
@model_validator(mode="after")
|
|
def ensure_tz_aware(self):
|
|
for field in ("date", "created_at", "updated_at"):
|
|
val = getattr(self, field)
|
|
if val is not None and val.tzinfo is None:
|
|
setattr(self, field, val.replace(tzinfo=timezone.utc))
|
|
return self
|