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

chore: parallel summary conversion

This commit is contained in:
Ferdinand Mütsch 2020-09-12 00:20:16 +02:00
parent 570aeebe01
commit 8dca9f5cc0
4 changed files with 42 additions and 19 deletions

View File

@ -5,8 +5,6 @@
![](https://img.shields.io/github/license/muety/wakapi?style=flat-square) ![](https://img.shields.io/github/license/muety/wakapi?style=flat-square)
[![Go Report Card](https://goreportcard.com/badge/github.com/muety/wakapi?style=flat-square)](https://goreportcard.com/report/github.com/muety/wakapi) [![Go Report Card](https://goreportcard.com/badge/github.com/muety/wakapi?style=flat-square)](https://goreportcard.com/report/github.com/muety/wakapi)
[![Buy me a coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://buymeacoff.ee/n1try)
--- ---
**A minimalist, self-hosted WakaTime-compatible backend for coding statistics** **A minimalist, self-hosted WakaTime-compatible backend for coding statistics**

View File

@ -5,6 +5,7 @@ import (
"github.com/muety/wakapi/models" "github.com/muety/wakapi/models"
"github.com/muety/wakapi/utils" "github.com/muety/wakapi/utils"
"math" "math"
"sync"
"time" "time"
) )
@ -107,22 +108,46 @@ func newDataFrom(s *models.Summary) *wakatimeSummariesData {
}, },
} }
for i, e := range s.Projects { var wg sync.WaitGroup
data.Projects[i] = convertEntry(e, s.TotalTimeBy(models.SummaryProject)) wg.Add(5)
}
for i, e := range s.Editors {
data.Editors[i] = convertEntry(e, s.TotalTimeBy(models.SummaryEditor))
}
for i, e := range s.Languages {
data.Languages[i] = convertEntry(e, s.TotalTimeBy(models.SummaryLanguage))
}
for i, e := range s.OperatingSystems {
data.OperatingSystems[i] = convertEntry(e, s.TotalTimeBy(models.SummaryOS))
}
for i, e := range s.Machines {
data.Machines[i] = convertEntry(e, s.TotalTimeBy(models.SummaryMachine))
}
go func(data *wakatimeSummariesData) {
defer wg.Done()
for i, e := range s.Projects {
data.Projects[i] = convertEntry(e, s.TotalTimeBy(models.SummaryProject))
}
}(data)
go func(data *wakatimeSummariesData) {
defer wg.Done()
for i, e := range s.Editors {
data.Editors[i] = convertEntry(e, s.TotalTimeBy(models.SummaryEditor))
}
}(data)
go func(data *wakatimeSummariesData) {
defer wg.Done()
for i, e := range s.Languages {
data.Languages[i] = convertEntry(e, s.TotalTimeBy(models.SummaryLanguage))
}
}(data)
go func(data *wakatimeSummariesData) {
defer wg.Done()
for i, e := range s.OperatingSystems {
data.OperatingSystems[i] = convertEntry(e, s.TotalTimeBy(models.SummaryOS))
}
}(data)
go func(data *wakatimeSummariesData) {
defer wg.Done()
for i, e := range s.Machines {
data.Machines[i] = convertEntry(e, s.TotalTimeBy(models.SummaryMachine))
}
}(data)
wg.Wait()
return data return data
} }

View File

@ -25,7 +25,7 @@ func NewCompatV1SummariesHandler(summaryService *services.SummaryService) *Compa
} }
/* /*
TODO: support parameters: branches, timeout, writes_only, timezone TODO: support parameters: project, branches, timeout, writes_only, timezone
https://wakatime.com/developers#summaries https://wakatime.com/developers#summaries
timezone can be specified via an offset suffix (e.g. +02:00) in date strings timezone can be specified via an offset suffix (e.g. +02:00) in date strings
*/ */

View File

@ -1 +1 @@
1.10.1 1.10.2