validator

package module
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Apr 21, 2022 License: Apache-2.0 Imports: 6 Imported by: 2

README

validator

A lightweight model validator written in Go.

CircleCI codecov Go Report Card GoDoc Release Mentioned in Awesome Go

quickstart

package main

import (
	"fmt"
	v "github.com/go-the-way/validator"
)

func main() {
	result := v.New(&struct {
		int `validate:"min(10,fail)"`
	}{}).Validate()
	fmt.Println(result.Passed)
	fmt.Println(result.Messages())
}

Custom validation implementation

package main

import (
	"fmt"
	v "github.com/go-the-way/validator"
	"reflect"
)

func main() {
	v.Custom("mycustom", func(value reflect.Value) (bool, string) { return false, "mycustom validation." })
	vv := v.New(&struct {
		Name string `validate:"custom(mycustom)"`
	}{}).Validate()
	fmt.Println(vv.Passed)
	fmt.Println(vv.Messages())
}

Validators

Name Support Example Description
Min ([])(*)uint{8,64}, ([])(*)int{8,64}, ([])(*)float{32,64} validate:"min(N,invalid)" Every value must be >= N
Max ([])(*)uint{8,64}, ([])(*)int{8,64}, ([])(*)float{32,64} validate:"max(N,invalid)" Every value must be <= N
Length (*)string, (*)Array[(*)string], (*)Slice[(*)string] validate:"length(N,invalid)" (*)string: Value's Len must be == N
(*)Array[(*)string] or (*)Slice[(*)string]: Every Value's Len must be == N
ArrLength (*)Array[(*)Any], (*)Slice[(*)Any] validate:"arr_length(N,invalid)" (*)Array[(*)Any] or (*)Slice[(*)Any]: Array or Slice's Len must be == N
MinLength (*)string, (*)Array[(*)string], (*)Slice[(*)string] validate:"minlength(N,invalid)" (*)string: Value's Len must be >= N
(*)Array[(*)string] or (*)Slice[(*)string]: Every Value's Len must be >= N
ArrMinLength (*)Array[(*)Any], (*)Slice[(*)Any] validate:"arr_minlength(N,invalid)" (*)Array[(*)Any] or (*)Slice[(*)Any]: Array or Slice's Len must be >= N
MaxLength (*)string, (*)Array[(*)string], (*)Slice[(*)string] validate:"maxlength(N,invalid)" (*)string: Value's Len must be <= N
(*)Array[(*)string] or (*)Slice[(*)string]: Every Value's Len must be <= N
ArrMaxLength (*)Array[(*)Any], (*)Slice[(*)Any] validate:"arr_maxlength(N,invalid)" (*)Array[(*)Any] or (*)Slice[(*)Any]: Array or Slice's Len must be <= N
Enum ([])(*)uint{8,64}, ([])(*)int{8,64}, ([])(*)float{32,64}, ([])(*)string validate:"enum(O,invalid)" Every value must be one of O
Regex ([])(*)string validate:"regex(RE,invalid)" Every value must be match RE
Valid *struct{} validate:"valid(T,invalid)" Value must be not nil
Custom any validate:"custom(CUSTOM)" CUSTOM validation

Documentation

Overview

Package validator is a lightweight model validator written in Go.

::quickstart::

 package main

 import (
	"fmt"

	 v "github.com/go-the-way/validator"
 )

 func main() {
	result := v.New(&struct {
		int `validate:"min(10,fail)"`
	}{}).Validate()
	fmt.Println(result.Passed)
	fmt.Println(result.Messages())
 }

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Custom added in v1.1.0

func Custom(name string, vF func(value reflect.Value) (bool, string))

Types

type Item

type Item struct {
	Min          string `alias:"min"`           // Min for min value
	Max          string `alias:"max"`           // Max for max value
	MinLength    string `alias:"minlength"`     // MinLength for min length
	ArrMinLength string `alias:"arr_minlength"` // ArrMinLength for array min length
	MaxLength    string `alias:"maxlength"`     // MaxLength for max length
	ArrMaxLength string `alias:"arr_maxlength"` // ArrMaxLength for array max length
	Length       string `alias:"length"`        // Length for length
	ArrLength    string `alias:"arr_length"`    // ArrLength for array length
	Enum         string `alias:"enum"`          // Enum for enum values
	Regex        string `alias:"regex"`         // Regex for regex pattern
	Msg          string `alias:"msg"`           // Msg for message
	Valid        string `alias:"valid"`         // Valid for valid
	Custom       string `alias:"custom"`        // Custom for custom validator
}

Item struct

func (*Item) Validate

func (i *Item) Validate(_ reflect.StructField, value reflect.Value) (bool, string)

Validate by fields

type Result

type Result struct {
	StructPtr interface{}
	Passed    bool
	Items     []*ResultItem
}

Result struct

func (*Result) Messages

func (r *Result) Messages() string

Messages return un-passed messages

type ResultItem

type ResultItem struct {
	Field   *reflect.StructField
	Passed  bool
	Message string
}

ResultItem struct

type VFunc

type VFunc interface {
	Valid(value reflect.Value) (bool, string)
}

VFunc interface

func ArrLengthFunc added in v1.0.2

func ArrLengthFunc(str string) VFunc

ArrLengthFunc method

func ArrMaxLengthFunc added in v1.0.2

func ArrMaxLengthFunc(str string) VFunc

ArrMaxLengthFunc method

func ArrMinLengthFunc added in v1.0.2

func ArrMinLengthFunc(str string) VFunc

ArrMinLengthFunc method

func EnumFunc

func EnumFunc(str string) VFunc

EnumFunc method

func LengthFunc

func LengthFunc(str string) VFunc

LengthFunc method

func MaxFunc

func MaxFunc(str string) VFunc

MaxFunc method

func MaxLengthFunc

func MaxLengthFunc(str string) VFunc

MaxLengthFunc method

func MinFunc

func MinFunc(str string) VFunc

MinFunc method

func MinLengthFunc

func MinLengthFunc(str string) VFunc

MinLengthFunc method

func RegexFunc

func RegexFunc(str string) VFunc

RegexFunc method

func ValidFunc added in v1.0.2

func ValidFunc(str string) VFunc

ValidFunc method

type Validator

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

Validator defines validator struct

func New

func New(structPtr interface{}) *Validator

New return new *Validator

func (*Validator) Validate

func (v *Validator) Validate() *Result

Validate return validation result

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL