use crate::ctx::ClientContext;
use dbui_core::RequestMessage;
use anyhow::Result;
use uuid::Uuid;
pub(crate) struct EventHandler {}
impl EventHandler {
pub(crate) fn handle(ctx: &ClientContext, t: &str, k: &str, v: &str) -> Result<()> {
match t {
"new-query" => {
let id = Uuid::new_v4();
match ctx.tabs().get_tab(&id.to_string()) {
Some(idx) => ctx.tabs().activate_tab(idx)?,
None => {
let template = crate::templates::query::new_query(&ctx, &id);
ctx.tabs().add_tab(&id.to_string(), Some("pencil"), "New Query", template, &ctx)?
}
};
}
"run-sql" => {
let id = Uuid::new_v4();
let msg = RequestMessage::RunQuery {
id,
ctx: k.into(),
sql: v.into()
};
ctx.send(msg);
}
"table-sql" => {}
"table-detail" => {
let id = format!("table-{}", k);
match ctx.tabs().get_tab(&id) {
Some(idx) => ctx.tabs().activate_tab(idx)?,
None => {
let template = crate::templates::table::table(ctx, k);
ctx.tabs().add_tab(&id, Some("bookmark"), k, template, &ctx)?
}
};
}
"refresh-schema" => ctx.send(RequestMessage::RefreshSchema { full: true }),
_ => warn!("Unhandled event [{}]", t)
};
Ok(())
}
}