This commit is contained in:
2026-05-14 21:42:31 +02:00
parent 91ec85760e
commit 80f44422a0
11 changed files with 158 additions and 100 deletions
@@ -8,6 +8,8 @@ using Musify.Application.Events;
using Musify.Application.Tracks.Commands;
using Musify.Application.Tracks.Responses;
using Musify.Application.UploadIntents;
using Musify.Application.Extensions;
using Musify.Application.Abstractions.Application;
using Musify.Domain.Entities;
namespace Musify.Application.Tracks.Handler
@@ -15,6 +17,7 @@ namespace Musify.Application.Tracks.Handler
public class CreateTrackCommandHandler(
IDatabase database,
IEventBus eventBus,
IUploadIntentService uploadIntentService,
IStorageService storageService,
ILogger<CreateTrackCommandHandler> logger,
ApplicationStorageConfiguration storageConfiguration,
@@ -32,20 +35,20 @@ namespace Musify.Application.Tracks.Handler
return Result.NotFound($"User {request.UserId} not found");
}
var pictureValidation = await UploadIntentHelpers.ValidateAndLoadAsync(
database, storageService, uploadIntentConfiguration,
var pictureValidation = await uploadIntentService.ValidateAndLoadAsync(
uploadIntentConfiguration,
request.PictureIntentId, request.UserId, cancellationToken);
if (!pictureValidation.IsSuccess)
return pictureValidation.Error!.Value;
return pictureValidation.As<UploadIntent, TrackApplicationResponse>();
var audioValidation = await UploadIntentHelpers.ValidateAndLoadAsync(
database, storageService, uploadIntentConfiguration,
var audioValidation = await uploadIntentService.ValidateAndLoadAsync(
uploadIntentConfiguration,
request.AudioIntentId, request.UserId, cancellationToken);
if (!audioValidation.IsSuccess)
return audioValidation.Error!.Value;
return audioValidation.As<UploadIntent, TrackApplicationResponse>();
var pictureIntent = pictureValidation.Intent!;
var audioIntent = audioValidation.Intent!;
var pictureIntent = pictureValidation.Value;
var audioIntent = audioValidation.Value;
var finalPictureKey = trackConfiguration.Routes.BuildOriginalPicturePath(request.UserId, pictureIntent.ObjectName);
var finalAudioKey = trackConfiguration.Routes.BuildOriginalAudioPath(request.UserId, audioIntent.ObjectName);
@@ -2,6 +2,7 @@ using Ardalis.Result;
using Mediator;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Abstractions.Application;
using Musify.Application.Abstractions.Infrastructure;
using Musify.Application.Configuration;
using Musify.Application.Tracks.Commands;
@@ -13,6 +14,7 @@ namespace Musify.Application.Tracks.Handler
{
public class RequestTrackUploadUrlsCommandHandler(
IDatabase database,
IUploadIntentService uploadIntentService,
IStorageService storageService,
ILogger<RequestTrackUploadUrlsCommandHandler> logger,
ApplicationStorageConfiguration storageConfiguration,
@@ -78,8 +80,8 @@ namespace Musify.Application.Tracks.Handler
await using var transaction = await database.BeginTransactionAsync(
System.Data.IsolationLevel.Serializable, cancellationToken);
var quotaCheck = await UploadIntentHelpers.CheckQuotaAsync(
database, uploadIntentConfiguration, logger,
var quotaCheck = await uploadIntentService.CheckQuotaAsync(
uploadIntentConfiguration, logger,
request.UserId, effectivePictureSize + effectiveAudioSize, 2, cancellationToken);
if (!quotaCheck.IsSuccess)
return quotaCheck;