Skip to main content

provenant/output_schema/
license_rule_reference.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug, Clone)]
4pub struct OutputLicenseRuleReference {
5    pub identifier: String,
6    pub license_expression: String,
7    pub is_license_text: bool,
8    pub is_license_notice: bool,
9    pub is_license_reference: bool,
10    pub is_license_tag: bool,
11    pub is_license_clue: bool,
12    pub is_license_intro: bool,
13    #[serde(default, skip_serializing_if = "Option::is_none")]
14    pub language: Option<String>,
15    #[serde(default, skip_serializing_if = "Option::is_none")]
16    pub rule_url: Option<String>,
17    #[serde(default)]
18    pub is_required_phrase: bool,
19    #[serde(default)]
20    pub skip_for_required_phrase_generation: bool,
21    #[serde(default, skip_serializing_if = "Vec::is_empty")]
22    pub replaced_by: Vec<String>,
23    #[serde(default)]
24    pub is_continuous: bool,
25    #[serde(default)]
26    pub is_synthetic: bool,
27    #[serde(default)]
28    pub is_from_license: bool,
29    #[serde(default)]
30    pub length: usize,
31    #[serde(default, skip_serializing_if = "Option::is_none")]
32    pub relevance: Option<u8>,
33    #[serde(default, skip_serializing_if = "Option::is_none")]
34    pub minimum_coverage: Option<u8>,
35    #[serde(default, skip_serializing_if = "Vec::is_empty")]
36    pub referenced_filenames: Vec<String>,
37    #[serde(default, skip_serializing_if = "Option::is_none")]
38    pub notes: Option<String>,
39    #[serde(default, skip_serializing_if = "Vec::is_empty")]
40    pub ignorable_copyrights: Vec<String>,
41    #[serde(default, skip_serializing_if = "Vec::is_empty")]
42    pub ignorable_holders: Vec<String>,
43    #[serde(default, skip_serializing_if = "Vec::is_empty")]
44    pub ignorable_authors: Vec<String>,
45    #[serde(default, skip_serializing_if = "Vec::is_empty")]
46    pub ignorable_urls: Vec<String>,
47    #[serde(default, skip_serializing_if = "Vec::is_empty")]
48    pub ignorable_emails: Vec<String>,
49    #[serde(default, skip_serializing_if = "Option::is_none")]
50    pub text: Option<String>,
51}
52
53impl From<&crate::models::LicenseRuleReference> for OutputLicenseRuleReference {
54    fn from(value: &crate::models::LicenseRuleReference) -> Self {
55        Self {
56            identifier: value.identifier.clone(),
57            license_expression: value.license_expression.clone(),
58            is_license_text: value.is_license_text,
59            is_license_notice: value.is_license_notice,
60            is_license_reference: value.is_license_reference,
61            is_license_tag: value.is_license_tag,
62            is_license_clue: value.is_license_clue,
63            is_license_intro: value.is_license_intro,
64            language: value.language.clone(),
65            rule_url: value.rule_url.clone(),
66            is_required_phrase: value.is_required_phrase,
67            skip_for_required_phrase_generation: value.skip_for_required_phrase_generation,
68            replaced_by: value.replaced_by.clone(),
69            is_continuous: value.is_continuous,
70            is_synthetic: value.is_synthetic,
71            is_from_license: value.is_from_license,
72            length: value.length,
73            relevance: value.relevance,
74            minimum_coverage: value.minimum_coverage,
75            referenced_filenames: value.referenced_filenames.clone(),
76            notes: value.notes.clone(),
77            ignorable_copyrights: value.ignorable_copyrights.clone(),
78            ignorable_holders: value.ignorable_holders.clone(),
79            ignorable_authors: value.ignorable_authors.clone(),
80            ignorable_urls: value.ignorable_urls.clone(),
81            ignorable_emails: value.ignorable_emails.clone(),
82            text: value.text.clone(),
83        }
84    }
85}
86
87impl TryFrom<&OutputLicenseRuleReference> for crate::models::LicenseRuleReference {
88    type Error = String;
89    fn try_from(value: &OutputLicenseRuleReference) -> Result<Self, Self::Error> {
90        Ok(Self {
91            identifier: value.identifier.clone(),
92            license_expression: value.license_expression.clone(),
93            is_license_text: value.is_license_text,
94            is_license_notice: value.is_license_notice,
95            is_license_reference: value.is_license_reference,
96            is_license_tag: value.is_license_tag,
97            is_license_clue: value.is_license_clue,
98            is_license_intro: value.is_license_intro,
99            language: value.language.clone(),
100            rule_url: value.rule_url.clone(),
101            is_required_phrase: value.is_required_phrase,
102            skip_for_required_phrase_generation: value.skip_for_required_phrase_generation,
103            replaced_by: value.replaced_by.clone(),
104            is_continuous: value.is_continuous,
105            is_synthetic: value.is_synthetic,
106            is_from_license: value.is_from_license,
107            length: value.length,
108            relevance: value.relevance,
109            minimum_coverage: value.minimum_coverage,
110            referenced_filenames: value.referenced_filenames.clone(),
111            notes: value.notes.clone(),
112            ignorable_copyrights: value.ignorable_copyrights.clone(),
113            ignorable_holders: value.ignorable_holders.clone(),
114            ignorable_authors: value.ignorable_authors.clone(),
115            ignorable_urls: value.ignorable_urls.clone(),
116            ignorable_emails: value.ignorable_emails.clone(),
117            text: value.text.clone(),
118        })
119    }
120}