From 4b1cd06ac7f2426ea55d038dacf594b33d71a243 Mon Sep 17 00:00:00 2001 From: Mohammad Mahdi Date: Fri, 31 Oct 2025 16:03:18 +0330 Subject: [PATCH] Improve search api --- .editorconfig | 0 .gitattributes | 0 .github/workflows/deploy.yml | 0 .gitignore | 0 .prettierrc.json | 0 .vscode/extensions.json | 0 README.md | 0 env.d.ts | 0 eslint.config.ts | 0 index.html | 0 package.json | 0 pnpm-lock.yaml | 0 public/favicon.ico | Bin public/robots.txt | 0 src/App.vue | 0 src/components/AddMoreCard.vue | 0 src/components/ImageWithFallback.vue | 0 src/components/LoadingSpinner.vue | 0 src/components/MediaCard.vue | 0 src/components/MediaDetails.vue | 0 src/components/MediaList.vue | 0 src/components/MediaTypeBadge.vue | 0 src/components/NavBar.vue | 0 src/components/SearchBar.vue | 0 src/components/alerts/ErrorAlert.vue | 0 src/lib/api.ts | 43 ++++++++++++++++++--------- src/main.ts | 0 src/router/index.ts | 0 src/stores/media.ts | 0 src/style.css | 0 src/types/Media.ts | 0 src/types/MediaMap.ts | 0 src/types/Movie.ts | 0 src/types/MovieMap.ts | 0 src/types/TvSeries.ts | 0 src/types/TvSeriesMap.ts | 0 src/views/AddView.vue | 0 src/views/DetailsView.vue | 0 src/views/HomeView.vue | 0 src/views/ListView.vue | 0 src/views/NotFoundView.vue | 0 src/views/WatchView.vue | 0 tsconfig.app.json | 0 tsconfig.json | 0 tsconfig.node.json | 0 vite.config.ts | 0 46 files changed, 29 insertions(+), 14 deletions(-) mode change 100644 => 100755 .editorconfig mode change 100644 => 100755 .gitattributes mode change 100644 => 100755 .github/workflows/deploy.yml mode change 100644 => 100755 .gitignore mode change 100644 => 100755 .prettierrc.json mode change 100644 => 100755 .vscode/extensions.json mode change 100644 => 100755 README.md mode change 100644 => 100755 env.d.ts mode change 100644 => 100755 eslint.config.ts mode change 100644 => 100755 index.html mode change 100644 => 100755 package.json mode change 100644 => 100755 pnpm-lock.yaml mode change 100644 => 100755 public/favicon.ico mode change 100644 => 100755 public/robots.txt mode change 100644 => 100755 src/App.vue mode change 100644 => 100755 src/components/AddMoreCard.vue mode change 100644 => 100755 src/components/ImageWithFallback.vue mode change 100644 => 100755 src/components/LoadingSpinner.vue mode change 100644 => 100755 src/components/MediaCard.vue mode change 100644 => 100755 src/components/MediaDetails.vue mode change 100644 => 100755 src/components/MediaList.vue mode change 100644 => 100755 src/components/MediaTypeBadge.vue mode change 100644 => 100755 src/components/NavBar.vue mode change 100644 => 100755 src/components/SearchBar.vue mode change 100644 => 100755 src/components/alerts/ErrorAlert.vue mode change 100644 => 100755 src/lib/api.ts mode change 100644 => 100755 src/main.ts mode change 100644 => 100755 src/router/index.ts mode change 100644 => 100755 src/stores/media.ts mode change 100644 => 100755 src/style.css mode change 100644 => 100755 src/types/Media.ts mode change 100644 => 100755 src/types/MediaMap.ts mode change 100644 => 100755 src/types/Movie.ts mode change 100644 => 100755 src/types/MovieMap.ts mode change 100644 => 100755 src/types/TvSeries.ts mode change 100644 => 100755 src/types/TvSeriesMap.ts mode change 100644 => 100755 src/views/AddView.vue mode change 100644 => 100755 src/views/DetailsView.vue mode change 100644 => 100755 src/views/HomeView.vue mode change 100644 => 100755 src/views/ListView.vue mode change 100644 => 100755 src/views/NotFoundView.vue mode change 100644 => 100755 src/views/WatchView.vue mode change 100644 => 100755 tsconfig.app.json mode change 100644 => 100755 tsconfig.json mode change 100644 => 100755 tsconfig.node.json mode change 100644 => 100755 vite.config.ts diff --git a/.editorconfig b/.editorconfig old mode 100644 new mode 100755 diff --git a/.gitattributes b/.gitattributes old mode 100644 new mode 100755 diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/.prettierrc.json b/.prettierrc.json old mode 100644 new mode 100755 diff --git a/.vscode/extensions.json b/.vscode/extensions.json old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/env.d.ts b/env.d.ts old mode 100644 new mode 100755 diff --git a/eslint.config.ts b/eslint.config.ts old mode 100644 new mode 100755 diff --git a/index.html b/index.html old mode 100644 new mode 100755 diff --git a/package.json b/package.json old mode 100644 new mode 100755 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml old mode 100644 new mode 100755 diff --git a/public/favicon.ico b/public/favicon.ico old mode 100644 new mode 100755 diff --git a/public/robots.txt b/public/robots.txt old mode 100644 new mode 100755 diff --git a/src/App.vue b/src/App.vue old mode 100644 new mode 100755 diff --git a/src/components/AddMoreCard.vue b/src/components/AddMoreCard.vue old mode 100644 new mode 100755 diff --git a/src/components/ImageWithFallback.vue b/src/components/ImageWithFallback.vue old mode 100644 new mode 100755 diff --git a/src/components/LoadingSpinner.vue b/src/components/LoadingSpinner.vue old mode 100644 new mode 100755 diff --git a/src/components/MediaCard.vue b/src/components/MediaCard.vue old mode 100644 new mode 100755 diff --git a/src/components/MediaDetails.vue b/src/components/MediaDetails.vue old mode 100644 new mode 100755 diff --git a/src/components/MediaList.vue b/src/components/MediaList.vue old mode 100644 new mode 100755 diff --git a/src/components/MediaTypeBadge.vue b/src/components/MediaTypeBadge.vue old mode 100644 new mode 100755 diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue old mode 100644 new mode 100755 diff --git a/src/components/SearchBar.vue b/src/components/SearchBar.vue old mode 100644 new mode 100755 diff --git a/src/components/alerts/ErrorAlert.vue b/src/components/alerts/ErrorAlert.vue old mode 100644 new mode 100755 diff --git a/src/lib/api.ts b/src/lib/api.ts old mode 100644 new mode 100755 index ef6b383..e865c7c --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -19,32 +19,47 @@ const instance = axios.create({ }) export const searchMovies = async (query: string): Promise => { - const response = await instance.get(`/search/multi`, { - params: { - query: query, - include_adult: true, - }, - }) + const [movieSearch, tvSearch] = await Promise.all([ + instance.get(`/search/movie`, { + params: { + query: query, + include_adult: true, + }, + }), + instance.get(`/search/tv`, { + params: { + query: query, + include_adult: true, + }, + }), + ]) - if (response.status !== 200) { + const movieData = movieSearch.data + const tvData = tvSearch.data + + if (movieSearch.status !== 200 || tvSearch.status !== 200) { return { Results: [], Page: 0, totalResults: 0, totalPages: 0, - ErrorMessage: response.data.Error, + ErrorMessage: movieSearch.data.Error || tvSearch.data.Error, } } - const filtered = response.data.results.filter((result: { media_type: string }) => { - return result.media_type === 'movie' || result.media_type === 'tv' + const filteredMovies = movieData.results.map((result: { media_type: string }) => { + return { ...result, media_type: 'movie' } + }) + + const filteredTV = tvData.results.map((result: { media_type: string }) => { + return { ...result, media_type: 'tv' } }) const data: MediaResponseType = { - Results: filtered.map(mapMedia), - Page: response.data.page, - totalResults: response.data.total_results, - totalPages: response.data.total_pages, + Results: [...filteredMovies.map(mapMedia), ...filteredTV.map(mapMedia)], + Page: Math.max(movieData.page, tvData.page), + totalResults: movieData.total_results + tvData.total_results, + totalPages: Math.max(movieData.total_pages, tvData.total_pages), ErrorMessage: '', } diff --git a/src/main.ts b/src/main.ts old mode 100644 new mode 100755 diff --git a/src/router/index.ts b/src/router/index.ts old mode 100644 new mode 100755 diff --git a/src/stores/media.ts b/src/stores/media.ts old mode 100644 new mode 100755 diff --git a/src/style.css b/src/style.css old mode 100644 new mode 100755 diff --git a/src/types/Media.ts b/src/types/Media.ts old mode 100644 new mode 100755 diff --git a/src/types/MediaMap.ts b/src/types/MediaMap.ts old mode 100644 new mode 100755 diff --git a/src/types/Movie.ts b/src/types/Movie.ts old mode 100644 new mode 100755 diff --git a/src/types/MovieMap.ts b/src/types/MovieMap.ts old mode 100644 new mode 100755 diff --git a/src/types/TvSeries.ts b/src/types/TvSeries.ts old mode 100644 new mode 100755 diff --git a/src/types/TvSeriesMap.ts b/src/types/TvSeriesMap.ts old mode 100644 new mode 100755 diff --git a/src/views/AddView.vue b/src/views/AddView.vue old mode 100644 new mode 100755 diff --git a/src/views/DetailsView.vue b/src/views/DetailsView.vue old mode 100644 new mode 100755 diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue old mode 100644 new mode 100755 diff --git a/src/views/ListView.vue b/src/views/ListView.vue old mode 100644 new mode 100755 diff --git a/src/views/NotFoundView.vue b/src/views/NotFoundView.vue old mode 100644 new mode 100755 diff --git a/src/views/WatchView.vue b/src/views/WatchView.vue old mode 100644 new mode 100755 diff --git a/tsconfig.app.json b/tsconfig.app.json old mode 100644 new mode 100755 diff --git a/tsconfig.json b/tsconfig.json old mode 100644 new mode 100755 diff --git a/tsconfig.node.json b/tsconfig.node.json old mode 100644 new mode 100755 diff --git a/vite.config.ts b/vite.config.ts old mode 100644 new mode 100755