package cloudconfig

import (
	"github.com/tidbcloud/devops/api"
	ccent "github.com/tidbcloud/devops/entity/cloudconfig"
)

type ListParamVersionsResp struct {
	api.BaseResp `json:",inline"`

	Versions []string `json:"versions"`
}

type ListParamAttrReq struct {
	Page     uint32   `form:"page" json:"page"`
	PerPage  uint32   `form:"per_page" json:"per_page"`
	NameLike *string  `form:"name_like" json:"name_like"`
	NameIn   []string `form:"name_in" json:"name_in"`
}

type ListParamAttrResp struct {
	api.BaseResp `json:",inline"`

	Attributes []*ccent.ParameterAttribute `json:"items"`
	Total      int64                       `json:"total"`
}

type GetParamAttrResp struct {
	api.BaseResp `json:",inline"`

	Attribute *ccent.ParameterAttribute `json:"attribute"`
}

type CreateParamAttrReq struct {
	Attribute *ccent.ParameterAttribute `json:"attribute" binding:"required"`
}

type UpdateParamAttrReq struct {
	ApplyPolicy  *ccent.ParameterApplyPolicy `json:"apply_policy"`
	DefaultValue *any                        `json:"default_value"`
	Validation   *string                     `json:"validation"`
	Description  *string                     `json:"description"`
	RiskLevel    *ccent.RiskLevel            `json:"risk_level"`
	UpdatedBy    *string                     `json:"updated_by"`
}

type CloneParamAttrReq struct {
	FromVersion string `json:"from_version" binding:"required"`
	ToVersion   string `json:"to_version" binding:"required"`
}
