fix: resolve go vet error and dayStart logic in ComputeDailyTotals
- Fix 'string(d)' int-to-rune conversion in rpg_test.go by using fmt.Sprintf - Fix ComputeDailyTotals dayStart logic: initial state should be StateWorking when dayStart > 0, correctly counting work from dayStart to first out event - Update README project structure to reflect new domain/handler/repo layout - Implement missing achievements: rpg_pioneer (on RPG enable) and salary_setter (on first rate set) - Add tryUnlockAchievement helper to Handler
This commit is contained in:
59
internal/repo/interface.go
Normal file
59
internal/repo/interface.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package repo
|
||||
|
||||
import "worktimeBot/internal/domain"
|
||||
|
||||
type Repository interface {
|
||||
// Users
|
||||
GetOrCreateUser(chatID int64) (*domain.User, error)
|
||||
UpdateUser(user *domain.User) error
|
||||
GetAllUsers() ([]domain.User, error)
|
||||
|
||||
// Settings
|
||||
GetOrCreateSettings(userID int64) (*domain.UserSettings, error)
|
||||
UpdateSettings(st *domain.UserSettings) error
|
||||
MarkReportSent(userID int64, date string) error
|
||||
|
||||
// Days
|
||||
GetOrCreateDay(userID int64, date string) (*domain.Day, error)
|
||||
GetDay(userID int64, date string) (*domain.Day, error)
|
||||
UpdateDay(day *domain.Day) error
|
||||
GetUserDaysInRange(userID int64, start, end string) ([]domain.Day, error)
|
||||
SetDayOff(userID int64, date, reason string) error
|
||||
RemoveDayOff(userID int64, date string) error
|
||||
|
||||
// Events
|
||||
CreateEvent(userID, dayID int64, eventType string, workTypeID *int64, occurredAt int64, note string) error
|
||||
GetLastEvent(userID int64) (*domain.Event, error)
|
||||
EventsForDayByDate(userID int64, date string) ([]domain.Event, error)
|
||||
EventsForDayByDayID(dayID int64) ([]domain.Event, error)
|
||||
GetEventByID(eventID, userID int64) (*domain.Event, error)
|
||||
UpdateEventTime(eventID int64, occurredAt int64) error
|
||||
UpdateEventWorkType(eventID, workTypeID int64) error
|
||||
SetEventNote(eventID int64, note string) error
|
||||
DeleteEvent(eventID int64) error
|
||||
GetDistinctEventDates(userID int64, start, end string) ([]string, error)
|
||||
GetDatesWithEvents(userID int64) ([]string, error)
|
||||
|
||||
// Work Types
|
||||
GetWorkTypes() ([]domain.WorkType, error)
|
||||
GetWorkType(id int64) (*domain.WorkType, error)
|
||||
|
||||
// RPG
|
||||
GetOrCreateRPGStats(userID int64) (*domain.RPGStats, error)
|
||||
UpdateRPGStats(stats *domain.RPGStats) error
|
||||
UpsertDailyXP(userID int64, date string, xpEarned, workSeconds int64) error
|
||||
SetDailyWorkSeconds(userID int64, date string, workSeconds int64) error
|
||||
SumDailyWorkSeconds(userID int64) (int64, error)
|
||||
|
||||
// Achievements
|
||||
GetAchievementByCode(code string) (*domain.Achievement, error)
|
||||
UnlockAchievement(userID, achievementID int64) (bool, error)
|
||||
HasAchievement(userID int64, code string) (bool, error)
|
||||
GetUserAchievements(userID int64) ([]domain.UserAchievement, error)
|
||||
|
||||
// League
|
||||
GetLeagueRankings(orderBy string) ([]domain.LeagueEntry, error)
|
||||
|
||||
// Lifecycle
|
||||
Close() error
|
||||
}
|
||||
Reference in New Issue
Block a user