Changes on routes

This commit is contained in:
2026-05-09 18:57:16 +02:00
parent 4da960d9a1
commit be2bbea4cc
4 changed files with 35 additions and 17 deletions
@@ -55,6 +55,14 @@ namespace Musify.Application.Configuration
public string PresetLargePicturePath => Path.Combine(ParentFolders, PresetLargePicture); public string PresetLargePicturePath => Path.Combine(ParentFolders, PresetLargePicture);
public string OriginalPicturesPath => Path.Combine(ParentFolders, OriginalPicturesFolder); 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 public class PlayListPicturesSizes
@@ -72,7 +72,7 @@ namespace Musify.Application.PlayLists.Handlers
async Task<Result> UploadPictureAsync(PlayList playList, IFileData picture, CancellationToken cancellationToken) async Task<Result> UploadPictureAsync(PlayList playList, IFileData picture, CancellationToken cancellationToken)
{ {
var pictureName = Guid.NewGuid() + picture.FileType; var pictureName = Guid.NewGuid() + picture.FileType;
var pictureKey = Path.Combine(playListConfiguration.Routes.OriginalPicturesPath, pictureName); var pictureKey = playListConfiguration.Routes.BuildOriginalPicturePath(pictureName);
try try
{ {
@@ -94,7 +94,7 @@ namespace Musify.Application.PlayLists.Handlers
var updateEvent = new UpdatePlayListPictureEvent( var updateEvent = new UpdatePlayListPictureEvent(
playList.Id, playList.Id,
storageConfiguration.Bucket, storageConfiguration.Bucket,
Path.Combine(playListConfiguration.Routes.OriginalPicturesPath, playList.OriginalPictureName), playListConfiguration.Routes.BuildOriginalPicturePath(playList.OriginalPictureName),
new ImageSize( new ImageSize(
playListConfiguration.Routes.SmallPicturesPath, playListConfiguration.Routes.SmallPicturesPath,
playListConfiguration.PicturesSizes.SmallPictureWidth, playListConfiguration.PicturesSizes.SmallPictureWidth,
@@ -123,7 +123,7 @@ namespace Musify.Application.PlayLists.Handlers
if (string.IsNullOrEmpty(playList.OriginalPictureName)) if (string.IsNullOrEmpty(playList.OriginalPictureName))
return; return;
var originalPicturePath = Path.Combine(playListConfiguration.Routes.OriginalPicturesPath, playList.OriginalPictureName); var originalPicturePath = playListConfiguration.Routes.BuildOriginalPicturePath(playList.OriginalPictureName);
try try
{ {
@@ -1,5 +1,6 @@
using Ardalis.Result; using Ardalis.Result;
using Mediator; using Mediator;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Musify.Application.Configuration; using Musify.Application.Configuration;
using Musify.Application.Contracts.Infrastructure; using Musify.Application.Contracts.Infrastructure;
@@ -14,9 +15,7 @@ namespace Musify.Application.PlayLists.Handlers
{ {
public async ValueTask<Result> Handle(DeletePlayListCommand request, CancellationToken cancellationToken) public async ValueTask<Result> Handle(DeletePlayListCommand request, CancellationToken cancellationToken)
{ {
var playList = await database.PlayLists.FindAsync( var playList = await database.PlayLists.SingleOrDefaultAsync(p => p.Id == request.PlayListId, cancellationToken);
[request.PlayListId],
cancellationToken);
if (playList is null) if (playList is null)
{ {
logger.LogDebug("Playlist {PlayListId} not found", request.PlayListId); logger.LogDebug("Playlist {PlayListId} not found", request.PlayListId);
@@ -29,15 +28,18 @@ namespace Musify.Application.PlayLists.Handlers
return Result.Unauthorized(); return Result.Unauthorized();
} }
if (!string.IsNullOrWhiteSpace(playList.OriginalPictureName))
await PublishRemoveFileEventAsync(playList.Id,
playListConfiguration.Routes.BuildOriginalPicturePath(playList.OriginalPictureName), cancellationToken);
if (playList.SmallPictureName != playListConfiguration.Routes.PresetSmallPicture) if (playList.SmallPictureName != playListConfiguration.Routes.PresetSmallPicture)
await PublishRemoveFileEventAsync(playList.Id, Path.Combine(playListConfiguration.Routes.SmallPicturesPath, await PublishRemoveFileEventAsync(playList.Id,
playList.SmallPictureName), cancellationToken); playListConfiguration.Routes.BuildSmallPicturePath(playList.SmallPictureName), cancellationToken);
if (playList.MediumPictureName != playListConfiguration.Routes.PresetMediumPicture) if (playList.MediumPictureName != playListConfiguration.Routes.PresetMediumPicture)
await PublishRemoveFileEventAsync(playList.Id, Path.Combine(playListConfiguration.Routes.MediumPicturesPath, await PublishRemoveFileEventAsync(playList.Id,
playList.MediumPictureName), cancellationToken); playListConfiguration.Routes.BuildMediumPicturePath(playList.MediumPictureName), cancellationToken);
if (playList.LargePictureName != playListConfiguration.Routes.PresetLargePicture) if (playList.LargePictureName != playListConfiguration.Routes.PresetLargePicture)
await PublishRemoveFileEventAsync(playList.Id, Path.Combine(playListConfiguration.Routes.LargePicturesPath, await PublishRemoveFileEventAsync(playList.Id,
playList.LargePictureName), cancellationToken); playListConfiguration.Routes.BuildLargePicturePath(playList.LargePictureName), cancellationToken);
database.PlayLists.Remove(playList); database.PlayLists.Remove(playList);
await database.SaveChangesAsync(cancellationToken); await database.SaveChangesAsync(cancellationToken);
@@ -1,5 +1,6 @@
using Ardalis.Result; using Ardalis.Result;
using Mediator; using Mediator;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Musify.Application.Configuration; using Musify.Application.Configuration;
using Musify.Application.Contracts.Application; using Musify.Application.Contracts.Application;
@@ -18,9 +19,7 @@ namespace Musify.Application.PlayLists.Handlers
{ {
public async ValueTask<Result<PlayListResponse>> Handle(UpdatePlayListCommand request, CancellationToken cancellationToken) public async ValueTask<Result<PlayListResponse>> Handle(UpdatePlayListCommand request, CancellationToken cancellationToken)
{ {
var playListEntity = await database.PlayLists.FindAsync( var playListEntity = await database.PlayLists.SingleOrDefaultAsync(pl => pl.Id == request.PlayListId, cancellationToken);
[request.PlayListId],
cancellationToken);
if (playListEntity is null) if (playListEntity is null)
{ {
logger.LogInformation("Playlist {PlayListId} not found", request.PlayListId); logger.LogInformation("Playlist {PlayListId} not found", request.PlayListId);
@@ -43,8 +42,6 @@ namespace Musify.Application.PlayLists.Handlers
{ {
database.PlayLists.Update(playListEntity); database.PlayLists.Update(playListEntity);
await database.SaveChangesAsync(cancellationToken); await database.SaveChangesAsync(cancellationToken);
await PublishPlayListPictureEvent(playListEntity, cancellationToken);
await RemoveOldPictures(playListEntity, cancellationToken);
} }
catch (Exception exception) catch (Exception exception)
{ {
@@ -53,6 +50,17 @@ namespace Musify.Application.PlayLists.Handlers
return Result.Error($"Failed to update playlist {playListEntity.Id}"); 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); logger.LogInformation("Updated playlist {PlayListId}", playListEntity.Id);
return Result.Success(PlayListResponse.FromEntity(playListEntity)); return Result.Success(PlayListResponse.FromEntity(playListEntity));
} }