Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AnalyticsRequest ¶
type AnalyticsRequest struct {
DriverID int64
From time.Time
To time.Time
GroupBy []GroupByDimension
Granularity Granularity
SeriesIDs []int64
CarIDs []int64
TrackIDs []int64
}
AnalyticsRequest contains the parameters for an analytics query.
type AnalyticsResult ¶
type AnalyticsResult struct {
Summary Summary
GroupedBy []GroupedSummary
TimeSeries []PeriodSummary
}
AnalyticsResult contains the computed analytics.
type Dimensions ¶
Dimensions contains the unique series, cars, and tracks a driver has raced.
type Granularity ¶
type Granularity string
Granularity represents the time bucketing level for time series data.
const ( GranularityDay Granularity = "day" GranularityWeek Granularity = "week" GranularityMonth Granularity = "month" GranularityYear Granularity = "year" )
func (Granularity) IsValid ¶
func (g Granularity) IsValid() bool
IsValid checks if the granularity value is valid.
type GroupByDimension ¶
type GroupByDimension string
GroupByDimension represents a dimension to group results by.
const ( GroupBySeries GroupByDimension = "series" GroupByCar GroupByDimension = "car" GroupByTrack GroupByDimension = "track" )
func (GroupByDimension) IsValid ¶
func (g GroupByDimension) IsValid() bool
IsValid checks if the groupBy dimension value is valid.
type GroupedSummary ¶
GroupedSummary contains stats for a specific dimension grouping.
type PeriodSummary ¶
PeriodSummary contains stats for a time period.
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service provides analytics computations over race data.
func (*Service) GetAnalytics ¶
func (s *Service) GetAnalytics(ctx context.Context, req AnalyticsRequest) (*AnalyticsResult, error)
GetAnalytics computes analytics for the given request.
func (*Service) GetDimensions ¶
func (s *Service) GetDimensions(ctx context.Context, driverID int64, from, to time.Time) (*Dimensions, error)
GetDimensions returns the unique series, cars, and tracks the driver has raced within the specified time range.
type Store ¶
type Store interface {
GetDriverSessionsByTimeRange(ctx context.Context, driverID int64, from, to time.Time, filters ...store.SessionFilter) ([]store.DriverSession, error)
}
Store defines the data access interface needed by the analytics service.
type Summary ¶
type Summary struct {
RaceCount int
// iRating
IRatingStart int
IRatingEnd int
IRatingDelta int
IRatingGain int
IRatingLoss int
// CPI (Compliance Points Index)
CPIStart float64
CPIEnd float64
CPIDelta float64
CPIGain float64
CPILoss float64
// Position stats
Podiums int
Top5Finishes int
Wins int
AvgFinishPosition float64
AvgStartPosition float64
PositionsGained float64
// Incidents
TotalIncidents int
AvgIncidents float64
}
Summary contains aggregated statistics for a set of races.