Unify picture configuration and options registration

This commit is contained in:
2026-09-24 05:23:40 +02:00
parent 5e819d7676
commit 4d943e068e
51 changed files with 384 additions and 525 deletions
@@ -6,7 +6,6 @@ using Musify.Application.Configuration;
using Musify.Application.Contracts;
using Musify.Application.Events;
using Musify.Application.Services;
using Musify.Application.Shared;
using Musify.Application.Tracks.Responses;
using Musify.Domain.Entities;
using Musify.Domain.ValueObjects;
@@ -117,6 +116,7 @@ public class CreateTrackCommandHandler(
try
{
var sizes = trackConfiguration.PicturesSizes.ToImageSizes(trackConfiguration.Routes);
await eventBus.PublishAsync(
new CreateTrackResourcesEvent(
trackEntity.Id,
@@ -128,18 +128,9 @@ public class CreateTrackCommandHandler(
audioIntent.Key,
finalAudioKey,
audioProcessedFolderKey,
new ImageSize(
trackConfiguration.Routes.SmallPicturesPath,
trackConfiguration.PicturesSizes.SmallPictureWidth,
trackConfiguration.PicturesSizes.SmallPictureHeight),
new ImageSize(
trackConfiguration.Routes.MediumPicturesPath,
trackConfiguration.PicturesSizes.MediumPictureWidth,
trackConfiguration.PicturesSizes.MediumPictureHeight),
new ImageSize(
trackConfiguration.Routes.LargePicturesPath,
trackConfiguration.PicturesSizes.LargePictureWidth,
trackConfiguration.PicturesSizes.LargePictureHeight)),
sizes.Small,
sizes.Medium,
sizes.Large),
cancellationToken);
}
catch (Exception exception)
@@ -28,12 +28,14 @@ public class GetTrackCoverQueryHandler(
return Error.NotFound();
var routes = trackConfiguration.Routes;
var (name, key) = request.Size.ToLowerInvariant() switch
var size = PictureSizeParser.Parse(request.Size);
var name = size switch
{
"small" => (track.SmallName, BuildKey(routes.BuildSmallPicturePath, track.SmallName)),
"large" => (track.LargeName, BuildKey(routes.BuildLargePicturePath, track.LargeName)),
_ => (track.MediumName, BuildKey(routes.BuildMediumPicturePath, track.MediumName))
PictureSize.Small => track.SmallName,
PictureSize.Large => track.LargeName,
_ => track.MediumName
};
var key = string.IsNullOrEmpty(name) ? null : routes.BuildPicturePath(size, name);
if (string.IsNullOrEmpty(name) || key == null)
return Error.NotFound();
@@ -46,7 +48,4 @@ public class GetTrackCoverQueryHandler(
return new TrackCoverLocation(storageConfiguration.Bucket, key, contentType);
}
private static string? BuildKey(Func<string, string> builder, string? name)
=> string.IsNullOrEmpty(name) ? null : builder(name);
}
@@ -50,9 +50,9 @@ public class RequestTrackUploadUrlsCommandHandler(
var pictureObjectName = $"{Guid.NewGuid()}.{request.PictureFileType.TrimStart('.').ToLowerInvariant()}";
var audioObjectName = $"{Guid.NewGuid()}.{request.AudioFileType.TrimStart('.').ToLowerInvariant()}";
var tempPictureKey = trackConfiguration.Routes.BuildTempPicturePath(
var tempPictureKey = trackConfiguration.Routes.BuildTempPath(
uploadIntentConfiguration.TempRootPrefix, request.UserId, pictureObjectName);
var tempAudioKey = trackConfiguration.Routes.BuildTempAudioPath(
var tempAudioKey = trackConfiguration.Routes.BuildTempPath(
uploadIntentConfiguration.TempRootPrefix, request.UserId, audioObjectName);
try