crdb_test_utils/
object_simple.rs1use crate::{ulid, USER_ID_NULL};
2use crdb_core::{BinPtr, CanDoCallbacks, DbPtr, Event, Object, ObjectId, TypeId, User};
3use std::collections::HashSet;
4
5#[derive(
6 Clone,
7 Debug,
8 Eq,
9 Ord,
10 PartialEq,
11 PartialOrd,
12 arbitrary::Arbitrary,
13 deepsize::DeepSizeOf,
14 serde::Deserialize,
15 serde::Serialize,
16)]
17pub struct TestObjectSimple(pub Vec<u8>);
18
19#[derive(
20 Clone,
21 Debug,
22 Eq,
23 PartialEq,
24 arbitrary::Arbitrary,
25 deepsize::DeepSizeOf,
26 serde::Deserialize,
27 serde::Serialize,
28)]
29pub enum TestEventSimple {
30 Set(Vec<u8>),
31 Append(Vec<u8>),
32 Clear,
33}
34
35impl TestObjectSimple {
36 pub fn new(v: Vec<u8>) -> TestObjectSimple {
37 TestObjectSimple(v)
38 }
39 pub fn standardize(&mut self, _self_id: ObjectId) {}
40 pub fn stub_1() -> TestObjectSimple {
41 TestObjectSimple(b"10000001".to_vec())
42 }
43 pub fn stub_2() -> TestObjectSimple {
44 TestObjectSimple(b"10000001".to_vec())
45 }
46 pub fn stub_3() -> TestObjectSimple {
47 TestObjectSimple(b"10000001".to_vec())
48 }
49 pub fn stub_4() -> TestObjectSimple {
50 TestObjectSimple(b"10000001".to_vec())
51 }
52 pub fn stub_5() -> TestObjectSimple {
53 TestObjectSimple(b"10000001".to_vec())
54 }
55}
56
57impl Object for TestObjectSimple {
58 type Event = TestEventSimple;
59
60 fn type_ulid() -> &'static TypeId {
61 static TYPE: TypeId = TypeId(ulid("01HKK9WR2HJ8XW3Z8ZD4BGEZV5"));
62 &TYPE
63 }
64
65 async fn can_create<'a, C: CanDoCallbacks>(
66 &'a self,
67 _user: User,
68 _self_id: ObjectId,
69 _db: &'a C,
70 ) -> crate::Result<bool> {
71 unimplemented!()
72 }
73
74 async fn can_apply<'a, C: CanDoCallbacks>(
75 &'a self,
76 _user: User,
77 _self_id: ObjectId,
78 _event: &'a Self::Event,
79 _db: &'a C,
80 ) -> crate::Result<bool> {
81 unimplemented!()
82 }
83
84 async fn users_who_can_read<'a, C: CanDoCallbacks>(
85 &'a self,
86 _db: &'a C,
87 ) -> crate::Result<HashSet<User>> {
88 Ok([USER_ID_NULL].into_iter().collect())
89 }
90
91 fn apply(&mut self, _self_id: DbPtr<Self>, event: &Self::Event) {
92 match event {
93 TestEventSimple::Set(v) => self.0.clone_from(v),
94 TestEventSimple::Append(v) => self.0.extend(v.iter().cloned()),
95 TestEventSimple::Clear => self.0.clear(),
96 }
97 }
98
99 fn required_binaries(&self) -> Vec<BinPtr> {
100 Vec::new()
101 }
102}
103
104impl Event for TestEventSimple {
105 fn required_binaries(&self) -> Vec<BinPtr> {
106 Vec::new()
107 }
108}