package region

import (
	"context"

	globalngv1 "github.com/tidbcloud/tidb-management-service/api/spec/global/nextgen/v1"
	tidbmgmtservicev1 "github.com/tidbcloud/tidb-management-service/api/spec/tidb_mgmt_service/v1"
	"github.com/tidbcloud/tidb-management-service/utilities/bizerr"
)

func (c serverImpl) RegisterRegionProviderIdentity(ctx context.Context,
	request *tidbmgmtservicev1.RegisterRegionProviderIdentityRequest,
) (*globalngv1.RegionProviderIdentity, error) {
	switch request.GetDeployType() {
	case tidbmgmtservicev1.DeployType_DEPLOY_TYPE_NEXTGEN:
		r, err := c.nextgenCli.RegisterRegionProviderIdentity(ctx, &globalngv1.RegisterRegionProviderIdentityRequest{
			RegionLogicalName:      request.RegionLogicalName,
			RegionProviderIdentity: request.RegionProviderIdentity,
		})
		if err != nil {
			return nil, err
		}
		return r, nil
	default:
		return nil, bizerr.New(bizerr.ErrCodeParams, "deploy type is invalid")
	}
}

func (c serverImpl) ListRegionProviderIdentities(ctx context.Context,
	request *tidbmgmtservicev1.ListRegionProviderIdentitiesRequest,
) (*globalngv1.ListRegionProviderIdentitiesResponse, error) {
	switch request.GetDeployType() {
	case tidbmgmtservicev1.DeployType_DEPLOY_TYPE_NEXTGEN:
		r, err := c.nextgenCli.ListRegionProviderIdentities(ctx, &globalngv1.ListRegionProviderIdentitiesRequest{
			RegionLogicalName: request.RegionLogicalName,
		})
		if err != nil {
			return nil, err
		}
		return r, nil
	default:
		return nil, bizerr.New(bizerr.ErrCodeParams, "deploy type is invalid")
	}
}
