pub mod tabs;
use crate::tui::state::tabs::sql::SQLTabState;
use crate::tui::ui::SelectedTab;
use self::tabs::{history::HistoryTabState, logs::LogsTabState};
use crate::config::AppConfig;
#[cfg(feature = "flightsql")]
use crate::tui::state::tabs::flightsql::FlightSQLTabState;
#[derive(Debug)]
pub struct Tabs {
pub selected: SelectedTab,
}
impl Default for Tabs {
fn default() -> Self {
Self {
selected: SelectedTab::SQL,
}
}
}
#[derive(Debug)]
pub struct AppState<'app> {
pub config: AppConfig,
pub should_quit: bool,
pub sql_tab: SQLTabState<'app>,
#[cfg(feature = "flightsql")]
pub flightsql_tab: FlightSQLTabState<'app>,
pub logs_tab: LogsTabState,
pub history_tab: HistoryTabState,
pub tabs: Tabs,
}
impl AppState<'_> {
pub fn new(config: AppConfig) -> Self {
let tabs = Tabs::default();
let sql_tab_state = SQLTabState::new(&config);
#[cfg(feature = "flightsql")]
let flightsql_tab_state = FlightSQLTabState::new(&config);
let logs_tab_state = LogsTabState::default();
let history_tab_state = HistoryTabState::default();
AppState {
config,
tabs,
sql_tab: sql_tab_state,
#[cfg(feature = "flightsql")]
flightsql_tab: flightsql_tab_state,
logs_tab: logs_tab_state,
history_tab: history_tab_state,
should_quit: false,
}
}
}