เพิ่ม ดู สถานะของ backUp และ restore
This commit is contained in:
parent
dd097979d8
commit
b1e5703ace
1 changed files with 101 additions and 10 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue