Skip to content
Snippets Groups Projects
queryStruct.go 2.16 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
    
    	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
    
    	//Modifiers []int
    }
    
    // QueryEntityStruct encapsulates a single entity with its corresponding constraints
    type QueryEntityStruct struct {
    
    }
    
    // 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
    
    	GroupType       string
    	GroupID         int
    	GroupAttribute  string
    	ByType          string
    	ByID            int
    	ByAttribute     string
    	AppliedModifier string
    
    }
    
    type QueryFilterStruct struct {
    	ID           int
    	FilteredType string
    	FilteredID   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
    
    Fjodor's avatar
     
    Fjodor committed
    // 	string     MatchTypes: exact/contains/startswith/endswith
    
    // 	bool     MatchTypes: EQ/NEQ