Skip to content
Snippets Groups Projects
queryStruct.go 2.29 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
    This program has been developed by students from the bachelor Computer Science at Utrecht University within the Software Project course.
    © Copyright Utrecht University (Department of Information and Computing Sciences)
    */
    
    package entityv2
    
    /*
    IncomingQueryJSON describes the query coming into the service in JSON format
    */
    type IncomingQueryJSON struct {
    
    	SaveStateID string        `json:"saveStateId"`
    	Limit       int           `json:"limit"`
    	Return      []string      `json:"return"`
    	Query       []QueryStruct `json:"query"`
    	Logic       interface{}   `json:"logic"`
    
    	// Entities        []QueryEntityStruct   `json:"entities"`
    	// Relations       []QueryRelationStruct `json:"relations"`
    	// GroupBys        []QueryGroupByStruct  `json:"groupBys"`
    
    	MachineLearning []QueryMLStruct `json:"machineLearning"`
    
    	// Modifiers []QueryModifierStruct
    	// Prefix    string
    
    	Cached bool `json:"cached"`
    
    /*
    QueryMLStruct holds info for machinelearning
    */
    type QueryMLStruct struct {
    	Type       string
    	Parameters []string
    }
    
    
    type QueryStruct struct {
    
    	ID   string     `json:"id"`
    	Node NodeStruct `json:"node"`
    
    }
    
    type NodeStruct struct {
    
    	Label string `json:"label"`
    	ID    string `json:"id"`
    
    	// Logic      []LogicStruct      `json:"logic"`
    
    	Filter   []FilterStruct     `json:"filter"`
    	Relation RelationStruct     `json:"relation"`
    	SubQuery *QueryStruct       `json:"subquery"`
    	Export   []ExportNodeStruct `json:"export"`
    
    }
    
    type ExportNodeStruct struct {
    
    	ID        string `json:"id"`
    	Attribute string `json:"attribute"`
    
    }
    
    type FilterStruct struct {
    
    	Attribute string `json:"attribute"`
    	Operation string `json:"operation"`
    	Value     string `json:"value"`
    
    }
    
    type RelationStruct struct {
    
    	Label     string                 `json:"label"`
    	ID        string                 `json:"id"`
    	Depth     QuerySearchDepthStruct `json:"depth"`
    	Direction string                 `json:"direction"`
    	Node      *NodeStruct            `json:"node"`
    
    }
    
    /*
    QuerySearchDepthStruct holds the range of traversals for the relation
    */
    type QuerySearchDepthStruct struct {
    	Min int `json:"min"`
    	Max int `json:"max"`
    
    // Logic Structs!
    //
    
    type LogicStruct struct {
    
    	Attribute string `json:"attribute"`
    	Operation string `json:"operation"`
    	ID        string `json:"id"`