新增备份监控与定时配置
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package backupmonitor
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"hfb_sys/backend/pkg/response"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Status struct {
|
||||
GeneratedAt string `json:"generated_at"`
|
||||
Health string `json:"health"`
|
||||
Schedule struct {
|
||||
Enabled string `json:"enabled"`
|
||||
FullHour string `json:"full_hour"`
|
||||
FullMinute string `json:"full_minute"`
|
||||
BinlogIntervalMinutes string `json:"binlog_interval_minutes"`
|
||||
} `json:"schedule"`
|
||||
LastFull struct {
|
||||
LocalComplete string `json:"local_complete"`
|
||||
RemoteComplete string `json:"remote_complete"`
|
||||
} `json:"last_full"`
|
||||
LastBinlog struct {
|
||||
File string `json:"file"`
|
||||
RemoteDir string `json:"remote_dir"`
|
||||
} `json:"last_binlog"`
|
||||
LastJob struct {
|
||||
Type string `json:"type"`
|
||||
Status string `json:"status"`
|
||||
At string `json:"at"`
|
||||
Message string `json:"message"`
|
||||
} `json:"last_job"`
|
||||
}
|
||||
|
||||
type Handler struct{ path string }
|
||||
|
||||
func NewHandler(path string) *Handler { return &Handler{path: path} }
|
||||
|
||||
func (h *Handler) Status(c *gin.Context) {
|
||||
content, err := os.ReadFile(h.path)
|
||||
if err != nil {
|
||||
if errors.Is(err, os.ErrNotExist) {
|
||||
response.Error(c, http.StatusServiceUnavailable, "backup_status_unavailable", "备份状态尚未生成")
|
||||
return
|
||||
}
|
||||
response.Error(c, http.StatusInternalServerError, "backup_status_unavailable", "无法读取备份状态")
|
||||
return
|
||||
}
|
||||
var status Status
|
||||
if err := json.Unmarshal(content, &status); err != nil {
|
||||
response.Error(c, http.StatusServiceUnavailable, "backup_status_invalid", "备份状态文件格式无效")
|
||||
return
|
||||
}
|
||||
response.OK(c, status)
|
||||
}
|
||||
Reference in New Issue
Block a user