private async Task AddDiscCoverImage(DiscImageModel coverImage, Stream imageContent, CancellationToken cancellationToken) { await storageRepository.AddDiscImage(coverImage, imageContent, cancellationToken); await discsRepository.AddDiscImage(coverImage, cancellationToken); DiscLibrary.AddDiscImage(coverImage); }
public async Task DeleteDiscImage(DiscImageModel image, CancellationToken cancellationToken) { await using var context = contextFactory.CreateDbContext(); var imageEntity = await context.DiscImages.FindAsync(new object[] { image.Id.ToInt32() }, cancellationToken); context.DiscImages.Remove(imageEntity); await context.SaveChangesAsync(cancellationToken); }
public async Task SetDiscCoverImage(DiscModel disc, DiscImageModel coverImage, Stream imageContent, CancellationToken cancellationToken) { if (disc.CoverImage != null) { await DeleteDiscCoverImage(disc.CoverImage, cancellationToken); } disc.AddImage(coverImage); await AddDiscCoverImage(coverImage, imageContent, cancellationToken); }
public async Task SetDiscCoverImage_ForDiscWithExistingCoverImageOfAnotherType_SetsCoverImageCorrectly() { // Arrange var target = CreateTestTarget(); var oldImageFilePath = Path.Combine(LibraryStorageRoot, "Belarusian", "Neuro Dubel", "2010 - Афтары правды (CD 1)", "cover.jpg"); File.Exists(oldImageFilePath).Should().BeTrue(); var disc = await GetDisc(ReferenceData.NormalDiscId); var discCoverImage = new DiscImageModel { TreeTitle = "cover.png", ImageType = DiscImageType.Cover, }; // Act await using var imageContent = File.OpenRead("ContentForAdding/NewCover.png"); await target.SetDiscCoverImage(disc, discCoverImage, imageContent, CancellationToken.None); // Assert var referenceData = GetReferenceData(); var expectedDiscCoverImage = new DiscImageModel { Id = ReferenceData.DiscCoverImageId, TreeTitle = "cover.png", ImageType = DiscImageType.Cover, Size = 184257, Checksum = 1738836760, ContentUri = "Belarusian/Neuro Dubel/2010 - Афтары правды (CD 1)/cover.png".ToContentUri(LibraryStorageRoot), }; referenceData.NormalDisc.DeleteImage(referenceData.NormalDisc.CoverImage); referenceData.NormalDisc.AddImage(expectedDiscCoverImage); discCoverImage.Should().BeEquivalentTo(expectedDiscCoverImage, x => x.WithStrictOrdering().IgnoringCyclicReferences()); var discFromRepository = await GetDisc(ReferenceData.NormalDiscId); discFromRepository.CoverImage.Should().BeEquivalentTo(expectedDiscCoverImage, x => x.WithStrictOrdering().IgnoringCyclicReferences()); var imageFilePath = Path.Combine(LibraryStorageRoot, "Belarusian", "Neuro Dubel", "2010 - Афтары правды (CD 1)", "cover.png"); var fileInfo = new FileInfo(imageFilePath); fileInfo.Exists.Should().BeTrue(); fileInfo.Length.Should().Be(184257); File.Exists(oldImageFilePath).Should().BeFalse(); await CheckLibraryConsistency(); }
public static DiscImageEntity ToEntity(this DiscImageModel image) { return(new DiscImageEntity { Id = image.Id?.ToInt32() ?? default, DiscId = image.Disc.Id.ToInt32(), TreeTitle = image.TreeTitle, ImageType = ConvertImageType(image.ImageType), FileSize = image.Size, Checksum = (int)image.Checksum, });
public Task DeleteDiscImage(DiscImageModel image, CancellationToken cancellationToken) { var imagePath = storageOrganizer.GetDiscImagePath(image); fileStorage.DeleteFile(imagePath); var folderPath = GetFolderPath(imagePath); DeleteFolderIfEmpty(folderPath); return(Task.CompletedTask); }
private async Task DeleteDiscCoverImage(DiscImageModel coverImage, CancellationToken cancellationToken) { await storageRepository.DeleteDiscImage(coverImage, cancellationToken); await discsRepository.DeleteDiscImage(coverImage, cancellationToken); DiscLibrary.DeleteDiscImage(coverImage); var disc = coverImage.Disc; disc.DeleteImage(coverImage); }
public Task AddDiscImage(DiscImageModel image, Stream imageContent, CancellationToken cancellationToken) { var imagePath = storageOrganizer.GetDiscImagePath(image); fileStorage.SaveFile(imagePath, imageContent); var fullPath = fileStorage.GetFullPath(imagePath); image.Size = CalculateFileSize(fullPath); image.Checksum = CalculateFileChecksum(fullPath); SetDiscImageUri(image); return(Task.CompletedTask); }
public async Task AddDiscImage(DiscImageModel image, CancellationToken cancellationToken) { await using var context = contextFactory.CreateDbContext(); var discEntity = await context.Discs .Include(x => x.Images) .SingleAsync(d => d.Id == image.Disc.Id.ToInt32(), cancellationToken); var imageEntity = image.ToEntity(); discEntity.Images.Add(imageEntity); await context.SaveChangesAsync(cancellationToken); image.Id = imageEntity.Id.ToItemId(); }
public FilePath GetDiscImagePath(DiscImageModel image) { return(GetDiscPath(image.Disc) .Add(image.TreeTitle)); }
public void DeleteDiscImage(DiscImageModel discImage) { // Doing nothing here since collection of disc images is not maintained. }
public void SetDiscImageUri(DiscImageModel discImage) { var imagePath = storageOrganizer.GetDiscImagePath(discImage); discImage.ContentUri = GetUriForPath(imagePath); }