Commit d94a7081 authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Improve reset schedule calculations.

parent 2565304a
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ func LeaderboardList(logger *zap.Logger, leaderboardCache LeaderboardCache, cate
	for _, leaderboard := range list {
		var prevReset int64
		var nextReset int64
		if leaderboard.ResetScheduleStr != "" {
		if leaderboard.ResetSchedule != nil {
			prevReset = calculatePrevReset(now, leaderboard.CreateTime, leaderboard.ResetSchedule)

			next := leaderboard.ResetSchedule.Next(now)
@@ -584,7 +584,7 @@ func LeaderboardsGet(leaderboardCache LeaderboardCache, leaderboardIDs []string)
		var prevReset int64
		var nextReset int64
		now := time.Now().UTC()
		if l.ResetScheduleStr != "" {
		if l.ResetSchedule != nil {
			prevReset = calculatePrevReset(now, l.CreateTime, l.ResetSchedule)

			next := l.ResetSchedule.Next(now)
@@ -610,6 +610,10 @@ func LeaderboardsGet(leaderboardCache LeaderboardCache, leaderboardIDs []string)
}

func calculatePrevReset(currentTime time.Time, startTime int64, resetSchedule *cronexpr.Expression) int64 {
	if resetSchedule == nil {
		return 0
	}

	nextResets := resetSchedule.NextN(currentTime, 2)
	t1 := nextResets[0]
	t2 := nextResets[1]
+8 −2
Original line number Diff line number Diff line
@@ -292,7 +292,10 @@ func TournamentList(ctx context.Context, logger *zap.Logger, db *sql.DB, leaderb
			canEnter = false
		}

		prevReset := calculatePrevReset(now, leaderboard.StartTime, leaderboard.ResetSchedule)
		var prevReset int64
		if leaderboard.ResetSchedule != nil {
			prevReset = calculatePrevReset(now, leaderboard.StartTime, leaderboard.ResetSchedule)
		}

		record := &api.Tournament{
			Id:          leaderboard.Id,
@@ -703,7 +706,10 @@ func parseTournament(scannable Scannable, now time.Time) (*api.Tournament, error
		canEnter = false
	}

	prevReset := calculatePrevReset(now, dbStartTime.Time.UTC().Unix(), resetSchedule)
	var prevReset int64
	if resetSchedule != nil {
		prevReset = calculatePrevReset(now, dbStartTime.Time.UTC().Unix(), resetSchedule)
	}

	tournament := &api.Tournament{
		Id:          dbID,