Documentation
¶
Index ¶
- func Build[T any](feb FilterExpresssionBuilder[T], fe *FilterExpression) (t T, err error)
- func NewParser() *participle.Parser[FilterExpression]
- type BsonBuilder
- type ComparisonOperator
- type ComparisonOperatorMapper
- type Filter
- type FilterExpression
- type FilterExpresssionBuilder
- type FilterOrFilterExpression
- func AndI(filters ...*FilterOrFilterExpression) *FilterOrFilterExpression
- func NewFilter(id string, op ComparisonOperator, val *Value) *FilterOrFilterExpression
- func NewFilterExpression(logic LogicalOperator, filters ...*FilterOrFilterExpression) *FilterOrFilterExpression
- func NotI(filter *FilterOrFilterExpression) *FilterOrFilterExpression
- func OrI(filters ...*FilterOrFilterExpression) *FilterOrFilterExpression
- type GormBuilder
- type LogicalOperator
- type LogicalOperatorMapper
- type Value
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Build ¶
func Build[T any](feb FilterExpresssionBuilder[T], fe *FilterExpression) (t T, err error)
func NewParser ¶
func NewParser() *participle.Parser[FilterExpression]
Types ¶
type BsonBuilder ¶
type BsonBuilder struct{}
func (*BsonBuilder) ComparisonOperator ¶
func (*BsonBuilder) ComparisonOperator(op ComparisonOperator) (func(string, *Value) bson.M, error)
func (*BsonBuilder) LogicalOperator ¶
func (*BsonBuilder) LogicalOperator(op LogicalOperator) (func(...bson.M) bson.M, error)
type ComparisonOperator ¶
type ComparisonOperator string
const ( ComparisonOperatorEqual ComparisonOperator = `=` ComparisonOperatorGreater ComparisonOperator = `>` ComparisonOperatorGreaterOrEqual ComparisonOperator = `>=` ComparisonOperatorLess ComparisonOperator = `<` ComparisonOperatorLessOrEqual ComparisonOperator = `<=` ComparisonOperatorLike ComparisonOperator = "~" )
type ComparisonOperatorMapper ¶
type ComparisonOperatorMapper[T any] interface { ComparisonOperator(ComparisonOperator) (func(string, *Value) T, error) }
type Filter ¶
type Filter struct { Value *Value `parser:"@@"` Identifier string `parser:"@Ident"` Operator ComparisonOperator `parser:"@( '=' | '>''=' | '<''=' | '>' | '<' | '~' )"` }
type FilterExpression ¶
type FilterExpression struct { Logic LogicalOperator `parser:"@( 'and' | 'or' | 'not' )"` Filters []*FilterOrFilterExpression `parser:"'(' @@ (',' @@ )* ')'"` }
func AndR ¶
func AndR(filters ...*FilterOrFilterExpression) *FilterExpression
AndR returns a FilterExpression which can be the root of a filter expression with and logic
func NotR ¶
func NotR(filter *FilterOrFilterExpression) *FilterExpression
NotR returns a FilterExpression which can be the root of a filter expression with not logic
func OrR ¶
func OrR(filters ...*FilterOrFilterExpression) *FilterExpression
OrR returns a FilterExpression which can be the root of a filter expression with or logic
func (*FilterExpression) ToGorm ¶
func (fe *FilterExpression) ToGorm() (clause.Expression, error)
type FilterExpresssionBuilder ¶
type FilterExpresssionBuilder[T any] interface { LogicalOperatorMapper[T] ComparisonOperatorMapper[T] }
type FilterOrFilterExpression ¶
type FilterOrFilterExpression struct { Filter *Filter `parser:" @@"` FilterExpression *FilterExpression `parser:"| @@"` }
func AndI ¶
func AndI(filters ...*FilterOrFilterExpression) *FilterOrFilterExpression
AndI returns a FilterOrFilterExpression which is an intermediate part of a filter expression with and logic
func NewFilter ¶
func NewFilter(id string, op ComparisonOperator, val *Value) *FilterOrFilterExpression
NewFilter is a shorthand for Filter initialization
func NewFilterExpression ¶
func NewFilterExpression(logic LogicalOperator, filters ...*FilterOrFilterExpression) *FilterOrFilterExpression
NewFilter is a shorthand for FilterExpression initialization
func NotI ¶
func NotI(filter *FilterOrFilterExpression) *FilterOrFilterExpression
NotI returns a FilterOrFilterExpression which is an intermediate part of a filter expression with not logic
func OrI ¶
func OrI(filters ...*FilterOrFilterExpression) *FilterOrFilterExpression
OrI returns a FilterOrFilterExpression which is an intermediate part of a filter expression with or logic
type GormBuilder ¶
type GormBuilder struct{}
func (*GormBuilder) ComparisonOperator ¶
func (*GormBuilder) ComparisonOperator(op ComparisonOperator) (func(string, *Value) clause.Expression, error)
func (*GormBuilder) LogicalOperator ¶
func (*GormBuilder) LogicalOperator(op LogicalOperator) (func(...clause.Expression) clause.Expression, error)
type LogicalOperator ¶
type LogicalOperator string
const ( LogicalOperatorAnd LogicalOperator = `and` LogicalOperatorOr LogicalOperator = `or` LogicalOperatorNot LogicalOperator = `not` )
type LogicalOperatorMapper ¶
type LogicalOperatorMapper[T any] interface { LogicalOperator(LogicalOperator) (func(...T) T, error) }