package useCases import ( "RenewCMS/internal/domain/audit" "RenewCMS/internal/domain/image" "context" ) type DeleteMediaUseCase struct { imageRepository image.Repository remover mediaRemover recorder audit.Recorder } func NewDeleteMediaUseCase(imageRepository image.Repository, storage image.Storage, variantFiles image.VariantFileRepository, recorder audit.Recorder) *DeleteMediaUseCase { return &DeleteMediaUseCase{imageRepository, newMediaRemover(imageRepository, storage, variantFiles), recorder} } func (u *DeleteMediaUseCase) Delete(ctx context.Context, id uint32) error { img, err := u.imageRepository.Get(id) if err != nil { return err } event := audit.NewEvent(audit.ActionMediaDelete, audit.CategoryMedia) event.Target = imageTarget(img) if err := u.remover.remove(img); err != nil { recordFailure(ctx, u.recorder, event, err) return err } u.recorder.Record(ctx, event) return nil }