thunderstore_api/models/v1/
package.rs

1////////////////////////////////////////////////////////////////////////////////
2// This Source Code Form is subject to the terms of the Mozilla Public         /
3// License, v. 2.0. If a copy of the MPL was not distributed with this         /
4// file, You can obtain one at https://mozilla.org/MPL/2.0/.                   /
5////////////////////////////////////////////////////////////////////////////////
6
7#[derive(Clone, Debug, PartialEq, Eq, Default, Serialize, Deserialize)]
8pub struct Listing {
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub name: Option<String>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub full_name: Option<String>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub owner: Option<String>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub package_url: Option<String>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub donation_link: Option<String>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub date_created: Option<String>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub date_updated: Option<String>,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub uuid4: Option<String>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub rating_score: Option<String>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub is_pinned: Option<String>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub is_deprecated: Option<String>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub has_nsfw_content: Option<bool>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub categories: Option<String>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub versions: Option<String>,
37}
38
39impl Listing {
40    #[must_use]
41    pub fn new() -> Listing {
42        Listing {
43            name: None,
44            full_name: None,
45            owner: None,
46            package_url: None,
47            donation_link: None,
48            date_created: None,
49            date_updated: None,
50            uuid4: None,
51            rating_score: None,
52            is_pinned: None,
53            is_deprecated: None,
54            has_nsfw_content: None,
55            categories: None,
56            versions: None,
57        }
58    }
59}
60
61#[derive(Clone, Debug, PartialEq, Eq, Default, Serialize, Deserialize)]
62pub struct PackageVersion {
63    pub date_created: String,
64    pub download_count: u32,
65    pub download_url: String,
66    pub install_url: String,
67    pub version_number: String,
68}
69
70impl PackageVersion {
71    #[must_use]
72    pub fn new(
73        date_created: String,
74        download_count: u32,
75        download_url: String,
76        install_url: String,
77        version_number: String,
78    ) -> PackageVersion {
79        PackageVersion {
80            date_created,
81            download_count,
82            download_url,
83            install_url,
84            version_number,
85        }
86    }
87}