From 17e287d05538b4a7fd545d380771c1b1f426e059 Mon Sep 17 00:00:00 2001 From: Simon Lindblad <simon.lindblad93@gmail.com> Date: Wed, 11 May 2016 21:36:20 +0200 Subject: [PATCH] Implement creation of lists --- todo.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/todo.go b/todo.go index 438d84a..2066325 100644 --- a/todo.go +++ b/todo.go @@ -92,6 +92,14 @@ func getTasks(db *sql.DB, listId int) []Task { return res } +func insertList(db *sql.DB, listName string) int { + var listId int + err := db.QueryRow("insert into list (name) values ($1) returning id", listName).Scan(&listId) + CheckFatal(err) + + return listId +} + func insertTask(db *sql.DB, taskName string, listId int) { _, err := db.Exec("insert into task (name, list) values ($1, $2)", taskName, listId) // Handle non-existing list id @@ -117,6 +125,18 @@ func (db *Database) listHandler(w http.ResponseWriter, r *http.Request) { tasks := getTasks(db.Db, listId) json.NewEncoder(w).Encode(&tasks) } + } else if r.Method == "POST" { + // Parse the request and create a new list + body, err := ioutil.ReadAll(r.Body) + CheckFatal(err) + listRequest := ListCreateRequest{} + err = json.Unmarshal(body, &listRequest) + CheckFatal(err) + + listResponse := ListCreateResponse{} + listResponse.Id = insertList(db.Db, listRequest.Name) + + json.NewEncoder(w).Encode(&listResponse) } } -- GitLab