tmdb_rs/endpoints/
search.rs1use serde::Deserialize;
2
3use crate::endpoints::collection::CollectionShort;
4use crate::endpoints::company::CompanyShort;
5use crate::endpoints::keyword::Keyword;
6use crate::endpoints::movie::MovieShort;
7use crate::endpoints::person::PersonShort;
8use crate::endpoints::tv::TvShort;
9use crate::{CountryCode, Language, Page};
10
11#[derive(Debug, Clone, Deserialize)]
13#[serde(tag = "media_type", rename_all = "snake_case")]
14pub enum MultiResult {
15 Movie(MovieShort),
16 Tv(TvShort),
17 Person(PersonShort),
18}
19
20endpoint! {
21 search_movies(query: &str): GET "/search/movie" => Page<MovieShort> {
23 params {
24 language: Language,
25 page: u32,
26 include_adult: bool,
27 region: CountryCode,
28 year: u32,
29 primary_release_year: u32,
30 }
31 }
32}
33
34endpoint! {
35 search_tv(query: &str): GET "/search/tv" => Page<TvShort> {
37 params {
38 language: Language,
39 page: u32,
40 include_adult: bool,
41 year: u32,
42 first_air_date_year: u32,
43 }
44 }
45}
46
47endpoint! {
48 search(query: &str): GET "/search/multi" => Page<MultiResult> {
50 params { language: Language, page: u32, include_adult: bool }
51 }
52}
53
54endpoint! {
55 search_people(query: &str): GET "/search/person" => Page<PersonShort> {
57 params { language: Language, page: u32, include_adult: bool }
58 }
59}
60
61endpoint! {
62 search_collections(query: &str): GET "/search/collection" => Page<CollectionShort> {
64 params { language: Language, page: u32, include_adult: bool }
65 }
66}
67
68endpoint! {
69 search_keywords(query: &str): GET "/search/keyword" => Page<Keyword> {
71 params { page: u32 }
72 }
73}
74
75endpoint! {
76 search_companies(query: &str): GET "/search/company" => Page<CompanyShort> {
78 params { page: u32 }
79 }
80}