From be2bbea4cc48ba48179cb746ed01d7e8def72e43 Mon Sep 17 00:00:00 2001 From: XShine555 Date: Sat, 9 May 2026 18:57:16 +0200 Subject: [PATCH] Changes on routes --- .../Configuration/PlayListConfiguration.cs | 8 ++++++++ .../Handlers/CreatePlayListCommandHandler.cs | 6 +++--- .../Handlers/DeletePlayListCommandHandler.cs | 20 ++++++++++--------- .../Handlers/UpdatePlayListCommandHandler.cs | 18 ++++++++++++----- 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/Application/Configuration/PlayListConfiguration.cs b/Application/Configuration/PlayListConfiguration.cs index ca6d7ff..dd1964d 100644 --- a/Application/Configuration/PlayListConfiguration.cs +++ b/Application/Configuration/PlayListConfiguration.cs @@ -55,6 +55,14 @@ namespace Musify.Application.Configuration public string PresetLargePicturePath => Path.Combine(ParentFolders, PresetLargePicture); public string OriginalPicturesPath => Path.Combine(ParentFolders, OriginalPicturesFolder); + + public string BuildOriginalPicturePath(string pictureName) => Path.Combine(ParentFolders, OriginalPicturesFolder, pictureName); + + public string BuildSmallPicturePath(string pictureName) => Path.Combine(ParentFolders, SmallPicturesFolder, pictureName); + + public string BuildMediumPicturePath(string pictureName) => Path.Combine(ParentFolders, MediumPicturesFolder, pictureName); + + public string BuildLargePicturePath(string pictureName) => Path.Combine(ParentFolders, LargePicturesFolder, pictureName); } public class PlayListPicturesSizes diff --git a/Application/PlayLists/Handlers/CreatePlayListCommandHandler.cs b/Application/PlayLists/Handlers/CreatePlayListCommandHandler.cs index e9f4c94..0bdb882 100644 --- a/Application/PlayLists/Handlers/CreatePlayListCommandHandler.cs +++ b/Application/PlayLists/Handlers/CreatePlayListCommandHandler.cs @@ -72,7 +72,7 @@ namespace Musify.Application.PlayLists.Handlers async Task UploadPictureAsync(PlayList playList, IFileData picture, CancellationToken cancellationToken) { var pictureName = Guid.NewGuid() + picture.FileType; - var pictureKey = Path.Combine(playListConfiguration.Routes.OriginalPicturesPath, pictureName); + var pictureKey = playListConfiguration.Routes.BuildOriginalPicturePath(pictureName); try { @@ -94,7 +94,7 @@ namespace Musify.Application.PlayLists.Handlers var updateEvent = new UpdatePlayListPictureEvent( playList.Id, storageConfiguration.Bucket, - Path.Combine(playListConfiguration.Routes.OriginalPicturesPath, playList.OriginalPictureName), + playListConfiguration.Routes.BuildOriginalPicturePath(playList.OriginalPictureName), new ImageSize( playListConfiguration.Routes.SmallPicturesPath, playListConfiguration.PicturesSizes.SmallPictureWidth, @@ -123,7 +123,7 @@ namespace Musify.Application.PlayLists.Handlers if (string.IsNullOrEmpty(playList.OriginalPictureName)) return; - var originalPicturePath = Path.Combine(playListConfiguration.Routes.OriginalPicturesPath, playList.OriginalPictureName); + var originalPicturePath = playListConfiguration.Routes.BuildOriginalPicturePath(playList.OriginalPictureName); try { diff --git a/Application/PlayLists/Handlers/DeletePlayListCommandHandler.cs b/Application/PlayLists/Handlers/DeletePlayListCommandHandler.cs index c2ca6ba..db0c188 100644 --- a/Application/PlayLists/Handlers/DeletePlayListCommandHandler.cs +++ b/Application/PlayLists/Handlers/DeletePlayListCommandHandler.cs @@ -1,5 +1,6 @@ using Ardalis.Result; using Mediator; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Musify.Application.Configuration; using Musify.Application.Contracts.Infrastructure; @@ -14,9 +15,7 @@ namespace Musify.Application.PlayLists.Handlers { public async ValueTask Handle(DeletePlayListCommand request, CancellationToken cancellationToken) { - var playList = await database.PlayLists.FindAsync( - [request.PlayListId], - cancellationToken); + var playList = await database.PlayLists.SingleOrDefaultAsync(p => p.Id == request.PlayListId, cancellationToken); if (playList is null) { logger.LogDebug("Playlist {PlayListId} not found", request.PlayListId); @@ -29,15 +28,18 @@ namespace Musify.Application.PlayLists.Handlers return Result.Unauthorized(); } + if (!string.IsNullOrWhiteSpace(playList.OriginalPictureName)) + await PublishRemoveFileEventAsync(playList.Id, + playListConfiguration.Routes.BuildOriginalPicturePath(playList.OriginalPictureName), cancellationToken); if (playList.SmallPictureName != playListConfiguration.Routes.PresetSmallPicture) - await PublishRemoveFileEventAsync(playList.Id, Path.Combine(playListConfiguration.Routes.SmallPicturesPath, - playList.SmallPictureName), cancellationToken); + await PublishRemoveFileEventAsync(playList.Id, + playListConfiguration.Routes.BuildSmallPicturePath(playList.SmallPictureName), cancellationToken); if (playList.MediumPictureName != playListConfiguration.Routes.PresetMediumPicture) - await PublishRemoveFileEventAsync(playList.Id, Path.Combine(playListConfiguration.Routes.MediumPicturesPath, - playList.MediumPictureName), cancellationToken); + await PublishRemoveFileEventAsync(playList.Id, + playListConfiguration.Routes.BuildMediumPicturePath(playList.MediumPictureName), cancellationToken); if (playList.LargePictureName != playListConfiguration.Routes.PresetLargePicture) - await PublishRemoveFileEventAsync(playList.Id, Path.Combine(playListConfiguration.Routes.LargePicturesPath, - playList.LargePictureName), cancellationToken); + await PublishRemoveFileEventAsync(playList.Id, + playListConfiguration.Routes.BuildLargePicturePath(playList.LargePictureName), cancellationToken); database.PlayLists.Remove(playList); await database.SaveChangesAsync(cancellationToken); diff --git a/Application/PlayLists/Handlers/UpdatePlayListCommandHandler.cs b/Application/PlayLists/Handlers/UpdatePlayListCommandHandler.cs index a882b5b..2e643ec 100644 --- a/Application/PlayLists/Handlers/UpdatePlayListCommandHandler.cs +++ b/Application/PlayLists/Handlers/UpdatePlayListCommandHandler.cs @@ -1,5 +1,6 @@ using Ardalis.Result; using Mediator; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Musify.Application.Configuration; using Musify.Application.Contracts.Application; @@ -18,9 +19,7 @@ namespace Musify.Application.PlayLists.Handlers { public async ValueTask> Handle(UpdatePlayListCommand request, CancellationToken cancellationToken) { - var playListEntity = await database.PlayLists.FindAsync( - [request.PlayListId], - cancellationToken); + var playListEntity = await database.PlayLists.SingleOrDefaultAsync(pl => pl.Id == request.PlayListId, cancellationToken); if (playListEntity is null) { logger.LogInformation("Playlist {PlayListId} not found", request.PlayListId); @@ -43,8 +42,6 @@ namespace Musify.Application.PlayLists.Handlers { database.PlayLists.Update(playListEntity); await database.SaveChangesAsync(cancellationToken); - await PublishPlayListPictureEvent(playListEntity, cancellationToken); - await RemoveOldPictures(playListEntity, cancellationToken); } catch (Exception exception) { @@ -53,6 +50,17 @@ namespace Musify.Application.PlayLists.Handlers return Result.Error($"Failed to update playlist {playListEntity.Id}"); } + try + { + await PublishPlayListPictureEvent(playListEntity, cancellationToken); + await RemoveOldPictures(playListEntity, cancellationToken); + } + catch (Exception exception) + { + logger.LogError(exception, "Failed to publish playlist picture update event or remove old pictures for playlist {PlayListId}", playListEntity.Id); + return Result.Error($"Failed to update playlist {playListEntity.Id}"); + } + logger.LogInformation("Updated playlist {PlayListId}", playListEntity.Id); return Result.Success(PlayListResponse.FromEntity(playListEntity)); }