dpp_domain/domain/sector/data/
electronics.rs1use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5
6use crate::domain::sector::enums::EnergyEfficiencyClass;
7use crate::domain::sector::metrics::RepairabilityScore;
8
9use super::shared::{CriticalRawMaterial, SvhcSubstance};
10
11#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
16#[serde(rename_all = "camelCase")]
17pub struct ElectronicsData {
18 pub gtin: String,
20 pub product_category: String,
23 pub energy_efficiency_class: EnergyEfficiencyClass,
25 pub co2e_per_unit_kg: f64,
27
28 #[serde(skip_serializing_if = "Option::is_none")]
31 pub repairability_score: Option<RepairabilityScore>,
32 #[serde(skip_serializing_if = "Option::is_none")]
34 pub spare_parts_available: Option<bool>,
35 #[serde(skip_serializing_if = "Option::is_none")]
37 pub repair_manual_url: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none")]
40 pub disassembly_instructions_url: Option<String>,
41 #[serde(skip_serializing_if = "Option::is_none")]
43 pub svhc_substances: Option<Vec<SvhcSubstance>>,
44 #[serde(skip_serializing_if = "Option::is_none")]
46 pub rohs_compliant: Option<bool>,
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub critical_raw_materials: Option<Vec<CriticalRawMaterial>>,
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub recycled_content_pct: Option<f64>,
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub standby_power_w: Option<f64>,
56 #[serde(skip_serializing_if = "Option::is_none")]
58 pub expected_lifetime_years: Option<u32>,
59 #[serde(skip_serializing_if = "Option::is_none")]
61 pub firmware_update_until: Option<DateTime<Utc>>,
62}