Skip to content
Snippets Groups Projects
queryStruct.go 1.77 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
    }
    
    // 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
    // 	int   MatchTypes: GT/LT/EQ
    
    // 	bool     MatchTypes: EQ/NEQ
    type QueryConstraintStruct struct {
    	Attribute string
    	Value     string
    	DataType  string
    	MatchType string
    }