Files
LeDiscord/backend/schemas/post.py
2025-08-27 18:34:38 +02:00

55 lines
1.3 KiB
Python
Executable File

from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime
class PostBase(BaseModel):
content: str = Field(..., min_length=1, max_length=5000)
class PostCreate(PostBase):
image_url: Optional[str] = None
mentioned_user_ids: List[int] = []
class PostUpdate(BaseModel):
content: Optional[str] = Field(None, min_length=1, max_length=5000)
image_url: Optional[str] = None
class PostCommentCreate(BaseModel):
content: str = Field(..., min_length=1, max_length=500)
class MentionedUser(BaseModel):
id: int
username: str
full_name: str
avatar_url: Optional[str]
class Config:
from_attributes = True
class PostCommentResponse(BaseModel):
id: int
content: str
author_id: int
author_name: str
author_avatar: Optional[str]
created_at: datetime
class Config:
from_attributes = True
class PostResponse(PostBase):
id: int
author_id: int
author_name: str
author_avatar: Optional[str]
image_url: Optional[str]
likes_count: int = 0
comments_count: int = 0
is_liked: Optional[bool] = None
created_at: datetime
updated_at: datetime
mentioned_users: List[MentionedUser] = []
comments: List[PostCommentResponse] = []
class Config:
from_attributes = True