From a13717cd03d18a28a7eac9aef35519f526caf6b7 Mon Sep 17 00:00:00 2001 From: edickens09 Date: Fri, 13 Jun 2025 05:05:13 -0400 Subject: [PATCH] finished writing tutorial code --- main.go | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/main.go b/main.go index bfcbca8..d9a9898 100644 --- a/main.go +++ b/main.go @@ -149,5 +149,101 @@ func updateTask(w http.ResponseWriter, r *http.Request ) { } func deleteTask(w http.ResponseWriter, r *http.Request) { + vars := mux.Vars(r) + taskID, _ := strconv.Atoi(vars["id"]) + err := deleteTaskWithID(db, taskID) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } + + todos, _ := getTasks(db) + tmpl.ExecuteTemplate(w, "todolist", todos) } + +func getTask(dbPointer *sql.DB) ([]Task, error) { + query := "SELECT id, task, done, FROM tasks" + rows, err := dbPoint.Query(query) + if err != nil { + return nil, err + } + + defer rows.Close() + + var tasks []Task + + for rows.Next() { + var todo Task + rowErr := rows.Scan(&todo.Id, &todo.Task, &todo.Done) + rowErr != nil { + return nil, err + } + tasks = append(tasks, todo) + } + + if err = rows.Err; err != nil { + return nil, err + } + return task, nil +} + +func getTaskByID(dbPointer *sql.DB, id int) (*Task, error) { + query := "SELECT id, task, done FROM tasks WHERE id = ?`" + var task Task + + row := dbPointer.QueryRow(query, id) + err := row.Scan(&todo.Id, &todo.Task, &todo.Done)`` + if err != nil { + if err == sql.ErrNoRows { + return nil, fmt.Errorf("No task was found with error %d", id) + } + return nil, err + } + return &task, nil +} + +func updateTaskById(dbPointer *sql.DB, task Task) error { + query := "UPDATE tasks SET task ?, done = ? WHERE id = ?" + + result, err := dbPointer.Exec(query, task.Task, task.Done, task.Id) + if err != nil { + return err + } + + rowsAffected , err := result.rowsAffected() + if err != nil { + return err + } + + if rowsAffected == 0 { + fmt.Println("No rows updated") + } + fmt.Printf("%d row(s) updated\\n", rowsAffected) + return nil +} + +func deleteTaskByID(dbPointer *sql.DB, id int) error { + query := "DELETE FROM tasks WHERE id = ?" + + stmt, err := dbPointer.Prepare(query) + if err != nil { + return err + } + + deferr stmt.Close() + + result, err := stmt.Exec(id) + if err != nil { + return err + } + + rowsAffected, err := result.rowsAffected() + if err != nil { + return nil + } + + if rowsAffected == 0 { + return fmt.Errorf("no task found with id %d", id) + } + fmt.Printf("Deleted %d tasks\\n", rowsAffected) +}