1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct ReleaseResource {
16 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
17 pub id: Option<i32>,
18 #[serde(rename = "guid", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
19 pub guid: Option<Option<String>>,
20 #[serde(rename = "quality", skip_serializing_if = "Option::is_none")]
21 pub quality: Option<Box<models::QualityModel>>,
22 #[serde(rename = "qualityWeight", skip_serializing_if = "Option::is_none")]
23 pub quality_weight: Option<i32>,
24 #[serde(rename = "age", skip_serializing_if = "Option::is_none")]
25 pub age: Option<i32>,
26 #[serde(rename = "ageHours", skip_serializing_if = "Option::is_none")]
27 pub age_hours: Option<f64>,
28 #[serde(rename = "ageMinutes", skip_serializing_if = "Option::is_none")]
29 pub age_minutes: Option<f64>,
30 #[serde(rename = "size", skip_serializing_if = "Option::is_none")]
31 pub size: Option<i64>,
32 #[serde(rename = "indexerId", skip_serializing_if = "Option::is_none")]
33 pub indexer_id: Option<i32>,
34 #[serde(rename = "indexer", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
35 pub indexer: Option<Option<String>>,
36 #[serde(rename = "releaseGroup", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
37 pub release_group: Option<Option<String>>,
38 #[serde(rename = "subGroup", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
39 pub sub_group: Option<Option<String>>,
40 #[serde(rename = "releaseHash", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
41 pub release_hash: Option<Option<String>>,
42 #[serde(rename = "title", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
43 pub title: Option<Option<String>>,
44 #[serde(rename = "fullSeason", skip_serializing_if = "Option::is_none")]
45 pub full_season: Option<bool>,
46 #[serde(rename = "sceneSource", skip_serializing_if = "Option::is_none")]
47 pub scene_source: Option<bool>,
48 #[serde(rename = "seasonNumber", skip_serializing_if = "Option::is_none")]
49 pub season_number: Option<i32>,
50 #[serde(rename = "languages", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
51 pub languages: Option<Option<Vec<models::Language>>>,
52 #[serde(rename = "languageWeight", skip_serializing_if = "Option::is_none")]
53 pub language_weight: Option<i32>,
54 #[serde(rename = "airDate", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
55 pub air_date: Option<Option<String>>,
56 #[serde(rename = "seriesTitle", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
57 pub series_title: Option<Option<String>>,
58 #[serde(rename = "episodeNumbers", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
59 pub episode_numbers: Option<Option<Vec<i32>>>,
60 #[serde(rename = "absoluteEpisodeNumbers", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
61 pub absolute_episode_numbers: Option<Option<Vec<i32>>>,
62 #[serde(rename = "mappedSeasonNumber", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
63 pub mapped_season_number: Option<Option<i32>>,
64 #[serde(rename = "mappedEpisodeNumbers", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
65 pub mapped_episode_numbers: Option<Option<Vec<i32>>>,
66 #[serde(rename = "mappedAbsoluteEpisodeNumbers", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
67 pub mapped_absolute_episode_numbers: Option<Option<Vec<i32>>>,
68 #[serde(rename = "mappedSeriesId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
69 pub mapped_series_id: Option<Option<i32>>,
70 #[serde(rename = "mappedEpisodeInfo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
71 pub mapped_episode_info: Option<Option<Vec<models::ReleaseEpisodeResource>>>,
72 #[serde(rename = "approved", skip_serializing_if = "Option::is_none")]
73 pub approved: Option<bool>,
74 #[serde(rename = "temporarilyRejected", skip_serializing_if = "Option::is_none")]
75 pub temporarily_rejected: Option<bool>,
76 #[serde(rename = "rejected", skip_serializing_if = "Option::is_none")]
77 pub rejected: Option<bool>,
78 #[serde(rename = "tvdbId", skip_serializing_if = "Option::is_none")]
79 pub tvdb_id: Option<i32>,
80 #[serde(rename = "tvRageId", skip_serializing_if = "Option::is_none")]
81 pub tv_rage_id: Option<i32>,
82 #[serde(rename = "rejections", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
83 pub rejections: Option<Option<Vec<String>>>,
84 #[serde(rename = "publishDate", skip_serializing_if = "Option::is_none")]
85 pub publish_date: Option<String>,
86 #[serde(rename = "commentUrl", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
87 pub comment_url: Option<Option<String>>,
88 #[serde(rename = "downloadUrl", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
89 pub download_url: Option<Option<String>>,
90 #[serde(rename = "infoUrl", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
91 pub info_url: Option<Option<String>>,
92 #[serde(rename = "episodeRequested", skip_serializing_if = "Option::is_none")]
93 pub episode_requested: Option<bool>,
94 #[serde(rename = "downloadAllowed", skip_serializing_if = "Option::is_none")]
95 pub download_allowed: Option<bool>,
96 #[serde(rename = "releaseWeight", skip_serializing_if = "Option::is_none")]
97 pub release_weight: Option<i32>,
98 #[serde(rename = "customFormats", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
99 pub custom_formats: Option<Option<Vec<models::CustomFormatResource>>>,
100 #[serde(rename = "customFormatScore", skip_serializing_if = "Option::is_none")]
101 pub custom_format_score: Option<i32>,
102 #[serde(rename = "sceneMapping", skip_serializing_if = "Option::is_none")]
103 pub scene_mapping: Option<Box<models::AlternateTitleResource>>,
104 #[serde(rename = "magnetUrl", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
105 pub magnet_url: Option<Option<String>>,
106 #[serde(rename = "infoHash", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
107 pub info_hash: Option<Option<String>>,
108 #[serde(rename = "seeders", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
109 pub seeders: Option<Option<i32>>,
110 #[serde(rename = "leechers", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
111 pub leechers: Option<Option<i32>>,
112 #[serde(rename = "protocol", skip_serializing_if = "Option::is_none")]
113 pub protocol: Option<models::DownloadProtocol>,
114 #[serde(rename = "indexerFlags", skip_serializing_if = "Option::is_none")]
115 pub indexer_flags: Option<i32>,
116 #[serde(rename = "isDaily", skip_serializing_if = "Option::is_none")]
117 pub is_daily: Option<bool>,
118 #[serde(rename = "isAbsoluteNumbering", skip_serializing_if = "Option::is_none")]
119 pub is_absolute_numbering: Option<bool>,
120 #[serde(rename = "isPossibleSpecialEpisode", skip_serializing_if = "Option::is_none")]
121 pub is_possible_special_episode: Option<bool>,
122 #[serde(rename = "special", skip_serializing_if = "Option::is_none")]
123 pub special: Option<bool>,
124 #[serde(rename = "seriesId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
125 pub series_id: Option<Option<i32>>,
126 #[serde(rename = "episodeId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
127 pub episode_id: Option<Option<i32>>,
128 #[serde(rename = "episodeIds", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
129 pub episode_ids: Option<Option<Vec<i32>>>,
130 #[serde(rename = "downloadClientId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
131 pub download_client_id: Option<Option<i32>>,
132 #[serde(rename = "downloadClient", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
133 pub download_client: Option<Option<String>>,
134 #[serde(rename = "shouldOverride", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
135 pub should_override: Option<Option<bool>>,
136}
137
138impl ReleaseResource {
139 pub fn new() -> ReleaseResource {
140 ReleaseResource {
141 id: None,
142 guid: None,
143 quality: None,
144 quality_weight: None,
145 age: None,
146 age_hours: None,
147 age_minutes: None,
148 size: None,
149 indexer_id: None,
150 indexer: None,
151 release_group: None,
152 sub_group: None,
153 release_hash: None,
154 title: None,
155 full_season: None,
156 scene_source: None,
157 season_number: None,
158 languages: None,
159 language_weight: None,
160 air_date: None,
161 series_title: None,
162 episode_numbers: None,
163 absolute_episode_numbers: None,
164 mapped_season_number: None,
165 mapped_episode_numbers: None,
166 mapped_absolute_episode_numbers: None,
167 mapped_series_id: None,
168 mapped_episode_info: None,
169 approved: None,
170 temporarily_rejected: None,
171 rejected: None,
172 tvdb_id: None,
173 tv_rage_id: None,
174 rejections: None,
175 publish_date: None,
176 comment_url: None,
177 download_url: None,
178 info_url: None,
179 episode_requested: None,
180 download_allowed: None,
181 release_weight: None,
182 custom_formats: None,
183 custom_format_score: None,
184 scene_mapping: None,
185 magnet_url: None,
186 info_hash: None,
187 seeders: None,
188 leechers: None,
189 protocol: None,
190 indexer_flags: None,
191 is_daily: None,
192 is_absolute_numbering: None,
193 is_possible_special_episode: None,
194 special: None,
195 series_id: None,
196 episode_id: None,
197 episode_ids: None,
198 download_client_id: None,
199 download_client: None,
200 should_override: None,
201 }
202 }
203}
204