package api

import (
	"context"

	ccent "github.com/tidbcloud/devops/entity/cloudconfig"
)

type ListParamAttributesParam struct {
	ClusterType string
	ConfigType  string
	VersionIs   *string
	NameLike    *string
	NameIn      []string
	Page        int64
	PerPage     int64
}

type UpdateParamterAttributeParam struct {
	ApplyPolicy  *ccent.ParameterApplyPolicy
	DefaultValue *any
	Validation   *string
	Description  *string
	RiskLevel    *ccent.RiskLevel
	UpdatedBy    string
}

type ParameterDirectoryService interface {
	ListParameterAttribute(ctx context.Context, param ListParamAttributesParam) ([]*ccent.ParameterAttribute, int64, error)
	GetParameterAttribute(ctx context.Context, clusterType, configType, version, name string) (*ccent.ParameterAttribute, error)
	CreateParameterAttribute(ctx context.Context, attr ccent.ParameterAttribute) error
	UpdateParameterAttribute(ctx context.Context, clusterType, configType, version, name string, param UpdateParamterAttributeParam) error
	CloneParameterAttributes(ctx context.Context, fromVersion, toVersion string) error
}
