Skip to content

Commit e43bb84

Browse files
Merge pull request #789 from atomaka/fix-latest-weight-query
Fix latest measurement query
2 parents bf2815b + e63f9ee commit e43bb84

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

pkg/database/user.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@ func (u *User) measurementAt(key string, d time.Time) float64 {
475475
Where("date <= ?", datatypes.Date(d)).
476476
Where("? > ?", key, 0).
477477
Order("date DESC").
478+
Limit(1).
478479
Pluck(key, &w)
479480

480481
if err := q.Error; err != nil {

pkg/database/user_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package database
22

33
import (
44
"testing"
5+
"time"
56

67
"github.com/fsouza/slognil"
78
"github.com/stretchr/testify/assert"
@@ -305,6 +306,25 @@ func TestDatabaseProfileSave(t *testing.T) {
305306
assert.Equal(t, "de", u.Profile.Language)
306307
}
307308

309+
func TestUser_WeightAtUsesLatestMeasurement(t *testing.T) {
310+
db := createMemoryDB(t)
311+
u := defaultUser()
312+
require.NoError(t, u.Create(db))
313+
u.SetDB(db)
314+
315+
base := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC)
316+
317+
m1 := u.NewMeasurement(base)
318+
m1.Weight = 80
319+
require.NoError(t, m1.Save(db))
320+
321+
m2 := u.NewMeasurement(base.AddDate(0, 0, 1))
322+
m2.Weight = 75
323+
require.NoError(t, m2.Save(db))
324+
325+
assert.Equal(t, 75.0, u.WeightAt(base.AddDate(0, 0, 1)))
326+
}
327+
308328
func TestDatabaseUserWorkouts(t *testing.T) {
309329
populateGPXFS()
310330

0 commit comments

Comments
 (0)