Help us shape the future of Go! Take the 2026 Go Developer Survey

validation

package
v1.20.0-alpha.1 Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2026 License: MIT Imports: 45 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var LangFS embed.FS

Functions

func Attributes

func Attributes(attributes map[string]string) contractsvalidation.Option

func Filters

func Filters(filters map[string]any) contractsvalidation.Option

func MaxMultipartMemory

func MaxMultipartMemory(maxMemory int64) contractsvalidation.Option

func Messages

func Messages(messages map[string]string) contractsvalidation.Option

func PrepareForValidation

func PrepareForValidation(prepare func(ctx context.Context, data contractsvalidation.Data) error) contractsvalidation.Option

Types

type DataBag

type DataBag struct {
	// contains filtered or unexported fields
}

DataBag provides a unified data abstraction for validation. It supports nested data access via dot notation (e.g., "user.name", "users.0.email").

func NewDataBag

func NewDataBag(input any) (*DataBag, error)

NewDataBag creates a DataBag from various input types: - map[string]any (supports nested maps/slices) - url.Values / map[string][]string (single values unwrapped from slices) - struct (reflected via "form" tag)

func NewDataBagFromRequest

func NewDataBagFromRequest(r *http.Request, maxMemory int64) (*DataBag, error)

NewDataBagFromRequest parses an HTTP request into a DataBag. maxMemory controls the maximum memory (in bytes) used to buffer multipart form data before spilling to disk. If 0, defaults to 32 MB.

func (*DataBag) All

func (d *DataBag) All() map[string]any

All returns all the data as a flat map.

func (*DataBag) Get

func (d *DataBag) Get(key string) (any, bool)

Get retrieves a value using dot notation. Supports nested keys: "user.name", array indexes: "users.0.email", and wildcards.

func (*DataBag) Has

func (d *DataBag) Has(key string) bool

Has checks if a key exists in the data (including files).

func (*DataBag) Keys

func (d *DataBag) Keys() []string

Keys returns all dot-notation paths in the data, for wildcard expansion. Results are cached and invalidated when Set() is called.

func (*DataBag) Set

func (d *DataBag) Set(key string, val any) error

Set sets a value using dot notation.

type Engine

type Engine struct {
	// contains filtered or unexported fields
}

Engine is the core validation orchestrator.

func NewEngine

func NewEngine(ctx context.Context, data *DataBag, rules map[string][]ParsedRule, opts engineOptions) *Engine

NewEngine creates a new validation engine.

func (*Engine) Validate

func (e *Engine) Validate() *Errors

Validate runs all validation rules and returns the error bag.

func (*Engine) ValidatedData

func (e *Engine) ValidatedData() map[string]any

ValidatedData returns the data for all fields that have validation rules, excluding fields marked for exclusion. Callers should check Errors first to determine if validation passed before using the result.

type Errors

type Errors struct {
	// contains filtered or unexported fields
}

Errors collects validation error messages. Structure: field -> rule -> message

func NewErrors

func NewErrors() *Errors

NewErrors creates a new empty Errors.

func (*Errors) Add

func (m *Errors) Add(field, rule, message string)

Add adds an error message for a field and rule.

func (*Errors) All

func (m *Errors) All() map[string]map[string]string

All gets all error messages (field -> rule -> message).

func (*Errors) Get

func (m *Errors) Get(key string) map[string]string

Get gets all error messages for a given field (rule -> message).

func (*Errors) Has

func (m *Errors) Has(key string) bool

Has checks if there are any error messages for a given field.

func (*Errors) IsEmpty

func (m *Errors) IsEmpty() bool

IsEmpty checks if there are no error messages.

func (*Errors) One

func (m *Errors) One(key ...string) string

One gets the first error message. If a key is provided, returns the first error for that field. Otherwise returns the first error overall.

type ParsedRule

type ParsedRule struct {
	Name       string
	Parameters []string
}

ParsedRule represents a single parsed validation rule with its name and parameters.

func ParseRuleSlice

func ParseRuleSlice(rules []string) []ParsedRule

ParseRuleSlice parses a slice of individual rule strings into a slice of ParsedRule. Each element is parsed independently, avoiding pipe-splitting issues with regex patterns. Example: []string{"required", "regex:^(foo|bar)$", "string"} -> [{required []}, {regex [^(foo|bar)$]}, {string []}]

func ParseRules

func ParseRules(ruleString string) []ParsedRule

ParseRules parses a pipe-separated rule string into a slice of ParsedRule. Example: "required|string|max:255|in:a,b,c" -> [{required []}, {string []}, {max [255]}, {in [a b c]}]

type RuleContext

type RuleContext struct {
	Ctx        context.Context
	Attribute  string                  // Current field name
	Value      any                     // Field value
	Parameters []string                // Rule parameters
	Data       *DataBag                // Full data set
	Rules      map[string][]ParsedRule // All field rules (for type inference)
}

RuleContext provides context for rule evaluation.

type ServiceProvider

type ServiceProvider struct {
}

func (*ServiceProvider) Boot

func (r *ServiceProvider) Boot(app foundation.Application)

func (*ServiceProvider) Register

func (r *ServiceProvider) Register(app foundation.Application)

func (*ServiceProvider) Relationship

func (r *ServiceProvider) Relationship() binding.Relationship

type Validation

type Validation struct {
	// contains filtered or unexported fields
}

func NewValidation

func NewValidation() *Validation

func (*Validation) AddFilters

func (r *Validation) AddFilters(filters []validatecontract.Filter) error

func (*Validation) AddRules

func (r *Validation) AddRules(rules []validatecontract.Rule) error

func (*Validation) Filters

func (r *Validation) Filters() []validatecontract.Filter

func (*Validation) Make

func (r *Validation) Make(ctx context.Context, data any, rules map[string]any, options ...validatecontract.Option) (validatecontract.Validator, error)

func (*Validation) Rules

func (r *Validation) Rules() []validatecontract.Rule

type Validator

type Validator struct {
	// contains filtered or unexported fields
}

func NewValidator

func NewValidator(data *DataBag, errors *Errors, validated map[string]any) *Validator

func (*Validator) Bind

func (v *Validator) Bind(ptr any) error

func (*Validator) Errors

func (v *Validator) Errors() httpvalidate.Errors

func (*Validator) Fails

func (v *Validator) Fails() bool

func (*Validator) Validated

func (v *Validator) Validated() map[string]any

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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