Documentation ¶
Index ¶
- Constants
- Variables
- func SafeField(field string) string
- func ValueString(value interface{}) string
- type Field
- type Filter
- type FilterField
- type FilterFieldCustom
- type FilterFieldTypes
- type FilterLogic
- type FilterOp
- type FilterTerm
- type FilterType
- type NullSort
- type Options
- type QueryParameters
- type Sort
- type SortFields
- type SortTerm
Constants ¶
const ( FilterLogicAnd FilterLogic = 0 FilterLogicOr FilterLogic = 1 FilterLogicSymAnd = "&" FilterLogicSymOr = "|" ValueNeedsQuote = `&|)"` )
const ( FilterOpEquals FilterOp = 0 FilterOpNotEquals FilterOp = 1 FilterOpLessThan FilterOp = 2 FilterOpLessThanEqual FilterOp = 3 FilterOpGreaterThan FilterOp = 4 FilterOpGreaterThanEqual FilterOp = 5 FilterOpLike FilterOp = 6 FilterOpNotLike FilterOp = 7 FilterOpILike FilterOp = 8 FilterOpNotILike FilterOp = 9 FilterOpRegexp FilterOp = 10 FilterOpNotRegexp FilterOp = 11 FilterOpIRegexp FilterOp = 12 FilterOpNotIRegexp FilterOp = 13 FilterOpBitsSet FilterOp = 14 FilterOpBitsClear FilterOp = 15 FilterOpSymEquals = "=" FilterOpSymNotEquals = "!=" FilterOpSymLessThan = "<" FilterOpSymGreaterThan = ">" FilterOpSymLessThanEqual = "<=" FilterOpSymLessThanEqual2 = "=<" FilterOpSymGreaterThanEqual = ">=" FilterOpSymGreaterThanEqual2 = "=>" FilterOpSymLike = "=~" FilterOpSymNotLike = "!=~" FilterOpSymILike = "=~~" FilterOpSymNotILike = "!=~~" FilterOpSymRegexp = ":" FilterOpSymNotRegexp = "!:" FilterOpSymIRegexp = ":~" FilterOpSymNotIRegexp = "!:~" FilterOpSymBitsSet = "@" FilterOpSymBitsClear = "@~" FieldNeedsQuote = `!=<>~:"@` )
const NullValue = "null"
Variables ¶
var ( FilterOpSymToFilterOp = map[string]FilterOp{ FilterOpSymEquals: FilterOpEquals, FilterOpSymNotEquals: FilterOpNotEquals, FilterOpSymLessThan: FilterOpLessThan, FilterOpSymGreaterThan: FilterOpGreaterThan, FilterOpSymLessThanEqual: FilterOpLessThanEqual, FilterOpSymLessThanEqual2: FilterOpLessThanEqual, FilterOpSymGreaterThanEqual: FilterOpGreaterThanEqual, FilterOpSymGreaterThanEqual2: FilterOpGreaterThanEqual, FilterOpSymLike: FilterOpLike, FilterOpSymNotLike: FilterOpNotLike, FilterOpSymILike: FilterOpILike, FilterOpSymNotILike: FilterOpNotILike, FilterOpSymRegexp: FilterOpRegexp, FilterOpSymNotRegexp: FilterOpNotRegexp, FilterOpSymIRegexp: FilterOpIRegexp, FilterOpSymNotIRegexp: FilterOpNotIRegexp, FilterOpSymBitsSet: FilterOpBitsSet, FilterOpSymBitsClear: FilterOpBitsClear, } FilterOpToFilterOpSym = map[FilterOp]string{ FilterOpEquals: FilterOpSymEquals, FilterOpNotEquals: FilterOpSymNotEquals, FilterOpLessThan: FilterOpSymLessThan, FilterOpGreaterThan: FilterOpSymGreaterThan, FilterOpLessThanEqual: FilterOpSymLessThanEqual, FilterOpGreaterThanEqual: FilterOpSymGreaterThanEqual, FilterOpLike: FilterOpSymLike, FilterOpNotLike: FilterOpSymNotLike, FilterOpILike: FilterOpSymILike, FilterOpNotILike: FilterOpSymNotILike, FilterOpRegexp: FilterOpSymRegexp, FilterOpNotRegexp: FilterOpSymNotRegexp, FilterOpIRegexp: FilterOpSymIRegexp, FilterOpNotIRegexp: FilterOpSymNotIRegexp, FilterOpBitsSet: FilterOpSymBitsSet, FilterOpBitsClear: FilterOpSymBitsClear, } )
var ( FilterLogicSymToFilterLogic = map[string]FilterLogic{ FilterLogicSymAnd: FilterLogicAnd, FilterLogicSymOr: FilterLogicOr, } )
Functions ¶
func SafeField ¶ added in v0.2.5
SafeField will quote and escape fields if they contain op symbols or quotes
func ValueString ¶ added in v0.2.6
func ValueString(value interface{}) string
Convert our values to a string
Types ¶
type Filter ¶
type Filter []*FilterTerm
Filter is a slice of FilterTerms that are combined to make the full filter
func (*Filter) Append ¶ added in v0.2.1
func (f *Filter) Append(logic FilterLogic, field Field, op FilterOp, value interface{}) *Filter
Convienience function for appending to a filter
type FilterField ¶ added in v0.1.2
type FilterField interface { GetFieldName() string GetFilterType() FilterType }
FilterField is an interface used to allow specifying a filter for a particular filter type. if GetFieldName returns an empty string, it will assume the FieldName is the same as the field name specified in the map
type FilterFieldCustom ¶ added in v0.1.2
type FilterFieldCustom struct { FieldName string FilterType FilterType }
FilterFieldCustom is used to have a different name for a field from what can be specified in the parsable string
func (FilterFieldCustom) GetFieldName ¶ added in v0.2.4
func (ffc FilterFieldCustom) GetFieldName() Field
GetFieldName to return filter name from a Custom filter type
func (FilterFieldCustom) GetFilterType ¶ added in v0.2.4
func (ffc FilterFieldCustom) GetFilterType() FilterType
GetFilterType to return the filter type from a Custom filter type
type FilterFieldTypes ¶
type FilterFieldTypes map[Field]FilterField
func (FilterFieldTypes) FindFilterType ¶
func (fft FilterFieldTypes) FindFilterType(search string) (string, FilterType)
FindFilterType search the FilterFieldTypes to find a matching field name. First it searches for exact matches and then
type FilterLogic ¶
type FilterLogic int
func (FilterLogic) String ¶
func (logic FilterLogic) String() string
type FilterTerm ¶
type FilterTerm struct { Logic FilterLogic `json:"logic"` Op FilterOp `json:"op"` Field Field `json:"field"` Value interface{} `json:"value"` SubFilter []*FilterTerm `json:"sub_filter,omitempty"` }
func (FilterTerm) String ¶ added in v0.2.4
func (ft FilterTerm) String() string
String converts FilterTerm into it's string representation
type FilterType ¶
type FilterType int
const ( FilterTypeNotFound FilterType = 0 FilterTypeSimple FilterType = 1 FilterTypeString FilterType = 2 FilterTypeNumeric FilterType = 3 FilterTypeTime FilterType = 4 FilterTypeBool FilterType = 5 )
func (FilterType) GetFieldName ¶ added in v0.2.4
func (ft FilterType) GetFieldName() Field
GetFieldName returns empty field indicating it should use the same name as the filter type
func (FilterType) GetFilterType ¶ added in v0.2.4
func (ft FilterType) GetFilterType() FilterType
GetFilterType for the default filter types
type QueryParameters ¶
type QueryParameters struct { Filter Filter `json:"filter"` Sort Sort `json:"sort"` Options Options `json:"options"` Limit int64 `json:"limit"` Offset int64 `json:"offset"` }
func ParseQuery ¶
func ParseQuery(q string) (*QueryParameters, error)
ParseQuery converts a string into query parameters This loosely follows standard HTTP URL encoding
func ParseRawQuery ¶
func ParseRawQuery(rq string) (*QueryParameters, error)
func (*QueryParameters) Reset ¶ added in v0.2.2
func (qp *QueryParameters) Reset()
Reset clears query parameters for reuse
func (*QueryParameters) String ¶
func (qp *QueryParameters) String() string
String will turn query parameters back into a string that is equivalent to what can be parsed
type SortFields ¶
SortFields is how you specify what fields are available to select for sorting