1#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq)]
2#[non_exhaustive]
3pub enum Method {
4 Unknown,
5 Ping,
6 Info,
7 Use,
8 Signup,
9 Signin,
10 Authenticate,
11 Invalidate,
12 Reset,
13 Kill,
14 Live,
15 Set,
16 Unset,
17 Select,
18 Insert,
19 Create,
20 Upsert,
21 Update,
22 Merge,
23 Patch,
24 Delete,
25 Version,
26 Query,
27 Relate,
28 Run,
29 GraphQL,
30 InsertRelation,
31}
32
33impl Method {
34 pub fn parse_case_insensitive<S>(s: S) -> Self
36 where
37 S: AsRef<str>,
38 {
39 Self::parse(s.as_ref().to_ascii_lowercase().as_str())
40 }
41
42 pub fn parse_case_sensitive<S>(s: S) -> Self
44 where
45 S: AsRef<str>,
46 {
47 Self::parse(s.as_ref())
48 }
49
50 fn parse<S>(s: S) -> Self
52 where
53 S: AsRef<str>,
54 {
55 match s.as_ref() {
56 "ping" => Self::Ping,
57 "info" => Self::Info,
58 "use" => Self::Use,
59 "signup" => Self::Signup,
60 "signin" => Self::Signin,
61 "authenticate" => Self::Authenticate,
62 "invalidate" => Self::Invalidate,
63 "reset" => Self::Reset,
64 "kill" => Self::Kill,
65 "live" => Self::Live,
66 "set" | "let" => Self::Set,
67 "unset" => Self::Unset,
68 "select" => Self::Select,
69 "insert" => Self::Insert,
70 "create" => Self::Create,
71 "upsert" => Self::Upsert,
72 "update" => Self::Update,
73 "merge" => Self::Merge,
74 "patch" => Self::Patch,
75 "delete" => Self::Delete,
76 "version" => Self::Version,
77 "query" => Self::Query,
78 "relate" => Self::Relate,
79 "run" => Self::Run,
80 "graphql" => Self::GraphQL,
81 "insert_relation" => Self::InsertRelation,
82 _ => Self::Unknown,
83 }
84 }
85}
86
87impl Method {
88 pub fn to_str(&self) -> &str {
89 match self {
90 Self::Unknown => "unknown",
91 Self::Ping => "ping",
92 Self::Info => "info",
93 Self::Use => "use",
94 Self::Signup => "signup",
95 Self::Signin => "signin",
96 Self::Authenticate => "authenticate",
97 Self::Invalidate => "invalidate",
98 Self::Reset => "reset",
99 Self::Kill => "kill",
100 Self::Live => "live",
101 Self::Set => "set",
102 Self::Unset => "unset",
103 Self::Select => "select",
104 Self::Insert => "insert",
105 Self::Create => "create",
106 Self::Upsert => "upsert",
107 Self::Update => "update",
108 Self::Merge => "merge",
109 Self::Patch => "patch",
110 Self::Delete => "delete",
111 Self::Version => "version",
112 Self::Query => "query",
113 Self::Relate => "relate",
114 Self::Run => "run",
115 Self::GraphQL => "graphql",
116 Self::InsertRelation => "insert_relation",
117 }
118 }
119}
120
121impl std::fmt::Display for Method {
122 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
123 write!(f, "{}", self.to_str())
124 }
125}
126
127impl Method {
128 pub fn is_valid(&self) -> bool {
130 !matches!(self, Self::Unknown)
131 }
132}