from pydantic import BaseModel from datetime import datetime from typing import Optional from enum import Enum class PostStatus(str, Enum): draft = "draft" scheduled = "scheduled" published = "published" cancelled = "cancelled" class PostBase(BaseModel): title: str content: str scheduled_time: Optional[datetime] = None status: PostStatus = PostStatus.draft class PostCreate(PostBase): pass class PostUpdate(BaseModel): title: Optional[str] = None content: Optional[str] = None scheduled_time: Optional[datetime] = None status: Optional[PostStatus] = None class PostInDB(PostBase): id: int owner_id: int created_at: datetime updated_at: Optional[datetime] = None published_at: Optional[datetime] = None class Config: from_attributes = True class Post(PostInDB): pass