Initial commit: API Anime Tracker avec authentification et synchronisation

This commit is contained in:
ɧσℓσ
2025-12-01 22:22:15 +01:00
commit 467cf313e4
11 changed files with 820 additions and 0 deletions

89
schemas.py Normal file
View 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