cosmic_space/
fail.rs

1use alloc::string::String;
2
3use serde::{Deserialize, Serialize};
4
5use crate::err::SpaceErr;
6use crate::kind::Specific;
7
8pub mod mesh {
9    use alloc::string::String;
10
11    use serde::{Deserialize, Serialize};
12
13    #[derive(Debug, Clone, Serialize, Deserialize)]
14    pub enum Fail {
15        Error(String),
16    }
17}
18
19pub mod portal {
20    use alloc::string::String;
21
22    use serde::{Deserialize, Serialize};
23
24    use crate::fail::{ext, http, resource};
25
26    #[derive(Debug, Clone, Serialize, Deserialize)]
27    pub enum Fail {
28        Error(String),
29        Resource(resource::Fail),
30        Ext(ext::Fail),
31        Http(http::Error),
32    }
33}
34
35pub mod http {
36    use alloc::string::String;
37
38    use serde::{Deserialize, Serialize};
39
40    #[derive(Debug, Clone, Serialize, Deserialize)]
41    pub struct Error {
42        pub message: String,
43    }
44}
45
46pub mod resource {
47    use alloc::string::String;
48
49    use serde::{Deserialize, Serialize};
50
51    use crate::fail::{Bad, BadCoercion, BadRequest, Conditional, Messaging, NotFound};
52    use crate::point::Point;
53
54    #[derive(Debug, Clone, Serialize, Deserialize)]
55    pub enum Fail {
56        Create(Create),
57        Update(Update),
58        Select(Select),
59        BadRequest(BadRequest),
60        Conditional(Conditional),
61        Messaging(Messaging),
62    }
63
64    #[derive(Debug, Clone, Serialize, Deserialize)]
65    pub enum Create {
66        AddressAlreadyInUse(String),
67        WrongParentResourceType { expected: String, found: String },
68        CannotUpdateArchetype,
69        InvalidProperty { expected: String, found: String },
70    }
71
72    #[derive(Debug, Clone, Serialize, Deserialize)]
73    pub enum Update {
74        Immutable,
75    }
76
77    #[derive(Debug, Clone, Serialize, Deserialize)]
78    pub enum Select {
79        WrongAddress { required: Point, found: Point },
80        BadSelectRouting { required: String, found: String },
81        BadCoercion(BadCoercion),
82    }
83}
84
85pub mod ext {
86    use alloc::string::String;
87
88    use serde::{Deserialize, Serialize};
89
90    use crate::fail::{BadRequest, Conditional};
91
92    #[derive(Debug, Clone, Serialize, Deserialize)]
93    pub enum Fail {
94        Error(String),
95        BadRequest(BadRequest),
96        Conditional(Conditional),
97    }
98}
99
100#[derive(Debug, Clone, Serialize, Deserialize)]
101pub enum BadRequest {
102    NotFound(NotFound),
103    Bad(Bad),
104    Illegal(Illegal),
105    Wrong(Wrong),
106}
107
108#[derive(Debug, Clone, Serialize, Deserialize)]
109pub struct BadCoercion {
110    pub from: String,
111    pub into: String,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
115pub enum Conditional {
116    Timeout(Timeout),
117}
118
119#[derive(Debug, Clone, Serialize, Deserialize)]
120pub struct Timeout {
121    pub waited: i32,
122    pub message: String,
123}
124
125#[derive(Debug, Clone, Serialize, Deserialize)]
126pub enum NotFound {
127    Any,
128    ResourceType(String),
129    Kind(String),
130    Specific(String),
131    Address(String),
132    Key(String),
133}
134
135#[derive(Debug, Clone, Serialize, Deserialize)]
136pub enum Bad {
137    ResourceType(String),
138    Kind(String),
139    Specific(String),
140    Address(String),
141    Key(String),
142}
143
144#[derive(Debug, Clone, Serialize, Deserialize)]
145pub enum Identifier {
146    ResourceType,
147    Kind,
148    Specific,
149    Address,
150    Key,
151}
152
153#[derive(Debug, Clone, Serialize, Deserialize)]
154pub enum Illegal {
155    Immutable,
156    EmptyToFieldOnMessage,
157}
158
159#[derive(Debug, Clone, Serialize, Deserialize)]
160pub struct Wrong {
161    pub received: String,
162    pub expected: String,
163}
164
165#[derive(Debug, Clone, Serialize, Deserialize)]
166pub enum Messaging {
167    RequestReplyExchangesRequireOneAndOnlyOneRecipient,
168}
169
170#[derive(Debug, Clone, Serialize, Deserialize)]
171pub enum Fail {
172    Mesh(mesh::Fail),
173    Resource(resource::Fail),
174    Portal(portal::Fail),
175    Error(String),
176}
177
178impl ToString for Fail {
179    fn to_string(&self) -> String {
180        "Fail".to_string()
181    }
182}
183
184/*    impl Into<ExtErr> for Fail {
185       fn into(self) -> ExtErr {
186           ExtErr {
187               status: 500,
188               message: "Fail".to_string(),
189           }
190       }
191   }
192
193*/