use azure_core::http::{request::options::ContentType, Method};
use crate::constants;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[allow(dead_code)] pub enum OperationType {
Create,
Read,
ReadFeed,
Replace,
Delete,
Upsert,
Query,
SqlQuery,
QueryPlan,
Batch,
Patch,
Head,
HeadFeed,
Execute,
}
impl OperationType {
pub fn body_content_type(&self) -> Option<ContentType> {
match self {
OperationType::Query | OperationType::SqlQuery => Some(constants::QUERY_CONTENT_TYPE),
OperationType::Create
| OperationType::Replace
| OperationType::Upsert
| OperationType::Batch
| OperationType::Patch
| OperationType::QueryPlan
| OperationType::Execute => Some(ContentType::APPLICATION_JSON),
OperationType::Read
| OperationType::ReadFeed
| OperationType::Delete
| OperationType::Head
| OperationType::HeadFeed => None,
}
}
pub fn is_read_only(&self) -> bool {
matches!(
self,
OperationType::Read
| OperationType::Query
| OperationType::SqlQuery
| OperationType::QueryPlan
| OperationType::Head
| OperationType::HeadFeed
)
}
pub fn http_method(self) -> Method {
match self {
OperationType::Create
| OperationType::Upsert
| OperationType::Query
| OperationType::SqlQuery
| OperationType::Batch
| OperationType::QueryPlan
| OperationType::Execute => Method::Post,
OperationType::Delete => Method::Delete,
OperationType::Read => Method::Get,
OperationType::ReadFeed => Method::Get,
OperationType::Replace => Method::Put,
OperationType::Patch => Method::Patch,
OperationType::Head | OperationType::HeadFeed => Method::Head,
}
}
}