Skip to content

softbrewery/gorqf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gorqf

Build Status codecov Go Report Card GitHub license

Install

$ go get github.com/softbrewery/gorqf

Usage

Basic

// Create rqf parser
parser := rqf.NewParser()

// Json filter comming from rest request
jsonFilter := `
{
    "fields": ["-_id","isbn"],
    "order": ["isbn ASC"],
    "limit": 1,
    "offset": 1,
    "where" {"isbn": "0-306-40615-2"}
}`

// Parse the filter
filter, err := parser.Parse(jsonFilter)
if err != nil {
    // handle error
}

Validation

// Create rqf parser
parser := rqf.NewParser()

// only allow isbn/name to be selected
parser.FieldSchema( joi.String().Allow("isbn", "name") )

// only allow isbn to be ordered (ASC/DESC)
parser.OrderSchema( joi.String().Allow("isbn", "isbn ASC", "isbn DESC") )

// only allow paging between 10 and 100 items
parser.LimitSchema( joi.Int().Min(10).Max(100) )

// Don't allow where condition
parser.WhereSchema( joi.Any().Forbidden() )
            
// Json filter comming from rest request
jsonFilter := `
{
    "fields": ["isbn", "name"],
    "order": ["isbn ASC"],
    "limit": 25,
    "offset": 1
}`

// Parse the filter
filter, err := parser.Parse(jsonFilter)
if err != nil {
    // handle error
}

About

Go library to parse and validate REST query filters

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors