fathom/pkg/aggregator/siteviews.go

38 lines
829 B
Go

package aggregator
import (
log "github.com/sirupsen/logrus"
"github.com/usefathom/fathom/pkg/models"
)
func (agg *aggregator) handleSiteview(results *results, p *models.Pageview) error {
site, err := agg.getSiteStats(results, p.Timestamp)
if err != nil {
log.Error(err)
return err
}
site.Pageviews += 1
if p.Duration > 0.00 {
site.KnownDurations += 1
site.AvgDuration = site.AvgDuration + ((float64(p.Duration) - site.AvgDuration) * 1 / float64(site.KnownDurations))
}
if p.IsNewVisitor {
site.Visitors += 1
}
if p.IsNewSession {
site.Sessions += 1
if p.IsBounce {
site.BounceRate = ((float64(site.Sessions-1) * site.BounceRate) + 1) / (float64(site.Sessions))
} else {
site.BounceRate = ((float64(site.Sessions-1) * site.BounceRate) + 0) / (float64(site.Sessions))
}
}
return nil
}