surrealdb_core/rpc/
method.rs

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	/// Parse a [Method] from a [str] with any case
35	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	/// Parse a [Method] from a [str] in lower case
43	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	/// Parse a [Method] from a [str]
51	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	/// Checks if the provided method is a valid and supported RPC method
129	pub fn is_valid(&self) -> bool {
130		!matches!(self, Self::Unknown)
131	}
132}