use serde::Deserialize;
use std::fmt::{Debug, Display, Formatter, Result};
use utoipa::ToSchema;
#[derive(Debug, Deserialize, PartialEq, Clone, Copy, ToSchema)]
#[serde(rename_all = "snake_case")]
pub enum AdHocResultFormat {
Text,
Json,
Parquet,
}
impl Display for AdHocResultFormat {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
match self {
AdHocResultFormat::Text => write!(f, "text"),
AdHocResultFormat::Json => write!(f, "json"),
AdHocResultFormat::Parquet => write!(f, "parquet"),
}
}
}
impl Default for AdHocResultFormat {
fn default() -> Self {
Self::Text
}
}
fn default_format() -> AdHocResultFormat {
AdHocResultFormat::default()
}
#[derive(Clone, Debug, PartialEq, Deserialize, ToSchema)]
pub struct AdhocQueryArgs {
pub sql: String,
#[serde(default = "default_format")]
pub format: AdHocResultFormat,
}