1
0
mirror of https://github.com/muety/wakapi.git synced 2023-08-10 21:12:56 +03:00

fix: properly sort durations to prevent heartbeats from being counted twice

This commit is contained in:
Ferdinand Mütsch 2021-12-26 13:21:40 +01:00
parent acf16421a6
commit 148f581906
4 changed files with 6 additions and 6 deletions

View File

@ -16,7 +16,7 @@ func (d Durations) Swap(i, j int) {
d[i], d[j] = d[j], d[i] d[i], d[j] = d[j], d[i]
} }
func (d *Durations) Sorted() *Durations { func (d Durations) Sorted() Durations {
sort.Sort(d) sort.Sort(d)
return d return d
} }

View File

@ -21,7 +21,7 @@ func NewDurationService(heartbeatService IHeartbeatService) *DurationService {
return srv return srv
} }
func (srv *DurationService) Get(from, to time.Time, user *models.User) ([]*models.Duration, error) { func (srv *DurationService) Get(from, to time.Time, user *models.User) (models.Durations, error) {
heartbeats, err := srv.heartbeatService.GetAllWithin(from, to, user) heartbeats, err := srv.heartbeatService.GetAllWithin(from, to, user)
if err != nil { if err != nil {
return nil, err return nil, err
@ -62,7 +62,7 @@ func (srv *DurationService) Get(from, to time.Time, user *models.User) ([]*model
count++ count++
} }
durations := make([]*models.Duration, 0, count) durations := make(models.Durations, 0, count)
for _, list := range mapping { for _, list := range mapping {
for _, d := range list { for _, d := range list {
@ -73,5 +73,5 @@ func (srv *DurationService) Get(from, to time.Time, user *models.User) ([]*model
} }
} }
return durations, nil return durations.Sorted(), nil
} }

View File

@ -75,7 +75,7 @@ type IMailService interface {
} }
type IDurationService interface { type IDurationService interface {
Get(time.Time, time.Time, *models.User) ([]*models.Duration, error) Get(time.Time, time.Time, *models.User) (models.Durations, error)
} }
type ISummaryService interface { type ISummaryService interface {

View File

@ -58,7 +58,7 @@ func NewSummaryService(summaryRepo repositories.ISummaryRepository, durationServ
func (srv *SummaryService) Aliased(from, to time.Time, user *models.User, f SummaryRetriever, skipCache bool) (*models.Summary, error) { func (srv *SummaryService) Aliased(from, to time.Time, user *models.User, f SummaryRetriever, skipCache bool) (*models.Summary, error) {
// Check cache // Check cache
cacheKey := srv.getHash(from.String(), to.String(), user.ID, "--aliased") cacheKey := srv.getHash(from.String(), to.String(), user.ID, "--aliased")
if cacheResult, ok := srv.cache.Get(cacheKey); ok && !skipCache { if cacheResult, ok := srv.cache.Get(cacheKey); ok && !skipCache && false {
return cacheResult.(*models.Summary), nil return cacheResult.(*models.Summary), nil
} }