dpp/document/accessors/v0/
mod.rs1use platform_value::btreemap_extensions::{
2 BTreeValueMapInsertionPathHelper, BTreeValueMapPathHelper,
3};
4use platform_value::Value;
5use std::collections::BTreeMap;
6
7use crate::identity::TimestampMillis;
8use crate::prelude::Identifier;
9use crate::prelude::Revision;
10
11pub trait DocumentV0Getters {
12 fn id(&self) -> Identifier;
14
15 fn owner_id(&self) -> Identifier;
17
18 fn properties(&self) -> &BTreeMap<String, Value>;
20
21 fn properties_mut(&mut self) -> &mut BTreeMap<String, Value>;
23
24 fn revision(&self) -> Option<Revision>;
26
27 fn created_at(&self) -> Option<TimestampMillis>;
29
30 fn updated_at(&self) -> Option<TimestampMillis>;
32
33 fn transferred_at(&self) -> Option<TimestampMillis>;
35
36 fn get(&self, path: &str) -> Option<&Value> {
39 self.properties().get_optional_at_path(path).ok().flatten()
40 }
41 fn id_ref(&self) -> &Identifier;
42 fn owner_id_ref(&self) -> &Identifier;
43 fn properties_consumed(self) -> BTreeMap<String, Value>;
44 fn created_at_block_height(&self) -> Option<u64>;
45 fn updated_at_block_height(&self) -> Option<u64>;
46 fn transferred_at_block_height(&self) -> Option<u64>;
47 fn created_at_core_block_height(&self) -> Option<u32>;
48 fn updated_at_core_block_height(&self) -> Option<u32>;
49 fn transferred_at_core_block_height(&self) -> Option<u32>;
50 fn creator_id(&self) -> Option<Identifier>;
51 fn contract_version(&self) -> Option<u32>;
54 fn moderated_at(&self) -> Option<TimestampMillis>;
56 fn moderated_by(&self) -> Option<Identifier>;
58}
59
60pub trait DocumentV0Setters: DocumentV0Getters {
61 fn set_id(&mut self, id: Identifier);
63
64 fn set_owner_id(&mut self, owner_id: Identifier);
66
67 fn set_properties(&mut self, properties: BTreeMap<String, Value>);
69
70 fn set_revision(&mut self, revision: Option<Revision>);
72
73 fn set_created_at(&mut self, created_at: Option<TimestampMillis>);
75
76 fn set_updated_at(&mut self, updated_at: Option<TimestampMillis>);
78
79 fn set(&mut self, path: &str, value: Value) {
83 if !path.is_empty() {
84 self.properties_mut()
85 .insert_at_path(path, value)
86 .expect("path should not be empty, we checked");
87 }
88 }
89
90 fn remove(&mut self, path: &str) -> Option<Value> {
94 self.properties_mut().remove(path)
95 }
96
97 fn set_u8(&mut self, property_name: &str, value: u8) {
99 self.properties_mut()
100 .insert(property_name.to_string(), Value::U8(value));
101 }
102
103 fn set_i8(&mut self, property_name: &str, value: i8) {
105 self.properties_mut()
106 .insert(property_name.to_string(), Value::I8(value));
107 }
108
109 fn set_u16(&mut self, property_name: &str, value: u16) {
111 self.properties_mut()
112 .insert(property_name.to_string(), Value::U16(value));
113 }
114
115 fn set_i16(&mut self, property_name: &str, value: i16) {
117 self.properties_mut()
118 .insert(property_name.to_string(), Value::I16(value));
119 }
120
121 fn set_u32(&mut self, property_name: &str, value: u32) {
123 self.properties_mut()
124 .insert(property_name.to_string(), Value::U32(value));
125 }
126
127 fn set_i32(&mut self, property_name: &str, value: i32) {
129 self.properties_mut()
130 .insert(property_name.to_string(), Value::I32(value));
131 }
132
133 fn set_u64(&mut self, property_name: &str, value: u64) {
135 self.properties_mut()
136 .insert(property_name.to_string(), Value::U64(value));
137 }
138
139 fn set_i64(&mut self, property_name: &str, value: i64) {
141 self.properties_mut()
142 .insert(property_name.to_string(), Value::I64(value));
143 }
144
145 fn set_bytes(&mut self, property_name: &str, value: Vec<u8>) {
147 self.properties_mut()
148 .insert(property_name.to_string(), Value::Bytes(value));
149 }
150 fn set_created_at_block_height(&mut self, created_at_block_height: Option<u64>);
151 fn set_updated_at_block_height(&mut self, updated_at_block_height: Option<u64>);
152 fn set_created_at_core_block_height(&mut self, created_at_core_block_height: Option<u32>);
153 fn set_updated_at_core_block_height(&mut self, updated_at_core_block_height: Option<u32>);
154 fn set_transferred_at_core_block_height(
155 &mut self,
156 transferred_at_core_block_height: Option<u32>,
157 );
158 fn set_transferred_at_block_height(&mut self, transferred_at_block_height: Option<u64>);
159 fn set_transferred_at(&mut self, transferred_at: Option<TimestampMillis>);
160 fn bump_revision(&mut self);
161 fn set_creator_id(&mut self, creator_id: Option<Identifier>);
168 fn set_contract_version(&mut self, contract_version: Option<u32>);
171 fn set_moderated_at(&mut self, moderated_at: Option<TimestampMillis>);
173 fn set_moderated_by(&mut self, moderated_by: Option<Identifier>);
175}