package query

import (
	"github.com/gin-gonic/gin"

	"github.com/tidbcloud/aisupport/services/jsm-syncer/internal/integrations/mgmt"
)

func (h *Handler) GetClusterByID(c *gin.Context) {
	cluster, err := h.query.GetClusterByID(c, c.Param("cluster_id"))
	if err != nil {
		fail(c, err)
		return
	}

	success(c, &GetClusterResponse{
		Cluster: toClusterResponse(*cluster),
	})
}

func (h *Handler) GetOrgClusters(c *gin.Context) {
	pageSize, err := parseClusterPageSize(c)
	if err != nil {
		fail(c, err)
		return
	}

	orgID := c.Param("tidbcloud_org_id")
	page, err := h.query.ListOrgClusters(c, orgID, mgmt.ListClustersOptions{
		PageSize:  pageSize,
		PageToken: c.Query("page_token"),
		ClusterID: c.Query("cluster_id"),
	})
	if err != nil {
		fail(c, err)
		return
	}

	success(c, &GetOrgClustersResponse{
		TiDBCloudOrgID: orgID,
		Clusters:       toClusterResponses(page.Clusters),
		NextPageToken:  page.NextPageToken,
	})
}
