Initial commit: API Anime Tracker avec authentification et synchronisation
This commit is contained in:
89
schemas.py
Normal file
89
schemas.py
Normal file
@@ -0,0 +1,89 @@
|
||||
"""
|
||||
Schémas Pydantic pour la validation des données
|
||||
"""
|
||||
from pydantic import BaseModel, EmailStr, Field
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
# ==================== USER SCHEMAS ====================
|
||||
|
||||
class UserCreate(BaseModel):
|
||||
username: str = Field(..., min_length=3, max_length=50)
|
||||
email: EmailStr
|
||||
password: str = Field(..., min_length=6)
|
||||
|
||||
|
||||
class UserLogin(BaseModel):
|
||||
email_or_username: str
|
||||
password: str
|
||||
|
||||
|
||||
class UserResponse(BaseModel):
|
||||
id: int
|
||||
username: str
|
||||
email: str
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
# ==================== AUTH SCHEMAS ====================
|
||||
|
||||
class Token(BaseModel):
|
||||
access_token: str
|
||||
token_type: str
|
||||
|
||||
|
||||
# ==================== ANIME SCHEMAS ====================
|
||||
|
||||
class AnimeCreate(BaseModel):
|
||||
anime_id: str
|
||||
title: str
|
||||
current_episode: int = 1
|
||||
total_episodes: Optional[int] = None
|
||||
last_url: Optional[str] = None
|
||||
source: Optional[str] = None
|
||||
status: str = "en_cours"
|
||||
comment: Optional[str] = None
|
||||
rating: float = 0.0
|
||||
anilist_id: Optional[int] = None
|
||||
cover_image: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
|
||||
|
||||
class AnimeUpdate(BaseModel):
|
||||
title: Optional[str] = None
|
||||
current_episode: Optional[int] = None
|
||||
total_episodes: Optional[int] = None
|
||||
last_url: Optional[str] = None
|
||||
source: Optional[str] = None
|
||||
status: Optional[str] = None
|
||||
comment: Optional[str] = None
|
||||
rating: Optional[float] = None
|
||||
anilist_id: Optional[int] = None
|
||||
cover_image: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
|
||||
|
||||
class AnimeResponse(BaseModel):
|
||||
id: int
|
||||
user_id: int
|
||||
anime_id: str
|
||||
title: str
|
||||
current_episode: int
|
||||
total_episodes: Optional[int]
|
||||
last_url: Optional[str]
|
||||
source: Optional[str]
|
||||
status: str
|
||||
comment: Optional[str]
|
||||
rating: float
|
||||
anilist_id: Optional[int]
|
||||
cover_image: Optional[str]
|
||||
description: Optional[str]
|
||||
last_updated: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
Reference in New Issue
Block a user