Files
voidea/app/schemas/collaboration.py

67 lines
1.3 KiB
Python

"""Collaboration schemas for VoIdea API."""
from datetime import datetime
from typing import Any, Optional
from pydantic import BaseModel, Field
class VoteResponse(BaseModel):
id: str
idea_id: str
user_id: str
vote: str
created_at: datetime
class VoteToggleRequest(BaseModel):
vote: str = Field(pattern="^(up|down)$")
class VoteCount(BaseModel):
up: int = 0
down: int = 0
user_vote: Optional[str] = None
class CommentCreate(BaseModel):
content: str = Field(min_length=1)
parent_id: Optional[str] = None
class CommentResponse(BaseModel):
id: str
idea_id: str
user_id: str
content: str
parent_id: Optional[str] = None
display_name: str = ""
avatar_url: Optional[str] = None
created_at: datetime
updated_at: datetime
replies: list["CommentResponse"] = []
class ActivityResponse(BaseModel):
id: str
idea_id: str
user_id: Optional[str] = None
action: str
details: Optional[dict[str, Any]] = None
display_name: str = ""
created_at: datetime
class NotificationResponse(BaseModel):
id: str
type: str
title: str
body: str
link: Optional[str] = None
is_read: bool
created_at: datetime
class NotificationUnreadCount(BaseModel):
count: int = 0