feat: media duplicate purge, part 1 of 3: persisted purge settings and the purge API
This commit is contained in:
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
|
||||
}
|
||||
Reference in new issue
Block a user