feat: activity log backend foundation

This commit is contained in:
fsylvain committed 2026-10-06 20:35:03 +02:00
1 parent 8907bb49fe
commit 50b1649965
74 files changed
+5949 -239

No files matched your search

@@ -0,0 +1,47 @@
package useCases
import (
"RenewCMS/internal/domain/audit"
"context"
"time"
)
type CleanupActivityUseCase struct {
events audit.Repository
settings audit.SettingsRepository
recorder audit.Recorder
}
func NewCleanupActivityUseCase(events audit.Repository, settings audit.SettingsRepository, recorder audit.Recorder) *CleanupActivityUseCase {
return &CleanupActivityUseCase{events, settings, recorder}
}
func (c *CleanupActivityUseCase) Tick(now time.Time) (audit.CleanupResult, bool, error) {
settings, err := c.settings.Get()
if err != nil {
return audit.CleanupResult{}, false, err
}
if settings.RetentionDays == audit.ForeverRetentionDays || !settings.CleanupDue(now) {
return audit.CleanupResult{}, false, nil
}
removed, err := c.events.DeleteOlderThan(audit.RetentionCutoff(now, settings.RetentionDays))
if err != nil {
return audit.CleanupResult{}, false, err
}
if err := c.settings.SaveLastCleanup(now, removed); err != nil {
return audit.CleanupResult{}, false, err
}
if removed > 0 {
c.recordCleanup(removed)
}
return audit.CleanupResult{Removed: removed}, true, nil
}
func (c *CleanupActivityUseCase) recordCleanup(removed int) {
event := audit.NewEvent(audit.ActionCleanup, audit.CategorySystem)
event.Actor = audit.SystemActor()
event.Source = audit.SourceSystem
event.Params = map[string]any{audit.ParamRemoved: removed}
c.recorder.Record(context.Background(), event)
}