Versions in this module Expand all Collapse all v0 v0.1.7 Sep 17, 2024 Changes in this version + type HackClubProduct struct + Description string + Hours int + ImageURL string + Name string + SmallName string + Stock *int + type IShopService interface + GetProducts func() ([]*models.Product, error) + type ShopService struct + func NewShopService() *ShopService + func (srv *ShopService) ClearProductsCache() + func (srv *ShopService) GetProducts() ([]*models.Product, error) v0.1.6 Sep 11, 2024 Changes in this version + type ActivityService struct + func NewActivityService(summaryService ISummaryService) *ActivityService + func (s *ActivityService) GetChart(user *models.User, interval *models.IntervalKey, ...) (string, error) + type AggregationJob struct + From time.Time + To time.Time + User *models.User + type AggregationService struct + func NewAggregationService(userService IUserService, summaryService ISummaryService, ...) *AggregationService + func (srv *AggregationService) AggregateSummaries(userIds datastructure.Set[string]) error + func (srv *AggregationService) Schedule() + type AliasService struct + func NewAliasService(aliasRepo repositories.IAliasRepository) *AliasService + func (srv *AliasService) Create(alias *models.Alias) (*models.Alias, error) + func (srv *AliasService) Delete(alias *models.Alias) error + func (srv *AliasService) DeleteMulti(aliases []*models.Alias) error + func (srv *AliasService) GetAliasOrDefault(userId string, summaryType uint8, value string) (string, error) + func (srv *AliasService) GetByUser(userId string) ([]*models.Alias, error) + func (srv *AliasService) GetByUserAndKeyAndType(userId, key string, summaryType uint8) ([]*models.Alias, error) + func (srv *AliasService) GetByUserAndType(userId string, summaryType uint8) ([]*models.Alias, error) + func (srv *AliasService) InitializeUser(userId string) error + func (srv *AliasService) IsInitialized(userId string) bool + func (srv *AliasService) MayInitializeUser(userId string) + type DiagnosticsService struct + func NewDiagnosticsService(diagnosticsRepo repositories.IDiagnosticsRepository) *DiagnosticsService + func (srv *DiagnosticsService) Create(diagnostics *models.Diagnostics) (*models.Diagnostics, error) + type DurationService struct + func NewDurationService(heartbeatService IHeartbeatService) *DurationService + func (srv *DurationService) Get(from, to time.Time, user *models.User, filters *models.Filters) (models.Durations, error) + type HeartbeatService struct + func NewHeartbeatService(heartbeatRepo repositories.IHeartbeatRepository, ...) *HeartbeatService + func (srv *HeartbeatService) Count(approximate bool) (int64, error) + func (srv *HeartbeatService) CountByUser(user *models.User) (int64, error) + func (srv *HeartbeatService) CountByUsers(users []*models.User) ([]*models.CountByUser, error) + func (srv *HeartbeatService) DeleteBefore(t time.Time) error + func (srv *HeartbeatService) DeleteByUser(user *models.User) error + func (srv *HeartbeatService) DeleteByUserBefore(user *models.User, t time.Time) error + func (srv *HeartbeatService) GetAllWithin(from, to time.Time, user *models.User) ([]*models.Heartbeat, error) + func (srv *HeartbeatService) GetAllWithinByFilters(from, to time.Time, user *models.User, filters *models.Filters) ([]*models.Heartbeat, error) + func (srv *HeartbeatService) GetEntitySetByUser(entityType uint8, userId string) ([]string, error) + func (srv *HeartbeatService) GetFirstByUsers() ([]*models.TimeByUser, error) + func (srv *HeartbeatService) GetLatestByFilters(user *models.User, filters *models.Filters) (*models.Heartbeat, error) + func (srv *HeartbeatService) GetLatestByOriginAndUser(origin string, user *models.User) (*models.Heartbeat, error) + func (srv *HeartbeatService) GetLatestByUser(user *models.User) (*models.Heartbeat, error) + func (srv *HeartbeatService) GetUserProjectStats(user *models.User, from, to time.Time, pageParams *utils.PageParams, ...) ([]*models.ProjectStats, error) + func (srv *HeartbeatService) Insert(heartbeat *models.Heartbeat) error + func (srv *HeartbeatService) InsertBatch(heartbeats []*models.Heartbeat) error + type HousekeepingService struct + func NewHousekeepingService(userService IUserService, heartbeatService IHeartbeatService, ...) *HousekeepingService + func (s *HousekeepingService) CleanInactiveUsers(before time.Time) error + func (s *HousekeepingService) CleanUserDataBefore(user *models.User, before time.Time) error + func (s *HousekeepingService) Schedule() + func (s *HousekeepingService) WarmUserProjectStatsCache(user *models.User) error + type IActivityService interface + GetChart func(*models.User, *models.IntervalKey, bool, bool, bool) (string, error) + type IAggregationService interface + AggregateSummaries func(set datastructure.Set[string]) error + Schedule func() + type IAliasService interface + Create func(*models.Alias) (*models.Alias, error) + Delete func(*models.Alias) error + DeleteMulti func([]*models.Alias) error + GetAliasOrDefault func(string, uint8, string) (string, error) + GetByUser func(string) ([]*models.Alias, error) + GetByUserAndKeyAndType func(string, string, uint8) ([]*models.Alias, error) + GetByUserAndType func(string, uint8) ([]*models.Alias, error) + InitializeUser func(string) error + IsInitialized func(string) bool + type IDiagnosticsService interface + Create func(*models.Diagnostics) (*models.Diagnostics, error) + type IDurationService interface + Get func(time.Time, time.Time, *models.User, *models.Filters) (models.Durations, error) + type IHeartbeatService interface + Count func(bool) (int64, error) + CountByUser func(*models.User) (int64, error) + CountByUsers func([]*models.User) ([]*models.CountByUser, error) + DeleteBefore func(time.Time) error + DeleteByUser func(*models.User) error + DeleteByUserBefore func(*models.User, time.Time) error + GetAllWithin func(time.Time, time.Time, *models.User) ([]*models.Heartbeat, error) + GetAllWithinByFilters func(time.Time, time.Time, *models.User, *models.Filters) ([]*models.Heartbeat, error) + GetEntitySetByUser func(uint8, string) ([]string, error) + GetFirstByUsers func() ([]*models.TimeByUser, error) + GetLatestByFilters func(*models.User, *models.Filters) (*models.Heartbeat, error) + GetLatestByOriginAndUser func(string, *models.User) (*models.Heartbeat, error) + GetLatestByUser func(*models.User) (*models.Heartbeat, error) + GetUserProjectStats func(*models.User, time.Time, time.Time, *utils.PageParams, bool) ([]*models.ProjectStats, error) + Insert func(*models.Heartbeat) error + InsertBatch func([]*models.Heartbeat) error + type IHousekeepingService interface + CleanUserDataBefore func(*models.User, time.Time) error + Schedule func() + type IKeyValueService interface + DeleteString func(string) error + GetByPrefix func(string) ([]*models.KeyStringValue, error) + GetString func(string) (*models.KeyStringValue, error) + MustGetString func(string) *models.KeyStringValue + PutString func(*models.KeyStringValue) error + type ILanguageMappingService interface + Create func(*models.LanguageMapping) (*models.LanguageMapping, error) + Delete func(mapping *models.LanguageMapping) error + GetById func(uint) (*models.LanguageMapping, error) + GetByUser func(string) ([]*models.LanguageMapping, error) + ResolveByUser func(string) (map[string]string, error) + type ILeaderboardService interface + ComputeLeaderboard func([]*models.User, *models.IntervalKey, []uint8) error + CountUsers func(bool) (int64, error) + ExistsAnyByUser func(string) (bool, error) + GenerateAggregatedByUser func(*models.User, *models.IntervalKey, uint8) ([]*models.LeaderboardItem, error) + GenerateByUser func(*models.User, *models.IntervalKey) (*models.LeaderboardItem, error) + GetAggregatedByInterval func(*models.IntervalKey, *uint8, *utils.PageParams, bool) (models.Leaderboard, error) + GetAggregatedByIntervalAndUser func(*models.IntervalKey, string, *uint8, bool) (models.Leaderboard, error) + GetByInterval func(*models.IntervalKey, *utils.PageParams, bool) (models.Leaderboard, error) + GetByIntervalAndUser func(*models.IntervalKey, string, bool) (models.Leaderboard, error) + GetDefaultScope func() *models.IntervalKey + Schedule func() + type IMailService interface + SendImportNotification func(*models.User, time.Duration, int) error + SendPasswordReset func(*models.User, string) error + SendReport func(*models.User, *models.Report) error + SendSubscriptionNotification func(*models.User, bool) error + SendWakatimeFailureNotification func(*models.User, int) error + type IMiscService interface + CountTotalTime func() + Schedule func() + type IProjectLabelService interface + Create func(*models.ProjectLabel) (*models.ProjectLabel, error) + Delete func(*models.ProjectLabel) error + GetById func(uint) (*models.ProjectLabel, error) + GetByUser func(string) ([]*models.ProjectLabel, error) + GetByUserGrouped func(string) (map[string][]*models.ProjectLabel, error) + GetByUserGroupedInverted func(string) (map[string][]*models.ProjectLabel, error) + type IReportService interface + Schedule func() + SendReport func(*models.User, time.Duration) error + type ISummaryService interface + Aliased func(time.Time, time.Time, *models.User, types.SummaryRetriever, *models.Filters, ...) (*models.Summary, error) + DeleteByUser func(string) error + DeleteByUserBefore func(string, time.Time) error + GetLatestByUser func() ([]*models.TimeByUser, error) + Insert func(*models.Summary) error + Retrieve func(time.Time, time.Time, *models.User, *models.Filters) (*models.Summary, error) + Summarize func(time.Time, time.Time, *models.User, *models.Filters) (*models.Summary, error) + type IUserService interface + Count func() (int64, error) + CreateOrGet func(*models.Signup, bool) (*models.User, bool, error) + Delete func(*models.User) error + FlushCache func() + FlushUserCache func(string) + GenerateResetToken func(*models.User) (*models.User, error) + GetActive func(bool) ([]*models.User, error) + GetAll func() ([]*models.User, error) + GetAllByLeaderboard func(bool) ([]*models.User, error) + GetAllByReports func(bool) ([]*models.User, error) + GetAllMapped func() (map[string]*models.User, error) + GetMany func([]string) ([]*models.User, error) + GetManyMapped func([]string) (map[string]*models.User, error) + GetUserByEmail func(string) (*models.User, error) + GetUserById func(string) (*models.User, error) + GetUserByKey func(string) (*models.User, error) + GetUserByResetToken func(string) (*models.User, error) + GetUserByStripeCustomerId func(string) (*models.User, error) + ResetApiKey func(*models.User) (*models.User, error) + SetWakatimeApiCredentials func(*models.User, string, string) (*models.User, error) + Update func(*models.User) (*models.User, error) + type KeyValueService struct + func NewKeyValueService(keyValueRepo repositories.IKeyValueRepository) *KeyValueService + func (srv *KeyValueService) DeleteString(key string) error + func (srv *KeyValueService) GetByPrefix(prefix string) ([]*models.KeyStringValue, error) + func (srv *KeyValueService) GetString(key string) (*models.KeyStringValue, error) + func (srv *KeyValueService) MustGetString(key string) *models.KeyStringValue + func (srv *KeyValueService) PutString(kv *models.KeyStringValue) error + type LanguageMappingService struct + func NewLanguageMappingService(languageMappingsRepo repositories.ILanguageMappingRepository) *LanguageMappingService + func (srv *LanguageMappingService) Create(mapping *models.LanguageMapping) (*models.LanguageMapping, error) + func (srv *LanguageMappingService) Delete(mapping *models.LanguageMapping) error + func (srv *LanguageMappingService) GetById(id uint) (*models.LanguageMapping, error) + func (srv *LanguageMappingService) GetByUser(userId string) ([]*models.LanguageMapping, error) + func (srv *LanguageMappingService) ResolveByUser(userId string) (map[string]string, error) + type LeaderboardService struct + func NewLeaderboardService(leaderboardRepo repositories.ILeaderboardRepository, ...) *LeaderboardService + func (srv *LeaderboardService) ComputeLeaderboard(users []*models.User, interval *models.IntervalKey, by []uint8) error + func (srv *LeaderboardService) CountUsers(excludeZero bool) (int64, error) + func (srv *LeaderboardService) ExistsAnyByUser(userId string) (bool, error) + func (srv *LeaderboardService) GenerateAggregatedByUser(user *models.User, interval *models.IntervalKey, by uint8) ([]*models.LeaderboardItem, error) + func (srv *LeaderboardService) GenerateByUser(user *models.User, interval *models.IntervalKey) (*models.LeaderboardItem, error) + func (srv *LeaderboardService) GetAggregatedByInterval(interval *models.IntervalKey, by *uint8, pageParams *utils.PageParams, ...) (models.Leaderboard, error) + func (srv *LeaderboardService) GetAggregatedByIntervalAndUser(interval *models.IntervalKey, userId string, by *uint8, resolveUser bool) (models.Leaderboard, error) + func (srv *LeaderboardService) GetByInterval(interval *models.IntervalKey, pageParams *utils.PageParams, resolveUsers bool) (models.Leaderboard, error) + func (srv *LeaderboardService) GetByIntervalAndUser(interval *models.IntervalKey, userId string, resolveUser bool) (models.Leaderboard, error) + func (srv *LeaderboardService) GetDefaultScope() *models.IntervalKey + func (srv *LeaderboardService) Schedule() + type MiscService struct + func NewMiscService(userService IUserService, heartbeatService IHeartbeatService, ...) *MiscService + func (srv *MiscService) ComputeOldestHeartbeats() + func (srv *MiscService) CountTotalTime() + func (srv *MiscService) NotifyExpiringSubscription() + func (srv *MiscService) Schedule() + type ProjectLabelService struct + func NewProjectLabelService(projectLabelRepository repositories.IProjectLabelRepository) *ProjectLabelService + func (srv *ProjectLabelService) Create(label *models.ProjectLabel) (*models.ProjectLabel, error) + func (srv *ProjectLabelService) Delete(label *models.ProjectLabel) error + func (srv *ProjectLabelService) GetById(id uint) (*models.ProjectLabel, error) + func (srv *ProjectLabelService) GetByUser(userId string) ([]*models.ProjectLabel, error) + func (srv *ProjectLabelService) GetByUserGrouped(userId string) (map[string][]*models.ProjectLabel, error) + func (srv *ProjectLabelService) GetByUserGroupedInverted(userId string) (map[string][]*models.ProjectLabel, error) + type ReportService struct + func NewReportService(summaryService ISummaryService, userService IUserService, ...) *ReportService + func (srv *ReportService) Schedule() + func (srv *ReportService) SendReport(user *models.User, duration time.Duration) error + type SummaryService struct + func NewSummaryService(summaryRepo repositories.ISummaryRepository, ...) *SummaryService + func (srv *SummaryService) Aliased(from, to time.Time, user *models.User, f types.SummaryRetriever, ...) (*models.Summary, error) + func (srv *SummaryService) DeleteByUser(userId string) error + func (srv *SummaryService) DeleteByUserBefore(userId string, t time.Time) error + func (srv *SummaryService) GetLatestByUser() ([]*models.TimeByUser, error) + func (srv *SummaryService) Insert(summary *models.Summary) error + func (srv *SummaryService) Retrieve(from, to time.Time, user *models.User, filters *models.Filters) (*models.Summary, error) + func (srv *SummaryService) Summarize(from, to time.Time, user *models.User, filters *models.Filters) (*models.Summary, error) + type UserService struct + func NewUserService(mailService IMailService, userRepo repositories.IUserRepository) *UserService + func (srv *UserService) Count() (int64, error) + func (srv *UserService) CreateOrGet(signup *models.Signup, isAdmin bool) (*models.User, bool, error) + func (srv *UserService) Delete(user *models.User) error + func (srv *UserService) FlushCache() + func (srv *UserService) FlushUserCache(userId string) + func (srv *UserService) GenerateResetToken(user *models.User) (*models.User, error) + func (srv *UserService) GetActive(exact bool) ([]*models.User, error) + func (srv *UserService) GetAll() ([]*models.User, error) + func (srv *UserService) GetAllByLeaderboard(leaderboardEnabled bool) ([]*models.User, error) + func (srv *UserService) GetAllByReports(reportsEnabled bool) ([]*models.User, error) + func (srv *UserService) GetAllMapped() (map[string]*models.User, error) + func (srv *UserService) GetMany(ids []string) ([]*models.User, error) + func (srv *UserService) GetManyMapped(ids []string) (map[string]*models.User, error) + func (srv *UserService) GetUserByEmail(email string) (*models.User, error) + func (srv *UserService) GetUserById(userId string) (*models.User, error) + func (srv *UserService) GetUserByKey(key string) (*models.User, error) + func (srv *UserService) GetUserByResetToken(resetToken string) (*models.User, error) + func (srv *UserService) GetUserByStripeCustomerId(customerId string) (*models.User, error) + func (srv *UserService) MapUsersById(users []*models.User) map[string]*models.User + func (srv *UserService) ResetApiKey(user *models.User) (*models.User, error) + func (srv *UserService) SetWakatimeApiCredentials(user *models.User, apiKey string, apiUrl string) (*models.User, error) + func (srv *UserService) Update(user *models.User) (*models.User, error)