use crate::error::TwinHError; use bincode::deserialize; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use sled::IVec; pub struct Entity { pub umrn: u64, pub model: M, } impl Entity { pub fn new(t: (IVec, IVec)) -> Result { let (umrn, model) = t; let umrn = deserialize(&umrn)?; let model = deserialize(&model)?; Ok(Entity { umrn, model }) } } #[derive(Serialize, Deserialize)] pub struct Part { pub key: u64, pub number: String, pub name: String, pub sources: Vec, pub categories: Vec, pub fits_cars: Vec, } #[derive(Serialize, Deserialize)] pub struct Car { pub doors: u8, //pub engine: Engine, pub make: String, pub model: String, //pub transmission: Transmission, pub trim: String, pub year: u16, } #[derive(Serialize, Deserialize)] pub enum Source { Web(String), } #[derive(Serialize, Deserialize)] pub struct Engine { cylinders: u8, displacement: u16, layout: Layout, } #[derive(Serialize, Deserialize)] pub enum Layout { I, V, } #[derive(Serialize, Deserialize)] pub struct Transmission(String); #[derive(Serialize, Deserialize)] pub struct Category(String);