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

fix: support project query param for alltime endpoint

This commit is contained in:
Ferdinand Mütsch 2020-09-11 20:22:33 +02:00
parent 84e9559860
commit a8009e107d
4 changed files with 31 additions and 7 deletions

View File

@ -2,11 +2,11 @@ package v1
// https://wakatime.com/developers#all_time_since_today
type AllTimeVieModel struct {
Data *AllTimeVieModelData `json:"data"`
type AllTimeViewModel struct {
Data *AllTimeViewModelData `json:"data"`
}
type AllTimeVieModelData struct {
type AllTimeViewModelData struct {
Seconds float32 `json:"seconds"` // total number of seconds logged since account created
Text string `json:"text"` // total time logged since account created as human readable string>
IsUpToDate bool `json:"is_up_to_date"` // true if the stats are up to date; when false, a 202 response code is returned and stats will be refreshed soon>

View File

@ -138,3 +138,21 @@ func (s *Summary) TotalTime() time.Duration {
return timeSum
}
func (s *Summary) TotalTimeBy(entityType uint8, key string) time.Duration {
var timeSum time.Duration
mappedItems := s.MappedItems()
// calculate total duration from any of the present sets of items
if items := mappedItems[entityType]; len(*items) > 0 {
for _, item := range *items {
if item.Key != key {
continue
}
timeSum += item.Total
}
}
return timeSum
}

View File

@ -44,9 +44,15 @@ func (h *CompatV1AllHandler) ApiGet(w http.ResponseWriter, r *http.Request) {
return
}
total := summary.TotalTime()
vm := &v1.AllTimeVieModel{
Data: &v1.AllTimeVieModelData{
var total time.Duration
if key := values.Get("project"); key != "" {
total = summary.TotalTimeBy(models.SummaryProject, key)
} else {
total = summary.TotalTime()
}
vm := &v1.AllTimeViewModel{
Data: &v1.AllTimeViewModelData{
Seconds: float32(total),
Text: utils.FmtWakatimeDuration(total * time.Second),
IsUpToDate: true,

View File

@ -1 +1 @@
1.9.1
1.9.2