Documentation
¶
Index ¶
- Constants
- Variables
- type AcceptableQueryTypes
- type AndQuery
- func (query *AndQuery) ColumnUsages() []ColumnUsageInfo
- func (query *AndQuery) Depth() (int, error)
- func (query *AndQuery) GetColumnName() (bool, string)
- func (query *AndQuery) Query(database *gorm.DB) *gorm.DB
- func (query *AndQuery) Type() TypeIdentifier
- func (query *AndQuery) UnmarshalJSON(data []byte) error
- type BaseQuery
- type ColumnUsageInfo
- type JSON
- type NumberQuery
- type OrQuery
- func (query *OrQuery) ColumnUsages() []ColumnUsageInfo
- func (query *OrQuery) Depth() (int, error)
- func (query *OrQuery) GetColumnName() (bool, string)
- func (query *OrQuery) Query(database *gorm.DB) *gorm.DB
- func (query *OrQuery) Type() TypeIdentifier
- func (query *OrQuery) UnmarshalJSON(data []byte) error
- type Results
- type StrictStringQuery
- func (query *StrictStringQuery) ColumnUsages() []ColumnUsageInfo
- func (query *StrictStringQuery) Depth() (int, error)
- func (query *StrictStringQuery) GetColumnName() (bool, string)
- func (query *StrictStringQuery) Query(database *gorm.DB) *gorm.DB
- func (query *StrictStringQuery) Type() TypeIdentifier
- type StringQuery
- type TypeIdentifier
Constants ¶
View Source
const MaxDepth = 10
MaxDepth is how deep a query will go before throwing.
Variables ¶
View Source
var ErrMaxDepth = fmt.Errorf("max depth exceeded")
Functions ¶
This section is empty.
Types ¶
type AcceptableQueryTypes ¶
type AcceptableQueryTypes struct {
// ColumnName is the name of the column in the database
ColumnName string `json:"columnName"`
// QueryTypes are the types of queries that can be run on this column
QueryTypes []TypeIdentifier `json:"queryTypes"`
// Limit max number of queries that can be run on this column
Limit int `json:"limit"`
}
type AndQuery ¶
type AndQuery struct {
Queries []BaseQuery `json:"queries"`
}
func (*AndQuery) ColumnUsages ¶
func (query *AndQuery) ColumnUsages() []ColumnUsageInfo
func (*AndQuery) GetColumnName ¶ added in v0.2.0
func (*AndQuery) Type ¶
func (query *AndQuery) Type() TypeIdentifier
func (*AndQuery) UnmarshalJSON ¶
type BaseQuery ¶
type BaseQuery interface {
Query(database *gorm.DB) *gorm.DB
// ColumnUsages returns a string of each column used in the query
ColumnUsages() []ColumnUsageInfo
// Depth returns the depth of the query or error if it is too deep
Depth() (int, error)
Type() TypeIdentifier
// GetColumnName Returns false, "" if the query is an OrQuery
GetColumnName() (bool, string)
}
func GetQueryType ¶
func GetQueryType(id TypeIdentifier) BaseQuery
type ColumnUsageInfo ¶
type ColumnUsageInfo struct {
ColumnName string
QueryType TypeIdentifier
}
type JSON ¶
type JSON struct {
QueryType TypeIdentifier `json:"type"`
Query json.RawMessage `json:"query"`
}
type NumberQuery ¶
type NumberQuery struct {
ColumnName string `json:"column"`
Equals *int `json:"equals,omitempty"`
NotEquals *int `json:"notEquals,omitempty"`
GreaterThan *int `json:"greaterThan,omitempty"`
GreaterThanOrEqual *int `json:"greaterThanOrEqual,omitempty"`
LessThan *int `json:"lessThan,omitempty"`
LessThanOrEqual *int `json:"lessThanOrEqual,omitempty"`
}
func (*NumberQuery) ColumnUsages ¶
func (query *NumberQuery) ColumnUsages() []ColumnUsageInfo
func (*NumberQuery) Depth ¶
func (query *NumberQuery) Depth() (int, error)
func (*NumberQuery) GetColumnName ¶
func (query *NumberQuery) GetColumnName() (bool, string)
func (*NumberQuery) Type ¶
func (query *NumberQuery) Type() TypeIdentifier
type OrQuery ¶
type OrQuery struct {
Queries []BaseQuery `json:"queries"`
}
func (*OrQuery) ColumnUsages ¶
func (query *OrQuery) ColumnUsages() []ColumnUsageInfo
func (*OrQuery) GetColumnName ¶
func (*OrQuery) Type ¶
func (query *OrQuery) Type() TypeIdentifier
func (*OrQuery) UnmarshalJSON ¶
type Results ¶
type StrictStringQuery ¶
func (*StrictStringQuery) ColumnUsages ¶
func (query *StrictStringQuery) ColumnUsages() []ColumnUsageInfo
func (*StrictStringQuery) Depth ¶
func (query *StrictStringQuery) Depth() (int, error)
func (*StrictStringQuery) GetColumnName ¶
func (query *StrictStringQuery) GetColumnName() (bool, string)
func (*StrictStringQuery) Type ¶
func (query *StrictStringQuery) Type() TypeIdentifier
type StringQuery ¶
type StringQuery struct {
ColumnName string `json:"column"`
Equals *string `json:"equals,omitempty"`
Contains *string `json:"contains,omitempty"`
}
func (*StringQuery) ColumnUsages ¶
func (query *StringQuery) ColumnUsages() []ColumnUsageInfo
func (*StringQuery) Depth ¶
func (query *StringQuery) Depth() (int, error)
func (*StringQuery) GetColumnName ¶
func (query *StringQuery) GetColumnName() (bool, string)
func (*StringQuery) Type ¶
func (query *StringQuery) Type() TypeIdentifier
type TypeIdentifier ¶
type TypeIdentifier string
const ( TypeNumber TypeIdentifier = "number" TypeString TypeIdentifier = "string" TypeStrictString TypeIdentifier = "strict_string" TypeOr TypeIdentifier = "or" TypeAnd TypeIdentifier = "and" )
Click to show internal directories.
Click to hide internal directories.