Showing
3 changed files
with
50 additions
and
1 deletions
@@ -5,3 +5,5 @@ | @@ -5,3 +5,5 @@ | ||
5 | - Création du composant MoviesList. | 5 | - Création du composant MoviesList. |
6 | - Création du composant SearchBar. | 6 | - Création du composant SearchBar. |
7 | - Création du composant SkeletonMoviesLoader. | 7 | - Création du composant SkeletonMoviesLoader. |
8 | +- Installation et paramétrage de pinia-orm. | ||
9 | +- Ajout du du model Movie. |
@@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
3 | import SearchBar from "~/components/SearchBar.vue"; | 3 | import SearchBar from "~/components/SearchBar.vue"; |
4 | import { ref } from "vue"; | 4 | import { ref } from "vue"; |
5 | import { useTMDB } from "~/composables/tMDB"; | 5 | import { useTMDB } from "~/composables/tMDB"; |
6 | +import { Movie } from "~/models/movie"; | ||
6 | //#endregion | 7 | //#endregion |
7 | 8 | ||
8 | //#region --Declaration--. | 9 | //#region --Declaration--. |
@@ -33,13 +34,14 @@ const fetchMovies = async (page: number) => { | @@ -33,13 +34,14 @@ const fetchMovies = async (page: number) => { | ||
33 | try { | 34 | try { |
34 | isLoadingMore.value = true; | 35 | isLoadingMore.value = true; |
35 | const data = await fetchPopularMovies(page); | 36 | const data = await fetchPopularMovies(page); |
36 | - console.log("data in fetchMovies", data); | ||
37 | 37 | ||
38 | if (page === 1) { | 38 | if (page === 1) { |
39 | movies.value = data.results; | 39 | movies.value = data.results; |
40 | } else { | 40 | } else { |
41 | movies.value = [...movies.value, ...data.results]; | 41 | movies.value = [...movies.value, ...data.results]; |
42 | } | 42 | } |
43 | + // Save in Movie model. | ||
44 | + useRepo(Movie).save(data.results); | ||
43 | 45 | ||
44 | totalPages.value = data.total_pages; | 46 | totalPages.value = data.total_pages; |
45 | currentPage.value = page; | 47 | currentPage.value = page; |
models/movie.ts
0 → 100644
1 | +import { Model } from "pinia-orm"; | ||
2 | + | ||
3 | +export class Movie extends Model { | ||
4 | + /** | ||
5 | + * | ||
6 | + * @return {string} | ||
7 | + */ | ||
8 | + static get entity() { | ||
9 | + return "Movie"; | ||
10 | + } | ||
11 | + | ||
12 | + /** | ||
13 | + * | ||
14 | + * @return {string} | ||
15 | + */ | ||
16 | + static get primaryKey() { | ||
17 | + return "id"; | ||
18 | + } | ||
19 | + | ||
20 | + static fields() { | ||
21 | + return { | ||
22 | + // Attributs. | ||
23 | + id: this.number(null), | ||
24 | + adult: this.boolean(false), | ||
25 | + backdrop_pat: this.string(null), | ||
26 | + genre_ids: this.attr([]), | ||
27 | + original_language: this.string(null), | ||
28 | + original_title: this.string(null), | ||
29 | + overview: this.string(null), | ||
30 | + popularity: this.number(null), | ||
31 | + poster_path: this.string(null), | ||
32 | + release_date: this.string(null), | ||
33 | + title: this.string(null), | ||
34 | + video: this.boolean(false), | ||
35 | + vote_average: this.number(null), | ||
36 | + vote_count: this.number(null), | ||
37 | + // Relations. | ||
38 | + }; | ||
39 | + } | ||
40 | + | ||
41 | + static piniaOptions = { | ||
42 | + persist: true, | ||
43 | + }; | ||
44 | + | ||
45 | +} |
-
Please register or login to post a comment