use serde::{Deserialize, Serialize};
pub const MIN_SCORE: u8 = 1;
pub const MAX_SCORE: u8 = 5;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct PriorityPartScores {
pub battery: u8,
pub display_assembly: u8,
pub back_cover: u8,
pub front_camera: u8,
pub rear_camera: u8,
pub charging_port: u8,
pub mechanical_button: u8,
pub microphone: u8,
pub speaker: u8,
pub folding_mechanism: Option<u8>,
}
impl PriorityPartScores {
#[must_use]
pub fn is_foldable(&self) -> bool {
self.folding_mechanism.is_some()
}
pub(crate) fn each(&self) -> [u8; 9] {
[
self.battery,
self.display_assembly,
self.back_cover,
self.front_camera,
self.rear_camera,
self.charging_port,
self.mechanical_button,
self.microphone,
self.speaker,
]
}
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct RepairabilityIndexInputs {
pub disassembly_depth: PriorityPartScores,
pub fasteners: PriorityPartScores,
pub tools: PriorityPartScores,
pub spare_parts: u8,
pub software_updates: u8,
pub repair_information: u8,
}