fathom/pkg/datastore/datastore.go

63 lines
2.2 KiB
Go
Raw Normal View History

package datastore
import (
"time"
"github.com/usefathom/fathom/pkg/datastore/sqlstore"
"github.com/usefathom/fathom/pkg/models"
)
2018-05-21 09:54:01 +00:00
// ErrNoResults is returned whenever a single-item query returns 0 results
var ErrNoResults = sqlstore.ErrNoResults // ???
2018-09-12 07:11:50 +00:00
// Datastore represents a database implementations
type Datastore interface {
// users
GetUser(int64) (*models.User, error)
GetUserByEmail(string) (*models.User, error)
SaveUser(*models.User) error
2018-09-12 07:11:50 +00:00
CountUsers() (int64, error)
// site stats
GetSiteStats(time.Time) (*models.SiteStats, error)
2018-05-22 10:23:17 +00:00
GetSiteStatsPerDay(time.Time, time.Time) ([]*models.SiteStats, error)
InsertSiteStats(*models.SiteStats) error
UpdateSiteStats(*models.SiteStats) error
GetAggregatedSiteStats(time.Time, time.Time) (*models.SiteStats, error)
GetTotalSiteViews(time.Time, time.Time) (int, error)
GetTotalSiteVisitors(time.Time, time.Time) (int, error)
GetTotalSiteSessions(time.Time, time.Time) (int, error)
GetAverageSiteDuration(time.Time, time.Time) (float64, error)
GetAverageSiteBounceRate(time.Time, time.Time) (float64, error)
GetRealtimeVisitorCount() (int, error)
// pageviews
InsertPageviews([]*models.Pageview) error
UpdatePageviews([]*models.Pageview) error
GetPageview(string) (*models.Pageview, error)
GetProcessablePageviews() ([]*models.Pageview, error)
DeletePageviews([]*models.Pageview) error
// page stats
GetPageStats(time.Time, string, string) (*models.PageStats, error)
InsertPageStats(*models.PageStats) error
UpdatePageStats(*models.PageStats) error
GetAggregatedPageStats(time.Time, time.Time, int) ([]*models.PageStats, error)
GetAggregatedPageStatsPageviews(time.Time, time.Time) (int, error)
// referrer stats
GetReferrerStats(time.Time, string, string) (*models.ReferrerStats, error)
InsertReferrerStats(*models.ReferrerStats) error
UpdateReferrerStats(*models.ReferrerStats) error
GetAggregatedReferrerStats(time.Time, time.Time, int) ([]*models.ReferrerStats, error)
GetAggregatedReferrerStatsPageviews(time.Time, time.Time) (int, error)
2018-05-21 09:54:01 +00:00
// misc
2018-07-15 07:20:07 +00:00
Close() error
}
2018-05-21 09:54:01 +00:00
// New instantiates a new datastore from the given configuration struct
func New(c *sqlstore.Config) Datastore {
return sqlstore.New(c)
}