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.
import ("github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo-validation""github.com/go-ozzo/ozzo-validation/v4")type User struct {Name stringAge int}obs := ro.Pipe[User, roozzovalidation.Result[User]](ro.Just(User{Name: "Alice", Age: 30}),roozzo.Validate[User](validation.Rule{Name: "name", Required: true},validation.Rule{Name: "age", Required: true, Min: 18},),)sub := obs.Subscribe(ro.PrintObserver[roozzovalidation.Result[User]]())defer sub.Unsubscribe()// Next: {Value: {Name: "Alice", Age: 30}, Error: nil}// CompletedSimilar:Prototype:func Validate[T any](rules ...ozzo.Rule)ValidateOrSkipโ
Validates observable values and skips invalid ones.
import ("github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo-validation""github.com/go-ozzo/ozzo-validation/v4")type User struct {Name stringAge int}obs := ro.Pipe[User, User](ro.Just(User{Name: "Alice", Age: 30}, // validUser{Name: "", Age: 15}, // invalid (empty name, too young)User{Name: "Bob", Age: 25}, // valid),roozzo.ValidateOrSkip[User](validation.Rule{Name: "name", Required: true},validation.Rule{Name: "age", Required: true, Min: 18},),)sub := obs.Subscribe(ro.PrintObserver[User]())defer sub.Unsubscribe()// Next: {Name: "Alice", Age: 30}// Next: {Name: "Bob", Age: 25}// Completed (invalid entry skipped)Similar:Prototype:func ValidateOrSkip[T any](rules ...ozzo.Rule)ValidateStructOrSkipโ
Validates struct observables and skips invalid ones.
import ("github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo-validation""github.com/go-ozzo/ozzo-validation/v4")type User struct {Name string `validate:"required"`Age int `validate:"required,min=18"`}func (u User) Validate() error {return validation.ValidateStruct(&u,validation.Field(&u.Name, validation.Required),validation.Field(&u.Age, validation.Required, validation.Min(18)),)}obs := ro.Pipe[User, User](ro.Just(User{Name: "Alice", Age: 30}, // validUser{Name: "", Age: 15}, // invalidUser{Name: "Bob", Age: 25}, // valid),roozzo.ValidateStructOrSkip[User](),)sub := obs.Subscribe(ro.PrintObserver[User]())defer sub.Unsubscribe()// Next: {Name: "Alice", Age: 30}// Next: {Name: "Bob", Age: 25}// Completed (invalid entry skipped)Similar:Prototype:func ValidateStructOrSkip[T any]()ValidateOrSkipWithContextโ
Validates observable values with context and skips invalid ones.
import ("context""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo-validation""github.com/go-ozzo/ozzo-validation/v4")type User struct {Name stringAge int}obs := ro.Pipe[User, User](ro.Just(User{Name: "Alice", Age: 30}, // validUser{Name: "", Age: 15}, // invalidUser{Name: "Bob", Age: 25}, // valid),roozzo.ValidateOrSkipWithContext[User](validation.Rule{Name: "name", Required: true},validation.Rule{Name: "age", Required: true, Min: 18},),)sub := obs.Subscribe(ro.PrintObserver[User]())defer sub.Unsubscribe()// Next: {Name: "Alice", Age: 30}// Next: {Name: "Bob", Age: 25}// Completed (invalid entry skipped with context support)Prototype:func ValidateOrSkipWithContext[T any](rules ...ozzo.Rule)ValidateWithContextโ
Validates values with rules using context.
import ("github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo-validation""github.com/go-ozzo/ozzo-validation/v4")type User struct {Name stringAge int}obs := ro.Pipe[User, Result[User]](ro.Just(User{Name: "Alice", Age: 30}),roozzo.ValidateWithContext[User](ozzo.Rule{Name: "name", Required: true},ozzo.Rule{Name: "age", Required: true, Min: 18},),)sub := obs.Subscribe(ro.PrintObserver[Result[User]]())defer sub.Unsubscribe()// Next: {Value: {Name: "Alice", Age: 30}, Error: nil}// CompletedPrototype:func ValidateWithContext[T any](rules ...ozzo.Rule)ValidateStructOrSkipWithContextโ
Validates struct observables with context and skips invalid ones.
import ("context""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo-validation""github.com/go-ozzo/ozzo-validation/v4")type User struct {Name string `validate:"required"`Age int `validate:"required,min=18"`}func (u User) ValidateWithContext(ctx context.Context) error {return validation.ValidateStructWithContext(ctx, &u,validation.Field(&u.Name, validation.Required),validation.Field(&u.Age, validation.Required, validation.Min(18)),)}obs := ro.Pipe[User, User](ro.Just(User{Name: "Alice", Age: 30}, // validUser{Name: "", Age: 15}, // invalidUser{Name: "Bob", Age: 25}, // valid),roozzo.ValidateStructOrSkipWithContext[User](),)sub := obs.Subscribe(ro.PrintObserver[User]())defer sub.Unsubscribe()// Next: {Name: "Alice", Age: 30}// Next: {Name: "Bob", Age: 25}// Completed (invalid entry skipped with context support)Prototype:func ValidateStructOrSkipWithContext[T any]()ValidateStructโ
Validates struct values that implement ozzo.Validatable interface.
import ("github.com/go-ozzo/ozzo-validation/v4""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo-validation")type User struct {Name string `validate:"required"`Age int `validate:"required,min=18"`}func (u User) Validate() error {return ozzo.ValidateStruct(&u,ozzo.Field(&u.Name, ozzo.Required),ozzo.Field(&u.Age, ozzo.Required, ozzo.Min(18)),)}obs := ro.Pipe[User, Result[User]](ro.Just(User{Name: "Alice", Age: 30}),roozzo.ValidateStruct[User](),)sub := obs.Subscribe(ro.PrintObserver[Result[User]]())defer sub.Unsubscribe()// Next: {Value: {Name: "Alice", Age: 30}, Error: nil}// CompletedPrototype:func ValidateStruct[T any]()ValidateStructWithContextโ
Validates struct values that implement ozzo.ValidatableWithContext interface using context.
import ("context""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo-validation""github.com/go-ozzo/ozzo-validation/v4")type User struct {Name string `validate:"required"`Age int `validate:"required,min=18"`}func (u User) ValidateWithContext(ctx context.Context) error {return ozzo.ValidateStructWithContext(ctx, &u,ozzo.Field(&u.Name, ozzo.Required),ozzo.Field(&u.Age, ozzo.Required, ozzo.Min(18)),)}obs := ro.Pipe[User, Result[User]](ro.Just(User{Name: "Alice", Age: 30}),roozzo.ValidateStructWithContext[User](),)sub := obs.Subscribe(ro.PrintObserver[Result[User]]())defer sub.Unsubscribe()// Next: {Value: {Name: "Alice", Age: 30}, Error: nil}// CompletedPrototype:func ValidateStructWithContext[T any]()ValidateOrErrorโ
Validates or emits error.
import ("fmt""github.com/samber/ro"roozzo "github.com/samber/ro/plugins/ozzo-validation""github.com/go-ozzo/ozzo-validation/v4")type User struct {Name stringAge int}obs := ro.Pipe[User, User](ro.Just(User{Name: "Alice", Age: 30}, // validUser{Name: "", Age: 15}, // invalid),roozzo.ValidateOrError[User](ozzo.Rule{Name: "name", Required: true},ozzo.Rule{Name: "age", Required: true, Min: 18},),)sub := obs.Subscribe(ro.NewObserver(func(user User) { fmt.Printf("Valid: %+v\n", user) },func(err error) { fmt.Printf("Error: %v\n", err) },func() { fmt.Println("Completed") },),)defer sub.Unsubscribe()// Valid: {Name:Alice Age:30}// Error: validation failed// CompletedSimilar:Prototype:func ValidateOrError[T any](rules ...ozzo.Rule)