func createTodo(rend render.Render, req *http.Request, params martini.Params, dbh *db.DBHandle) { err := req.ParseForm() if err != nil { rend.JSON(500, err.Error()) return } u := unmarshalTodoJSON{} glog.Info("Decoded json: %+v", u) err = json.NewDecoder(req.Body).Decode(&u) if err != nil { rend.JSON(500, err.Error()) return } queryParams, _ := url.ParseQuery(req.URL.RawQuery) dbtodo := db.Todo{ Text: u.Text, Category: u.Category, Date: u.Date, } if _, ok := queryParams["addToAll"]; ok { glog.Info(u) //do something here err = dbh.AddTodoToAllPeople(&dbtodo) if err != nil { rend.JSON(http.StatusInternalServerError, err.Error()) return } } else { p := db.Person{Id: u.PersonId} err = dbh.ORM.Read(&p) if err != nil { rend.JSON(500, fmt.Sprintf("Unknown Person id: %d", u.PersonId)) return } dbtodo.Person = &p _, err = dbh.ORM.Insert(&dbtodo) if err != nil { rend.JSON(500, err.Error()) return } rend.JSON(200, todoWithPersonIdJSON{&dbtodo, p.Id}) } }