diff --git a/Cargo.toml b/Cargo.toml index 0d8bbcb2..12df18d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,8 @@ license = "Apache-2.0" prost = "0.11" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" +strum = "0.25" +strum_macros = "0.25" tonic = "0.9" [build-dependencies] diff --git a/build.rs b/build.rs index eae7d9a6..337b81f6 100644 --- a/build.rs +++ b/build.rs @@ -26,6 +26,10 @@ fn main() { "SemanticType", "#[derive(::serde::Serialize, ::serde::Deserialize)]", ) + .enum_attribute( + "region.RegionRequest.body", + "#[derive(strum_macros::AsRefStr)]", + ) .compile( &[ "proto/greptime/v1/database.proto", diff --git a/src/v1/region.rs b/src/v1/region.rs index 013c60a5..84fa568f 100644 --- a/src/v1/region.rs +++ b/src/v1/region.rs @@ -13,3 +13,15 @@ // limitations under the License. tonic::include_proto!("greptime.v1.region"); + +#[cfg(test)] +mod test { + use crate::v1::region::region_request::Body as RegionRequest; + use crate::v1::region::InsertRequests; + + #[test] + fn test_region_request_name() { + let request = RegionRequest::Inserts(InsertRequests { requests: vec![] }); + assert_eq!("Inserts", request.as_ref()); + } +}