From 9aeda62c203f371e520e1d8e5dfa93ca961f85cf Mon Sep 17 00:00:00 2001 From: fuyoo Date: Fri, 28 Jun 2024 17:38:26 +0800 Subject: [PATCH] add redis define. --- src-tauri/Cargo.lock | 43 ++++++++++++++++++++++++++++++++++++ src-tauri/Cargo.toml | 1 + src-tauri/src/api/defines.rs | 18 +++++++++++++++ src-tauri/src/api/mod.rs | 1 + src/api/backend.ts | 29 ++++++++++++++++++++++++ src/views/TabView.vue | 4 ++++ 6 files changed, 96 insertions(+) create mode 100644 src-tauri/src/api/defines.rs diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 5c16783..859cd60 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -62,6 +62,17 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.66", +] + [[package]] name = "atk" version = "0.18.0" @@ -183,6 +194,7 @@ name = "bsrdc" version = "0.0.0" dependencies = [ "log", + "redis", "serde", "serde_json", "tauri", @@ -380,7 +392,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", + "futures-core", "memchr", + "pin-project-lite", + "tokio", + "tokio-util", ] [[package]] @@ -2441,6 +2457,27 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" +[[package]] +name = "redis" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0d7a6955c7511f60f3ba9e86c6d02b3c3f144f8c24b288d1f4e18074ab8bbec" +dependencies = [ + "async-trait", + "bytes", + "combine", + "futures-util", + "itoa 1.0.11", + "percent-encoding", + "pin-project-lite", + "ryu", + "sha1_smol", + "socket2", + "tokio", + "tokio-util", + "url", +] + [[package]] name = "redox_syscall" version = "0.5.1" @@ -2781,6 +2818,12 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + [[package]] name = "sha2" version = "0.10.8" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 5e0a522..cc4a064 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -18,6 +18,7 @@ serde_json = "1" window-shadows = "0.2.2" log = { version = "0.4.21", features = [] } tauri-plugin-shell = "2.0.0-beta.7" +redis = { version = "0.25.4", features = ["tokio-comp"] } [features] # This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!! diff --git a/src-tauri/src/api/defines.rs b/src-tauri/src/api/defines.rs new file mode 100644 index 0000000..8988f65 --- /dev/null +++ b/src-tauri/src/api/defines.rs @@ -0,0 +1,18 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Debug)] +pub struct ConnectionInfo{ + pub host: string, + pub port: Option, + pub db: Option, + pub username: Option, + pub password: Option +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct ConnectionImpl { + pub id: usize, + pub name: String, + pub node: Vec, + pub cluster: Option +} \ No newline at end of file diff --git a/src-tauri/src/api/mod.rs b/src-tauri/src/api/mod.rs index 6ef7bbb..1f559cb 100644 --- a/src-tauri/src/api/mod.rs +++ b/src-tauri/src/api/mod.rs @@ -18,6 +18,7 @@ impl Response { } } + // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command #[command] pub fn request(rid: &str, action: &str, connection_info: &str, data: &str) -> String { diff --git a/src/api/backend.ts b/src/api/backend.ts index e69de29..a9aaa41 100644 --- a/src/api/backend.ts +++ b/src/api/backend.ts @@ -0,0 +1,29 @@ +import { useRoute } from "vue-router" +import db from "@/database" +import { invoke } from "@tauri-apps/api/core" +const getConnectionInfo = async () => { + const route = useRoute() + const id = Number(route.query.id) + return await db.connection.get(id) +} + +export interface ResponseBody { + code: number, + data:T, + msg: string +} + +export const RReq = async (action:string, data: any) => { + const info = await getConnectionInfo() + return invoke>("request",{ + rid:Math.random().toString(36), + action, + data:JSON.stringify(data), + connectionInfo:JSON.stringify(info) + }) +} + + +export function status(data:any) { + return RReq("/status",data) +} diff --git a/src/views/TabView.vue b/src/views/TabView.vue index 2b0c73f..df9c9d9 100644 --- a/src/views/TabView.vue +++ b/src/views/TabView.vue @@ -1,8 +1,12 @@