crdb_test_utils/
object_simple.rs

1use 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}