ledger_models/fintekkers/wrappers/models/
raw_datamodel_object.rs1use crate::fintekkers::wrappers::models::utils::uuid_wrapper::UUIDWrapper;
2use crate::fintekkers::wrappers::models::utils::datetime::LocalTimestampWrapper;
3
4pub trait RawDataModelObject {
5 fn get_id(&self) -> UUIDWrapper;
6 fn get_valid_from(&self) -> LocalTimestampWrapper;
7 fn get_valid_to(&self) -> Option<LocalTimestampWrapper>;
8 fn get_as_of(&self) -> LocalTimestampWrapper;
9 fn encode(&self) -> Vec<u8>;
10}
11
12#[macro_export] macro_rules! raw_data_model_object_trait {
13 ($struct_type:ty) => {
14 impl RawDataModelObject for $struct_type {
15 fn get_id(&self) -> UUIDWrapper {
16 UUIDWrapper::new(self.proto.uuid.as_ref().unwrap().clone())
17 }
18
19 fn get_valid_from(&self) -> LocalTimestampWrapper{
20 LocalTimestampWrapper::now()
21 }
22
23 fn get_valid_to(&self) -> Option<LocalTimestampWrapper> {
24 Some(LocalTimestampWrapper::now())
25 }
26
27 fn get_as_of(&self) -> LocalTimestampWrapper {
28 LocalTimestampWrapper::new(self.proto.as_of.as_ref().unwrap().clone())
29 }
30
31 fn encode(&self) -> Vec<u8> {
32 let mut buf = Vec::new();
33 let _ = &self.proto.encode(&mut buf).unwrap();
34 buf
35 }
36 }
37 }
38}
39
40