Files
RenewCMS/internal/infrastructure/useCases/UpdatePurgeSettings.go
T

50 lines
1.2 KiB
Go

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
}