package operation

import (
	"github.com/tidbcloud/devops/api"
	opent "github.com/tidbcloud/devops/entity/operation"
)

type ListOperationReq struct {
	api.PaginationReq

	Target     *opent.OperationTarget `form:"target"`     // filter by target
	Categories []string               `form:"categories"` // filter by categories
}

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

	Total      int64              `json:"total"`
	Operations []*opent.Operation `json:"items"`
}

type GetOperationReq struct {
	InjectParam bool                   `form:"inject_param"` // inject param into operation
	TargetType  *opent.OperationTarget `form:"target_type"`  // target type
	TargetID    *string                `form:"target_id"`    // target id
	ServicePlan *string                `form:"service_plan"` // service plan for param injection
}

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

	Operation *opent.Operation `json:"operation"`
}

type ListOperationCategoryResp struct {
	Categories []string `json:"categories"`
}
