51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package useCases
|
|
|
|
import (
|
|
"RenewCMS/internal/domain/audit"
|
|
"context"
|
|
)
|
|
|
|
type GetActivityRetentionUseCase struct {
|
|
settings audit.SettingsRepository
|
|
}
|
|
|
|
func NewGetActivityRetentionUseCase(settings audit.SettingsRepository) *GetActivityRetentionUseCase {
|
|
return &GetActivityRetentionUseCase{settings}
|
|
}
|
|
|
|
func (g *GetActivityRetentionUseCase) GetActivityRetention() (audit.Settings, error) {
|
|
return g.settings.Get()
|
|
}
|
|
|
|
type UpdateActivityRetentionUseCase struct {
|
|
settings audit.SettingsRepository
|
|
recorder audit.Recorder
|
|
}
|
|
|
|
func NewUpdateActivityRetentionUseCase(settings audit.SettingsRepository, recorder audit.Recorder) *UpdateActivityRetentionUseCase {
|
|
return &UpdateActivityRetentionUseCase{settings, recorder}
|
|
}
|
|
|
|
func (u *UpdateActivityRetentionUseCase) UpdateActivityRetention(ctx context.Context, days int) (audit.Settings, error) {
|
|
if err := audit.ValidateRetentionDays(days); err != nil {
|
|
return audit.Settings{}, err
|
|
}
|
|
current, err := u.settings.Get()
|
|
if err != nil {
|
|
return audit.Settings{}, err
|
|
}
|
|
if current.RetentionDays == days {
|
|
return current, nil
|
|
}
|
|
if err := u.settings.SaveRetention(days); err != nil {
|
|
return audit.Settings{}, err
|
|
}
|
|
|
|
event := audit.NewEvent(audit.ActionRetentionChanged, audit.CategorySystem)
|
|
event.Params = map[string]any{audit.ParamFrom: current.RetentionDays, audit.ParamTo: days}
|
|
u.recorder.Record(ctx, event)
|
|
|
|
current.RetentionDays = days
|
|
return current, nil
|
|
}
|