Newer
Older
// IncomingQueryJSON describes the query coming into the service in JSON format
type IncomingQueryJSON struct {
DatabaseName string
Return QueryReturnStruct
Entities []QueryEntityStruct
Relations []QueryRelationStruct
// Limit is for limiting the amount of paths AQL will return in a relation let statement
Limit int
Modifiers []QueryModifierStruct
}
// QueryReturnStruct holds the indices of the entities and relations that need to be returned
type QueryReturnStruct struct {
Entities []int
Relations []int
//Modifiers []int
}
// QueryEntityStruct encapsulates a single entity with its corresponding constraints
type QueryEntityStruct struct {
Type string
Constraints []QueryConstraintStruct
}
// QueryRelationStruct encapsulates a single relation with its corresponding constraints
type QueryRelationStruct struct {
Type string
EntityFrom int
EntityTo int
Depth QuerySearchDepthStruct
Constraints []QueryConstraintStruct
}
// QueryModifierStruct encapsulates a single modifier with its corresponding constraints
type QueryModifierStruct struct {
Type string // SUM COUNT AVG
SelectedType string // node relation
SelectedTypeID int // ID of the enitity or relation
AttributeIndex int // = -1 if its the node or relation, = > -1 if an attribute is selected
}
// QuerySearchDepthStruct holds the range of traversals for the relation
type QuerySearchDepthStruct struct {
Min int
Max int
}
// QueryConstraintStruct holds the information of the constraint
// Constraint datatypes
// string MatchTypes: exact/contains/startswith/endswith
// int MatchTypes: GT/LT/EQ
// bool MatchTypes: EQ/NEQ
type QueryConstraintStruct struct {
Attribute string
Value string
DataType string
MatchType string
}