package k8sresource

import (
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/pingcap/log"
	regionalpb "github.com/tidbcloud/infra-provider/api/tidbcloud/regional-server/v1"
	"go.uber.org/zap"

	"github.com/tidbcloud/infra-provider/regional-server/pkg/router/interceptor"
	svck8sresource "github.com/tidbcloud/infra-provider/regional-server/pkg/service/k8sresource"
)

type Handler struct {
	svc *svck8sresource.Service
}

func NewHandler(svc *svck8sresource.Service) *Handler {
	return &Handler{svc: svc}
}

func (h *Handler) ListK8sResources(c *gin.Context) {
	req := new(regionalpb.ListK8SResourcesRequest)
	if ok := interceptor.HandleJsonPbRequestFromBody(c, req); !ok {
		return
	}
	resp, err := h.svc.ListK8sResources(c, req)
	if err != nil {
		log.Error("failed to list k8s resources", zap.Error(err))
		interceptor.Fail(c, err)
		return
	}
	interceptor.SucceedPb(c, http.StatusOK, resp)
}
