1use snafu::Snafu;
2
3#[derive(Debug, Snafu)]
6#[snafu(whatever, display("{message}"))]
7pub struct Error {
8 #[snafu(source(from(Box<dyn std::error::Error + Send + Sync>, Some)))]
9 source: Option<Box<dyn std::error::Error + Send + Sync>>,
10 message: String,
11}
12
13#[derive(Clone, Copy, PartialEq, Eq, Debug, Snafu)]
15#[snafu(module)]
16pub enum Delete {
17 #[snafu(display("target node does not exist"))]
19 NoNode,
20
21 #[snafu(display("target node has different version than expected ({expected})"))]
23 BadVersion {
24 expected: i32,
26 },
27
28 #[snafu(display("target node has children, and cannot be deleted"))]
30 NotEmpty,
31}
32
33#[derive(Clone, Copy, PartialEq, Eq, Debug, Snafu)]
35#[snafu(module)]
36pub enum SetData {
37 #[snafu(display("target node does not exist"))]
39 NoNode,
40
41 #[snafu(display("target node has different version than expected ({expected})"))]
43 BadVersion {
44 expected: i32,
46 },
47
48 #[snafu(display("insuficient authentication"))]
51 NoAuth,
52}
53
54#[derive(Clone, Copy, PartialEq, Eq, Debug, Snafu)]
56#[snafu(module)]
57pub enum Create {
58 #[snafu(display("target node already exists"))]
60 NodeExists,
61
62 #[snafu(display("parent node of target does not exist"))]
64 NoNode,
65
66 #[snafu(display("parent node is ephemeral, and cannot have children"))]
68 NoChildrenForEphemerals,
69
70 #[snafu(display("the given ACL is invalid"))]
72 InvalidAcl,
73}
74
75#[derive(Clone, Copy, PartialEq, Eq, Debug, Snafu)]
77#[snafu(module)]
78pub enum GetAcl {
79 #[snafu(display("target node does not exist"))]
81 NoNode,
82}
83
84#[derive(Clone, Copy, PartialEq, Eq, Debug, Snafu)]
86#[snafu(module)]
87pub enum SetAcl {
88 #[snafu(display("target node does not exist"))]
90 NoNode,
91
92 #[snafu(display("target node has different version than expected ({expected})"))]
94 BadVersion {
95 expected: i32,
97 },
98
99 #[snafu(display("the given ACL is invalid"))]
101 InvalidAcl,
102
103 #[snafu(display("insufficient authentication"))]
106 NoAuth,
107}
108
109#[derive(Clone, Copy, PartialEq, Eq, Debug, Snafu)]
111#[snafu(module)]
112pub enum Check {
113 #[snafu(display("target node does not exist"))]
115 NoNode,
116
117 #[snafu(display("target node has different version than expected ({expected})"))]
119 BadVersion {
120 expected: i32,
122 },
123}
124
125#[derive(Clone, Copy, PartialEq, Eq, Debug, Snafu)]
127pub enum Multi {
128 #[snafu(display("delete failed"), context(false))]
130 Delete {
131 source: Delete,
133 },
134
135 #[snafu(display("set_data failed"), context(false))]
137 SetData {
138 source: SetData,
140 },
141
142 #[snafu(display("create failed"), context(false))]
144 Create {
145 source: Create,
147 },
148
149 #[snafu(display("check failed"), context(false))]
151 Check {
152 source: Check,
154 },
155
156 #[snafu(display("request rolled back due to later failed request"))]
159 RolledBack,
160
161 #[snafu(display("request failed due to earlier failed request"))]
164 Skipped,
165}