action

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 13, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNameEmpty is returned when a definition has an empty name.
	ErrNameEmpty = errors.New("action: name must not be empty")

	// ErrNameInvalid is returned when a name contains characters that
	// are not valid in a JSON key (letters, digits, underscores, hyphens).
	ErrNameInvalid = errors.New("action: name is not a valid identifier")

	// ErrDescriptionTooLong is returned when description exceeds 255
	// characters.
	ErrDescriptionTooLong = errors.New("action: description must be 255 characters or fewer")

	// ErrCardinalityInvalid is returned when a cardinality value is not
	// Single or Multi.
	ErrCardinalityInvalid = errors.New("action: invalid cardinality")

	// ErrCardinalityUnknown is returned when a cardinality string cannot
	// be parsed.
	ErrCardinalityUnknown = errors.New("action: unknown cardinality")
)

Functions

func WithMulti

func WithMulti[V Valuable](d *Definition[V])

WithMulti sets the cardinality to Multi. Shorthand for WithCardinality(Multi).

Types

type Cardinality

type Cardinality int

Cardinality defines how an action accumulates values across rules.

const (
	// Single means at most once per rule. Across rules, last match wins.
	Single Cardinality = iota
	// Multi may appear multiple times. All values accumulate, duplicates
	// stripped.
	Multi
)

func ParseCardinality

func ParseCardinality(s string) (Cardinality, error)

ParseCardinality parses a string into a Cardinality. Accepts "single" and "multi" (case-sensitive). Returns an error for unrecognised values.

func (Cardinality) IsValid

func (c Cardinality) IsValid() bool

IsValid returns true if the cardinality is a known value.

func (Cardinality) String

func (c Cardinality) String() string

func (Cardinality) Validate

func (c Cardinality) Validate() error

Validate returns an error if the cardinality is not a known value.

type Definition

type Definition[V Valuable] struct {
	// contains filtered or unexported fields
}

Definition is the validated metadata for an action. Created via Define or MustDefine.

func Define

func Define[V Valuable](name string, opts ...DefinitionOpt[V]) (Definition[V], error)

Define creates a validated Definition. Name must be non-empty and a valid JSON key (letters, digits, underscores, hyphens; must start with a letter or underscore). Description, if present, must be 255 characters or fewer.

func MustDefine

func MustDefine[V Valuable](name string, opts ...DefinitionOpt[V]) Definition[V]

MustDefine is like Define but panics on error.

func (Definition[V]) Cardinality

func (d Definition[V]) Cardinality() Cardinality

Cardinality returns the action's cardinality.

func (Definition[V]) Description

func (d Definition[V]) Description() string

Description returns the action's description.

func (Definition[V]) IsZero

func (d Definition[V]) IsZero() bool

IsZero returns true if the definition was not created via Define or MustDefine.

func (Definition[V]) Name

func (d Definition[V]) Name() string

Name returns the action's name.

func (Definition[V]) Terminal

func (d Definition[V]) Terminal() bool

Terminal returns whether the action is terminal.

type DefinitionOpt

type DefinitionOpt[V Valuable] func(*Definition[V])

DefinitionOpt configures a Definition.

func Terminal

func Terminal[V Valuable](v bool) DefinitionOpt[V]

Terminal marks the action as terminal — evaluation halts when it fires.

func WithCardinality

func WithCardinality[V Valuable](c Cardinality) DefinitionOpt[V]

WithCardinality sets how values accumulate — Single (last wins) or Multi (all values collected, deduped).

func WithDescription

func WithDescription[V Valuable](s string) DefinitionOpt[V]

WithDescription sets an optional human-readable description. Must be 255 characters or fewer.

type NoArgs

type NoArgs struct{}

NoArgs is the type parameter for actions that carry no value. Use it for presence-only actions like "delete" or "archive".

type Valuable

type Valuable interface {
	string | bool | int | float64 | NoArgs
}

Valuable constrains the types that Definition[T] can hold. These map to JSON primitives: string, boolean, number, and null/omit.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL