use crate::query_result::QueryType;
use serde::{Deserialize, Serialize};
use shape_wire::WireValue;
use shape_wire::metadata::TypeInfo;
#[derive(Clone)]
pub struct EngineBootstrapState {
pub semantic: crate::snapshot::SemanticSnapshot,
pub context: crate::context::ExecutionContext,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionResult {
pub value: WireValue,
pub type_info: Option<TypeInfo>,
pub execution_type: ExecutionType,
pub metrics: ExecutionMetrics,
pub messages: Vec<Message>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub content_json: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub content_html: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub content_terminal: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ExecutionType {
Query(QueryType),
Function(String),
Script,
Repl,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExecutionMetrics {
pub execution_time_ms: u64,
pub parse_time_ms: u64,
pub analysis_time_ms: u64,
pub runtime_time_ms: u64,
pub memory_used_bytes: Option<usize>,
pub rows_processed: Option<usize>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Message {
pub level: MessageLevel,
pub text: String,
pub location: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum MessageLevel {
Info,
Warning,
Error,
}