finished writing tutorial code
This commit is contained in:
parent
d85c32b489
commit
a13717cd03
96
main.go
96
main.go
@ -149,5 +149,101 @@ func updateTask(w http.ResponseWriter, r *http.Request ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deleteTask(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)
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user