package entity // IncomingQueryJSON describes the query coming into the service in JSON format type IncomingQueryJSON struct { DatabaseName string Return QueryReturnStruct Entities []QueryEntityStruct Relations []QueryRelationStruct Functions []QueryFunctionStruct // 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 } type QueryFunctionStruct struct { Type string TypeID int GroupType string GroupID int GroupAttribute string ByType string ByID int ByAttribute string AppliedModifier string 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 FunctionPointer int }