package actions

import (
	"fmt"

	execv1pb "github.com/tidbcloud/cluster-service-ng/api/executor/v1"
)

func BuildPBFromActionArgs(in ActionArgs) (map[string]*execv1pb.ActionArg, error) {
	out := make(map[string]*execv1pb.ActionArg)
	for k, v := range in {
		switch t := v.(type) {
		case *actionArgString:
			arg := new(execv1pb.ActionArg)
			arg.Arg = &execv1pb.ActionArg_ActionArgString{ActionArgString: t.String()}
			out[k] = arg
		case *actionArgBool:
			arg := new(execv1pb.ActionArg)
			arg.Arg = &execv1pb.ActionArg_ActionArgString{ActionArgString: t.String()}
			out[k] = arg
		case *actionArgInt:
			arg := new(execv1pb.ActionArg)
			arg.Arg = &execv1pb.ActionArg_ActionArgInt{ActionArgInt: int64(*t)}
			out[k] = arg
		default:
			return nil, fmt.Errorf("unsupported action args type: %T", t)
		}
	}
	return out, nil
}
