public async Task MoveToAsync(IMediaReceiver target, MediaMoverContext context, MediaFile mediaFile) { Guard.NotNull(target, nameof(target)); Guard.NotNull(context, nameof(context)); Guard.NotNull(mediaFile, nameof(mediaFile)); var filePath = GetPath(mediaFile); try { // Let target store data (into database for example) await target.ReceiveAsync(context, mediaFile, await OpenReadAsync(mediaFile)); // Remember file path: we must be able to rollback IO operations on transaction failure context.AffectedFiles.Add(filePath); } catch (Exception ex) { Logger.Debug(ex); } }
public async Task MoveToAsync(IMediaReceiver target, MediaMoverContext context, MediaFile mediaFile) { Guard.NotNull(target, nameof(target)); Guard.NotNull(context, nameof(context)); Guard.NotNull(mediaFile, nameof(mediaFile)); if (mediaFile.MediaStorageId != null) { // Let target store data (into a file for example) await target.ReceiveAsync(context, mediaFile, await OpenReadAsync(mediaFile)); // Remove blob from DB try { mediaFile.MediaStorageId = null; mediaFile.MediaStorage = null; // Remove with stub entity _db.MediaStorage.Remove(new MediaStorage { Id = mediaFile.MediaStorageId.Value }); } catch { } } }