Skip to content

Commit a709dcb

Browse files
authored
Finished refactor
2 parents 7d58451 + fc3df3c commit a709dcb

File tree

4 files changed

+83
-145
lines changed

4 files changed

+83
-145
lines changed

handlers/http_handlers.go

Lines changed: 14 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,16 @@ var Domain string
2424
// used by gin to load template funcs
2525
func templateFuncs() template.FuncMap {
2626
return template.FuncMap{
27-
"until": func(n int) []int {
28-
result := make([]int, n)
29-
for i := range n {
30-
result[i] = i
31-
}
32-
return result
33-
},
3427
"add": func(a, b int) int {
3528
return a + b
3629
},
30+
"rangeN": func(n int) []int {
31+
out := make([]int, n)
32+
for i := range n {
33+
out[i] = i
34+
}
35+
return out
36+
},
3737
}
3838
}
3939

@@ -46,9 +46,9 @@ func SetUpRouter(domain, csrf_key string, db models.DataBase) http.Handler {
4646

4747
if gin.Mode() == gin.TestMode {
4848
log.Println("WARNING: TEST MODE")
49-
SessionManager.Cookie.Secure = false // HTTP is fine for testing
50-
SessionManager.Cookie.SameSite = http.SameSiteDefaultMode // Less restrictive for tests
51-
SessionManager.Cookie.Name = "test_session" // Explicit name
49+
SessionManager.Cookie.Secure = false
50+
SessionManager.Cookie.SameSite = http.SameSiteDefaultMode
51+
SessionManager.Cookie.Name = "test_session"
5252
}
5353

5454
if domain == "" || csrf_key == "" {
@@ -1072,13 +1072,6 @@ func HandlePostTracksCreate(db *models.DataBase) func(c *gin.Context) {
10721072
return
10731073
}
10741074

1075-
err = db.CreateTrackDataForTrack(&wt)
1076-
if err != nil {
1077-
log.Println(err)
1078-
c.Redirect(http.StatusSeeOther, "/error-page")
1079-
return
1080-
}
1081-
10821075
c.Redirect(http.StatusSeeOther, "/user/"+strconv.Itoa(user_id)+"/track/view/"+strconv.Itoa(wt.Id))
10831076
}
10841077
}
@@ -1121,14 +1114,6 @@ func HandleGetViewTrack(db *models.DataBase) func(c *gin.Context) {
11211114
return
11221115
}
11231116

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-
// }
1131-
11321117
c.HTML(http.StatusOK, "view_track.html", gin.H{"track": track, "user_id": user_id, "requesting_user_id": requesting_user_id})
11331118
}
11341119
}
@@ -1236,12 +1221,14 @@ func HandlePostTracksEdit(db *models.DataBase) func(c *gin.Context) {
12361221
}
12371222

12381223
// var track_json models.TrackJSON
1239-
if err := c.BindJSON(wt); err != nil {
1224+
td := make([]models.TrackData, 0)
1225+
if err := c.BindJSON(&td); err != nil {
1226+
log.Println(err)
12401227
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid JSON"})
12411228
return
12421229
}
12431230

1244-
_, err = db.UpdateMultipleTrackData(wt.TrackData)
1231+
_, err = db.UpdateMultipleTrackData(td)
12451232
if err != nil {
12461233
log.Println(err)
12471234
c.Redirect(http.StatusSeeOther, "/error-page")

models/workout_track.go

Lines changed: 9 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,6 @@ import (
1010
_ "github.com/mattn/go-sqlite3"
1111
)
1212

13-
// type WorkoutTrack struct {
14-
// Id int `json:"id"`
15-
// Plan WorkoutPlan `json:"plan"`
16-
// User int `json:"user"`
17-
// IsPrivate bool `json:"is_private"`
18-
// WorkoutDate time.Time `json:"workout_date"`
19-
// ExDays []ExDay `json:"ex_days"`
20-
// }
21-
22-
// type TrackData struct {
23-
// Id int `json:"id"`
24-
// Track int `json:"track"`
25-
// ExDay int `json:"ex_day"`
26-
// Weight float32 `json:"weight"`
27-
// SetNum int `json:"set_num"`
28-
// RepNum int `json:"rep_num"`
29-
// }
30-
31-
// type TrackJSON struct {
32-
// WTrack WorkoutTrack `json:"wt"`
33-
// Data []TrackData `json:"td"`
34-
// }
35-
3613
type WorkoutTrack struct {
3714
Id int `json:"id"`
3815
Plan WorkoutPlan `json:"plan_id"` // Used when creating the track and comparing the planned and tracked data
@@ -43,12 +20,11 @@ type WorkoutTrack struct {
4320
}
4421

4522
type TrackData struct {
46-
Id int `json:"id"`
47-
DayNum int `json:"day_num"`
48-
ExNum int `json:"ex_num"`
49-
Weight float32 `json:"weight"`
50-
SetNum int `json:"set_num"`
51-
RepNum int `json:"rep_num"`
23+
Id int `json:"id"`
24+
ExDayId int `json:"ex_day_id"`
25+
Weight float32 `json:"weight"`
26+
SetNum int `json:"set_num"`
27+
RepNum int `json:"rep_num"`
5228
}
5329

5430
func (Db *DataBase) CreateWorkoutTrack(wt *WorkoutTrack) (int, error) {
@@ -114,7 +90,7 @@ func (Db *DataBase) ReadWorkoutTrack(wt_id int) (*WorkoutTrack, error) {
11490

11591
func (Db *DataBase) ReadAllExerciseDaysFromTrack(wt_id int) ([]ExDay, error) {
11692
querry := `
117-
select exercise_day.id, day_name, exercise, exercise_day.weight, unit, sets, min_reps, max_reps, day_order
93+
select distinct exercise_day.id, day_name, exercise, exercise_day.weight, unit, sets, min_reps, max_reps, day_order
11894
from exercise_day inner join workout_track_data on exercise_day.id = ex_day
11995
where track = ?
12096
order by day_order asc, exercise_order asc
@@ -334,10 +310,10 @@ func (Db *DataBase) CreateTrackDataForTrack(wt *WorkoutTrack) error {
334310

335311
func (Db *DataBase) ReadTrackDataForTrack(wt_id int) ([]TrackData, error) {
336312
query_str := `
337-
select workout_track_data.id, ex_day, weight, set_num, rep_num
313+
select workout_track_data.id, ex_day, workout_track_data.weight, set_num, rep_num
338314
from workout_track_data inner join exercise_day on ex_day = exercise_day.id
339315
where track = ?
340-
order by day_order acs, exercise_order asc
316+
order by day_order asc, exercise_order asc
341317
`
342318

343319
rows, err := Db.Data.Query(query_str, wt_id)
@@ -352,11 +328,9 @@ func (Db *DataBase) ReadTrackDataForTrack(wt_id int) ([]TrackData, error) {
352328
for rows.Next() {
353329
td := TrackData{}
354330

355-
var ex_day_id int
356-
357331
err = rows.Scan(
358332
&td.Id,
359-
&ex_day_id,
333+
&td.ExDayId,
360334
&td.Weight,
361335
&td.SetNum,
362336
&td.RepNum,

templates/edit_track.html

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,14 @@ <h1>Edit Workout Track</h1>
2929

3030
<form id="editTrackForm">
3131
{{ .csrfField }}
32-
{{ $trackData := .track_data }}
33-
{{ $trackID := (index .track_data 0).Track }}
32+
33+
{{ $trackData := .track.TrackData }}
34+
{{ $tdLen := len $trackData }}
35+
{{ $tdIndex := 0 }}
3436
{{ $userID := .user_id }}
37+
{{ $trackID := .track.Id }}
3538

36-
{{ range $i, $day := .Days }}
39+
{{ range $i, $day := .track.Plan.Days }}
3740
<h2>{{ $day.Name }}</h2>
3841

3942
{{ range $ex := $day.Exercises }}
@@ -49,17 +52,17 @@ <h3>{{ $ex.Exercise.Name }}</h3>
4952
<tbody>
5053
{{ $exDayId := $ex.Id }}
5154
{{ $found := false }}
52-
{{ range $td := $trackData }}
53-
{{ if eq $td.ExDay $exDayId }}
55+
{{ range $td := $.track.TrackData }}
56+
{{ if eq $td.ExDayId $exDayId }}
5457
{{ $found = true }}
5558
<tr>
5659
<td>
5760
<input type="number" step="0.1" name="weight" value="{{ printf "%.2f" $td.Weight }}"
58-
data-id="{{ $td.Id }}" data-exday="{{ $td.ExDay }}" data-setnum="{{ $td.SetNum }}">
61+
data-id="{{ $td.Id }}" data-exday="{{ $td.ExDayId }}" data-setnum="{{ $td.SetNum }}">
5962
</td>
6063
<td>
6164
<input type="number" name="repnum" value="{{ $td.RepNum }}"
62-
data-id="{{ $td.Id }}" data-exday="{{ $td.ExDay }}" data-setnum="{{ $td.SetNum }}">
65+
data-id="{{ $td.Id }}" data-exday="{{ $td.ExDayId }}" data-setnum="{{ $td.SetNum }}">
6366
</td>
6467
</tr>
6568
{{ end }}
@@ -81,9 +84,8 @@ <h3>{{ $ex.Exercise.Name }}</h3>
8184
async function submitEdit() {
8285
const form = document.getElementById('editTrackForm');
8386
const csrfToken = form.querySelector('input[name="gorilla.csrf.Token"]').value;
87+
const trackID = {{ .track.Id }};
8488
const userID = {{ .user_id }};
85-
const trackID = {{ (index .track_data 0).Track }};
86-
8789
const td = [];
8890

8991
document.querySelectorAll('input[name="weight"]').forEach(input => {
@@ -107,25 +109,25 @@ <h3>{{ $ex.Exercise.Name }}</h3>
107109
});
108110
});
109111

110-
const payload = {
111-
wt: {
112-
id: trackID,
113-
user: userID
114-
},
115-
td: td
116-
};
112+
<!-- const payload = { -->
113+
<!-- wt: { -->
114+
<!-- id: trackID, -->
115+
<!-- user: userID -->
116+
<!-- }, -->
117+
<!-- td: td -->
118+
<!-- }; -->
117119

118-
const res = await fetch(`/user/{{ .user_id }}/track/edit/${trackID}`, {
120+
const res = await fetch(`/user/${userID}/track/edit/${trackID}`, {
119121
method: "POST",
120122
headers: {
121123
"Content-Type": "application/json",
122124
"X-CSRF-Token": csrfToken
123125
},
124-
body: JSON.stringify(payload)
126+
body: JSON.stringify(td)
125127
});
126128

127129
if (res.ok) {
128-
window.location.href = `/user/{{ .user_id }}/track/view/${trackID}`;
130+
window.location.href = `/user/${userID}/track/view/${trackID}`;
129131
} else {
130132
alert("Failed to update track.");
131133
}

0 commit comments

Comments
 (0)