from pydantic import BaseModel, Field from datetime import datetime from typing import Optional # Post schemas class CreatePostRequest(BaseModel): username: str content: str class UpdatePostRequest(BaseModel): username: str content: str class Post(BaseModel): id: str username: str content: str created_at: datetime = Field(alias="createdAt") updated_at: datetime = Field(alias="updatedAt") likes_count: int = Field(alias="likesCount") comments_count: int = Field(alias="commentsCount") class Config: populate_by_name = True from_attributes = True # Comment schemas class CreateCommentRequest(BaseModel): username: str content: str class UpdateCommentRequest(BaseModel): username: str content: str class Comment(BaseModel): id: str post_id: str = Field(alias="postId") username: str content: str created_at: datetime = Field(alias="createdAt") updated_at: datetime = Field(alias="updatedAt") class Config: populate_by_name = True from_attributes = True # Like schemas class LikeRequest(BaseModel): username: str class Like(BaseModel): post_id: str = Field(alias="postId") username: str created_at: datetime = Field(alias="createdAt") class Config: populate_by_name = True from_attributes = True # Error schema class Error(BaseModel): message: str details: Optional[str] = None