เพิ่ม ดู สถานะของ backUp และ restore

This commit is contained in:
Net 2024-07-11 15:31:25 +07:00
parent dd097979d8
commit b1e5703ace

View file

@ -4,7 +4,10 @@ import config from "@/app.config";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import type { DataBackup } from "@/modules/04_system/interface/response/Main"; import type {
DataBackup,
BackUpRunning,
} from "@/modules/04_system/interface/response/Main";
import { ref } from "vue"; import { ref } from "vue";
@ -20,6 +23,13 @@ const {
export const useDataStore = defineStore("storeData", () => { export const useDataStore = defineStore("storeData", () => {
const dataBackUp = ref<DataBackup[]>([]); const dataBackUp = ref<DataBackup[]>([]);
const prevBackupRunTotal = ref<number>(-1);
const backupRunTotal = ref<number>(0);
const prevRestoreRunTotal = ref<number>(-1);
const restoreRunTotal = ref<number>(0);
const recordRestore = ref<Record<string, DataBackup>>({});
async function fetchListBackup() { async function fetchListBackup() {
showLoader(); showLoader();
@ -27,6 +37,13 @@ export const useDataStore = defineStore("storeData", () => {
.get(config.API.backup) .get(config.API.backup)
.then((res) => { .then((res) => {
dataBackUp.value = res.data; dataBackUp.value = res.data;
dataBackUp.value = dataBackUp.value.map((item) => {
return {
...item,
status: "สำเร็จ",
};
});
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
@ -38,7 +55,7 @@ export const useDataStore = defineStore("storeData", () => {
await http await http
.post(config.API.backup + "/create") .post(config.API.backup + "/create")
.then(async (res) => { .then(async (res) => {
fetchListBackup(); await backupRunningList();
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
@ -52,7 +69,7 @@ export const useDataStore = defineStore("storeData", () => {
data: { filename: filename }, data: { filename: filename },
}) })
.then(async (res) => { .then(async (res) => {
fetchListBackup(); await fetchListBackup();
}) })
.finally(() => { .finally(() => {
hideLoader(); hideLoader();
@ -60,21 +77,95 @@ export const useDataStore = defineStore("storeData", () => {
} }
async function restore(filename: string) { async function restore(filename: string) {
showLoader();
await http await http
.post(config.API.restore, { .post<string>(config.API.restore, {
filename: filename, filename: filename,
}) })
.then((res) => { .then(async (res) => {
fetchListBackup(); const tempValue = dataBackUp.value.find((item) => {
}) if (item.name === filename) {
.finally(() => { return true;
hideLoader(); }
});
if (tempValue) {
recordRestore.value[res.data] = tempValue;
}
restoreRunningList();
});
}
async function backupRunningList() {
await http
.get<BackUpRunning[]>(config.API.backup + "/backup-running-list")
.then(async (res) => {
backupRunTotal.value = res.data.length;
if (backupRunTotal.value == 0) {
fetchListBackup();
prevBackupRunTotal.value = backupRunTotal.value;
return;
}
setTimeout(async () => {
backupRunningList();
}, 1000);
if (prevBackupRunTotal.value !== backupRunTotal.value) {
res.data.forEach((item) => {
const index = dataBackUp.value.findIndex((data) => {
if (data.name === item.created_at.toString()) return true;
});
if (index === -1) {
dataBackUp.value.push({
id: item.created_at.toString(),
name: "-",
timestamp: item.created_at,
status: item.running ? "running" : "success",
});
}
});
prevBackupRunTotal.value = backupRunTotal.value;
}
});
}
async function restoreRunningList() {
await http
.get<BackUpRunning[]>(config.API.backup + "/restore-running-list")
.then(async (res) => {
console.log(res.data);
restoreRunTotal.value = res.data.length;
if (restoreRunTotal.value == 0) {
fetchListBackup();
prevRestoreRunTotal.value = restoreRunTotal.value;
return;
}
setTimeout(async () => {
restoreRunningList();
}, 1000);
if (prevRestoreRunTotal.value !== restoreRunTotal.value) {
for (const [key, value] of Object.entries(recordRestore.value)) {
if (!res.data.find((v) => v.id === key))
delete recordRestore.value[key];
else value.status = "running";
}
prevRestoreRunTotal.value = restoreRunTotal.value;
}
}); });
} }
return { return {
dataBackUp, dataBackUp,
backupRunTotal,
fetchListBackup, fetchListBackup,
createBackUp, createBackUp,