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