Categorygithub.com/securehaven/query
repositorypackage
1.3.0
Repository: https://github.com/securehaven/query.git
Documentation: pkg.go.dev

# README

SecureHaven: Query

Getting started

Install the module by running

go get github.com/securehaven/query

Usage

package main

import ("github.com/securehaven/query")

type exampleUser struct {
	Id        int    `json:"id"`
	FirstName string `json:"first_name"`
	LastName  string `json:"last_name"`
}

type examplePost struct {
	Id     int         `json:"id"`
	Title  string      `json:"title"`
	Author exampleUser `json:"author"`
}

var parser = query.MustParser(query.NewParser[examplePost]())

func main() {
	queryValues, _ := url.ParseQuery("limit=10&offset=0&sort=id:asc&select=title,author.first_name,author.last_name&id=gt:1")
	q, err := parser.Parse(queryValues)

	if err != nil {
		fmt.Printf("failed to parse some value: %v", err)
	}

	fmt.Printf("%+v", query)
	// {Limit:10 Offset:0 Select:[title author.first_name author.last_name] Sortings:[{Field:id Order:asc}] Filterings:[{Field:id Filter:gt Value:1}]}
}

Syntax

Pagination

offset=<int>&limit=<int>

Example

/users?offset=0&limit=10

Select

select=<field>,...

Example

/users?select=id,firstName,lastName

Sort

Allowed order values: asc, desc, asc_nulls_first, desc_nulls_first, asc_nulls_last, desc_nulls_last

sort=<field>:<order>,...

Example

/users?sort=createdAt:desc,firstName:asc

Filter

Allowed filter values: eq, lt, gt, lte, gte, like, neq

<field>=<value>&<field>=<filter>:<value>

<field>=<value> and <field>=eq:<value> behave the same

Example

/users?firstName=John&lastName=like:D%&age=gte:18,lte:35