2025-03-31 08:59:10 +02:00
2025-03-31 08:59:10 +02:00
2025-03-31 08:59:10 +02:00
2025-03-31 08:59:10 +02:00
2025-03-31 08:59:10 +02:00
2025-03-31 08:59:10 +02:00
2025-03-31 08:59:10 +02:00
2025-03-31 08:59:10 +02:00

Vouch

Vouch is a lightweight, flexible validation library for Go, allowing you to define and enforce validation rules on struct fields with ease.

Installation

go get git.trcreatives.com/triegebauer/go-vouch

Usage

Defining a Schema

A schema is a map of field names to validation rules.

package main

import (
	"fmt"
	"git.trcreatives.com/triegebauer/go-vouch"
)

type User struct {
	Name  string
	Age   int
	Email string
}

func main() {
	schema := vouch.Schema{
		"Name":  vouch.Rules(vouch.Required(), vouch.MinLen(3)),
		"Age":   vouch.Rules(vouch.MinValue(18)),
		"Email": vouch.Rules(vouch.Required(), vouch.Email()),
	}

	user := User{Name: "", Age: 16, Email: "invalid-email"}

	if err := schema.Validate(user); err != nil {
		fmt.Println("Validation error:", err)
	} else {
		fmt.Println("Validation passed!")
	}
}

Available Rules

  • Required() - Ensures the field is not empty.
  • MinLen(n int) - Ensures the field has at least n characters.
  • MaxLen(n int) - Ensures the field has at most n characters.
  • MinValue(n float64) - Ensures the number is at least n.
  • MaxValue(n float64) - Ensures the number is at most n.
  • Email() - Ensures the field is a valid email.
  • URL() - Ensures the field is a valid URL.
  • ContainsUpper() - Ensures the field contains at least one uppercase letter.
  • ContainsDigit() - Ensures the field contains at least one digit.
  • ...and many more!

Contributing

Feel free to open issues or submit pull requests to improve vouch.

License

MIT License

Description
No description provided
Readme MIT 31 KiB
Languages
Go 100%