#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq)]
#[non_exhaustive]
pub enum Method {
Unknown,
Ping,
Info,
Use,
Signup,
Signin,
Authenticate,
Invalidate,
Reset,
Kill,
Live,
Set,
Unset,
Select,
Insert,
Create,
Upsert,
Update,
Merge,
Patch,
Delete,
Version,
Query,
Relate,
Run,
GraphQL,
InsertRelation,
}
impl Method {
pub fn parse<S>(s: S) -> Self
where
S: AsRef<str>,
{
match s.as_ref().to_lowercase().as_str() {
"ping" => Self::Ping,
"info" => Self::Info,
"use" => Self::Use,
"signup" => Self::Signup,
"signin" => Self::Signin,
"authenticate" => Self::Authenticate,
"invalidate" => Self::Invalidate,
"reset" => Self::Reset,
"kill" => Self::Kill,
"live" => Self::Live,
"let" | "set" => Self::Set,
"unset" => Self::Unset,
"select" => Self::Select,
"insert" => Self::Insert,
"create" => Self::Create,
"upsert" => Self::Upsert,
"update" => Self::Update,
"merge" => Self::Merge,
"patch" => Self::Patch,
"delete" => Self::Delete,
"version" => Self::Version,
"query" => Self::Query,
"relate" => Self::Relate,
"run" => Self::Run,
"graphql" => Self::GraphQL,
"insert_relation" => Self::InsertRelation,
_ => Self::Unknown,
}
}
}
impl Method {
pub fn to_str(&self) -> &str {
match self {
Self::Unknown => "unknown",
Self::Ping => "ping",
Self::Info => "info",
Self::Use => "use",
Self::Signup => "signup",
Self::Signin => "signin",
Self::Authenticate => "authenticate",
Self::Invalidate => "invalidate",
Self::Reset => "reset",
Self::Kill => "kill",
Self::Live => "live",
Self::Set => "set",
Self::Unset => "unset",
Self::Select => "select",
Self::Insert => "insert",
Self::Create => "create",
Self::Upsert => "upsert",
Self::Update => "update",
Self::Merge => "merge",
Self::Patch => "patch",
Self::Delete => "delete",
Self::Version => "version",
Self::Query => "query",
Self::Relate => "relate",
Self::Run => "run",
Self::GraphQL => "graphql",
Self::InsertRelation => "insert_relation",
}
}
}
impl Method {
pub fn is_valid(&self) -> bool {
!matches!(self, Self::Unknown)
}
pub fn needs_mutability(&self) -> bool {
!matches!(
self,
Method::Ping
| Method::Info
| Method::Select
| Method::Insert
| Method::Create
| Method::Upsert
| Method::Update
| Method::Merge
| Method::Patch
| Method::Delete
| Method::Version
| Method::Query
| Method::Relate
| Method::Run
| Method::GraphQL
| Method::InsertRelation
| Method::Unknown
)
}
}