Documentation
¶
Index ¶
- Variables
- func ContainsString(v []string, x string) bool
- func GetWeekNum(t time.Time) int
- func GetWeekNumForCron(t time.Time) int
- func NumToWeekEnd(n int) time.Time
- func NumToWeekStart(n int) time.Time
- type ActivityResp
- type ConnectionMethod
- type DeviceData
- type DeviceDataClient
- type DeviceIntegrationsResp
- type DeviceListResp
- type LevelInfo
- type RewardsTask
- type StreakInput
- type StreakOutput
Constants ¶
This section is empty.
Variables ¶
View Source
var LevelInfos = []*LevelInfo{
{Level: 1, MinWeeks: 0, Points: 0},
{Level: 2, MinWeeks: 4, Points: 1000},
{Level: 3, MinWeeks: 21, Points: 2000},
{Level: 4, MinWeeks: 36, Points: 3000},
}
Functions ¶
func ContainsString ¶
func GetWeekNum ¶
GeetWeekNum calculates the number of the week in which the given time lies for DIMO point issuance, which at the time of writing starts at 2022-01-31 05:00 UTC. Indexing is zero-based.
func GetWeekNumForCron ¶
GeetWeekNumForCron calculates the week number for the current run of the cron job. We expect the job to run every Monday at 05:00 UTC, but due to skew we just round the time.
func NumToWeekEnd ¶
func NumToWeekStart ¶
Types ¶
type ActivityResp ¶
type ConnectionMethod ¶
type DeviceData ¶
type DeviceDataClient ¶
type DeviceDataClient interface {
GetLastActivity(userDeviceID string) (lastActivity time.Time, seen bool, err error)
DescribeActiveDevices(start, end time.Time) ([]*DeviceData, error)
GetIntegrations(userDeviceID string, start, end time.Time) (ints []string, err error)
}
func NewDeviceDataClient ¶
func NewDeviceDataClient(settings *config.Settings) DeviceDataClient
type DeviceIntegrationsResp ¶
type DeviceIntegrationsResp struct {
Aggregations struct {
Integrations struct {
Buckets []struct {
Key string `json:"key"`
} `json:"buckets"`
} `json:"integrations"`
} `json:"aggregations"`
}
type DeviceListResp ¶
type DeviceListResp struct {
Aggregations struct {
ActiveDevices struct {
AfterKey struct {
Subject *string `json:"subject"`
} `json:"after_key"`
Buckets []struct {
Key struct {
Subject string `json:"subject"`
} `json:"key"`
Integrations struct {
Buckets []struct {
Key string `json:"key"`
} `json:"buckets"`
} `json:"integrations"`
} `json:"buckets"`
} `json:"active_devices"`
} `json:"aggregations"`
}
type RewardsTask ¶
type RewardsTask struct {
Settings *config.Settings
Logger *zerolog.Logger
DataService DeviceDataClient
DB func() *database.DBReaderWriter
}
func (*RewardsTask) Calculate ¶
func (t *RewardsTask) Calculate(issuanceWeek int) error
type StreakInput ¶
type StreakOutput ¶
func ComputeStreak ¶
func ComputeStreak(i StreakInput) StreakOutput
Click to show internal directories.
Click to hide internal directories.