1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
use actix_session::Session; use actix_web::{web, HttpRequest, HttpResponse}; use serde::Deserialize; use dbui_core::ResultExt; use dbui_service::AppConfig; pub fn detail(session: Session, cfg: web::Data<AppConfig>, key: web::Path<String>, req: HttpRequest) -> HttpResponse { crate::act(&session, &cfg, &req, |ctx| { let p = ctx.app().load_project(&key)?; dbui_templates::project::project_detail::detail(&ctx, &p) }) } pub fn options(session: Session, cfg: web::Data<AppConfig>, key: web::Path<String>, req: HttpRequest) -> HttpResponse { crate::act(&session, &cfg, &req, |ctx| { let p = ctx.app().load_project(&key)?; dbui_templates::project::project_options::options(&ctx, &p) }) } #[derive(Debug, Deserialize)] pub struct SqlRequest { sql: String } pub fn test( session: Session, cfg: web::Data<AppConfig>, sr: web::Query<SqlRequest>, key: web::Path<String>, req: HttpRequest ) -> HttpResponse { crate::act(&session, &cfg, &req, |ctx| { let mut conn = ctx.app().open_db(&key)?; let id = uuid::Uuid::new_v4(); let sql = &sr.sql; let stmt = conn.prepare(&sql).chain_err(|| format!("Cannot parse query [{}]", key))?; let start_ms = dbui_core::util::current_time_ms(); let rows = conn.query(&stmt, &[]).chain_err(|| format!("Cannot run query [{}]", key))?; let duration_ms = (dbui_core::util::current_time_ms() - start_ms) as i32; let result = dbui_database::from_rows(id, &sql, rows, duration_ms)?; dbui_templates::sql::results(&ctx, &sql, &result) }) }