use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize, Clone)]
pub struct ExecutionStats {
pub plan_ids: Vec<String>,
pub display_name: String,
pub flamegraph_svg: Option<String>,
pub network_traffic_bytes: u64,
pub execution_time_ms: u64,
pub user_sql: Vec<String>,
}
#[derive(Serialize)]
pub struct ExecutionStatsWithPlan {
pub execution_stats: ExecutionStats,
pub plans: Vec<PlanInfo>,
}
#[derive(Serialize, Deserialize)]
pub struct ApiResponse {
pub message: String,
pub status: String,
}
#[derive(Serialize)]
pub struct SchemaField {
pub name: String,
pub data_type: String,
}
#[derive(Serialize)]
pub struct ColumnStatistics {
pub name: String,
pub null: Option<String>,
pub max: Option<String>,
pub min: Option<String>,
pub sum: Option<String>,
pub distinct_count: Option<String>,
}
#[derive(Serialize)]
pub struct Statistics {
pub num_rows: String,
pub total_byte_size: String,
pub column_statistics: Vec<ColumnStatistics>,
}
#[derive(Serialize)]
pub struct MetricValues {
pub name: String,
pub value: String,
}
#[derive(Serialize)]
pub struct ExecutionPlanWithStats {
pub name: String,
pub schema: Vec<SchemaField>,
pub statistics: Statistics,
pub metrics: Vec<MetricValues>,
pub children: Vec<ExecutionPlanWithStats>,
}
#[derive(Serialize)]
pub struct PlanInfo {
pub created_at: u64,
pub plan: ExecutionPlanWithStats,
pub id: String,
pub predicate: Option<String>,
}