Skip to content

Commit 7d58451

Browse files
authored
Refactored the tracking model
Changed the go side to be less like the db side and removed unnecessary table form db
2 parents 0259115 + 463b067 commit 7d58451

File tree

5 files changed

+220
-248
lines changed

5 files changed

+220
-248
lines changed

handlers/http_handlers.go

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,15 +1121,15 @@ func HandleGetViewTrack(db *models.DataBase) func(c *gin.Context) {
11211121
return
11221122
}
11231123

1124-
track_data, err := db.ReadTrackDataForTrack(track.Id)
1125-
if err != nil {
1126-
log.Println("ERROR: error while reading track data")
1127-
log.Println(err)
1128-
c.Redirect(http.StatusSeeOther, "/error-page")
1129-
return
1130-
}
1124+
// track_data, err := db.ReadTrackDataForTrack(track.Id)
1125+
// if err != nil {
1126+
// log.Println("ERROR: error while reading track data")
1127+
// log.Println(err)
1128+
// c.Redirect(http.StatusSeeOther, "/error-page")
1129+
// return
1130+
// }
11311131

1132-
c.HTML(http.StatusOK, "view_track.html", gin.H{"track_data": track_data, "Days": track.ExDays, "user_id": user_id, "requesting_user_id": requesting_user_id})
1132+
c.HTML(http.StatusOK, "view_track.html", gin.H{"track": track, "user_id": user_id, "requesting_user_id": requesting_user_id})
11331133
}
11341134
}
11351135

@@ -1167,27 +1167,27 @@ func HandleGetTracksEdit(db *models.DataBase) func(c *gin.Context) {
11671167
return
11681168
}
11691169

1170-
wt, err := db.ReadWorkoutTrack(wt_id)
1170+
track, err := db.ReadWorkoutTrack(wt_id)
11711171
if err != nil {
11721172
log.Println(err)
11731173
c.Redirect(http.StatusSeeOther, "/error-page")
11741174
return
11751175
}
11761176

1177-
if wt.User != user_id {
1177+
if track.User != user_id {
11781178
log.Println("NU UUUUH")
11791179
c.Redirect(http.StatusTemporaryRedirect, "/error-page") // NOTE: create a page for Private or something
11801180
return
11811181
}
11821182

1183-
td, err := db.ReadTrackDataForTrack(wt_id)
1184-
if err != nil {
1185-
log.Println(err)
1186-
c.Redirect(http.StatusSeeOther, "/error-page")
1187-
return
1188-
}
1183+
// td, err := db.ReadTrackDataForTrack(wt_id)
1184+
// if err != nil {
1185+
// log.Println(err)
1186+
// c.Redirect(http.StatusSeeOther, "/error-page")
1187+
// return
1188+
// }
11891189

1190-
c.HTML(http.StatusOK, "edit_track.html", gin.H{csrf.TemplateTag: csrf.TemplateField(c.Request), "Days": wt.ExDays, "track_data": td, "user_id": user_id})
1190+
c.HTML(http.StatusOK, "edit_track.html", gin.H{csrf.TemplateTag: csrf.TemplateField(c.Request), "track": track, "user_id": user_id})
11911191
}
11921192
}
11931193

@@ -1235,13 +1235,13 @@ func HandlePostTracksEdit(db *models.DataBase) func(c *gin.Context) {
12351235
return
12361236
}
12371237

1238-
var track_json models.TrackJSON
1239-
if err := c.BindJSON(&track_json); err != nil {
1238+
// var track_json models.TrackJSON
1239+
if err := c.BindJSON(wt); err != nil {
12401240
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid JSON"})
12411241
return
12421242
}
12431243

1244-
_, err = db.UpdateMultipleTrackData(track_json.Data)
1244+
_, err = db.UpdateMultipleTrackData(wt.TrackData)
12451245
if err != nil {
12461246
log.Println(err)
12471247
c.Redirect(http.StatusSeeOther, "/error-page")
@@ -1299,7 +1299,14 @@ func HandleGetTracksDelete(db *models.DataBase) func(c *gin.Context) {
12991299
// log.Println("You cannot delete another persons track")
13001300
// }
13011301

1302-
_, err = db.DeleteWorkoutTracks(track_id)
1302+
track, err := db.ReadWorkoutTrack(track_id)
1303+
if err != nil {
1304+
log.Println(err)
1305+
c.Redirect(http.StatusPermanentRedirect, "/error-page")
1306+
return
1307+
}
1308+
1309+
_, err = db.DeleteWorkoutTracks(track)
13031310
if err != nil {
13041311
log.Println(err)
13051312
c.Redirect(http.StatusPermanentRedirect, "/error-page")

models/create_track_table.sql

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ CREATE TABLE workout_track (
3232
DROP TABLE IF EXISTS track_exercise;
3333

3434
-- NOTE: this table is used to track which ex_days are for which track since ex days can be changed in a plan, but the track needs to remember them
35-
CREATE TABLE track_exercise (
36-
track INTEGER,
37-
ex_day INTEGER,
38-
PRIMARY KEY(track, ex_day),
39-
FOREIGN KEY(track) REFERENCES workout_track(id),
40-
FOREIGN KEY(ex_day) REFERENCES exercise_day(id)
41-
);
35+
-- CREATE TABLE track_exercise (
36+
-- track INTEGER,
37+
-- ex_day INTEGER,
38+
-- PRIMARY KEY(track, ex_day),
39+
-- FOREIGN KEY(track) REFERENCES workout_track(id),
40+
-- FOREIGN KEY(ex_day) REFERENCES exercise_day(id)
41+
-- );

models/user.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,8 +300,9 @@ func (Db *DataBase) DeleteUser(user_id int) (bool, error) {
300300
return false, err
301301
}
302302

303-
users_track_ids, err := Db.GetTracksUserUses(user_id)
304-
_, err = Db.DeleteWorkoutTracks(users_track_ids...)
303+
// users_track_ids, err := Db.GetTracksUserUses(user_id)
304+
tracks, err := Db.ReadUsersWorkoutTracks(user_id, user_id)
305+
_, err = Db.DeleteWorkoutTracks(tracks...)
305306
if err != nil {
306307
log.Println("Couldn't delete workout tracks!")
307308
return false, err

models/workout_plan.go

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@ import (
77
"time"
88

99
_ "github.com/mattn/go-sqlite3"
10+
11+
"fitness_app/defs"
1012
)
1113

1214
type WorkoutPlan struct {
13-
Id int `json:"id"` // id of the workout plan
14-
Name string `json:"name"`
15-
Creator int `json:"creator"`
16-
Description string `json:"description"`
17-
MakeCurrent bool `json:"make_current"`
15+
Id int `json:"id"` // id of the workout plan
16+
Name string `json:"name"`
17+
Creator int `json:"creator"`
18+
Description string `json:"description"`
19+
MakeCurrent bool `json:"make_current"`
1820
Days []ExDay `json:"days"`
1921
}
2022

@@ -228,7 +230,6 @@ func (Db *DataBase) GetPlansUserUses(user_id int) ([]int, error) {
228230
return res, nil
229231
}
230232

231-
232233
func (Db *DataBase) ReadUsersRecentlyTrackedPlans(user_id int) ([]*WorkoutPlan, error) {
233234

234235
sql_query := `
@@ -306,8 +307,6 @@ func (Db *DataBase) UpdateWorkoutPlan(wp *WorkoutPlan) (bool, error) {
306307
return false, err
307308
}
308309

309-
310-
311310
old_ex_days, err := Db.ReadAllExerciseDaysFromPlan(wp.Id)
312311
if err != nil {
313312
return false, err
@@ -325,12 +324,12 @@ func (Db *DataBase) UpdateWorkoutPlan(wp *WorkoutPlan) (bool, error) {
325324
for i := range len(old_ex_days) {
326325
for j := range len(old_ex_days[i].Exercises) {
327326
if i >= len(diff) || j >= len(diff[i]) {
328-
_, err := stmt_ex.Exec(1, old_ex_days[i].Exercises[j].Id)
327+
_, err := stmt_ex.Exec(defs.PLACEHOLDER_PLAN_ID, old_ex_days[i].Exercises[j].Id)
329328
if err != nil {
330329
return false, err
331330
}
332331
} else if diff[i][j] {
333-
_, err := stmt_ex.Exec(1, old_ex_days[i].Exercises[j].Id)
332+
_, err := stmt_ex.Exec(defs.PLACEHOLDER_PLAN_ID, old_ex_days[i].Exercises[j].Id)
334333
if err != nil {
335334
return false, err
336335
}
@@ -343,13 +342,11 @@ func (Db *DataBase) UpdateWorkoutPlan(wp *WorkoutPlan) (bool, error) {
343342
return false, err
344343
}
345344

346-
347345
err = Db.CachePlanBasic(wp.Id)
348346
if err != nil {
349347
return false, err
350348
}
351349

352-
353350
return true, nil
354351
}
355352

@@ -390,20 +387,20 @@ func (Db *DataBase) getExerciseDayDifference(new_wp *WorkoutPlan, tx *sql.Tx) ([
390387
var old_day_name string
391388
var tmp_ex ExerciseData
392389
err = search_stmt.QueryRow(new_wp.Id, i, j).Scan(&old_day_name, &tmp_ex.Exercise.Id, &tmp_ex.Weight, &tmp_ex.Unit, &tmp_ex.Sets, &tmp_ex.MinReps, &tmp_ex.MaxReps)
393-
if err != nil ||
394-
ex.Exercise.Id != tmp_ex.Exercise.Id ||
395-
ex.Weight != tmp_ex.Weight ||
396-
ex.Unit != tmp_ex.Unit ||
397-
ex.Sets != tmp_ex.Sets ||
398-
ex.MinReps != tmp_ex.MinReps ||
399-
ex.MaxReps != tmp_ex.MaxReps {
390+
if err != nil ||
391+
ex.Exercise.Id != tmp_ex.Exercise.Id ||
392+
ex.Weight != tmp_ex.Weight ||
393+
ex.Unit != tmp_ex.Unit ||
394+
ex.Sets != tmp_ex.Sets ||
395+
ex.MinReps != tmp_ex.MinReps ||
396+
ex.MaxReps != tmp_ex.MaxReps {
400397
log.Println("Error in search stmt:", err)
401398
diff[i][j] = true
402399
err := insert_stmt.QueryRow(new_wp.Id, day.Name, ex.Exercise.Id, ex.Weight, ex.Unit, ex.Sets, ex.MinReps, ex.MaxReps, i, j).Scan(&tmp_ex.Id)
403400
if err != nil {
404401
return nil, err
405402
}
406-
} else if old_day_name != day.Name{
403+
} else if old_day_name != day.Name {
407404
_, err = day_name_stmt.Exec(day.Name, new_wp.Id, i)
408405
if err != nil {
409406
return nil, err
@@ -539,6 +536,10 @@ func ValidateExerciseDayInput(ex ExerciseData) error {
539536

540537
}
541538

539+
// func (Db *DataBase) ReadExerciseDay(ex_day_id int) (*ExerciseData, error) {
540+
// row, err := Db.Data.QueryRow("select plan, day")
541+
// }
542+
542543
func (Db *DataBase) ReadAllExerciseDaysFromPlan(plan_id int) ([]ExDay, error) {
543544
rows, err := Db.Data.Query("select id, day_name, exercise, weight, unit, sets, min_reps, max_reps, day_order from exercise_day where plan = ? order by day_order asc, exercise_order asc", plan_id)
544545
if err != nil {
@@ -575,7 +576,7 @@ func (Db *DataBase) ReadAllExerciseDaysFromPlan(plan_id int) ([]ExDay, error) {
575576
if !ok {
576577
return nil, err
577578
}
578-
// tmp.Targets = nil // NOTE: this is needed for converting the plan to json. If the targets are left as is, the json gets into an infinite loop
579+
579580
ex.Exercise = *tmp
580581

581582
if curr_day != prev_day {
@@ -612,7 +613,7 @@ func (Db *DataBase) DeleteExerciseDay(id int) (bool, error) {
612613

613614
func (Db *DataBase) CachePlanBasic(wp_id int) error {
614615
row := Db.Data.QueryRow("select name, creator, description from workout_plan where id = ?", wp_id)
615-
wp := WorkoutPlan{ Id: wp_id }
616+
wp := WorkoutPlan{Id: wp_id}
616617
err := row.Scan(&wp.Name, &wp.Creator, &wp.Description)
617618
if err != nil {
618619
return err
@@ -627,7 +628,7 @@ func (wp *WorkoutPlan) GetAnalysis() *PlanAnalysis {
627628
return nil
628629
}
629630

630-
analysis := &PlanAnalysis{ SetsPerTarget: make(map[*Target]int)}
631+
analysis := &PlanAnalysis{SetsPerTarget: make(map[*Target]int)}
631632

632633
for _, day := range wp.Days {
633634
for _, ex := range day.Exercises {

0 commit comments

Comments
 (0)