Files
RenewCMS/internal/infrastructure/useCases/SetVariantEnabled.go
T
2026-10-08 02:33:32 +02:00

41 lines
1.1 KiB
Go

package useCases
import (
"RenewCMS/internal/domain/audit"
"RenewCMS/internal/domain/image"
"context"
"time"
)
type SetVariantEnabledUseCase struct {
variants image.VariantRepository
files image.VariantFileRepository
now func() time.Time
recorder audit.Recorder
}
func NewSetVariantEnabledUseCase(variants image.VariantRepository, files image.VariantFileRepository, now func() time.Time, recorder audit.Recorder) *SetVariantEnabledUseCase {
return &SetVariantEnabledUseCase{variants, files, now, recorder}
}
func (u *SetVariantEnabledUseCase) SetEnabled(ctx context.Context, name string, enabled bool) (VariantSummary, error) {
current, err := u.variants.Get(name)
if err != nil {
return VariantSummary{}, err
}
if current.Enabled == enabled {
return summaryOf(current, u.files)
}
next := current
next.Enabled = enabled
next.UpdatedAt = u.now()
updated, err := u.variants.Update(next)
if err != nil {
recordFailure(ctx, u.recorder, enabledEvent(next), err)
return VariantSummary{}, err
}
u.recorder.Record(ctx, enabledEvent(updated))
return summaryOf(updated, u.files)
}