// Package controller add by blacknc <blacknc@163.com> at 2023/06/16 14:19:08
package controller

import (
	dtoDataapi "dataservices/internal/dto/dataapi"
	dto "dataservices/internal/dto/dataapi_gateway"
	service "dataservices/internal/service/central"
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/tidbcloud/tiinf/errs"
	"github.com/tidbcloud/tiinf/monitor/tilog"
	"go.uber.org/zap"
)

func HandleEventRecord(c *gin.Context) {
	ctx := c.Request.Context()
	var request dto.HistoryRecordReq
	if err := c.ShouldBind(&request); err != nil {
		fail(c, errs.NewBadRequest("invalid params", err))
		return
	}

	var err error
	switch request.RecordType {
	case dto.EndpointExecRecordType:
		err = service.HandleEndpointExecRecord(ctx, &request)
	default:
		err = errs.NewBadRequest("unsupported record type: "+string(request.RecordType), nil)
	}

	if err != nil {
		fail(c, err)
		return
	}
	succ(c, dtoDataapi.SuccessV2())
}

func succ(c *gin.Context, data interface{}) {
	c.JSON(http.StatusOK, data)
}

func fail(c *gin.Context, err error) {
	tilog.Error(c.Request.Context(), "failed to execute api:"+c.FullPath(), zap.Error(err))
	c.Error(err)
}
