featurebase/executor/utils.go

50 lines
1 KiB
Go

package executor
import (
"io/ioutil"
"pilosa/query"
"github.com/davecgh/go-spew/spew"
"github.com/robertkrimen/otto"
)
func GetMacro(file_name string, filter string) interface{} {
file_data, err := ioutil.ReadFile(file_name)
if err != nil {
spew.Dump(err)
}
s := string(file_data[:])
js := "query_list = (" + s + ")('" + filter + "');"
Otto := otto.New()
Otto.Run(js)
query_objects, err := Otto.Get("query_list")
query_list_interface, err := query_objects.Export()
if err != nil {
spew.Dump(err)
}
var query_list query.PqlList
// ql is []interface{}
switch ql := query_list_interface.(type) {
case []interface{}:
spew.Dump("INTERFACE", ql)
// q is map[string]interface{}
for i, _ := range ql {
q := ql[i].(map[string]interface{})
spew.Dump(ql[i])
spew.Dump(q)
spew.Dump(q["label"].(string))
spew.Dump(q["pql"].(string))
query_list = append(query_list, query.PqlListItem{Label: q["label"].(string), PQL: q["pql"].(string)})
}
default:
spew.Dump("DEFAULT")
}
return query_list
}