package tepapis

import (
	"fmt"
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/pingcap/tep/pkg/apis/apiserver/v1alpha1"
	"github.com/pingcap/tep/pkg/utils"
)

func (api *API) CreateMetadataScheduledBackup(c *gin.Context) {
	scheduleBackup := &v1alpha1.MetadataScheduledBackup{}
	if err := c.ShouldBindJSON(scheduleBackup); err != nil {
		msg := fmt.Sprintf("invalid request body: %v", err)
		utils.SendMsg(c, nil, utils.NewAPIStatus(http.StatusBadRequest, msg))
		return
	}

	resp, status := api.Server.CreateMetadataScheduledBackup(scheduleBackup)
	utils.SendMsg(c, resp, status)
}

func (api *API) CreateMetadataBackup(c *gin.Context) {
	backup := &v1alpha1.MetadataBackup{}
	if err := c.ShouldBindJSON(backup); err != nil {
		msg := fmt.Sprintf("invalid request body: %v", err)
		utils.SendMsg(c, nil, utils.NewAPIStatus(http.StatusBadRequest, msg))
		return
	}

	resp, status := api.Server.CreateMetadataBackup(backup)
	utils.SendMsg(c, resp, status)
}

func (api *API) UpdateMetadataScheduledBackup(c *gin.Context) {
	schedule := &v1alpha1.MetadataScheduledBackup{}
	if err := c.ShouldBindJSON(schedule); err != nil {
		msg := fmt.Sprintf("invalid request body: %v", err)
		utils.SendMsg(c, nil, utils.NewAPIStatus(http.StatusBadRequest, msg))
		return
	}

	resp, status := api.Server.UpdateMetadataScheduledBackup(schedule)
	utils.SendMsg(c, resp, status)
}

func (api *API) GetMetadataScheduledBackup(c *gin.Context) {
	resp, status := api.Server.GetMetadataScheduledBackup()
	utils.SendMsg(c, resp, status)
}
