use serde::{Deserialize, Serialize};
use crate::identifier::ProductIdentifier;
use super::common::SvhcSubstance;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct MattressData {
pub product_identifier: ProductIdentifier,
pub primary_material: String,
pub country_of_origin: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub co2e_per_unit_kg: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub recycled_content_pct: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub repairability_score: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub svhc_substances: Option<Vec<SvhcSubstance>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub disassembly_instructions_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub end_of_life_instructions: Option<String>,
}
impl crate::product_group::payload::ProductGroupPayload for MattressData {
fn product_identifier(&self) -> Option<&crate::identifier::ProductIdentifier> {
Some(&self.product_identifier)
}
fn model_identifier(&self) -> Option<&str> {
None
}
fn svhc_substances(&self) -> Option<&[crate::product_group::SvhcSubstance]> {
self.svhc_substances.as_deref()
}
fn product_category(&self) -> Option<&str> {
None
}
}