package tikv_cdc

import (
	"net/http"
	"time"

	"github.com/pingcap/errors"
	"github.com/pingcap/test-infra/sdk/pkg/util/pdutil"
)

const (
	TiKVCDCServiceSafePointID  = "tikvcdc"
	GCWorkerServiceSafePointID = "gc_worker"
	GCSafePointID              = "gc_safe_point"
)

func NewPDClient(pdAddr string) *pdutil.Client {
	return pdutil.NewPDClient(&http.Client{
		Timeout: 10 * time.Second,
	}, pdAddr)
}

func GetServiceSafePoint(pdClient *pdutil.Client, service_id string) (uint64, error) {
	serviceGCSafePoint, err := pdClient.GetGCSafePoint()
	if err != nil {
		return 0, errors.Trace(err)
	}
	if service_id == GCSafePointID {
		return serviceGCSafePoint.GCSafePoint, nil
	}

	for _, serviceSafePoint := range serviceGCSafePoint.ServiceGCSafepoints {
		if serviceSafePoint.ServiceID == service_id {
			return serviceSafePoint.SafePoint, nil
		}
	}
	return 0, errors.Errorf("Not found %s safepoint", service_id)
}
