vector_api_client/gql/
tap.rs1#![allow(clippy::upper_case_acronyms)]
2
3use graphql_client::GraphQLQuery;
4
5use crate::BoxedSubscription;
6
7type DateTime = chrono::DateTime<chrono::Utc>;
9
10#[derive(GraphQLQuery, Debug, Copy, Clone)]
13#[graphql(
14 schema_path = "graphql/schema.json",
15 query_path = "graphql/subscriptions/output_events_by_component_id_patterns.graphql",
16 response_derives = "Debug"
17)]
18pub struct OutputEventsByComponentIdPatternsSubscription;
19
20#[derive(clap::ValueEnum, Debug, Clone, Copy)]
23pub enum TapEncodingFormat {
24 Json,
25 Yaml,
26 Logfmt,
27}
28
29impl std::str::FromStr for TapEncodingFormat {
31 type Err = String;
32
33 fn from_str(s: &str) -> Result<Self, Self::Err> {
34 match s {
35 "json" => Ok(Self::Json),
36 "yaml" => Ok(Self::Yaml),
37 "logfmt" => Ok(Self::Logfmt),
38 _ => Err("Invalid encoding format".to_string()),
39 }
40 }
41}
42
43impl From<TapEncodingFormat>
45 for output_events_by_component_id_patterns_subscription::EventEncodingType
46{
47 fn from(encoding: TapEncodingFormat) -> Self {
48 match encoding {
49 TapEncodingFormat::Json => Self::JSON,
50 TapEncodingFormat::Yaml => Self::YAML,
51 TapEncodingFormat::Logfmt => Self::LOGFMT,
52 }
53 }
54}
55
56pub trait TapSubscriptionExt {
57 fn output_events_by_component_id_patterns_subscription(
59 &self,
60 outputs_patterns: Vec<String>,
61 inputs_patterns: Vec<String>,
62 encoding: TapEncodingFormat,
63 limit: i64,
64 interval: i64,
65 ) -> crate::BoxedSubscription<OutputEventsByComponentIdPatternsSubscription>;
66}
67
68impl TapSubscriptionExt for crate::SubscriptionClient {
69 fn output_events_by_component_id_patterns_subscription(
71 &self,
72 outputs_patterns: Vec<String>,
73 inputs_patterns: Vec<String>,
74 encoding: TapEncodingFormat,
75 limit: i64,
76 interval: i64,
77 ) -> BoxedSubscription<OutputEventsByComponentIdPatternsSubscription> {
78 let request_body = OutputEventsByComponentIdPatternsSubscription::build_query(
79 output_events_by_component_id_patterns_subscription::Variables {
80 outputs_patterns,
81 inputs_patterns: Some(inputs_patterns),
82 limit,
83 interval,
84 encoding: encoding.into(),
85 },
86 );
87
88 self.start::<OutputEventsByComponentIdPatternsSubscription>(&request_body)
89 }
90}