from datetime import datetime, timezone, UTC from typing import Optional, List from pydantic import BaseModel, Field, model_validator class Post(BaseModel): id: Optional[str] = None date: datetime topic: str generation_ids: List[str] = Field(default_factory=list) project_id: Optional[str] = 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