2017-01-25 13:46:43 +01:00
|
|
|
package datastore
|
|
|
|
|
|
|
|
import (
|
2018-05-15 13:30:37 +02:00
|
|
|
"time"
|
2017-01-25 15:17:24 +01:00
|
|
|
|
2018-05-15 13:30:37 +02:00
|
|
|
"github.com/usefathom/fathom/pkg/datastore/sqlstore"
|
|
|
|
"github.com/usefathom/fathom/pkg/models"
|
|
|
|
)
|
2017-01-25 13:46:43 +01:00
|
|
|
|
2018-05-21 11:54:01 +02:00
|
|
|
// ErrNoResults is returned whenever a single-item query returns 0 results
|
2018-05-15 13:30:37 +02:00
|
|
|
var ErrNoResults = sqlstore.ErrNoResults // ???
|
|
|
|
|
2018-09-12 09:11:50 +02:00
|
|
|
// Datastore represents a database implementations
|
2018-05-15 13:30:37 +02:00
|
|
|
type Datastore interface {
|
|
|
|
// users
|
|
|
|
GetUser(int64) (*models.User, error)
|
|
|
|
GetUserByEmail(string) (*models.User, error)
|
|
|
|
SaveUser(*models.User) error
|
2018-09-26 14:44:13 +02:00
|
|
|
DeleteUser(*models.User) error
|
2018-09-12 09:11:50 +02:00
|
|
|
CountUsers() (int64, error)
|
2018-05-15 13:30:37 +02:00
|
|
|
|
2018-10-03 10:44:31 +02:00
|
|
|
// sites
|
|
|
|
GetSites() ([]*models.Site, error)
|
2018-10-05 15:13:48 +02:00
|
|
|
GetSite(id int64) (*models.Site, error)
|
2018-10-03 10:44:31 +02:00
|
|
|
SaveSite(s *models.Site) error
|
|
|
|
DeleteSite(s *models.Site) error
|
|
|
|
|
2018-05-15 13:30:37 +02:00
|
|
|
// site stats
|
2018-10-05 13:09:58 +02:00
|
|
|
GetSiteStats(int64, time.Time) (*models.SiteStats, error)
|
|
|
|
GetSiteStatsPerDay(int64, time.Time, time.Time) ([]*models.SiteStats, error)
|
2018-10-05 14:19:11 +02:00
|
|
|
SaveSiteStats(*models.SiteStats) error
|
2018-10-05 13:09:58 +02:00
|
|
|
GetAggregatedSiteStats(int64, time.Time, time.Time) (*models.SiteStats, error)
|
|
|
|
GetTotalSiteViews(int64, time.Time, time.Time) (int64, error)
|
|
|
|
GetTotalSiteVisitors(int64, time.Time, time.Time) (int64, error)
|
|
|
|
GetTotalSiteSessions(int64, time.Time, time.Time) (int64, error)
|
|
|
|
GetAverageSiteDuration(int64, time.Time, time.Time) (float64, error)
|
|
|
|
GetAverageSiteBounceRate(int64, time.Time, time.Time) (float64, error)
|
|
|
|
GetRealtimeVisitorCount(int64) (int64, error)
|
2018-05-15 13:30:37 +02:00
|
|
|
|
|
|
|
// pageviews
|
2018-07-12 13:30:32 +02:00
|
|
|
InsertPageviews([]*models.Pageview) error
|
|
|
|
UpdatePageviews([]*models.Pageview) error
|
2018-07-11 15:03:56 +02:00
|
|
|
GetPageview(string) (*models.Pageview, error)
|
2018-05-15 13:30:37 +02:00
|
|
|
GetProcessablePageviews() ([]*models.Pageview, error)
|
|
|
|
DeletePageviews([]*models.Pageview) error
|
|
|
|
|
|
|
|
// page stats
|
2018-11-12 14:45:21 +01:00
|
|
|
GetPageStats(int64, time.Time, int64, int64) (*models.PageStats, error)
|
2018-10-05 14:19:11 +02:00
|
|
|
SavePageStats(*models.PageStats) error
|
2018-10-05 13:09:58 +02:00
|
|
|
GetAggregatedPageStats(int64, time.Time, time.Time, int64) ([]*models.PageStats, error)
|
|
|
|
GetAggregatedPageStatsPageviews(int64, time.Time, time.Time) (int64, error)
|
2018-05-15 13:30:37 +02:00
|
|
|
|
|
|
|
// referrer stats
|
2018-11-12 14:45:21 +01:00
|
|
|
GetReferrerStats(int64, time.Time, int64, int64) (*models.ReferrerStats, error)
|
2018-10-05 14:19:11 +02:00
|
|
|
SaveReferrerStats(*models.ReferrerStats) error
|
2018-10-05 13:09:58 +02:00
|
|
|
GetAggregatedReferrerStats(int64, time.Time, time.Time, int64) ([]*models.ReferrerStats, error)
|
|
|
|
GetAggregatedReferrerStatsPageviews(int64, time.Time, time.Time) (int64, error)
|
2018-05-15 13:30:37 +02:00
|
|
|
|
2018-11-12 14:45:21 +01:00
|
|
|
// hostnames
|
|
|
|
HostnameID(name string) (int64, error)
|
|
|
|
PathnameID(name string) (int64, error)
|
|
|
|
|
2018-05-21 11:54:01 +02:00
|
|
|
// misc
|
2018-09-17 17:20:48 +02:00
|
|
|
Health() error
|
2018-07-15 09:20:07 +02:00
|
|
|
Close() error
|
2017-01-25 13:46:43 +01:00
|
|
|
}
|
|
|
|
|
2018-05-21 11:54:01 +02:00
|
|
|
// New instantiates a new datastore from the given configuration struct
|
2018-05-15 13:30:37 +02:00
|
|
|
func New(c *sqlstore.Config) Datastore {
|
|
|
|
return sqlstore.New(c)
|
2017-01-25 15:17:24 +01:00
|
|
|
}
|