package binding

import (
	"github.com/tidbcloud/AgentTeam/internal/api"
	"github.com/tidbcloud/AgentTeam/internal/api/dto"
)

func (handler *ValidationHandler) Validate(request api.WorkspaceScopedJSON[dto.WorkflowBindingValidateRequest]) (api.Response, error) {
	planID, err := requiredPlanID(request.Body.PlanID)
	if err != nil {
		return api.Response{}, err
	}
	planVersionID, source, inputPolicy, err := requiredRevisionSpec(request.Body.PlanVersionID, request.Body.Source, request.Body.InputPolicy)
	if err != nil {
		return api.Response{}, err
	}
	validation, err := handler.service.Validate(request.Context(), ValidateInput{
		WorkspaceID: request.WorkspaceID(), PlanID: planID, PlanVersionID: planVersionID, Source: source, InputPolicy: inputPolicy,
	})
	if err != nil {
		return api.Response{}, err
	}
	return api.OK(validationResponse(validation)), nil
}
