package regionalservercli

import (
	"context"
	"net/url"

	grpc "google.golang.org/grpc"

	regionalpb "github.com/tidbcloud/infra-provider/api/tidbcloud/regional-server/v1"
)

type APPBoxServiceHTTPClient struct {
	baseServiceHTTPClient
}

func NewAPPBoxServiceHTTPClient(endpoint string) *APPBoxServiceHTTPClient {
	return &APPBoxServiceHTTPClient{
		baseServiceHTTPClient: *newBaseServiceHTTPClient(endpoint),
	}
}

func (c *APPBoxServiceHTTPClient) ListAPPBoxs(ctx context.Context, in *regionalpb.ListAPPBoxesRequest, opts ...grpc.CallOption) (*regionalpb.ListAPPBoxesResponse, error) {
	query := make(url.Values)
	if in.GetTenantId() != "" {
		query.Add("tenantId", in.GetTenantId())
	}
	if in.GetProjectId() != "" {
		query.Add("projectId", in.GetProjectId())
	}
	if in.GetClusterId() != "" {
		query.Add("clusterId", in.GetClusterId())
	}
	// for _, status := range in.GetStatuses() {
	// 	query.Add("statuses", strconv.FormatInt(int64(status), 10))
	// }

	url := c.buildRequestURL("/appboxes?%s", query.Encode())
	data, err := c.doHttpGetRequest(ctx, url)
	if err != nil {
		return nil, err
	}
	out := new(regionalpb.ListAPPBoxesResponse)
	if err := c.unmarshalOpt.Unmarshal(data, out); err != nil {
		return nil, err
	}
	return out, nil
}
