godoc improvements

This commit is contained in:
Danny van Kooten 2018-05-21 11:54:01 +02:00
parent 72c2952e15
commit 3b8a884991
5 changed files with 17 additions and 10 deletions

View File

@ -11,12 +11,14 @@ type aggregator struct {
database datastore.Datastore database datastore.Datastore
} }
// New returns a new aggregator instance with the database dependency injected.
func New(db datastore.Datastore) *aggregator { func New(db datastore.Datastore) *aggregator {
return &aggregator{ return &aggregator{
database: db, database: db,
} }
} }
// Run processes the pageviews which are ready to be processed and adds them to daily aggregation
func (agg *aggregator) Run() { func (agg *aggregator) Run() {
// Get unprocessed pageviews // Get unprocessed pageviews
pageviews, err := agg.database.GetProcessablePageviews() pageviews, err := agg.database.GetProcessablePageviews()
@ -61,9 +63,10 @@ func (agg *aggregator) Run() {
} }
} }
func (agg *aggregator) Process(pageviews []*models.Pageview) *Results { // Process processes the given pageviews and returns the (aggregated) results per metric per day
func (agg *aggregator) Process(pageviews []*models.Pageview) *results {
log.Debugf("processing %d pageviews", len(pageviews)) log.Debugf("processing %d pageviews", len(pageviews))
results := NewResults() results := newResults()
for _, p := range pageviews { for _, p := range pageviews {
site, err := agg.getSiteStats(results, p.Timestamp) site, err := agg.getSiteStats(results, p.Timestamp)

View File

@ -4,14 +4,14 @@ import (
"github.com/usefathom/fathom/pkg/models" "github.com/usefathom/fathom/pkg/models"
) )
type Results struct { type results struct {
Sites map[string]*models.SiteStats Sites map[string]*models.SiteStats
Pages map[string]*models.PageStats Pages map[string]*models.PageStats
Referrers map[string]*models.ReferrerStats Referrers map[string]*models.ReferrerStats
} }
func NewResults() *Results { func newResults() *results {
return &Results{ return &results{
Sites: map[string]*models.SiteStats{}, Sites: map[string]*models.SiteStats{},
Pages: map[string]*models.PageStats{}, Pages: map[string]*models.PageStats{},
Referrers: map[string]*models.ReferrerStats{}, Referrers: map[string]*models.ReferrerStats{},

View File

@ -7,7 +7,7 @@ import (
"github.com/usefathom/fathom/pkg/models" "github.com/usefathom/fathom/pkg/models"
) )
func (agg *aggregator) getSiteStats(r *Results, t time.Time) (*models.SiteStats, error) { func (agg *aggregator) getSiteStats(r *results, t time.Time) (*models.SiteStats, error) {
// get from map // get from map
date := t.Format("2006-01-02") date := t.Format("2006-01-02")
if stats, ok := r.Sites[date]; ok { if stats, ok := r.Sites[date]; ok {
@ -37,7 +37,7 @@ func (agg *aggregator) getSiteStats(r *Results, t time.Time) (*models.SiteStats,
return stats, nil return stats, nil
} }
func (agg *aggregator) getPageStats(r *Results, t time.Time, hostname string, pathname string) (*models.PageStats, error) { func (agg *aggregator) getPageStats(r *results, t time.Time, hostname string, pathname string) (*models.PageStats, error) {
date := t.Format("2006-01-02") date := t.Format("2006-01-02")
if stats, ok := r.Pages[date+hostname+pathname]; ok { if stats, ok := r.Pages[date+hostname+pathname]; ok {
return stats, nil return stats, nil
@ -64,7 +64,7 @@ func (agg *aggregator) getPageStats(r *Results, t time.Time, hostname string, pa
return stats, nil return stats, nil
} }
func (agg *aggregator) getReferrerStats(r *Results, t time.Time, url string) (*models.ReferrerStats, error) { func (agg *aggregator) getReferrerStats(r *results, t time.Time, url string) (*models.ReferrerStats, error) {
date := t.Format("2006-01-02") date := t.Format("2006-01-02")
if stats, ok := r.Referrers[date+url]; ok { if stats, ok := r.Referrers[date+url]; ok {
return stats, nil return stats, nil

View File

@ -9,12 +9,13 @@ import (
"github.com/usefathom/fathom/pkg/datastore/sqlstore" "github.com/usefathom/fathom/pkg/datastore/sqlstore"
) )
// Config wraps the configuration structs for the various application parts
type Config struct { type Config struct {
Database *sqlstore.Config Database *sqlstore.Config
Secret string
Secret string
} }
// Parses the supplied file + environment into a Config struct
func Parse(file string) *Config { func Parse(file string) *Config {
var cfg Config var cfg Config
var err error var err error

View File

@ -7,6 +7,7 @@ import (
"github.com/usefathom/fathom/pkg/models" "github.com/usefathom/fathom/pkg/models"
) )
// ErrNoResults is returned whenever a single-item query returns 0 results
var ErrNoResults = sqlstore.ErrNoResults // ??? var ErrNoResults = sqlstore.ErrNoResults // ???
type Datastore interface { type Datastore interface {
@ -47,9 +48,11 @@ type Datastore interface {
GetAggregatedReferrerStats(time.Time, time.Time, int) ([]*models.ReferrerStats, error) GetAggregatedReferrerStats(time.Time, time.Time, int) ([]*models.ReferrerStats, error)
GetAggregatedReferrerStatsPageviews(time.Time, time.Time) (int, error) GetAggregatedReferrerStatsPageviews(time.Time, time.Time) (int, error)
// misc
Close() Close()
} }
// New instantiates a new datastore from the given configuration struct
func New(c *sqlstore.Config) Datastore { func New(c *sqlstore.Config) Datastore {
return sqlstore.New(c) return sqlstore.New(c)
} }