Files
LeDiscord/backend/schemas/event.py
2025-12-23 19:12:30 +01:00

57 lines
1.5 KiB
Python

from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime
from models.event import ParticipationStatus
class EventBase(BaseModel):
title: str = Field(..., min_length=1, max_length=200)
description: Optional[str] = None
location: Optional[str] = None
latitude: Optional[float] = None
longitude: Optional[float] = None
date: datetime
end_date: Optional[datetime] = None
class EventCreate(EventBase):
cover_image: Optional[str] = None
class EventUpdate(BaseModel):
title: Optional[str] = Field(None, min_length=1, max_length=200)
description: Optional[str] = None
location: Optional[str] = None
latitude: Optional[float] = None
longitude: Optional[float] = None
date: Optional[datetime] = None
end_date: Optional[datetime] = None
cover_image: Optional[str] = None
class ParticipationResponse(BaseModel):
user_id: int
username: str
full_name: str
avatar_url: Optional[str]
status: ParticipationStatus
response_date: datetime
class Config:
from_attributes = True
class EventResponse(EventBase):
id: int
creator_id: int
creator_name: str
creator_avatar: Optional[str] = None
cover_image: Optional[str]
created_at: datetime
participations: List[ParticipationResponse] = []
present_count: int = 0
absent_count: int = 0
maybe_count: int = 0
pending_count: int = 0
class Config:
from_attributes = True
class ParticipationUpdate(BaseModel):
status: ParticipationStatus