use super::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegistryDto {
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub registry_type: Option<String>, pub registry_hostname: String,
pub namespace: String,
}
impl From<RegistryDto> for Registry {
fn from(value: RegistryDto) -> Self {
Self {
registry_type: value.registry_type,
registry_hostname: value.registry_hostname,
namespace: value.namespace,
}
}
}
impl From<Registry> for RegistryDto {
fn from(value: Registry) -> Self {
Self {
registry_type: value.registry_type,
registry_hostname: value.registry_hostname,
namespace: value.namespace,
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PkgMetaDto {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub authors: Vec<Author>,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub documentation: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub license: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub repository: Option<String>,
}
impl From<PkgMetaDto> for PkgMeta {
fn from(value: PkgMetaDto) -> Self {
Self {
authors: value.authors,
description: value.description,
documentation: value.documentation,
license: value.license,
repository: value.repository,
}
}
}
impl From<PkgMeta> for PkgMetaDto {
fn from(value: PkgMeta) -> Self {
Self {
authors: value.authors,
description: value.description,
documentation: value.documentation,
license: value.license,
repository: value.repository,
}
}
}
impl PkgMetaDto {
pub fn is_empty(&self) -> bool {
self.authors.is_empty()
&& self.description.is_none()
&& self.documentation.is_none()
&& self.license.is_none()
&& self.repository.is_none()
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WasmPkgDto {
pub name: String,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub app_name: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub app_module: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub capabilities: Option<Capabilities>,
pub pkg_type: PkgType,
#[serde(default)]
#[serde(skip_serializing_if = "PkgMetaDto::is_empty")]
pub meta: PkgMetaDto,
pub source: Source,
}
impl From<WasmPkgDto> for WasmPkg {
fn from(value: WasmPkgDto) -> Self {
Self {
name: value.name,
app_name: value.app_name,
app_module: value.app_module,
capabilities: value.capabilities,
pkg_type: value.pkg_type,
meta: value.meta.into(),
source: value.source,
}
}
}
impl From<WasmPkg> for WasmPkgDto {
fn from(value: WasmPkg) -> Self {
Self {
name: value.name,
app_name: value.app_name,
app_module: value.app_module,
capabilities: value.capabilities,
pkg_type: value.pkg_type,
meta: value.meta.into(),
source: value.source,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WasmPkgNoSourceDto {
pub name: String,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub app_name: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub app_module: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "Option::is_none")]
pub capabilities: Option<Capabilities>,
pub pkg_type: PkgType,
#[serde(default)]
#[serde(skip_serializing_if = "PkgMetaDto::is_empty")]
pub meta: PkgMetaDto,
}
impl From<WasmPkgNoSourceDto> for WasmPkgNoSource {
fn from(value: WasmPkgNoSourceDto) -> Self {
Self {
name: value.name,
app_name: value.app_name,
app_module: value.app_module,
capabilities: value.capabilities,
pkg_type: value.pkg_type,
meta: value.meta.into(),
}
}
}
impl From<WasmPkgNoSource> for WasmPkgNoSourceDto {
fn from(value: WasmPkgNoSource) -> Self {
Self {
name: value.name,
app_name: value.app_name,
app_module: value.app_module,
capabilities: value.capabilities,
pkg_type: value.pkg_type,
meta: value.meta.into(),
}
}
}