Documentation
¶
Index ¶
- Variables
- func Attributes(attributes map[string]string) contractsvalidation.Option
- func CustomFilters(filters []contractsvalidation.Filter) contractsvalidation.Option
- func Filters(filters map[string]any) contractsvalidation.Option
- func MaxMultipartMemory(maxMemory int64) contractsvalidation.Option
- func Messages(messages map[string]string) contractsvalidation.Option
- func PrepareForValidation(prepare func(ctx context.Context, data contractsvalidation.Data) error) contractsvalidation.Option
- type DataBag
- type Engine
- type Errors
- type ParsedRule
- type RuleContext
- type ServiceProvider
- type Validation
- func (r *Validation) AddFilters(filters []validatecontract.Filter) error
- func (r *Validation) AddRules(rules []validatecontract.Rule) error
- func (r *Validation) Filters() []validatecontract.Filter
- func (r *Validation) Make(ctx context.Context, data any, rules map[string]any, ...) (validatecontract.Validator, error)
- func (r *Validation) Rules() []validatecontract.Rule
- type Validator
Constants ¶
This section is empty.
Variables ¶
var LangFS embed.FS
Functions ¶
func Attributes ¶
func Attributes(attributes map[string]string) contractsvalidation.Option
func CustomFilters ¶
func CustomFilters(filters []contractsvalidation.Filter) contractsvalidation.Option
func MaxMultipartMemory ¶
func MaxMultipartMemory(maxMemory int64) 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 ¶
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 ¶
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) Get ¶
Get retrieves a value using dot notation. Supports nested keys: "user.name", array indexes: "users.0.email", and wildcards.
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) ValidatedData ¶
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
type ParsedRule ¶
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 (*Validator) Errors ¶
func (v *Validator) Errors() httpvalidate.Errors