powerplatform_dataverse_service_client/
reference.rs

1use std::fmt::Display;
2
3use serde::{Deserialize, Serialize};
4use uuid::Uuid;
5
6/**
7trait for getting a reference to an entity record from a struct
8*/
9pub trait Reference {
10    /// creates a Reference structure for association purposes in Microsoft Dataverse
11    fn get_reference(&self) -> ReferenceStruct;
12}
13
14/**
15default implementation for the `Reference` trait
16*/
17#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
18pub struct ReferenceStruct {
19    pub entity_name: &'static str,
20    pub entity_id: Uuid,
21}
22
23impl ReferenceStruct {
24    /// creates a new Reference struct
25    pub fn new(entity_name: &'static str, entity_id: Uuid) -> Self {
26        Self {
27            entity_name,
28            entity_id,
29        }
30    }
31}
32
33impl Display for ReferenceStruct {
34    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
35        f.write_fmt(format_args!(
36            "{}:({})",
37            self.entity_name,
38            self.entity_id.as_simple()
39        ))
40    }
41}
42
43impl Reference for ReferenceStruct {
44    fn get_reference(&self) -> ReferenceStruct {
45        *self
46    }
47}