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) {
|
||||
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