package controller
import (
"net/http"
"github.com/go-chi/chi"
"github.com/jinzhu/gorm"
"github.com/goodrain/rainbond/api/handler"
"github.com/goodrain/rainbond/api/handler/group"
ctxutil "github.com/goodrain/rainbond/api/util/ctx"
httputil "github.com/goodrain/rainbond/util/http"
)
func Backups(w http.ResponseWriter, r *http.Request) {
groupID := r.FormValue("group_id")
if groupID == "" {
httputil.ReturnError(r, w, 400, "group id can not be empty")
return
}
list, err := handler.GetAPPBackupHandler().GetBackupByGroupID(groupID)
if err != nil {
err.Handle(r, w)
return
}
httputil.ReturnSuccess(r, w, list)
}
func NewBackups(w http.ResponseWriter, r *http.Request) {
var gb group.Backup
ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &gb.Body, nil)
if !ok {
return
}
bean, err := handler.GetAPPBackupHandler().NewBackup(gb)
if err != nil {
err.Handle(r, w)
return
}
httputil.ReturnSuccess(r, w, bean)
}
func BackupCopy(w http.ResponseWriter, r *http.Request) {
var gb group.BackupCopy
ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &gb.Body, nil)
if !ok {
return
}
bean, err := handler.GetAPPBackupHandler().BackupCopy(gb)
if err != nil {
err.Handle(r, w)
return
}
httputil.ReturnSuccess(r, w, bean)
}
func Restore(w http.ResponseWriter, r *http.Request) {
var br group.BackupRestore
ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &br.Body, nil)
if !ok {
return
}
br.BackupID = chi.URLParam(r, "backup_id")
tenantID := r.Context().Value(ctxutil.ContextKey("tenant_id")).(string)
br.Body.TenantID = tenantID
bean, err := handler.GetAPPBackupHandler().RestoreBackup(br)
if err != nil {
err.Handle(r, w)
return
}
httputil.ReturnSuccess(r, w, bean)
}
func RestoreResult(w http.ResponseWriter, r *http.Request) {
restoreID := chi.URLParam(r, "restore_id")
bean, err := handler.GetAPPBackupHandler().RestoreBackupResult(restoreID)
if err != nil {
err.Handle(r, w)
return
}
httputil.ReturnSuccess(r, w, bean)
}
func GetBackup(w http.ResponseWriter, r *http.Request) {
backupID := chi.URLParam(r, "backup_id")
bean, err := handler.GetAPPBackupHandler().GetBackup(backupID)
if err != nil {
err.Handle(r, w)
return
}
httputil.ReturnSuccess(r, w, bean)
}
func DeleteBackup(w http.ResponseWriter, r *http.Request) {
backupID := chi.URLParam(r, "backup_id")
err := handler.GetAPPBackupHandler().DeleteBackup(backupID)
if err != nil {
if err == gorm.ErrRecordNotFound {
httputil.ReturnError(r, w, 404, "not found")
return
}
httputil.ReturnError(r, w, 500, err.Error())
return
}
httputil.ReturnSuccess(r, w, nil)
}