Semaine 3
Lors de cette séance nous allons:
- Ajouter 2 tables a notre BDD : Film et Favorite
- Créer 2 Controlleur : Film et Favorite
Nouvelle table en BDD
Vous devrez ajouter 2 tables dans la BDD et donc dans la classe qui hérite de DbContext, voici les champs a mettre dans chacune des deux tables
Films
- Id : Id dans la base
- Title : Titre du film
- Poster : URL de l'image du film (string)
- Imdb : Id IMDB (string)
- Year : Date de sorti
Favorites
- Id : Id dans la base
- UserId : Id de l'utilisateur à qui le favori appartient
- FilmId : Id du film en favori
Nouveau controlleur
Vous devrez ajouter 2 controlleur a votre projet, un pour les films et un pour les favoris.
Film
Dans le controlleur Film nous auront besoin de 3 routes:
Une route qui renverra la liste des films stocké en BDD.
GET /api/Film/
Paramètre:
- Aucun
Retourne:
200 - [{"Id": 1, "Title":"Titre du film","Year":"2000","Poster":"https://lien_du_poster.jpg"}, ...]
Une route qui ira chercher les film qui correspondent aux mots clés.
GET /api/Film/search
Paramètre:
- title : mots clés pour rechercher le film
Retourne:
200 - [{"Id": 1, "Title":"Titre du film","Year":"2000","Poster":"https://lien_du_poster.jpg"}, ...]
404 - Si aucun film n'a été trouvé
Une route info qui renvoi les films dont les ids correspondent au paramètre passé
GET /api/Film/info
Paramètre:
- ids : un tableau d'id des films ex: [1,2,3]
Retourne:
200 - [{"Id": 1, "Title":"Titre du film","Year":"2000","Poster":"https://lien_du_poster.jpg"}, ...]
404 - Si aucun film n'a été trouvé
// GET api/<Film>/info/
[HttpGet("info")]
public async Task<ActionResult<IEnumerable<Film>>> GetFilm([FromQuery] int[] ids)
Favoris
Dans le controlleur Favorite nous auront besoin de plusieurs routes:
Une route qui ajoutera un film dans la table Favorite
de la BDD.
POST /api/Favorite/add
Paramètre:
- id : l'id du film a mettre en favori
Retourne:
200 - Vide // Si tout a fonctionné
404 - Vide // Si le film n'existe pas
Une route qui supprimera un favori dans la table Favorite
de la BDD
DELETE /api/Favorite/remove
Paramètre:
- id : l'id du film a enlever des favoris
Retourne:
200 - Vide // Si tout a fonctionné
404 - Vide // Si le favori n'a pu être supprimé (car il n'existait pas par exemple)
Une route qui renverra la liste des favoris de l'utilisateur
GET /api/Favorite/list/{userId}
Paramètre:
- Aucun
Retourne:
200 - [1,2,3,8,150] // id des films en favori pour l'utilisateur
Bonus
Faites que la recherche de film fonctionne peu importe la casse des mots clés. (ex: "lord of the rings" et "Lord Of The Rings" renvoi le même résultat)