validation

package
v1.18.0 Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2026 License: MIT Imports: 42 Imported by: 15

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 CustomFilters added in v1.15.0

func CustomFilters(filters []contractsvalidation.Filter) contractsvalidation.Option

func Filters added in v1.15.0

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

func MaxMultipartMemory added in v1.18.0

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 added in v1.18.0

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 added in v1.18.0

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 added in v1.18.0

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 added in v1.18.0

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

All returns all the data as a flat map.

func (*DataBag) Get added in v1.18.0

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 added in v1.18.0

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

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

func (*DataBag) Keys added in v1.18.0

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 added in v1.18.0

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

Set sets a value using dot notation.

type Engine added in v1.18.0

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

Engine is the core validation orchestrator.

func NewEngine added in v1.18.0

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

NewEngine creates a new validation engine.

func (*Engine) Validate added in v1.18.0

func (e *Engine) Validate() *Errors

Validate runs all validation rules and returns the error bag.

func (*Engine) ValidatedData added in v1.18.0

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 added in v1.18.0

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 added in v1.18.0

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 added in v1.18.0

type ParsedRule struct {
	Name       string
	Parameters []string
}

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

func ParseRuleSlice added in v1.18.0

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 added in v1.18.0

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 added in v1.18.0

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 added in v1.15.12

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

type Validation

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

func NewValidation

func NewValidation() *Validation

func (*Validation) AddFilters added in v1.15.0

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

func (*Validation) AddRules

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

func (*Validation) Filters added in v1.15.0

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 added in v1.18.0

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