Skip to content

Commit 8252c07

Browse files
committed
fix: enforce maximum usage duration (24h) in calculations
1 parent 05829f5 commit 8252c07

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

internal/usage/helper.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@ import (
1515

1616
const DAY = 24 * time.Hour
1717

18+
func limitUsage(val time.Duration, max time.Duration) time.Duration {
19+
if val > max {
20+
return max
21+
}
22+
23+
return val
24+
}
25+
1826
func calculateUsage(start time.Time, end time.Time) (result []v1.DailyUsage) {
1927
start = start.UTC()
2028
end = end.UTC()
@@ -31,7 +39,7 @@ func _calculateUsage(current time.Time, end time.Time, duration time.Duration) [
3139
// its the same day, so we need to put the remaining duration onto the current day
3240
return []v1.DailyUsage{{
3341
Date: metav1.NewTime(current),
34-
Usage: metav1.Duration{Duration: duration},
42+
Usage: metav1.Duration{Duration: limitUsage(duration, DAY)},
3543
}}
3644

3745
}
@@ -46,7 +54,7 @@ func _calculateUsage(current time.Time, end time.Time, duration time.Duration) [
4654
return append(_calculateUsage(nextDay, end, duration-usageForTheDay),
4755
v1.DailyUsage{
4856
Date: metav1.NewTime(current),
49-
Usage: metav1.Duration{Duration: usageForTheDay},
57+
Usage: metav1.Duration{Duration: limitUsage(usageForTheDay, DAY)},
5058
},
5159
)
5260
}
@@ -98,7 +106,7 @@ func MergeDailyUsages(a []v1.DailyUsage, b []v1.DailyUsage) []v1.DailyUsage {
98106
}
99107
mergedList = append(mergedList, v1.DailyUsage{
100108
Date: metav1.Time{Time: t.UTC()}, // Store as UTC for consistency
101-
Usage: totalUsage,
109+
Usage: metav1.Duration{Duration: limitUsage(totalUsage.Duration, DAY)},
102110
})
103111
}
104112

0 commit comments

Comments
 (0)