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 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
@@ -72,7 +72,7 @@ namespace Musify.Application.PlayLists.Handlers
async Task<Result> 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
{
@@ -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<Result> 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);
@@ -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<Result<PlayListResponse>> 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));
}