"""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