Categorygithub.com/gflydev/validation
modulepackage
1.0.1
Repository: https://github.com/gflydev/validation.git
Documentation: pkg.go.dev

# README

Validation

By default, data checking is supported for structs by ValidateStruct(structData interface{}, msgForTag MsgForTagFunc) (map[string][]string, error)

Usage

Install

go get -u github.com/gflydev/[email protected]

Quick usage

import "github.com/gflydev/validation"

if errorData, err := validation.Check(loginDto, validation.MsgForTag); err != nil {
    return c.BadRequest(errorData)
}

Customize error message by yourself

if errorData, err := validation.CheckData(loginDto, func(fe validator.FieldError) string {
    switch fe.Tag() {
    case "required":
        return "This field is required"
    case "gte":
        return fmt.Sprintf("This field is gte %s characters", fe.Param())
    case "email":
        return "Invalid email"
    }

    return fe.Error()
}); err != nil {
    return c.BadRequest(errorData)
}

Message for Tag

Review and add more code in file message_for_tag.go.

Add custom Validator uuid_rule.go

package validation

import (
    "github.com/go-playground/validator/v10"
    "github.com/google/uuid"
)

// UuidRule Custom validation for uuid fields. Use `validate:"uuid"`
type UuidRule string

func (v UuidRule) GetTag() string {
    return string(v)
}

func (v UuidRule) Handler() validator.Func {
    return func(fl validator.FieldLevel) bool {
        field := fl.Field().String()

        if _, err := uuid.Parse(field); err != nil {
            return false
        }
        return true
    }
}

Add rule to validator

import "github.com/vinhio/gfly-modules/validation"

// Add rule before validation.Validate()
validation.AddRule(uuidValidator("uuid"))

# Functions

AddRule append a custom validator.
Check Validate data struct type.
CheckData verify a data struct type.
MsgForTag is a type of MsgForTagFunc function.
ValidatorInstance func for create a new validator for model fields.

# Interfaces

ICustomValidator Custom Validator.

# Type aliases

MsgForTagFunc Customize error fields to build messages.