fathom/pkg/datastore/datastore.go

67 lines
2.1 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 11:54:01 +02:00
// ErrNoResults is returned whenever a single-item query returns 0 results
var ErrNoResults = sqlstore.ErrNoResults // ???
2018-09-12 09:11:50 +02: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-26 14:44:13 +02:00
DeleteUser(*models.User) error
2018-09-12 09:11:50 +02:00
CountUsers() (int64, error)
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
// site stats
GetSiteStats(int64, time.Time) (*models.SiteStats, error)
GetAggregatedSiteStats(int64, time.Time, time.Time) (*models.SiteStats, error)
2018-11-14 11:47:47 +01:00
SelectSiteStats(int64, time.Time, time.Time) ([]*models.SiteStats, error)
GetRealtimeVisitorCount(int64) (int64, error)
2018-11-14 11:47:47 +01:00
SaveSiteStats(*models.SiteStats) 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(int64, time.Time, int64, int64) (*models.PageStats, error)
SavePageStats(*models.PageStats) error
2018-11-14 11:47:47 +01:00
SelectAggregatedPageStats(int64, time.Time, time.Time, int64) ([]*models.PageStats, error)
GetAggregatedPageStatsPageviews(int64, time.Time, time.Time) (int64, error)
// referrer stats
GetReferrerStats(int64, time.Time, int64, int64) (*models.ReferrerStats, error)
SaveReferrerStats(*models.ReferrerStats) error
2018-11-14 11:47:47 +01:00
SelectAggregatedReferrerStats(int64, time.Time, time.Time, int64) ([]*models.ReferrerStats, error)
GetAggregatedReferrerStatsPageviews(int64, time.Time, time.Time) (int64, error)
// hostnames
HostnameID(name string) (int64, error)
PathnameID(name string) (int64, error)
2018-05-21 11:54:01 +02:00
// misc
Health() error
2018-07-15 09:20:07 +02:00
Close() error
}
2018-05-21 11:54:01 +02:00
// New instantiates a new datastore from the given configuration struct
func New(c *sqlstore.Config) Datastore {
return sqlstore.New(c)
}