Skip to content

Commit

Permalink
Completed Redis Status.
Browse files Browse the repository at this point in the history
  • Loading branch information
fuyoo committed Aug 18, 2024
1 parent 9f8f364 commit b7e2b62
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 49 deletions.
32 changes: 0 additions & 32 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 19 additions & 5 deletions src-tauri/src/api/mod.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -12,16 +12,30 @@ use crate::{r_404, r_ok};
pub async fn request(path: &str, connection_info: rdb::ConnectionImpl, data: &str)
-> Result<String> {
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<Response<Option<String>>> {
// check connection status
async fn status(connection_info: ConnectionImpl) -> Result<Response<Option<String>>> {
let r = connection_info.into_client()?.do_command::<Option<String>>(&cmd("ping")).await?;
Ok(r_ok!(r,None))
}

// base_info
async fn base_info(connection_info: ConnectionImpl,data: &str) -> Result<Response<Option<String>>> {
if data == "" {
let r = connection_info.into_client()?.do_command::<Option<String>>(&cmd("info")).await?;
return Ok(r_ok!(r,None));
}
let r = connection_info.into_client()?.do_command::<Option<String>>(&cmd("info").arg(data)).await?;
Ok(r_ok!(r,None))
}

// async fn keys(connection_impl: ConnectionImpl,data: &str) -> Result<Response<Vec<String>>> {
// //struct res =
// // connection_impl.into_client()?.do_command()
// }

25 changes: 23 additions & 2 deletions src/api/backend.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

import db from "@/database"
import {invoke} from "@tauri-apps/api/core"
import {useTabStore} from "@/store/tabs.ts";
Expand All @@ -13,9 +12,12 @@ export const Req = async <T>(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<string>("request", {
path,
data: JSON.stringify(data),
data,
connectionInfo: info
})
return JSON.parse(res) as ResponseBody<T>
Expand All @@ -25,3 +27,22 @@ export const Req = async <T>(path: string, data: any) => {
export function status<T>(data: any) {
return Req<T>("/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<T>(data: InfoSection) {
return Req<T>("/info", data)
}
3 changes: 1 addition & 2 deletions src/layout/Layout.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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)
</script>

<template>
Expand Down Expand Up @@ -108,7 +107,7 @@ console.log(isMacos)
</div>
</div>
</div>
<div class="bg-#EDF1F2 _ctx_scroller">
<div class="bg-#EDF1F2 _ctx_scroller" :style="{width: min ? 'calc(100vw - 65px)' : 'calc(100vw - 175px)'}">
<router-view v-slot="{ Component }">
<transition>
<keep-alive>
Expand Down
4 changes: 2 additions & 2 deletions src/layout/TabViewLayout.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import TabView from '@/views/TabView'
</script>

<template>
<div>
<div v-for="(item) of tabStore.list" :key="item.id" :title="item.name" v-show="item.id == tabStore.activeTab?.id">
<div class="w-full h-full">
<div class="w-full h-full" v-for="(item) of tabStore.list" :key="item.id" :title="item.name" v-show="item.id == tabStore.activeTab?.id">
<TabView/>
</div>
</div>
Expand Down
1 change: 0 additions & 1 deletion src/store/tabs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ export const useTabStore = defineStore('tabs', () => {
}
const changeTab = async (tabId: number) => {
activeId.value = tabId
console.log(activeTab.value)
await router.push({
path: activeTab.value?.path,
query: {...activeTab.value}
Expand Down
23 changes: 19 additions & 4 deletions src/views/TabView/Data.vue
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
<script setup lang="ts">
import {info, InfoSection} from "@/api/backend.ts";
import {ref} from "vue";
const status = ref<string[][]>([]);
info<String>(InfoSection.All)
.then(res => {
status.value = res.data.split("# ").filter(Boolean).map(e => e.split("\r\n").filter(Boolean));
})
</script>

<template>
<h1>connected successful!</h1>
</template>
<div class="w-full">
<a-tabs direction="vertical" class="w-full">
<a-tab-pane :title="section[0]" v-for="(section,k) in status" :key="k" >
<a-list class="mb-4 mr-4">
<a-list-item v-for="item in section.slice(1)" :key="item" >
{{item}}
</a-list-item></a-list>
</a-tab-pane>
</a-tabs>
</div>

<style scoped>
</template>

<style scoped lang="scss">
</style>
2 changes: 1 addition & 1 deletion src/views/TabView/Page.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const cmp = shallowRef(Status as any)
</script>

<template>
<div class="w-full">
<div class="w-full h-full">
<Component :is="cmp" @ok="() => cmp = Data"/>
</div>
</template>
Expand Down

0 comments on commit b7e2b62

Please sign in to comment.