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
@@ -7,7 +7,6 @@ using Musify.Application.Configuration;
using Musify.Application.Contracts;
using Musify.Application.Events;
using Musify.Application.Services;
using Musify.Application.Shared;
using Musify.Domain.Entities;
using Musify.Domain.ValueObjects;
@@ -90,6 +89,7 @@ public class CreateAlbumCommandHandler(
{
try
{
var sizes = albumConfiguration.PicturesSizes.ToImageSizes(albumConfiguration.Routes);
await eventBus.PublishAsync(
new CreateAlbumResourcesEvent(
albumId,
@@ -97,18 +97,9 @@ public class CreateAlbumCommandHandler(
storageConfiguration.Bucket,
pictureIntent.Key,
finalPictureKey,
new ImageSize(
albumConfiguration.Routes.SmallPicturesPath,
albumConfiguration.PicturesSizes.SmallPictureWidth,
albumConfiguration.PicturesSizes.SmallPictureHeight),
new ImageSize(
albumConfiguration.Routes.MediumPicturesPath,
albumConfiguration.PicturesSizes.MediumPictureWidth,
albumConfiguration.PicturesSizes.MediumPictureHeight),
new ImageSize(
albumConfiguration.Routes.LargePicturesPath,
albumConfiguration.PicturesSizes.LargePictureWidth,
albumConfiguration.PicturesSizes.LargePictureHeight)),
sizes.Small,
sizes.Medium,
sizes.Large),
cancellationToken);
return new Success();
}
@@ -32,12 +32,14 @@ public class GetAlbumCoverQueryHandler(
var pictures = owned.Pictures;
var routes = albumConfiguration.Routes;
var (name, key) = request.Size.ToLowerInvariant() switch
var size = PictureSizeParser.Parse(request.Size);
var name = size switch
{
"small" => (pictures.SmallName, BuildKey(routes.BuildSmallPicturePath, pictures.SmallName)),
"large" => (pictures.LargeName, BuildKey(routes.BuildLargePicturePath, pictures.LargeName)),
_ => (pictures.MediumName, BuildKey(routes.BuildMediumPicturePath, pictures.MediumName))
PictureSize.Small => pictures.SmallName,
PictureSize.Large => pictures.LargeName,
_ => pictures.MediumName
};
var key = string.IsNullOrEmpty(name) ? null : routes.BuildPicturePath(size, name);
// The resized files only exist once processing has finished; until then serve the original.
if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(key))
@@ -52,7 +54,4 @@ public class GetAlbumCoverQueryHandler(
var contentType = MimeUtility.GetMimeMapping(name);
return new AlbumCoverLocation(storageConfiguration.Bucket, key, contentType);
}
private static string? BuildKey(Func<string, string> builder, string? name)
=> string.IsNullOrEmpty(name) ? null : builder(name);
}
@@ -44,7 +44,7 @@ public class RequestAlbumPictureUploadCommandHandler(
var objectName = $"{Guid.NewGuid()}.{request.FileType.TrimStart('.').ToLowerInvariant()}";
var tempKey = albumConfiguration.Routes.BuildTempPicturePath(
var tempKey = albumConfiguration.Routes.BuildTempPath(
uploadIntentConfiguration.TempRootPrefix, request.UserId, objectName);
try
@@ -106,6 +106,7 @@ public class UpdateAlbumCommandHandler(
{
try
{
var sizes = albumConfiguration.PicturesSizes.ToImageSizes(albumConfiguration.Routes);
await eventBus.PublishAsync(
new UpdateAlbumPictureSourceEvent(
albumId,
@@ -113,18 +114,9 @@ public class UpdateAlbumCommandHandler(
storageConfiguration.Bucket,
pictureIntent.Key,
finalPictureKey,
new ImageSize(
albumConfiguration.Routes.SmallPicturesPath,
albumConfiguration.PicturesSizes.SmallPictureWidth,
albumConfiguration.PicturesSizes.SmallPictureHeight),
new ImageSize(
albumConfiguration.Routes.MediumPicturesPath,
albumConfiguration.PicturesSizes.MediumPictureWidth,
albumConfiguration.PicturesSizes.MediumPictureHeight),
new ImageSize(
albumConfiguration.Routes.LargePicturesPath,
albumConfiguration.PicturesSizes.LargePictureWidth,
albumConfiguration.PicturesSizes.LargePictureHeight)),
sizes.Small,
sizes.Medium,
sizes.Large),
cancellationToken);
return new Success();
}