package message

import (
	"errors"

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

type CreateAPPBoxReq struct {
	VPCID     string
	Name      string
	Namespace string
	TenantID  string
	ProjectID string
}

func (r *CreateAPPBoxReq) Validate() error {
	if r == nil {
		return errors.New("request is nil")
	}
	if r.VPCID == "" {
		return errors.New("vpc id is required")
	}
	if r.Name == "" {
		return errors.New("name is required")
	}
	if r.Namespace == "" {
		return errors.New("namespace is required")
	}
	return nil
}

type DeleteAPPBoxReqValidatable struct {
	*regionalapiv1.DeleteAPPBoxRequest
}

func (r *DeleteAPPBoxReqValidatable) Validate() error {
	if r == nil {
		return errors.New("request is nil")
	}
	if r.Name == "" {
		return errors.New("name is required")
	}
	return nil
}

type GetAPPBoxReqValidatable struct {
	*regionalapiv1.GetAPPBoxRequest
}

func (r *GetAPPBoxReqValidatable) Validate() error {
	if r == nil {
		return errors.New("request is nil")
	}
	if r.Name == "" {
		return errors.New("name is required")
	}
	return nil
}

type ListAPPBoxesReqValidatable struct {
	*regionalapiv1.ListAPPBoxesRequest
}

func (r *ListAPPBoxesReqValidatable) Validate() error {
	if r == nil {
		return errors.New("request is nil")
	}
	if r.TenantId == "" {
		return errors.New("tenantId is empty")
	}
	return nil
}
