query

package
v1.8.0 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2024 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package query is a library of custom condition queries, support for complex conditional paging queries.

Index

Constants

View Source
const (
	// Eq equal
	Eq = "eq"

	// Neq not equal
	Neq = "neq"

	// Gt greater than
	Gt = "gt"

	// Gte greater than or equal
	Gte = "gte"

	// Lt less than
	Lt = "lt"

	// Lte less than or equal
	Lte = "lte"

	// Like fuzzy lookup
	Like = "like"
	// In include
	In = "in"

	// AND logic and
	AND string = "and" //nolint

	// OR logic or
	OR string = "or" //nolint

)

Variables

This section is empty.

Functions

func SetMaxSize

func SetMaxSize(max int)

SetMaxSize change the default maximum number of pages per page

Types

type Column

type Column struct {
	Name  string      `json:"name" form:"name"`   // column name
	Exp   string      `json:"exp" form:"exp"`     // expressions, which default to = when the value is null, have =, !=, >, >=, <, <=, like, in
	Value interface{} `json:"value" form:"value"` // column value
	Logic string      `json:"logic" form:"logic"` // logical type, defaults to and when the value is null, with &(and), ||(or)
}

Column query info

type Conditions

type Conditions struct {
	Columns []Column `json:"columns" form:"columns" binding:"min=1"` // columns info
}

Conditions query conditions

func (*Conditions) CheckValid

func (c *Conditions) CheckValid() error

CheckValid check valid

func (*Conditions) ConvertToMongo

func (c *Conditions) ConvertToMongo() (bson.M, error)

ConvertToMongo conversion to mongo-compliant parameters based on the Columns parameter ignore the logical type of the last column, whether it is a one-column or multi-column query

type Page

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

Page info

func DefaultPage

func DefaultPage(page int) *Page

DefaultPage default page, number 20 per page, sorted by id backwards

func NewPage

func NewPage(page int, size int, columnNames string) *Page

NewPage custom page, starting from page 0. the parameter columnNames indicates a sort field, if empty means id descending, if there are multiple column names, separated by a comma, a '-' sign in front of each column name indicates descending order, otherwise ascending order.

func (*Page) Page

func (p *Page) Page() int

Page get page value

func (*Page) Size

func (p *Page) Size() int

Size number per page

func (*Page) Skip

func (p *Page) Skip() int

Skip get offset value

func (*Page) Sort

func (p *Page) Sort() bson.D

Sort get sort field

type Params

type Params struct {
	Page int    `json:"page" form:"page" binding:"gte=0"`
	Size int    `json:"size" form:"size" binding:"gt=0"`
	Sort string `json:"sort,omitempty" form:"sort" binding:""`

	Columns []Column `json:"columns,omitempty" form:"columns"` // not required
}

Params query parameters

func (*Params) ConvertToMongoFilter

func (p *Params) ConvertToMongoFilter() (bson.M, error)

ConvertToMongoFilter conversion to mongo-compliant parameters based on the Columns parameter ignore the logical type of the last column, whether it is a one-column or multi-column query

func (*Params) ConvertToPage

func (p *Params) ConvertToPage() (sort bson.D, limit int, skip int)

ConvertToPage converted to conform to mongo rules based on the page size sort parameter

Jump to

Keyboard shortcuts

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