use serde::Deserialize;
use crate::request::SessionConfig;
#[derive(Deserialize, Debug)]
pub struct QueryError {
pub code: u16,
pub message: String,
pub detail: Option<String>,
}
#[derive(Deserialize, Debug)]
pub struct QueryStats {
#[serde(flatten)]
pub progresses: Progresses,
pub running_time_ms: f64,
}
#[derive(Deserialize, Debug)]
pub struct Progresses {
pub scan_progress: ProgressValues,
pub write_progress: ProgressValues,
pub result_progress: ProgressValues,
pub total_scan: Option<ProgressValues>,
}
#[derive(Debug, Deserialize)]
pub struct ProgressValues {
pub rows: usize,
pub bytes: usize,
}
#[derive(Deserialize, Debug)]
pub struct SchemaField {
pub name: String,
#[serde(rename = "type")]
pub data_type: String,
}
#[derive(Deserialize, Debug)]
pub struct QueryResponse {
pub id: String,
pub session_id: Option<String>,
pub session: Option<SessionConfig>,
pub schema: Vec<SchemaField>,
pub data: Vec<Vec<String>>,
pub state: String,
pub error: Option<QueryError>,
pub stats: QueryStats,
pub stats_uri: Option<String>,
pub final_uri: Option<String>,
pub next_uri: Option<String>,
pub kill_uri: Option<String>,
}