use serde::{Deserialize, Serialize};
#[allow(unused_imports)]
use super::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SoftwarePackage {
pub display_name: String,
pub name: String,
#[serde(rename = "type")]
pub r#type: String,
pub version: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub architecture: Option<SoftwarePackageArchitecture>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_modified_date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub checksum: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub checksum_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub size_in_bytes: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dependencies: Option<Vec<SoftwarePackageDependency>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub files: Option<Vec<SoftwarePackageFile>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub software_sources: Option<Vec<SoftwareSourceDetails>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_latest: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub os_families: Option<Vec<OsFamily>>,
}
pub struct SoftwarePackageRequired {
pub display_name: String,
pub name: String,
pub r#type: String,
pub version: String,
}
impl SoftwarePackage {
pub fn new(required: SoftwarePackageRequired) -> Self {
Self {
display_name: required.display_name,
name: required.name,
r#type: required.r#type,
version: required.version,
architecture: None,
last_modified_date: None,
checksum: None,
checksum_type: None,
description: None,
size_in_bytes: None,
dependencies: None,
files: None,
software_sources: None,
is_latest: None,
os_families: None,
}
}
pub fn set_display_name(mut self, value: String) -> Self {
self.display_name = value;
self
}
pub fn set_name(mut self, value: String) -> Self {
self.name = value;
self
}
pub fn set_type(mut self, value: String) -> Self {
self.r#type = value;
self
}
pub fn set_version(mut self, value: String) -> Self {
self.version = value;
self
}
pub fn set_architecture(mut self, value: Option<SoftwarePackageArchitecture>) -> Self {
self.architecture = value;
self
}
pub fn set_last_modified_date(mut self, value: Option<String>) -> Self {
self.last_modified_date = value;
self
}
pub fn set_checksum(mut self, value: Option<String>) -> Self {
self.checksum = value;
self
}
pub fn set_checksum_type(mut self, value: Option<String>) -> Self {
self.checksum_type = value;
self
}
pub fn set_description(mut self, value: Option<String>) -> Self {
self.description = value;
self
}
pub fn set_size_in_bytes(mut self, value: Option<i64>) -> Self {
self.size_in_bytes = value;
self
}
pub fn set_dependencies(mut self, value: Option<Vec<SoftwarePackageDependency>>) -> Self {
self.dependencies = value;
self
}
pub fn set_files(mut self, value: Option<Vec<SoftwarePackageFile>>) -> Self {
self.files = value;
self
}
pub fn set_software_sources(mut self, value: Option<Vec<SoftwareSourceDetails>>) -> Self {
self.software_sources = value;
self
}
pub fn set_is_latest(mut self, value: Option<bool>) -> Self {
self.is_latest = value;
self
}
pub fn set_os_families(mut self, value: Option<Vec<OsFamily>>) -> Self {
self.os_families = value;
self
}
pub fn with_architecture(mut self, value: SoftwarePackageArchitecture) -> Self {
self.architecture = Some(value);
self
}
pub fn with_last_modified_date(mut self, value: impl Into<String>) -> Self {
self.last_modified_date = Some(value.into());
self
}
pub fn with_checksum(mut self, value: impl Into<String>) -> Self {
self.checksum = Some(value.into());
self
}
pub fn with_checksum_type(mut self, value: impl Into<String>) -> Self {
self.checksum_type = Some(value.into());
self
}
pub fn with_description(mut self, value: impl Into<String>) -> Self {
self.description = Some(value.into());
self
}
pub fn with_size_in_bytes(mut self, value: i64) -> Self {
self.size_in_bytes = Some(value);
self
}
pub fn with_dependencies(mut self, value: Vec<SoftwarePackageDependency>) -> Self {
self.dependencies = Some(value);
self
}
pub fn with_files(mut self, value: Vec<SoftwarePackageFile>) -> Self {
self.files = Some(value);
self
}
pub fn with_software_sources(mut self, value: Vec<SoftwareSourceDetails>) -> Self {
self.software_sources = Some(value);
self
}
pub fn with_is_latest(mut self, value: bool) -> Self {
self.is_latest = Some(value);
self
}
pub fn with_os_families(mut self, value: Vec<OsFamily>) -> Self {
self.os_families = Some(value);
self
}
}