feldera_types/
query_params.rs

1//! Types for the query parameters of the pipeline endpoints.
2
3use serde::Deserialize;
4use utoipa::{IntoParams, ToSchema};
5
6/// Circuit metrics output format.
7/// - `prometheus`: [format](https://github.com/prometheus/docs/blob/4b1b80f5f660a2f8dc25a54f52a65a502f31879a/docs/instrumenting/exposition_formats.md) expected by Prometheus
8/// - `json`: JSON format
9#[derive(Debug, Deserialize, ToSchema)]
10#[serde(rename_all = "snake_case")]
11pub enum MetricsFormat {
12    Prometheus,
13    Json,
14}
15
16/// Returns default metrics format.
17fn default_metrics_format() -> MetricsFormat {
18    MetricsFormat::Prometheus
19}
20
21/// Query parameters to retrieve pipeline circuit metrics.
22#[derive(Debug, Deserialize, IntoParams, ToSchema)]
23pub struct MetricsParameters {
24    #[serde(default = "default_metrics_format")]
25    pub format: MetricsFormat,
26}
27
28/// Default for the `initial` query parameter when POST a pipeline activate.
29fn default_pipeline_activate_initial() -> String {
30    "running".to_string()
31}
32
33#[derive(Debug, Deserialize, IntoParams, ToSchema)]
34pub struct ActivateParams {
35    #[serde(default = "default_pipeline_activate_initial")]
36    pub initial: String,
37}
38
39#[derive(Debug, Deserialize, IntoParams, ToSchema)]
40pub struct SamplyProfileParams {
41    #[serde(default = "default_samply_profile_duration")]
42    pub duration_secs: u64,
43}
44
45/// Default for the `duration_secs` query parameter when POST a pipeline samply profile.
46fn default_samply_profile_duration() -> u64 {
47    30
48}