1
0
Fork 0

Basic query working

All column values returned as strings
master
Philip O'Toole 10 years ago
parent 2f62ef8e22
commit 09d32f4cac

@ -36,7 +36,37 @@ func New(dir string) *DB {
// Executes the query. // Executes the query.
func (db *DB) Query(query string) string { func (db *DB) Query(query string) string {
return "the query" rows, err := db.dbConn.Query(query)
if err != nil {
fmt.Println(err.Error())
}
defer rows.Close()
columns, _ := rows.Columns()
rawResult := make([][]byte, len(columns))
result := make([]string, len(columns))
dest := make([]interface{}, len(columns)) // A temporary interface{} slice
for i, _ := range rawResult {
dest[i] = &rawResult[i] // Put pointers to each string in the interface slice
}
for rows.Next() {
err = rows.Scan(dest...)
if err != nil {
fmt.Println("Failed to scan row", err)
}
for i, raw := range rawResult {
if raw == nil {
result[i] = "null"
} else {
result[i] = string(raw)
}
}
fmt.Printf("%#v\n", result)
}
return "query complete response" // Inefficient?
} }
// Sets the value for a given key. // Sets the value for a given key.

@ -112,8 +112,8 @@ func (s *Server) ListenAndServe(leader string) error {
Handler: s.router, Handler: s.router,
} }
s.router.HandleFunc("/db/{key}", s.readHandler).Methods("GET") s.router.HandleFunc("/db", s.readHandler).Methods("GET")
s.router.HandleFunc("/db/{key}", s.writeHandler).Methods("POST") s.router.HandleFunc("/db", s.writeHandler).Methods("POST")
s.router.HandleFunc("/join", s.joinHandler).Methods("POST") s.router.HandleFunc("/join", s.joinHandler).Methods("POST")
log.Println("Listening at:", s.connectionString()) log.Println("Listening at:", s.connectionString())
@ -159,7 +159,12 @@ func (s *Server) joinHandler(w http.ResponseWriter, req *http.Request) {
} }
func (s *Server) readHandler(w http.ResponseWriter, req *http.Request) { func (s *Server) readHandler(w http.ResponseWriter, req *http.Request) {
value := s.db.Query("query") b, err := ioutil.ReadAll(req.Body)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
value := s.db.Query(string(b))
w.Write([]byte(value)) w.Write([]byte(value))
} }

Loading…
Cancel
Save