1#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct MatchCount {
4 #[prost(string, tag = "1")]
5 pub value: ::prost::alloc::string::String,
6 #[prost(int32, tag = "2")]
7 pub document_count: i32,
8}
9#[derive(Clone, PartialEq, ::prost::Message)]
10pub struct LabelWithCount {
11 #[prost(string, tag = "1")]
12 pub label: ::prost::alloc::string::String,
13 #[prost(int32, tag = "2")]
14 pub document_count: i32,
15}
16#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17pub struct StringPropertySummary {
18 #[prost(int32, tag = "1")]
19 pub document_count: i32,
20 #[prost(int32, tag = "2")]
21 pub distinct_value_count: i32,
22}
23#[derive(Clone, Copy, PartialEq, ::prost::Message)]
24pub struct NumericPropertySummary {
25 #[prost(int32, tag = "1")]
26 pub document_count: i32,
27 #[prost(double, tag = "4")]
28 pub mean: f64,
29}
30#[derive(Clone, PartialEq, ::prost::Message)]
31pub struct PropertyKeyWithCount {
32 #[prost(string, tag = "1")]
33 pub property_key: ::prost::alloc::string::String,
34 #[prost(int32, tag = "2")]
35 pub document_count: i32,
36 #[deprecated]
37 #[prost(int32, tag = "3")]
38 pub value_count: i32,
39 #[prost(message, optional, tag = "4")]
40 pub string: ::core::option::Option<StringPropertySummary>,
41 #[prost(message, optional, tag = "5")]
42 pub numeric: ::core::option::Option<NumericPropertySummary>,
43}
44#[derive(Clone, PartialEq, ::prost::Message)]
45pub struct PropertyValueWithCount {
46 #[prost(string, tag = "1")]
47 pub property_value: ::prost::alloc::string::String,
48 #[prost(int32, tag = "2")]
49 pub document_count: i32,
50}
51#[derive(Clone, PartialEq, ::prost::Message)]
52pub struct ListPropertiesAndLabelsRequest {
53 #[prost(enumeration = "ResourceType", repeated, tag = "1")]
54 pub resource_types: ::prost::alloc::vec::Vec<i32>,
55 #[prost(string, repeated, tag = "2")]
56 pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
57}
58#[derive(Clone, PartialEq, ::prost::Message)]
59pub struct ListPropertiesAndLabelsResponse {
60 #[prost(map = "string, message", tag = "1")]
61 pub properties: ::std::collections::HashMap<
62 ::prost::alloc::string::String,
63 list_properties_and_labels_response::PropertyValues,
64 >,
65 #[prost(string, repeated, tag = "2")]
66 pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
67}
68pub mod list_properties_and_labels_response {
70 #[derive(Clone, PartialEq, ::prost::Message)]
71 pub struct PropertyValues {
72 #[prost(string, repeated, tag = "1")]
73 pub value: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
74 }
75}
76#[derive(Clone, PartialEq, ::prost::Message)]
77pub struct MetadataUsageQuery {
78 #[prost(oneof = "metadata_usage_query::MetadataUsageQuery", tags = "1, 2, 3")]
79 pub metadata_usage_query: ::core::option::Option<
80 metadata_usage_query::MetadataUsageQuery,
81 >,
82}
83pub mod metadata_usage_query {
85 #[derive(Clone, PartialEq, ::prost::Oneof)]
86 pub enum MetadataUsageQuery {
87 #[prost(string, tag = "1")]
88 Label(::prost::alloc::string::String),
89 #[prost(string, tag = "2")]
90 PropertyName(::prost::alloc::string::String),
91 #[prost(message, tag = "3")]
92 Property(super::super::super::types::Property),
93 }
94}
95#[derive(Clone, PartialEq, ::prost::Message)]
96pub struct GetMetadataUsageCountRequest {
97 #[prost(message, optional, tag = "1")]
98 pub query: ::core::option::Option<MetadataUsageQuery>,
99 #[prost(enumeration = "ResourceType", repeated, tag = "2")]
100 pub resource_types: ::prost::alloc::vec::Vec<i32>,
101 #[prost(string, repeated, tag = "3")]
102 pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
103}
104#[derive(Clone, Copy, PartialEq, ::prost::Message)]
105pub struct GetMetadataUsageCountResponse {
106 #[prost(int32, tag = "1")]
107 pub count: i32,
108}
109#[derive(Clone, PartialEq, ::prost::Message)]
110pub struct FindSimilarLabelMatchesRequest {
111 #[prost(enumeration = "ResourceType", repeated, tag = "1")]
112 pub resource_types: ::prost::alloc::vec::Vec<i32>,
113 #[prost(string, repeated, tag = "2")]
114 pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
115 #[prost(string, repeated, tag = "3")]
116 pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
117}
118#[derive(Clone, PartialEq, ::prost::Message)]
119pub struct FindSimilarLabelMatchesResponse {
120 #[prost(map = "string, message", tag = "1")]
121 pub matches: ::std::collections::HashMap<
122 ::prost::alloc::string::String,
123 find_similar_label_matches_response::Matches,
124 >,
125}
126pub mod find_similar_label_matches_response {
128 #[derive(Clone, PartialEq, ::prost::Message)]
129 pub struct Matches {
130 #[prost(message, repeated, tag = "1")]
131 pub value: ::prost::alloc::vec::Vec<super::MatchCount>,
132 }
133}
134#[derive(Clone, PartialEq, ::prost::Message)]
135pub struct FindSimilarPropertyKeyMatchesRequest {
136 #[prost(enumeration = "ResourceType", repeated, tag = "1")]
137 pub resource_types: ::prost::alloc::vec::Vec<i32>,
138 #[prost(string, repeated, tag = "2")]
139 pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
140 #[prost(string, repeated, tag = "3")]
141 pub property_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
142}
143#[derive(Clone, PartialEq, ::prost::Message)]
144pub struct FindSimilarPropertyKeyMatchesResponse {
145 #[prost(map = "string, message", tag = "1")]
146 pub key_matches: ::std::collections::HashMap<
147 ::prost::alloc::string::String,
148 find_similar_property_key_matches_response::Matches,
149 >,
150}
151pub mod find_similar_property_key_matches_response {
153 #[derive(Clone, PartialEq, ::prost::Message)]
154 pub struct Matches {
155 #[prost(message, repeated, tag = "1")]
156 pub value: ::prost::alloc::vec::Vec<super::MatchCount>,
157 }
158}
159#[derive(Clone, PartialEq, ::prost::Message)]
160pub struct MetadataSearchParams {
161 #[prost(enumeration = "ResourceType", repeated, tag = "1")]
162 pub resource_types: ::prost::alloc::vec::Vec<i32>,
163 #[prost(string, repeated, tag = "2")]
164 pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
165 #[prost(string, optional, tag = "3")]
166 pub search_text: ::core::option::Option<::prost::alloc::string::String>,
167 #[prost(int32, optional, tag = "4")]
168 pub page_size: ::core::option::Option<i32>,
169 #[prost(string, optional, tag = "5")]
170 pub page_token: ::core::option::Option<::prost::alloc::string::String>,
171 #[prost(enumeration = "MetadataSortField", tag = "6")]
172 pub sort_by: i32,
173 #[prost(bool, optional, tag = "7")]
174 pub descending: ::core::option::Option<bool>,
175}
176#[derive(Clone, PartialEq, ::prost::Message)]
177pub struct SearchLabelsRequest {
178 #[prost(message, optional, tag = "1")]
179 pub params: ::core::option::Option<MetadataSearchParams>,
180}
181#[derive(Clone, PartialEq, ::prost::Message)]
182pub struct SearchLabelsResponse {
183 #[prost(message, repeated, tag = "1")]
184 pub labels: ::prost::alloc::vec::Vec<LabelWithCount>,
185 #[prost(string, optional, tag = "2")]
186 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
187}
188#[derive(Clone, PartialEq, ::prost::Message)]
189pub struct SearchPropertyKeysRequest {
190 #[prost(message, optional, tag = "1")]
191 pub params: ::core::option::Option<MetadataSearchParams>,
192}
193#[derive(Clone, PartialEq, ::prost::Message)]
194pub struct SearchPropertyKeysResponse {
195 #[prost(message, repeated, tag = "1")]
196 pub property_keys: ::prost::alloc::vec::Vec<PropertyKeyWithCount>,
197 #[prost(string, optional, tag = "2")]
198 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
199}
200#[derive(Clone, PartialEq, ::prost::Message)]
201pub struct SearchPropertyValuesRequest {
202 #[prost(message, optional, tag = "1")]
203 pub params: ::core::option::Option<MetadataSearchParams>,
204 #[prost(string, tag = "2")]
205 pub property_key: ::prost::alloc::string::String,
206}
207#[derive(Clone, PartialEq, ::prost::Message)]
208pub struct SearchPropertyValuesResponse {
209 #[prost(message, repeated, tag = "1")]
210 pub property_values: ::prost::alloc::vec::Vec<PropertyValueWithCount>,
211 #[prost(string, optional, tag = "2")]
212 pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
213}
214#[derive(Clone, Copy, PartialEq, ::prost::Message)]
215pub struct NumericPropertyStatistics {
216 #[prost(double, tag = "1")]
217 pub min: f64,
218 #[prost(double, tag = "2")]
219 pub max: f64,
220}
221#[derive(Clone, PartialEq, ::prost::Message)]
222pub struct GetNumericPropertyStatisticsRequest {
223 #[prost(string, tag = "1")]
224 pub property_key: ::prost::alloc::string::String,
225 #[prost(enumeration = "ResourceType", repeated, tag = "2")]
226 pub resource_types: ::prost::alloc::vec::Vec<i32>,
227 #[prost(string, repeated, tag = "3")]
228 pub workspaces: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
229}
230#[derive(Clone, Copy, PartialEq, ::prost::Message)]
231pub struct GetNumericPropertyStatisticsResponse {
232 #[prost(message, optional, tag = "1")]
233 pub statistics: ::core::option::Option<NumericPropertyStatistics>,
234}
235#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
236#[repr(i32)]
237pub enum ResourceType {
238 Unspecified = 0,
239 Run = 1,
240 Video = 2,
241 Asset = 3,
242 Event = 4,
243 Dataset = 5,
244 Module = 6,
245 ProcedureExecution = 7,
246 Procedure = 8,
247 SavedView = 9,
248 Plan = 10,
249}
250impl ResourceType {
251 pub fn as_str_name(&self) -> &'static str {
256 match self {
257 Self::Unspecified => "RESOURCE_TYPE_UNSPECIFIED",
258 Self::Run => "RUN",
259 Self::Video => "VIDEO",
260 Self::Asset => "ASSET",
261 Self::Event => "EVENT",
262 Self::Dataset => "DATASET",
263 Self::Module => "MODULE",
264 Self::ProcedureExecution => "PROCEDURE_EXECUTION",
265 Self::Procedure => "PROCEDURE",
266 Self::SavedView => "SAVED_VIEW",
267 Self::Plan => "PLAN",
268 }
269 }
270 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
272 match value {
273 "RESOURCE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
274 "RUN" => Some(Self::Run),
275 "VIDEO" => Some(Self::Video),
276 "ASSET" => Some(Self::Asset),
277 "EVENT" => Some(Self::Event),
278 "DATASET" => Some(Self::Dataset),
279 "MODULE" => Some(Self::Module),
280 "PROCEDURE_EXECUTION" => Some(Self::ProcedureExecution),
281 "PROCEDURE" => Some(Self::Procedure),
282 "SAVED_VIEW" => Some(Self::SavedView),
283 "PLAN" => Some(Self::Plan),
284 _ => None,
285 }
286 }
287}
288#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
289#[repr(i32)]
290pub enum MetadataSortField {
291 Unspecified = 0,
292 Alphabetical = 1,
293 UsageCount = 2,
294 PropertyValueCount = 3,
295}
296impl MetadataSortField {
297 pub fn as_str_name(&self) -> &'static str {
302 match self {
303 Self::Unspecified => "METADATA_SORT_FIELD_UNSPECIFIED",
304 Self::Alphabetical => "ALPHABETICAL",
305 Self::UsageCount => "USAGE_COUNT",
306 Self::PropertyValueCount => "PROPERTY_VALUE_COUNT",
307 }
308 }
309 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
311 match value {
312 "METADATA_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
313 "ALPHABETICAL" => Some(Self::Alphabetical),
314 "USAGE_COUNT" => Some(Self::UsageCount),
315 "PROPERTY_VALUE_COUNT" => Some(Self::PropertyValueCount),
316 _ => None,
317 }
318 }
319}
320#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
321#[repr(i32)]
322pub enum MetadataError {
323 InvalidMetadataRequest = 0,
324 QueryTooBroad = 1,
325}
326impl MetadataError {
327 pub fn as_str_name(&self) -> &'static str {
332 match self {
333 Self::InvalidMetadataRequest => "METADATA_ERROR_INVALID_METADATA_REQUEST",
334 Self::QueryTooBroad => "METADATA_ERROR_QUERY_TOO_BROAD",
335 }
336 }
337 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
339 match value {
340 "METADATA_ERROR_INVALID_METADATA_REQUEST" => {
341 Some(Self::InvalidMetadataRequest)
342 }
343 "METADATA_ERROR_QUERY_TOO_BROAD" => Some(Self::QueryTooBroad),
344 _ => None,
345 }
346 }
347}
348pub mod resource_metadata_service_client {
350 #![allow(
351 unused_variables,
352 dead_code,
353 missing_docs,
354 clippy::wildcard_imports,
355 clippy::let_unit_value,
356 )]
357 use tonic::codegen::*;
358 use tonic::codegen::http::Uri;
359 #[derive(Debug, Clone)]
360 pub struct ResourceMetadataServiceClient<T> {
361 inner: tonic::client::Grpc<T>,
362 }
363 impl ResourceMetadataServiceClient<tonic::transport::Channel> {
364 pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
366 where
367 D: TryInto<tonic::transport::Endpoint>,
368 D::Error: Into<StdError>,
369 {
370 let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
371 Ok(Self::new(conn))
372 }
373 }
374 impl<T> ResourceMetadataServiceClient<T>
375 where
376 T: tonic::client::GrpcService<tonic::body::Body>,
377 T::Error: Into<StdError>,
378 T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
379 <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
380 {
381 pub fn new(inner: T) -> Self {
382 let inner = tonic::client::Grpc::new(inner);
383 Self { inner }
384 }
385 pub fn with_origin(inner: T, origin: Uri) -> Self {
386 let inner = tonic::client::Grpc::with_origin(inner, origin);
387 Self { inner }
388 }
389 pub fn with_interceptor<F>(
390 inner: T,
391 interceptor: F,
392 ) -> ResourceMetadataServiceClient<InterceptedService<T, F>>
393 where
394 F: tonic::service::Interceptor,
395 T::ResponseBody: Default,
396 T: tonic::codegen::Service<
397 http::Request<tonic::body::Body>,
398 Response = http::Response<
399 <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
400 >,
401 >,
402 <T as tonic::codegen::Service<
403 http::Request<tonic::body::Body>,
404 >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
405 {
406 ResourceMetadataServiceClient::new(
407 InterceptedService::new(inner, interceptor),
408 )
409 }
410 #[must_use]
415 pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
416 self.inner = self.inner.send_compressed(encoding);
417 self
418 }
419 #[must_use]
421 pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
422 self.inner = self.inner.accept_compressed(encoding);
423 self
424 }
425 #[must_use]
429 pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
430 self.inner = self.inner.max_decoding_message_size(limit);
431 self
432 }
433 #[must_use]
437 pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
438 self.inner = self.inner.max_encoding_message_size(limit);
439 self
440 }
441 pub async fn list_properties_and_labels(
442 &mut self,
443 request: impl tonic::IntoRequest<super::ListPropertiesAndLabelsRequest>,
444 ) -> std::result::Result<
445 tonic::Response<super::ListPropertiesAndLabelsResponse>,
446 tonic::Status,
447 > {
448 self.inner
449 .ready()
450 .await
451 .map_err(|e| {
452 tonic::Status::unknown(
453 format!("Service was not ready: {}", e.into()),
454 )
455 })?;
456 let codec = tonic::codec::ProstCodec::default();
457 let path = http::uri::PathAndQuery::from_static(
458 "/nominal.metadata.v2.ResourceMetadataService/ListPropertiesAndLabels",
459 );
460 let mut req = request.into_request();
461 req.extensions_mut()
462 .insert(
463 GrpcMethod::new(
464 "nominal.metadata.v2.ResourceMetadataService",
465 "ListPropertiesAndLabels",
466 ),
467 );
468 self.inner.unary(req, path, codec).await
469 }
470 pub async fn get_metadata_usage_count(
471 &mut self,
472 request: impl tonic::IntoRequest<super::GetMetadataUsageCountRequest>,
473 ) -> std::result::Result<
474 tonic::Response<super::GetMetadataUsageCountResponse>,
475 tonic::Status,
476 > {
477 self.inner
478 .ready()
479 .await
480 .map_err(|e| {
481 tonic::Status::unknown(
482 format!("Service was not ready: {}", e.into()),
483 )
484 })?;
485 let codec = tonic::codec::ProstCodec::default();
486 let path = http::uri::PathAndQuery::from_static(
487 "/nominal.metadata.v2.ResourceMetadataService/GetMetadataUsageCount",
488 );
489 let mut req = request.into_request();
490 req.extensions_mut()
491 .insert(
492 GrpcMethod::new(
493 "nominal.metadata.v2.ResourceMetadataService",
494 "GetMetadataUsageCount",
495 ),
496 );
497 self.inner.unary(req, path, codec).await
498 }
499 pub async fn find_similar_label_matches(
500 &mut self,
501 request: impl tonic::IntoRequest<super::FindSimilarLabelMatchesRequest>,
502 ) -> std::result::Result<
503 tonic::Response<super::FindSimilarLabelMatchesResponse>,
504 tonic::Status,
505 > {
506 self.inner
507 .ready()
508 .await
509 .map_err(|e| {
510 tonic::Status::unknown(
511 format!("Service was not ready: {}", e.into()),
512 )
513 })?;
514 let codec = tonic::codec::ProstCodec::default();
515 let path = http::uri::PathAndQuery::from_static(
516 "/nominal.metadata.v2.ResourceMetadataService/FindSimilarLabelMatches",
517 );
518 let mut req = request.into_request();
519 req.extensions_mut()
520 .insert(
521 GrpcMethod::new(
522 "nominal.metadata.v2.ResourceMetadataService",
523 "FindSimilarLabelMatches",
524 ),
525 );
526 self.inner.unary(req, path, codec).await
527 }
528 pub async fn find_similar_property_key_matches(
529 &mut self,
530 request: impl tonic::IntoRequest<super::FindSimilarPropertyKeyMatchesRequest>,
531 ) -> std::result::Result<
532 tonic::Response<super::FindSimilarPropertyKeyMatchesResponse>,
533 tonic::Status,
534 > {
535 self.inner
536 .ready()
537 .await
538 .map_err(|e| {
539 tonic::Status::unknown(
540 format!("Service was not ready: {}", e.into()),
541 )
542 })?;
543 let codec = tonic::codec::ProstCodec::default();
544 let path = http::uri::PathAndQuery::from_static(
545 "/nominal.metadata.v2.ResourceMetadataService/FindSimilarPropertyKeyMatches",
546 );
547 let mut req = request.into_request();
548 req.extensions_mut()
549 .insert(
550 GrpcMethod::new(
551 "nominal.metadata.v2.ResourceMetadataService",
552 "FindSimilarPropertyKeyMatches",
553 ),
554 );
555 self.inner.unary(req, path, codec).await
556 }
557 pub async fn search_labels(
558 &mut self,
559 request: impl tonic::IntoRequest<super::SearchLabelsRequest>,
560 ) -> std::result::Result<
561 tonic::Response<super::SearchLabelsResponse>,
562 tonic::Status,
563 > {
564 self.inner
565 .ready()
566 .await
567 .map_err(|e| {
568 tonic::Status::unknown(
569 format!("Service was not ready: {}", e.into()),
570 )
571 })?;
572 let codec = tonic::codec::ProstCodec::default();
573 let path = http::uri::PathAndQuery::from_static(
574 "/nominal.metadata.v2.ResourceMetadataService/SearchLabels",
575 );
576 let mut req = request.into_request();
577 req.extensions_mut()
578 .insert(
579 GrpcMethod::new(
580 "nominal.metadata.v2.ResourceMetadataService",
581 "SearchLabels",
582 ),
583 );
584 self.inner.unary(req, path, codec).await
585 }
586 pub async fn search_property_keys(
587 &mut self,
588 request: impl tonic::IntoRequest<super::SearchPropertyKeysRequest>,
589 ) -> std::result::Result<
590 tonic::Response<super::SearchPropertyKeysResponse>,
591 tonic::Status,
592 > {
593 self.inner
594 .ready()
595 .await
596 .map_err(|e| {
597 tonic::Status::unknown(
598 format!("Service was not ready: {}", e.into()),
599 )
600 })?;
601 let codec = tonic::codec::ProstCodec::default();
602 let path = http::uri::PathAndQuery::from_static(
603 "/nominal.metadata.v2.ResourceMetadataService/SearchPropertyKeys",
604 );
605 let mut req = request.into_request();
606 req.extensions_mut()
607 .insert(
608 GrpcMethod::new(
609 "nominal.metadata.v2.ResourceMetadataService",
610 "SearchPropertyKeys",
611 ),
612 );
613 self.inner.unary(req, path, codec).await
614 }
615 pub async fn search_property_values(
616 &mut self,
617 request: impl tonic::IntoRequest<super::SearchPropertyValuesRequest>,
618 ) -> std::result::Result<
619 tonic::Response<super::SearchPropertyValuesResponse>,
620 tonic::Status,
621 > {
622 self.inner
623 .ready()
624 .await
625 .map_err(|e| {
626 tonic::Status::unknown(
627 format!("Service was not ready: {}", e.into()),
628 )
629 })?;
630 let codec = tonic::codec::ProstCodec::default();
631 let path = http::uri::PathAndQuery::from_static(
632 "/nominal.metadata.v2.ResourceMetadataService/SearchPropertyValues",
633 );
634 let mut req = request.into_request();
635 req.extensions_mut()
636 .insert(
637 GrpcMethod::new(
638 "nominal.metadata.v2.ResourceMetadataService",
639 "SearchPropertyValues",
640 ),
641 );
642 self.inner.unary(req, path, codec).await
643 }
644 pub async fn get_numeric_property_statistics(
645 &mut self,
646 request: impl tonic::IntoRequest<super::GetNumericPropertyStatisticsRequest>,
647 ) -> std::result::Result<
648 tonic::Response<super::GetNumericPropertyStatisticsResponse>,
649 tonic::Status,
650 > {
651 self.inner
652 .ready()
653 .await
654 .map_err(|e| {
655 tonic::Status::unknown(
656 format!("Service was not ready: {}", e.into()),
657 )
658 })?;
659 let codec = tonic::codec::ProstCodec::default();
660 let path = http::uri::PathAndQuery::from_static(
661 "/nominal.metadata.v2.ResourceMetadataService/GetNumericPropertyStatistics",
662 );
663 let mut req = request.into_request();
664 req.extensions_mut()
665 .insert(
666 GrpcMethod::new(
667 "nominal.metadata.v2.ResourceMetadataService",
668 "GetNumericPropertyStatistics",
669 ),
670 );
671 self.inner.unary(req, path, codec).await
672 }
673 }
674}