package message

import (
	"errors"

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

type CreateClusterRequestValidatable struct {
	*regionalpb.CreateClusterRequest
}

func (req CreateClusterRequestValidatable) Validate() error {
	if req.Cluster == nil {
		return errors.New("cluster is required")
	}
	if req.Cluster.Id == "" {
		return errors.New("cluster id is required")
	}
	if req.Cluster.VpcSettings == nil {
		return errors.New("vpc settings is required")
	}

	if req.Cluster.VpcSettings.GetExistingAwsVpcId() == "" &&
		req.Cluster.VpcSettings.GetExistingGcpNetworkName() == "" &&
		req.Cluster.VpcSettings.GetExistingAzureVnetId() == "" &&
		req.Cluster.VpcSettings.GetNewCidrBlock() == "" {
		return errors.New("vpc settings is required")
	}
	return nil
}
