ozzo/ozzo-validation - Plugin operators
This page lists all operators available in the ozzo/ozzo-validation sub-package of ro.
This documentation is still new and evolving. If you spot any mistakes, unclear explanations, or missing details, please open an issue.
Your feedback helps us improve!
Installโ
First, import the sub-package in your project:
go get -u github.com/samber/ro/plugins/ozzo/ozzo-validation
Validateโ
Validates values with rules, emitting a
Result[T]that is either ok (valid) or err (invalid).import (validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")obs := ro.Pipe1(ro.Just("hello", "", "world"),roozzo.Validate[string](validation.Required,validation.Length(1, 10),),)sub := obs.Subscribe(ro.PrintObserver[roozzo.Result[string]]())defer sub.Unsubscribe()// Next: {false hello <nil>}// Next: {true {validation_required cannot be blank map[]}}// Next: {false world <nil>}// CompletedSimilar:Prototype:func Validate[T any](rules ...ozzo.Rule)ValidateOrSkipโ
Validates values with rules, skipping items that fail validation and forwarding valid items unchanged.
import (validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")obs := ro.Pipe1(ro.Just("hello", "", "world", "x-too-long-string"),roozzo.ValidateOrSkip[string](validation.Required,validation.Length(1, 10),),)sub := obs.Subscribe(ro.PrintObserver[string]())defer sub.Unsubscribe()// Next: hello// Next: world// CompletedSimilar:Prototype:func ValidateOrSkip[T any](rules ...ozzo.Rule)ValidateStructOrSkipโ
Validates struct items using the
ozzo.Validatableinterface, skipping items that fail validation and forwarding valid items unchanged.import (validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")type User struct {Name stringAge int}func (u User) Validate() error {return validation.ValidateStruct(&u,validation.Field(&u.Name, validation.Required),validation.Field(&u.Age, validation.Min(18)),)}obs := ro.Pipe1(ro.Just(User{Name: "Alice", Age: 30},User{Name: "", Age: 15},User{Name: "Bob", Age: 25},),roozzo.ValidateStructOrSkip[User](),)sub := obs.Subscribe(ro.PrintObserver[User]())defer sub.Unsubscribe()// Next: {Alice 30}// Next: {Bob 25}// CompletedSimilar:Prototype:func ValidateStructOrSkip[T any]()ValidateOrSkipWithContextโ
Validates values with rules using context propagation, skipping items that fail validation and forwarding valid items unchanged.
import (validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")obs := ro.Pipe1(ro.Just("hello", "", "world", "x-too-long-string"),roozzo.ValidateOrSkipWithContext[string](validation.Required,validation.Length(1, 10),),)sub := obs.Subscribe(ro.PrintObserver[string]())defer sub.Unsubscribe()// Next: hello// Next: world// CompletedPrototype:func ValidateOrSkipWithContext[T any](rules ...ozzo.Rule)ValidateWithContextโ
Validates values with rules using context propagation, emitting a
Result[T]for each item.import (validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")obs := ro.Pipe1(ro.Just("hello", "", "world"),roozzo.ValidateWithContext[string](validation.Required,validation.Length(1, 10),),)sub := obs.Subscribe(ro.PrintObserver[roozzo.Result[string]]())defer sub.Unsubscribe()// Next: {false hello <nil>}// Next: {true {validation_required cannot be blank map[]}}// Next: {false world <nil>}// CompletedPrototype:func ValidateWithContext[T any](rules ...ozzo.Rule)ValidateStructOrSkipWithContextโ
Validates struct items using the
ozzo.ValidatableWithContextinterface with context propagation, skipping items that fail validation and forwarding valid items unchanged.import ("context"validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")type User struct {Name stringAge int}func (u User) ValidateWithContext(ctx context.Context) error {return validation.ValidateStructWithContext(ctx, &u,validation.Field(&u.Name, validation.Required),validation.Field(&u.Age, validation.Min(18)),)}obs := ro.Pipe1(ro.Just(User{Name: "Alice", Age: 30},User{Name: "", Age: 15},User{Name: "Bob", Age: 25},),roozzo.ValidateStructOrSkipWithContext[User](),)sub := obs.Subscribe(ro.PrintObserver[User]())defer sub.Unsubscribe()// Next: {Alice 30}// Next: {Bob 25}// CompletedPrototype:func ValidateStructOrSkipWithContext[T any]()ValidateStructโ
Validates struct values that implement the
ozzo.Validatableinterface, emitting aResult[T]for each item.import (validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")type User struct {Name stringAge int}func (u User) Validate() error {return validation.ValidateStruct(&u,validation.Field(&u.Name, validation.Required),validation.Field(&u.Age, validation.Min(18)),)}obs := ro.Pipe1(ro.Just(User{Name: "Alice", Age: 30},User{Name: "", Age: 15},),roozzo.ValidateStruct[User](),)sub := obs.Subscribe(ro.PrintObserver[roozzo.Result[User]]())defer sub.Unsubscribe()// Next: {false {Alice 30} <nil>}// Next: {true { 0} map[Age:{validation_min_greater_equal_than_required must be no less than {{.threshold}} map[threshold:18]} Name:{validation_required cannot be blank map[]}]}// CompletedPrototype:func ValidateStruct[T any]()ValidateStructWithContextโ
Validates struct values that implement the
ozzo.ValidatableWithContextinterface using context propagation.import ("context"validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")type User struct {Name stringAge int}func (u User) ValidateWithContext(ctx context.Context) error {return validation.ValidateStructWithContext(ctx, &u,validation.Field(&u.Name, validation.Required),validation.Field(&u.Age, validation.Min(18)),)}obs := ro.Pipe1(ro.Just(User{Name: "Alice", Age: 30},User{Name: "", Age: 15},),roozzo.ValidateStructWithContext[User](),)sub := obs.Subscribe(ro.PrintObserver[roozzo.Result[User]]())defer sub.Unsubscribe()// Next: {false {Alice 30} <nil>}// Next: {true { 0} map[Age:{validation_min_greater_equal_than_required must be no less than {{.threshold}} map[threshold:18]} Name:{validation_required cannot be blank map[]}]}// CompletedPrototype:func ValidateStructWithContext[T any]()ValidateOrErrorโ
Validates values with rules. Valid items are forwarded unchanged; the first invalid item terminates the stream with an error.
import (validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")obs := ro.Pipe1(ro.Just("hello", "", "world"),roozzo.ValidateOrError[string](validation.Required,validation.Length(1, 10),),)sub := obs.Subscribe(ro.PrintObserver[string]())defer sub.Unsubscribe()// Next: hello// Error: cannot be blankPrototype:func ValidateOrError[T any](rules ...ozzo.Rule)ValidateOrErrorWithContextโ
Validates each item using context-aware ozzo-validation rules. Items that fail validation cause the stream to error; valid items are forwarded unchanged.
import (validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")obs := ro.Pipe[int, int](ro.Just(5, 15, 25),roozzo.ValidateOrErrorWithContext[int](validation.Min(10),),)sub := obs.Subscribe(ro.PrintObserver[int]())defer sub.Unsubscribe()// Error: must be no less than 10Prototype:func ValidateOrErrorWithContext[T any](rules ...ozzo.Rule)ValidateStructOrErrorโ
Validates each struct item using ozzo-validation. Items that fail validation cause the stream to error; valid items are forwarded unchanged. The struct must implement
validation.Validatable.import (validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")type User struct {Name stringEmail string}func (u User) Validate() error {return validation.ValidateStruct(&u,validation.Field(&u.Name, validation.Required),validation.Field(&u.Email, validation.Required),)}obs := ro.Pipe[User, User](ro.Just(User{Name: "", Email: ""},),roozzo.ValidateStructOrError[User](),)sub := obs.Subscribe(ro.PrintObserver[User]())defer sub.Unsubscribe()// Next: {Alice [email protected]}// Error: Email: cannot be blank; Name: cannot be blank.Prototype:func ValidateStructOrError[T any]()ValidateStructOrErrorWithContextโ
Validates each struct item using context-aware ozzo-validation. Items that fail validation cause the stream to error; valid items are forwarded unchanged. The struct must implement
validation.ValidatableWithContext.import ("context"validation "github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo/ozzo-validation")type User struct {Name stringEmail string}func (u User) ValidateWithContext(ctx context.Context) error {return validation.ValidateStructWithContext(ctx, &u,validation.Field(&u.Name, validation.Required),validation.Field(&u.Email, validation.Required),)}obs := ro.Pipe[User, User](ro.Just(User{Name: "", Email: ""},),roozzo.ValidateStructOrErrorWithContext[User](),)sub := obs.Subscribe(ro.PrintObserver[User]())defer sub.Unsubscribe()// Next: {Alice [email protected]}// Error: Email: cannot be blank; Name: cannot be blank.Prototype:func ValidateStructOrErrorWithContext[T any]()