powerplatform_dataverse_service_client/
action.rs1use serde::{Serialize, ser::SerializeMap};
2use uuid::Uuid;
3
4#[derive(Debug, Serialize)]
6pub struct MergeRequest<'a> {
7 #[serde(rename = "Target")]
8 pub target: EntityReference<'a>,
9 #[serde(rename = "Subordinate")]
10 pub subordinate: EntityReference<'a>,
11 #[serde(rename = "PerformParentingChecks")]
12 pub check_parents: bool,
13}
14
15impl<'a> MergeRequest<'a> {
16 pub fn new(entity_name: &'a str, target: Uuid, subordinate: Uuid, check_parents: bool) -> Self {
17 Self {
18 target: EntityReference {
19 entity_name,
20 entity_id: target,
21 },
22 subordinate: EntityReference {
23 entity_name,
24 entity_id: subordinate,
25 },
26 check_parents
27 }
28 }
29}
30
31#[derive(Debug)]
32pub struct EntityReference<'a> {
33 pub entity_name: &'a str,
34 pub entity_id: Uuid,
35}
36
37impl<'a> Serialize for EntityReference<'a> {
38 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
39 where S: serde::Serializer {
40 let mut map = serializer.serialize_map(Some(2))?;
41 map.serialize_entry("@odata.type", &format!("Microsoft.Dynamics.CRM.{}", self.entity_name))?;
42 map.serialize_entry(&format!("{}id", self.entity_id), self.entity_id.as_hyphenated())?;
43 map.end()
44 }
45}