mirror of
https://github.com/muety/wakapi.git
synced 2023-08-10 21:12:56 +03:00
chore: optimize import date range
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
package imports
|
||||
|
||||
import "github.com/muety/wakapi/models"
|
||||
import (
|
||||
"github.com/muety/wakapi/models"
|
||||
"time"
|
||||
)
|
||||
|
||||
type HeartbeatImporter interface {
|
||||
Import(*models.User) <-chan *models.Heartbeat
|
||||
Import(*models.User, time.Time, time.Time) <-chan *models.Heartbeat
|
||||
ImportAll(*models.User) <-chan *models.Heartbeat
|
||||
}
|
||||
|
@@ -17,9 +17,8 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
maxWorkers = 6
|
||||
)
|
||||
const OriginWakatime = "wakatime"
|
||||
const maxWorkers = 6
|
||||
|
||||
type WakatimeHeartbeatImporter struct {
|
||||
ApiKey string
|
||||
@@ -31,7 +30,7 @@ func NewWakatimeHeartbeatImporter(apiKey string) *WakatimeHeartbeatImporter {
|
||||
}
|
||||
}
|
||||
|
||||
func (w *WakatimeHeartbeatImporter) Import(user *models.User) <-chan *models.Heartbeat {
|
||||
func (w *WakatimeHeartbeatImporter) Import(user *models.User, minFrom time.Time, maxTo time.Time) <-chan *models.Heartbeat {
|
||||
out := make(chan *models.Heartbeat)
|
||||
|
||||
go func(user *models.User, out chan *models.Heartbeat) {
|
||||
@@ -41,6 +40,13 @@ func (w *WakatimeHeartbeatImporter) Import(user *models.User) <-chan *models.Hea
|
||||
return
|
||||
}
|
||||
|
||||
if startDate.Before(minFrom) {
|
||||
startDate = minFrom
|
||||
}
|
||||
if endDate.After(maxTo) {
|
||||
endDate = maxTo
|
||||
}
|
||||
|
||||
userAgents, err := w.fetchUserAgents()
|
||||
if err != nil {
|
||||
logbuch.Error("failed to fetch user agents while importing wakatime heartbeats for user '%s' – %v", user.ID, err)
|
||||
@@ -82,6 +88,10 @@ func (w *WakatimeHeartbeatImporter) Import(user *models.User) <-chan *models.Hea
|
||||
return out
|
||||
}
|
||||
|
||||
func (w *WakatimeHeartbeatImporter) ImportAll(user *models.User) <-chan *models.Heartbeat {
|
||||
return w.Import(user, time.Time{}, time.Now())
|
||||
}
|
||||
|
||||
// https://wakatime.com/api/v1/users/current/heartbeats?date=2021-02-05
|
||||
func (w *WakatimeHeartbeatImporter) fetchHeartbeats(day string) ([]*wakatime.HeartbeatEntry, error) {
|
||||
httpClient := &http.Client{Timeout: 10 * time.Second}
|
||||
@@ -211,7 +221,8 @@ func mapHeartbeat(
|
||||
OperatingSystem: ua.Os,
|
||||
Machine: entry.MachineNameId, // TODO
|
||||
Time: entry.Time,
|
||||
Origin: fmt.Sprintf("wt@%s", entry.Id),
|
||||
Origin: OriginWakatime,
|
||||
OriginId: entry.Id,
|
||||
}).Hashed()
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user