~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
48 lines · 1.1 KB Raw History
package models

import (
	"bytes"
	"encoding/json"
	"errors"
	"strings"
)

const (
	ContextKeyCache   = "cache"
	ContextKeyConfig  = "config"
	ContextKeySecrets = "secrets"
	ContextKeyVars    = "vars"
)

type Request struct {
	Inputs   map[string]any  `json:"inputs,omitempty"`
	Workflow json.RawMessage `json:"workflow,omitempty"`
	Context  map[string]any  `json:"context,omitempty"`
	Stack    map[string]any  `json:"stack,omitempty"`
}

func (r *Request) Validate() error {
	if r == nil {
		return errors.New("workflow is required")
	}
	workflow := bytes.TrimSpace(r.Workflow)
	if len(workflow) == 0 || bytes.Equal(workflow, []byte("null")) {
		return errors.New("workflow is required")
	}
	var value string
	if err := json.Unmarshal(workflow, &value); err == nil {
		value = strings.TrimSpace(value)
		if value == "" || value == "null" {
			return errors.New("workflow is required")
		}
	}
	return nil
}

type InputValidationError struct {
	Msg   string   `json:"msg"`
	Loc   []string `json:"loc"`
	Type  string   `json:"type"`
	URL   string   `json:"url,omitempty"`
	Input string   `json:"input,omitempty"`
}