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) }