package entity // IncomingQueryJSON describes the query coming into the service in JSON format type IncomingQueryJSON struct { DatabaseName string Return QueryReturnStruct Entities []QueryEntityStruct Relations []QueryRelationStruct GroupBys []QueryGroupByStruct Filters []QueryFilterStruct // 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 GroupBys []int //Modifiers []int } // QueryEntityStruct encapsulates a single entity with its corresponding constraints type QueryEntityStruct struct { ID int Name string } // QueryRelationStruct encapsulates a single relation with its corresponding constraints type QueryRelationStruct struct { ID int Name string FromType string FromID int ToType string ToID int Depth QuerySearchDepthStruct } type QueryGroupByStruct struct { ID int GroupType string GroupID int GroupAttribute string ByType string ByID int ByAttribute string AppliedModifier string RelationID int } type QueryFilterStruct struct { ID int FromType string FromID int ToType string ToID int Attribute string DataType string MatchType string Value string InType string InID int } // 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