Пример #1
0
func handleQuery(w http.ResponseWriter, db nosql.Database, query string, r *http.Request) {
	if r.Method != "GET" {
		http.Error(w, "unsupported HTTP method", 400)
		return
	}
	headers, rs, err := db.Exec(ctx, query)
	if err != nil {
		http.Error(w, fmt.Sprintf("error in db.Exec(): %v", err), 500)
		return
	}
	fmt.Printf("Headers: %v\n", headers)
	results := []map[string]string{}
	for rs.Advance() {
		rowVals := rs.Result()
		result := map[string]string{}
		for i, elem := range rowVals {
			// TODO(bprosnitz) This assumes that we have string values
			result[headers[i]] = elem.String()
		}
		results = append(results, result)
	}
	jsondat, err := json.Marshal(results)
	if err != nil {
		http.Error(w, "error generating JSON", 500)
		return
	}
	w.Header().Add("Content-type", "Application/json")
	w.Write(jsondat)
}