package
1.0.5
Repository: https://github.com/nandlabs/golly.git
Documentation: pkg.go.dev

# README

go-struct-validator

The validator is heavily inspired by the OAS Specification approach leading to the creation of structs in a generic manner.

The validator covers the specifications, and its respective validations according to OAS.



Installation

go get oss.nandlabs.io/golly/codec/validator

Quick Start Guide

It comes with a simple usage as explained below, just import the package, and you are good to go.

To add check for validations, add the constraints tag in the struct fields.

Basic Validations Example

type TestStruct struct {
  Name          string  `json:"name" constraints:"min-length=5"`
  Age           int     `json:"age" constraints:"min=21"`
  Description   string  `json:"description" constraints:"max-length=50"`
  Cost          float64 `json:"cost" constraints:"exclusiveMin=200"`
  ItemCount     int     `json:"itemCount" constraints:"multipleOf=5"`
  MobileNumber  int    `json:"mobile"` // skip validation by not providing any constraints
}

Basic Example

package main

import (
    "fmt"
    validator "oss.nandlabs.io/golly/codec/validator"
)

type TestStruct struct {
    Name        string  `json:"name" constraints:"min-length=5"`
    Age         int     `json:"age" constraints:"min=21"`
    Description string  `json:"description" constraints:"max-length=50"`
    Cost        float64 `json:"cost" constraints:"exclusiveMin=200"`
    ItemCount   int     `json:"itemCount" constraints:"multipleOf=5"`
}

func main() {
    var sv = validator.NewStructValidator()
    msg := TestStruct{
        Name:        "Test",
        Age:         25,
        Description: "this is bench testing",
        Cost:        299.9,
        ItemCount:   2000,
    }
    
    if err := sv.Validate(msg); err != nil {
        fmt.Errorf(err)
    }
}

Features

Validations Supported

S.No.NameData Type SupportedStatus
4minnumeric
5maxnumeric
6exclusiveMinnumeric
7exclusiveMaxnumeric
8multipleOfnumeric
9max-lengthstring
10min-lengthstring
11patternstring
11notnullstring
12enumall