#16 deletiion capabillity
All checks were successful
Build Docker Image / Explore-Gitea-Actions (push) Successful in 1m18s

This commit is contained in:
Tim
2024-07-30 22:04:40 +02:00
parent 3af10dc9fc
commit d7858505b9
5 changed files with 58 additions and 7 deletions

View File

@@ -41,5 +41,6 @@ func getRouter(db *sql.DB) *http.ServeMux {
var router = http.NewServeMux()
router.HandleFunc("POST /workout", workout.NewWorkout(db))
router.HandleFunc("GET /workout", workout.GetWorkouts(db))
router.HandleFunc("DELETE /workout", workout.DeleteWorkout(db))
return router
}

View File

@@ -58,7 +58,7 @@ func GetWorkouts(db *sql.DB) http.HandlerFunc {
token := r.Context().Value(middleware.TOKEN_KEY).(*auth.Token)
var userId = token.UID
rows, err := db.Query("SELECT date, type, sets, reps FROM workout WHERE user_id = ?", userId)
rows, err := db.Query("SELECT rowid, date, type, sets, reps FROM workout WHERE user_id = ?", userId)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
@@ -66,18 +66,20 @@ func GetWorkouts(db *sql.DB) http.HandlerFunc {
var workouts = make([]map[string]interface{}, 0)
for rows.Next() {
var id int
var date string
var workoutType string
var sets int
var reps int
err = rows.Scan(&date, &workoutType, &sets, &reps)
err = rows.Scan(&id, &date, &workoutType, &sets, &reps)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
workout := map[string]interface{}{
"id": id,
"date": date,
"type": workoutType,
"sets": sets,
@@ -89,3 +91,22 @@ func GetWorkouts(db *sql.DB) http.HandlerFunc {
utils.WriteJSON(w, workouts)
}
}
func DeleteWorkout(db *sql.DB) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
token := r.Context().Value(middleware.TOKEN_KEY).(*auth.Token)
var userId = token.UID
rowId := r.FormValue("id")
if rowId == "" {
http.Error(w, "Missing required fields", http.StatusBadRequest)
return
}
_, err := db.Exec("DELETE FROM workout WHERE user_id = ? AND rowid = ?", userId, rowId)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
}