feat: media duplicate purge, part 1 of 3: persisted purge settings and the purge API

This commit is contained in:
fsylvain committed 2026-10-05 18:24:03 +02:00
1 parent 161ddc0f7d
commit e82d0ce254
25 files changed
+2459 -41

No files matched your search

@@ -0,0 +1,49 @@
package useCases
import (
"RenewCMS/internal/domain/purge"
"time"
)
type UpdatePurgeSettingsCommand struct {
AutoPurgeEnabled *bool
AutoPurgeIntervalDays *int
}
type UpdatePurgeSettingsUseCase struct {
repository purge.Repository
now func() time.Time
}
func NewUpdatePurgeSettingsUseCase(repository purge.Repository, now func() time.Time) *UpdatePurgeSettingsUseCase {
return &UpdatePurgeSettingsUseCase{repository, now}
}
func (u *UpdatePurgeSettingsUseCase) Update(command UpdatePurgeSettingsCommand) (purge.Settings, error) {
if command.AutoPurgeIntervalDays != nil {
if err := purge.ValidateIntervalDays(*command.AutoPurgeIntervalDays); err != nil {
return purge.Settings{}, err
}
}
settings, err := u.repository.Get()
if err != nil {
return purge.Settings{}, err
}
if command.AutoPurgeEnabled != nil {
if *command.AutoPurgeEnabled && !settings.AutoPurgeEnabled {
enabledAt := u.now().UTC()
settings.EnabledAt = &enabledAt
}
settings.AutoPurgeEnabled = *command.AutoPurgeEnabled
}
if command.AutoPurgeIntervalDays != nil {
settings.AutoPurgeIntervalDays = *command.AutoPurgeIntervalDays
}
if err := u.repository.Save(settings); err != nil {
return purge.Settings{}, err
}
return settings, nil
}