tp done
This commit is contained in:
0
src/app/schemas/__init__.py
Normal file
0
src/app/schemas/__init__.py
Normal file
13
src/app/schemas/genre.py
Normal file
13
src/app/schemas/genre.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
class GenreBase(BaseModel):
|
||||
label: str
|
||||
|
||||
|
||||
class GenreCreate(GenreBase):
|
||||
pass
|
||||
|
||||
|
||||
class GenreRead(GenreBase):
|
||||
id: int
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
9
src/app/schemas/member.py
Normal file
9
src/app/schemas/member.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
class MemberBase(BaseModel):
|
||||
login: str
|
||||
|
||||
class MemberRead(MemberBase):
|
||||
id: int
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
29
src/app/schemas/movie.py
Normal file
29
src/app/schemas/movie.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from typing import List, Optional
|
||||
from .person import PersonRead
|
||||
from .genre import GenreRead
|
||||
from .opinion import OpinionRead
|
||||
|
||||
class MovieBase(BaseModel):
|
||||
title: str
|
||||
year: int
|
||||
duration: Optional[int] = None
|
||||
synopsis: Optional[str] = None
|
||||
|
||||
|
||||
# Schéma pour la création : on utilise les IDs pour les relations
|
||||
class MovieCreate(MovieBase):
|
||||
genre_id: int
|
||||
director_id: int
|
||||
actors_ids: List[int] = []
|
||||
|
||||
|
||||
# Schéma complet pour la lecture : on imbrique les objets complets
|
||||
class MovieRead(MovieBase):
|
||||
id: int
|
||||
genre: GenreRead
|
||||
director: PersonRead
|
||||
actors: List[PersonRead] = []
|
||||
opinions: List[OpinionRead] = []
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
22
src/app/schemas/opinion.py
Normal file
22
src/app/schemas/opinion.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from app.schemas.member import MemberRead
|
||||
|
||||
|
||||
class OpinionBase(BaseModel):
|
||||
note: int
|
||||
comment: str
|
||||
|
||||
|
||||
class OpinionCreate(OpinionBase):
|
||||
member_id: int
|
||||
# movie_id n'est pas nécessaire ici car il vient déjà de l'URL
|
||||
pass
|
||||
|
||||
|
||||
class OpinionRead(OpinionBase):
|
||||
id: int
|
||||
movie_id: int
|
||||
member: MemberRead
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
23
src/app/schemas/participant.py
Normal file
23
src/app/schemas/participant.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from typing import Optional
|
||||
from .person import PersonBase
|
||||
|
||||
|
||||
# Schéma pour la création d'un Participant
|
||||
class ParticipantCreate(PersonBase):
|
||||
pass
|
||||
|
||||
|
||||
# Schéma pour la mise à jour d'un Participant
|
||||
class ParticipantUpdate(BaseModel):
|
||||
# Les champs sont optionnels pour permettre des mises à jour partielles (PATCH)
|
||||
last_name: Optional[str] = None
|
||||
first_name: Optional[str] = None
|
||||
|
||||
model_config = ConfigDict(extra="forbid") # Empêche l'ajout de champs non définis
|
||||
|
||||
|
||||
# Schéma complet pour la lecture d'un Participant
|
||||
class ParticipantRead(PersonBase):
|
||||
id: int
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
15
src/app/schemas/person.py
Normal file
15
src/app/schemas/person.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from typing import Optional
|
||||
|
||||
class PersonBase(BaseModel):
|
||||
last_name: str
|
||||
first_name: Optional[str] = None
|
||||
|
||||
|
||||
class PersonCreate(PersonBase):
|
||||
pass
|
||||
|
||||
|
||||
class PersonRead(PersonBase):
|
||||
id: int
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
Reference in New Issue
Block a user