j_api/resource/object/
mod.rs1use crate::link::Links;
2use crate::relationship::Relationship;
3use crate::ResourceTrait;
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6use std::collections::HashMap;
7
8#[derive(Clone, Debug, Serialize, Deserialize)]
9pub struct ResourceObject {
10 r#type: String,
11 id: String,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 attributes: Option<HashMap<String, Value>>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 relationships: Option<HashMap<String, Relationship>>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 links: Option<Links>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 meta: Option<String>,
20}
21
22impl ResourceObject {
23 pub fn new(r#type: String, id: String) -> Self {
24 ResourceObject {
25 r#type,
26 id,
27 attributes: None,
28 relationships: None,
29 links: None,
30 meta: None,
31 }
32 }
33
34 pub fn relationships(&mut self, relationships: Option<HashMap<String, Relationship>>) {
35 self.relationships = relationships;
36 }
37
38 pub fn from(resource: impl ResourceTrait) -> ResourceObject {
39 resource.to_resource_object()
40 }
41
42 pub fn add_attributes(&mut self, attributes: Option<HashMap<String, Value>>) {
43 self.attributes = attributes;
44 }
45}