use std::path::PathBuf;
use gpui_kit::Entity;
use crate::db::query::QueryResult;
use crate::db::{PinnedConnection, ScriptRun};
use crate::ui::console::ConsoleView;
use crate::ui::data_grid::DataGrid;
use crate::ui::plan_view::PlanView;
use crate::ui::process_list::ProcessListView;
use crate::ui::query_digest::QueryDigestView;
use crate::ui::query_editor::QueryEditor;
use crate::ui::schema_view::SchemaView;
use crate::ui::server_variables::ServerVariablesView;
use crate::ui::sqlite_maintenance::SqliteMaintenanceView;
use crate::ui::table_view::TableView;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum ObjectViewMode {
Data,
Schema,
}
pub(crate) enum Status {
Idle,
Running,
Done(String),
Error(String),
}
impl Status {
pub(crate) fn message(&self) -> String {
match self {
Status::Idle => "Ready".to_string(),
Status::Running => "Running…".to_string(),
Status::Done(summary) => summary.clone(),
Status::Error(error) => format!("Error: {error}"),
}
}
}
#[allow(clippy::large_enum_variant)]
pub(crate) enum TabContent {
Query {
editor: Entity<QueryEditor>,
grid: Entity<DataGrid>,
status: Status,
path: Option<PathBuf>,
results: Vec<QueryResult>,
result: usize,
running: Option<tokio::task::AbortHandle>,
script: Option<Box<ScriptRun>>,
pinned: Option<PinnedConnection>,
baseline: String,
plan: Option<Entity<PlanView>>,
show_plan: bool,
},
Table {
view: Entity<TableView>,
},
Schema {
view: Entity<SchemaView>,
},
Console {
view: Entity<ConsoleView>,
},
Processes {
view: Entity<ProcessListView>,
},
Variables {
view: Entity<ServerVariablesView>,
},
Digest {
view: Entity<QueryDigestView>,
},
Maintenance {
view: Entity<SqliteMaintenanceView>,
},
}