diff --git a/todo.go b/todo.go index 438d84ac6ef446b137d1a0f8dba9523964dee41f..206632535474e8e7241b0c781f3e83780bc79246 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) } }