Update structure

This commit is contained in:
2026-05-28 20:42:38 +02:00
parent ffa3a73bb8
commit 94bf9c61a3
97 changed files with 164 additions and 137 deletions
@@ -1,21 +1,21 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Configuration;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.Jobs
{
public class TemporalUploadsCleanupJob(
public class TemporalUploadsCleanUpJob(
IServiceScopeFactory scopeFactory,
ILogger<TemporalUploadsCleanupJob> logger,
ILogger<TemporalUploadsCleanUpJob> logger,
ApplicationStorageConfiguration storageConfiguration,
UploadIntentConfiguration uploadIntentConfiguration)
: BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
logger.LogInformation("TemporalUploadsCleanupJob started (interval: {Interval}s, prefix: {Prefix})",
logger.LogInformation("TemporalUploadsCleanUpJob started (interval: {Interval}s, prefix: {Prefix})",
uploadIntentConfiguration.TempCleanupJobIntervalSeconds,
uploadIntentConfiguration.TempRootPrefix);
@@ -27,7 +27,7 @@ namespace Musify.Infrastructure.Jobs
}
catch (Exception exception) when (exception is not OperationCanceledException)
{
logger.LogError(exception, "Error in TemporalUploadsCleanupJob");
logger.LogError(exception, "Error in TemporalUploadsCleanUpJob");
}
await Task.Delay(TimeSpan.FromSeconds(uploadIntentConfiguration.TempCleanupJobIntervalSeconds), stoppingToken);
@@ -39,7 +39,7 @@ namespace Musify.Infrastructure.Jobs
await using var scope = scopeFactory.CreateAsyncScope();
var storageService = scope.ServiceProvider.GetRequiredService<IStorageService>();
var cutoff = DateTime.UtcNow.AddDays(-uploadIntentConfiguration.TempUploadsRetentionDays);
var cutOff = DateTime.UtcNow.AddDays(-uploadIntentConfiguration.TempUploadsRetentionDays);
var deleted = 0;
var errors = 0;
@@ -48,7 +48,7 @@ namespace Musify.Infrastructure.Jobs
uploadIntentConfiguration.TempRootPrefix,
cancellationToken))
{
if (lastModified >= cutoff)
if (lastModified >= cutOff)
continue;
try
@@ -64,7 +64,7 @@ namespace Musify.Infrastructure.Jobs
}
if (deleted > 0 || errors > 0)
logger.LogInformation("TemporalUploadsCleanupJob: deleted {Deleted} orphaned objects, {Errors} errors", deleted, errors);
logger.LogInformation("TemporalUploadsCleanUpJob: deleted {Deleted} orphaned objects, {Errors} errors", deleted, errors);
}
}
}
@@ -2,9 +2,9 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Configuration;
using Musify.Domain.Entities;
using Musify.Domain.ValueObjects;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.Jobs
{
@@ -1,9 +1,10 @@
using MassTransit;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Domain.Entities;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Domain.ValueObjects;
using Musify.Infrastructure.MassTransit.Arguments;
namespace Musify.Infrastructure.MassTransit.Activities
{
@@ -1,10 +1,11 @@
using MassTransit;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Domain.Entities;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.Logs;
using Musify.Domain.ValueObjects;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
namespace Musify.Infrastructure.MassTransit.Activities
{
@@ -1,8 +1,9 @@
using MassTransit;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Domain.Entities;
using Musify.Domain.ValueObjects;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
@@ -1,6 +1,6 @@
using MassTransit;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
@@ -1,8 +1,8 @@
using MassTransit;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.Logs;
using Musify.Application.Contracts;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
namespace Musify.Infrastructure.MassTransit.Activities.Files
{
@@ -1,9 +1,9 @@
using MassTransit;
using Amazon.S3;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Arguments;
using System.Net;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.MassTransit.Activities.Files
{
@@ -1,8 +1,8 @@
using MassTransit;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.Logs;
using Musify.Application.Contracts;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
namespace Musify.Infrastructure.MassTransit.Activities
{
@@ -1,6 +1,6 @@
using MassTransit;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
@@ -1,6 +1,6 @@
using MassTransit;
using Microsoft.Extensions.Logging;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Arguments;
namespace Musify.Infrastructure.MassTransit.Activities
{
@@ -1,8 +1,8 @@
using MassTransit;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.Logs;
using Musify.Application.Contracts;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
namespace Musify.Infrastructure.MassTransit.Activities
{
@@ -1,8 +1,8 @@
using MassTransit;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.Logs;
using Musify.Application.Contracts;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
namespace Musify.Infrastructure.MassTransit.Activities
{
@@ -1,8 +1,8 @@
using MassTransit;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.Logs;
using Musify.Application.Contracts;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
namespace Musify.Infrastructure.MassTransit.Activities
{
@@ -1,7 +1,8 @@
using MassTransit;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Infrastructure.MassTransit.Arguments;
namespace Musify.Infrastructure.MassTransit.Activities.PlayLists
{
@@ -1,8 +1,10 @@
using MassTransit;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Domain.Entities;
using Musify.Domain.ValueObjects;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.MassTransit.Activities.PlayLists
{
@@ -1,7 +1,8 @@
using MassTransit;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Infrastructure.MassTransit.Arguments;
namespace Musify.Infrastructure.MassTransit.Activities.Tracks
{
@@ -1,8 +1,10 @@
using MassTransit;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Domain.Entities;
using Musify.Domain.ValueObjects;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.MassTransit.Activities.Tracks
{
@@ -1,8 +1,9 @@
using MassTransit;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Domain.Entities;
using Musify.Domain.ValueObjects;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Logs;
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.PlayLists
namespace Musify.Infrastructure.MassTransit.Arguments
{
internal record DeletePlayListFromDbArguments(
Guid PlayListId);
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Tracks
namespace Musify.Infrastructure.MassTransit.Arguments
{
internal record DeleteTrackFromDbArguments(
Guid TrackId);
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record DownloadFileFromBucketArguments(
string Bucket,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record GenerateAudioWorkflowPathsArguments(
Guid TrackId,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record GeneratePictureWorkflowPathsArguments(
string TemporaryRootDirectory,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.PlayLists
namespace Musify.Infrastructure.MassTransit.Arguments
{
internal record MarkPlayListAsRemovingArguments(
Guid PlayListId);
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Tracks
namespace Musify.Infrastructure.MassTransit.Arguments
{
internal record MarkTrackAsRemovingArguments(
Guid TrackId);
@@ -1,3 +1,4 @@
using Musify.Application.Common;
using Musify.Application.Events;
namespace Musify.Infrastructure.MassTransit.Arguments
@@ -1,3 +1,4 @@
using Musify.Application.Common;
using Musify.Application.Events;
namespace Musify.Infrastructure.MassTransit.Arguments
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record RemoveFileFromBucketArguments(
string Bucket,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record ResizePictureLocalArguments(
string SourceFilePathVariable,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record TranscodeDashAudioArguments(
Guid TrackId,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record TransferFilesToBucketArguments(
string DestinationBucket,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record UpdatePlayListPictureArguments(
Guid PlayListId,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Arguments
namespace Musify.Infrastructure.MassTransit.Arguments
{
public record UpdateTrackPictureArguments(
Guid TrackId,
@@ -2,10 +2,8 @@ using MassTransit;
using Microsoft.Extensions.DependencyInjection;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.MassTransit.Activities;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.Audio;
using Musify.Infrastructure.MassTransit.Activities.Files;
using Musify.Infrastructure.MassTransit.Activities.Logs;
using Musify.Infrastructure.MassTransit.Activities.PlayLists;
using Musify.Infrastructure.MassTransit.Activities.Tracks;
using Musify.Infrastructure.MassTransit.Activities.UploadIntents;
@@ -1,7 +1,7 @@
using MassTransit;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.Persistence;
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Logs
namespace Musify.Infrastructure.MassTransit.Logs
{
public record DownloadFileFromBucketLog(
string Bucket,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Logs
namespace Musify.Infrastructure.MassTransit.Logs
{
public record GeneratePictureWorkflowPathsLog(string WorkingDirectory);
}
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Logs
namespace Musify.Infrastructure.MassTransit.Logs
{
public record ResizePictureLog(string DestinationFilePath);
}
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Logs
namespace Musify.Infrastructure.MassTransit.Logs
{
public record TranscodeDashAudioLog(string WorkingDirectory);
}
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Logs
namespace Musify.Infrastructure.MassTransit.Logs
{
public record TransferFilesToBucketLog(string DestinationBucket, string[] UploadedKeys);
}
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Logs
namespace Musify.Infrastructure.MassTransit.Logs
{
public record UpdatePlayListPictureLog(
Guid PlayListId,
@@ -1,4 +1,4 @@
namespace Musify.Infrastructure.MassTransit.Activities.Logs
namespace Musify.Infrastructure.MassTransit.Logs
{
public record UpdateTrackPictureLog(
Guid TrackId,
@@ -1,5 +1,5 @@
using MassTransit;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.MassTransit
{
@@ -4,10 +4,9 @@ using Musify.Application.Events;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.MassTransit.Activities.Audio;
using Musify.Infrastructure.MassTransit.Activities.Files;
using Musify.Infrastructure.MassTransit.Activities;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Consumers;
using Musify.Infrastructure.MassTransit.Activities;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
{
@@ -1,12 +1,12 @@
using MassTransit;
using MassTransit.Courier.Contracts;
using Microsoft.EntityFrameworkCore;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Configuration;
using Musify.Infrastructure.MassTransit.Activities.Files;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.PlayLists;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Consumers;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
{
@@ -1,12 +1,12 @@
using MassTransit;
using MassTransit.Courier.Contracts;
using Microsoft.EntityFrameworkCore;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Configuration;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.Files;
using Musify.Infrastructure.MassTransit.Activities.Tracks;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Consumers;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.MassTransit.RoutingSlip.Builders
{
@@ -1,9 +1,9 @@
using MassTransit;
using MassTransit.Courier.Contracts;
using Musify.Application.Common;
using Musify.Application.Events;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.MassTransit.Activities;
using Musify.Infrastructure.MassTransit.Activities.Arguments;
using Musify.Infrastructure.MassTransit.Activities.Files;
using Musify.Infrastructure.MassTransit.Arguments;
using Musify.Infrastructure.MassTransit.Consumers;
@@ -1,5 +1,6 @@
using MassTransit;
using MassTransit.Courier.Contracts;
using Musify.Application.Common;
using Musify.Application.Events;
using Musify.Infrastructure.MassTransit.Activities.Files;
using Musify.Infrastructure.MassTransit.Activities.PlayLists;
+2 -2
View File
@@ -1,10 +1,10 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
using MassTransit;
using Musify.Application.Contracts.Infrastructure;
using Musify.Domain.Entities;
using Musify.Infrastructure.Configuration;
using AppIDatabase = Musify.Application.Contracts.Infrastructure.IDatabase;
using AppIDatabase = Musify.Application.Contracts.IDatabase;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.Persistence
{
@@ -1,7 +1,7 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Infrastructure.Configuration;
namespace Musify.Infrastructure.Persistence
@@ -1,5 +1,5 @@
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Infrastructure.Configuration;
using System.Diagnostics;
+1 -1
View File
@@ -1,5 +1,5 @@
using Microsoft.Extensions.Logging;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
@@ -2,11 +2,11 @@ using Amazon.S3;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Configuration;
using Musify.Infrastructure.Configuration;
using Musify.Infrastructure.Jobs;
using Musify.Application.Services;
using Musify.Application.Contracts;
namespace Musify.Infrastructure.Services
{
@@ -66,7 +66,7 @@ namespace Musify.Infrastructure.Services
serviceDescriptors.AddUploadIntentConfiguration(configuration);
serviceDescriptors.AddHostedService<UploadIntentExpirationJob>();
serviceDescriptors.AddHostedService<TemporalUploadsCleanupJob>();
serviceDescriptors.AddHostedService<TemporalUploadsCleanUpJob>();
return serviceDescriptors;
}
+5 -4
View File
@@ -3,10 +3,11 @@ using Amazon.S3.Model;
using Amazon.S3.Transfer;
using Microsoft.Extensions.Logging;
using MimeMapping;
using Musify.Application.Contracts.Infrastructure;
using Musify.Application.Contracts;
using Musify.Domain.Entities;
using Musify.Domain.ValueObjects;
using Musify.Infrastructure.Configuration;
using ObjectMetadata = Musify.Application.Contracts.Infrastructure.ObjectMetadata;
using ObjectMetaData = Musify.Application.Contracts.ObjectMetaData;
namespace Musify.Infrastructure.Services
{
@@ -70,12 +71,12 @@ namespace Musify.Infrastructure.Services
return await amazonS3.GetPreSignedURLAsync(request);
}
public async Task<ObjectMetadata?> HeadObjectAsync(string bucket, string key, CancellationToken cancellationToken)
public async Task<ObjectMetaData?> HeadObjectAsync(string bucket, string key, CancellationToken cancellationToken)
{
try
{
var response = await amazonS3.GetObjectMetadataAsync(bucket, key, cancellationToken);
return new ObjectMetadata(response.Headers.ContentType, response.ContentLength);
return new ObjectMetaData(response.Headers.ContentType, response.ContentLength);
}
catch (AmazonS3Exception ex) when (ex.StatusCode == System.Net.HttpStatusCode.NotFound)
{