initial commit - LeDiscord plateforme des copains
This commit is contained in:
55
backend/schemas/event.py
Normal file
55
backend/schemas/event.py
Normal file
@@ -0,0 +1,55 @@
|
||||
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
|
||||
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
|
||||
Reference in New Issue
Block a user