use serde::{Deserialize, Serialize};
use super::{
azure_blob_storage_config::AzureBlobStorageConfig,
google_cloud_storage_config::GoogleCloudStorageConfig, s3_config::S3Config,
sink_http_config::SinkHttpConfig, sink_otel_v1_config::SinkOtelV1Config,
sink_status_in::SinkStatusIn,
};
#[derive(Clone, Debug, Default, PartialEq, Deserialize, Serialize)]
pub struct StreamSinkIn {
#[serde(rename = "batchSize")]
#[serde(skip_serializing_if = "Option::is_none")]
pub batch_size: Option<u16>,
#[serde(rename = "eventTypes")]
#[serde(skip_serializing_if = "Option::is_none")]
pub event_types: Option<Vec<String>>,
#[serde(rename = "maxWaitSecs")]
#[serde(skip_serializing_if = "Option::is_none")]
pub max_wait_secs: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<std::collections::HashMap<String, String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<SinkStatusIn>,
#[serde(skip_serializing_if = "Option::is_none")]
pub uid: Option<String>,
#[serde(flatten)]
pub config: StreamSinkInConfig,
}
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
#[serde(tag = "type", content = "config")]
pub enum StreamSinkInConfig {
#[serde(rename = "poller")]
Poller,
#[serde(rename = "azureBlobStorage")]
AzureBlobStorage(AzureBlobStorageConfig),
#[serde(rename = "otelTracing")]
OtelTracing(SinkOtelV1Config),
#[serde(rename = "http")]
Http(SinkHttpConfig),
#[serde(rename = "amazonS3")]
AmazonS3(S3Config),
#[serde(rename = "googleCloudStorage")]
GoogleCloudStorage(GoogleCloudStorageConfig),
}
#[allow(clippy::derivable_impls)]
impl Default for StreamSinkInConfig {
fn default() -> Self {
Self::Poller
}
}