diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 8781010..8ee97c8 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -196,9 +196,6 @@ dependencies = [ "anyhow", "async-trait", "log", - "once_cell", - "parking_lot", - "pin-project-lite", "redis", "serde", "serde_json", @@ -748,12 +745,6 @@ dependencies = [ "rustc_version", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.0.30" @@ -2051,13 +2042,10 @@ version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "backtrace", "cfg-if", "libc", - "petgraph", "redox_syscall", "smallvec", - "thread-id", "windows-targets 0.52.5", ] @@ -2073,16 +2061,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.2.6", -] - [[package]] name = "phf" version = "0.8.0" @@ -3409,16 +3387,6 @@ dependencies = [ "syn 2.0.66", ] -[[package]] -name = "thread-id" -version = "4.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe8f25bbdd100db7e1d34acf7fd2dc59c4bf8f7483f505eaa7d4f12f76cc0ea" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "thread_local" version = "1.1.8" diff --git a/src-tauri/src/api/mod.rs b/src-tauri/src/api/mod.rs index 7d8c6f3..e4b67f6 100644 --- a/src-tauri/src/api/mod.rs +++ b/src-tauri/src/api/mod.rs @@ -1,7 +1,7 @@ -use redis::cmd; +use redis::{cmd}; use tauri::{command, Result}; use crate::api::resp::{IntoResponse}; -use crate::api::rdb::RedisClientImpl; +use crate::api::rdb::{ConnectionImpl, RedisClientImpl}; use crate::api::resp::Response; pub mod rdb; @@ -12,16 +12,30 @@ use crate::{r_404, r_ok}; pub async fn request(path: &str, connection_info: rdb::ConnectionImpl, data: &str) -> Result { match path { - "/status" => status(connection_info, data).await?.into_response(), + "/status" => status(connection_info).await?.into_response(), + "/info" => base_info(connection_info,data).await?.into_response(), &_ => r_404!(path).into_response() } } -// -async fn status(connection_info: rdb::ConnectionImpl, data: &str) -> Result>> { +// check connection status +async fn status(connection_info: ConnectionImpl) -> Result>> { let r = connection_info.into_client()?.do_command::>(&cmd("ping")).await?; Ok(r_ok!(r,None)) } +// base_info +async fn base_info(connection_info: ConnectionImpl,data: &str) -> Result>> { + if data == "" { + let r = connection_info.into_client()?.do_command::>(&cmd("info")).await?; + return Ok(r_ok!(r,None)); + } + let r = connection_info.into_client()?.do_command::>(&cmd("info").arg(data)).await?; + Ok(r_ok!(r,None)) +} +// async fn keys(connection_impl: ConnectionImpl,data: &str) -> Result>> { +// //struct res = +// // connection_impl.into_client()?.do_command() +// } diff --git a/src/api/backend.ts b/src/api/backend.ts index 8d3cb9d..8d511a0 100644 --- a/src/api/backend.ts +++ b/src/api/backend.ts @@ -1,4 +1,3 @@ - import db from "@/database" import {invoke} from "@tauri-apps/api/core" import {useTabStore} from "@/store/tabs.ts"; @@ -13,9 +12,12 @@ export const Req = async (path: string, data: any) => { const tabs = useTabStore() const id = Number(tabs.activeTab?.id || '0') const info = await db.connection.get(id); + if (typeof data == "object") { + data = JSON.stringify(data) + } const res = await invoke("request", { path, - data: JSON.stringify(data), + data, connectionInfo: info }) return JSON.parse(res) as ResponseBody @@ -25,3 +27,22 @@ export const Req = async (path: string, data: any) => { export function status(data: any) { return Req("/status", data) } + +export enum InfoSection { + Server = "Server", + Clients = "Clients", + Memory = "Memory", + Persistence = "Persistence", + Stats = "Stats", + Replication = "Replication", + CPU = "CPU", + Modules = "Modules", + ErrorStats = "Errorstats", + Cluster = "Cluster", + Keyspace = "Keyspace", + All = "" +} + +export function info(data: InfoSection) { + return Req("/info", data) +} \ No newline at end of file diff --git a/src/layout/Layout.vue b/src/layout/Layout.vue index bf21564..99d7e19 100644 --- a/src/layout/Layout.vue +++ b/src/layout/Layout.vue @@ -39,7 +39,6 @@ const okFn = (id: string | number) => tabStore.changeTab(id as number) const closeFn = (id: string | number) => tabStore.delTab(id as number) const isMacos = navigator.userAgent.indexOf("Mac") > -1 -console.log(isMacos)