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 }