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]
}
func (d *Durations) Sorted() *Durations {
func (d Durations) Sorted() Durations {
sort.Sort(d)
return d
}

View File

@ -21,7 +21,7 @@ func NewDurationService(heartbeatService IHeartbeatService) *DurationService {
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)
if err != nil {
return nil, err
@ -62,7 +62,7 @@ func (srv *DurationService) Get(from, to time.Time, user *models.User) ([]*model
count++
}
durations := make([]*models.Duration, 0, count)
durations := make(models.Durations, 0, count)
for _, list := range mapping {
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 {
Get(time.Time, time.Time, *models.User) ([]*models.Duration, error)
Get(time.Time, time.Time, *models.User) (models.Durations, error)
}
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) {
// Check cache
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
}