feat: activity log producers
This commit is contained in:
1 parent
50b1649965
commit
e37a46a027
93 files changed
+3396
-440
No files matched your search
@@ -1,21 +1,25 @@
|
||||
package useCases
|
||||
|
||||
import (
|
||||
"RenewCMS/internal/domain/audit"
|
||||
"RenewCMS/internal/domain/purge"
|
||||
"context"
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
type PurgeRunner interface {
|
||||
Run(fingerprint *string) (purge.RunResult, error)
|
||||
Execute(fingerprint *string) (purge.RunResult, error)
|
||||
}
|
||||
|
||||
type PurgeSchedulerUseCase struct {
|
||||
repository purge.Repository
|
||||
runner PurgeRunner
|
||||
recorder audit.Recorder
|
||||
}
|
||||
|
||||
func NewPurgeSchedulerUseCase(repository purge.Repository, runner PurgeRunner) *PurgeSchedulerUseCase {
|
||||
return &PurgeSchedulerUseCase{repository, runner}
|
||||
func NewPurgeSchedulerUseCase(repository purge.Repository, runner PurgeRunner, recorder audit.Recorder) *PurgeSchedulerUseCase {
|
||||
return &PurgeSchedulerUseCase{repository, runner, recorder}
|
||||
}
|
||||
|
||||
func (u *PurgeSchedulerUseCase) Tick(now time.Time) (purge.RunResult, bool, error) {
|
||||
@@ -27,9 +31,29 @@ func (u *PurgeSchedulerUseCase) Tick(now time.Time) (purge.RunResult, bool, erro
|
||||
if next == nil || now.Before(*next) {
|
||||
return purge.RunResult{}, false, nil
|
||||
}
|
||||
result, err := u.runner.Run(nil)
|
||||
result, err := u.runner.Execute(nil)
|
||||
if err != nil {
|
||||
u.recordFailedRun(err)
|
||||
return purge.RunResult{}, false, err
|
||||
}
|
||||
if result.GroupsTotal > 0 {
|
||||
event := systemPurgeEvent()
|
||||
event.Params = purgeParams(result)
|
||||
u.recorder.Record(context.Background(), event)
|
||||
}
|
||||
return result, true, nil
|
||||
}
|
||||
|
||||
func (u *PurgeSchedulerUseCase) recordFailedRun(err error) {
|
||||
if errors.Is(err, purge.ErrPurgeBusy) {
|
||||
return
|
||||
}
|
||||
failFrom(context.Background(), u.recorder, systemPurgeEvent(), reasonFor(err))
|
||||
}
|
||||
|
||||
func systemPurgeEvent() audit.Event {
|
||||
event := audit.NewEvent(audit.ActionMediaPurgeScheduled, audit.CategorySystem)
|
||||
event.Actor = audit.SystemActor()
|
||||
event.Source = audit.SourceSystem
|
||||
return event
|
||||
}
|
||||
Reference in new issue
Block a user