feat: setup logs retention by max file size

This commit is contained in:
fsylvain committed 2026-10-07 22:02:13 +02:00
1 parent 70c8492f4f
commit f914eae3c5
44 files changed
+2316 -161

No files matched your search

+38 -1
View File
@@ -4,6 +4,7 @@ import (
"RenewCMS/internal/domain/audit"
"RenewCMS/internal/infrastructure/auditing"
persistence "RenewCMS/internal/infrastructure/persistence/repositories"
"RenewCMS/internal/infrastructure/useCases"
"bytes"
"context"
"errors"
@@ -25,6 +26,10 @@ type activityProbeRepo struct {
deleteErr error
deleteCalls int
readErr error
sizeErr error
sizeBytes *int64
oldestErr error
oldestCalls int
}
var _ audit.Repository = &activityProbeRepo{}
@@ -64,6 +69,24 @@ func (p *activityProbeRepo) DeleteOlderThan(cutoff time.Time) (int, error) {
return p.inner.DeleteOlderThan(cutoff)
}
func (p *activityProbeRepo) DeleteOldest(limit int, before time.Time) (int, error) {
p.oldestCalls++
if p.oldestErr != nil {
return 0, p.oldestErr
}
return p.inner.DeleteOldest(limit, before)
}
func (p *activityProbeRepo) SizeBytes() (int64, error) {
if p.sizeErr != nil {
return 0, p.sizeErr
}
if p.sizeBytes != nil {
return *p.sizeBytes, nil
}
return p.inner.SizeBytes()
}
type activitySettingsFake struct {
settings audit.Settings
saveErr error
@@ -85,12 +108,13 @@ func (f *activitySettingsFake) Get() (audit.Settings, error) {
return f.settings, nil
}
func (f *activitySettingsFake) SaveRetention(days int) error {
func (f *activitySettingsFake) SaveRetention(days int, maxGB int) error {
if f.saveErr != nil {
return f.saveErr
}
f.retentionOK++
f.settings.RetentionDays = days
f.settings.RetentionMaxGB = maxGB
return nil
}
@@ -144,3 +168,16 @@ func (h *activityHarness) seed(t *testing.T, event audit.Event) audit.Event {
}
var errDiskFull = errors.New("disk full")
func newSizeEvents(t *testing.T) audit.Repository {
t.Helper()
return persistence.NewAuditEventRepository(openActivityDatabase(t))
}
func retentionDays(days int) useCases.UpdateActivityRetentionCommand {
return useCases.UpdateActivityRetentionCommand{Days: &days}
}
func retentionMaxGB(maxGB int) useCases.UpdateActivityRetentionCommand {
return useCases.UpdateActivityRetentionCommand{MaxGB: &maxGB}
}