Skip to content
Snippets Groups Projects
queryStruct.go 2.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • // 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
    }
    
    
    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
    
    Fjodor's avatar
     
    Fjodor committed
    // 	string     MatchTypes: exact/contains/startswith/endswith
    
    // 	bool     MatchTypes: EQ/NEQ
    type QueryConstraintStruct struct {
    
    	Attribute       string
    	Value           string
    	DataType        string
    	MatchType       string
    	FunctionPointer int