Changes
This commit is contained in:
@@ -62,7 +62,7 @@ namespace Musify.Application.Configuration
|
|||||||
|
|
||||||
public string PresetSmallPicture { get; set; } = "PresetSmallPicture.webp";
|
public string PresetSmallPicture { get; set; } = "PresetSmallPicture.webp";
|
||||||
|
|
||||||
public string PresetMediumPicture { get; set; } = "PresettMediumPicture.webp";
|
public string PresetMediumPicture { get; set; } = "PresetMediumPicture.webp";
|
||||||
|
|
||||||
public string PresetLargePicture { get; set; } = "PresetLargePicture.webp";
|
public string PresetLargePicture { get; set; } = "PresetLargePicture.webp";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,14 +33,14 @@ namespace Musify.Application.PlayLists.Commands.CreatePlayList
|
|||||||
Name = request.Name,
|
Name = request.Name,
|
||||||
NormalizedName = request.Name.Trim().ToUpperInvariant(),
|
NormalizedName = request.Name.Trim().ToUpperInvariant(),
|
||||||
Description = request.Description,
|
Description = request.Description,
|
||||||
OriginalPictureKeyName = $"{imageId}.{request.PictureFileType}",
|
OriginalPictureKeyName = $"{imageId}{request.PictureFileType}",
|
||||||
SmallPictureKeyName = playListConfiguration.Routes.PresetSmallPicture,
|
SmallPictureKeyName = playListConfiguration.Routes.PresetSmallPicture,
|
||||||
MediumPictureKeyName = playListConfiguration.Routes.PresetMediumPicture,
|
MediumPictureKeyName = playListConfiguration.Routes.PresetMediumPicture,
|
||||||
LargePictureKeyName = playListConfiguration.Routes.PresetLargePicture,
|
LargePictureKeyName = playListConfiguration.Routes.PresetLargePicture,
|
||||||
};
|
};
|
||||||
await database.PlayLists.AddAsync(playList, cancellationToken);
|
await database.PlayLists.AddAsync(playList, cancellationToken);
|
||||||
|
|
||||||
var imageKeyName = $"{playListConfiguration.Routes.OriginalPictures}/{imageId}.{request.PictureFileType}";
|
var imageKeyName = $"{playListConfiguration.Routes.OriginalPictures}/{imageId}{request.PictureFileType}";
|
||||||
|
|
||||||
var uploadResult = await storageHandler.UploadFileAsync(
|
var uploadResult = await storageHandler.UploadFileAsync(
|
||||||
request.PictureStream,
|
request.PictureStream,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Microsoft.Extensions.Configuration;
|
using Keycloak.Net;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Musify.Application.Contracts.Infrastructure;
|
using Musify.Application.Contracts.Infrastructure;
|
||||||
using Musify.Infrastructure.Configuration;
|
using Musify.Infrastructure.Configuration;
|
||||||
@@ -11,6 +12,13 @@ namespace Musify.Infrastructure.Identity
|
|||||||
{
|
{
|
||||||
var keycloakConfiguration = KeycloakConfiguration.Load(configuration);
|
var keycloakConfiguration = KeycloakConfiguration.Load(configuration);
|
||||||
serviceDescriptors.AddSingleton(keycloakConfiguration);
|
serviceDescriptors.AddSingleton(keycloakConfiguration);
|
||||||
|
serviceDescriptors.AddScoped(serviceProvider =>
|
||||||
|
{
|
||||||
|
return new KeycloakClient(
|
||||||
|
keycloakConfiguration.BaseUrl,
|
||||||
|
keycloakConfiguration.Username,
|
||||||
|
keycloakConfiguration.Password);
|
||||||
|
} );
|
||||||
serviceDescriptors.AddScoped<IKeycloakUserClient, KeycloakIdentityService>();
|
serviceDescriptors.AddScoped<IKeycloakUserClient, KeycloakIdentityService>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<RootNamespace>Musify.Infrastructure</RootNamespace>
|
<RootNamespace>Musify.Infrastructure</RootNamespace>
|
||||||
|
<UserSecretsId>07d419fc-9ade-471a-bc0e-aebece785b30</UserSecretsId>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -19,6 +20,7 @@
|
|||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="10.0.5" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="10.0.5" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="10.0.5" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="10.0.5" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="6.0.1" />
|
||||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.1" />
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.1" />
|
||||||
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.12" />
|
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.12" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -28,12 +28,14 @@ namespace Musify.Infrastructure.Messaging.Consumers
|
|||||||
Payload = payload
|
Payload = payload
|
||||||
};
|
};
|
||||||
await database.Jobs.AddAsync(job, consumeContext.CancellationToken);
|
await database.Jobs.AddAsync(job, consumeContext.CancellationToken);
|
||||||
|
logger.LogInformation("Created new job with id {JobId} for removing file {BucketName}/{KeyName}", job.Id, consumeContext.Message.BucketName, consumeContext.Message.KeyName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
job.RetryCount++;
|
job.RetryCount++;
|
||||||
job.JobState = JobState.Pending;
|
job.JobState = JobState.Pending;
|
||||||
database.Jobs.Update(job);
|
database.Jobs.Update(job);
|
||||||
|
logger.LogInformation("Retrying job with id {JobId} for removing file {BucketName}/{KeyName}. Retry count: {RetryCount}", job.Id, consumeContext.Message.BucketName, consumeContext.Message.KeyName, job.RetryCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
var removeFile = await storageHandler.RemoveFileAsync(
|
var removeFile = await storageHandler.RemoveFileAsync(
|
||||||
@@ -42,7 +44,15 @@ namespace Musify.Infrastructure.Messaging.Consumers
|
|||||||
consumeContext.CancellationToken);
|
consumeContext.CancellationToken);
|
||||||
|
|
||||||
if (!removeFile.IsSuccess)
|
if (!removeFile.IsSuccess)
|
||||||
|
{
|
||||||
job.JobState = JobState.Failed;
|
job.JobState = JobState.Failed;
|
||||||
|
logger.LogInformation("Failed to remove file {BucketName}/{KeyName} for job with id {JobId}. Error: {ErrorMessage}", consumeContext.Message.BucketName, consumeContext.Message.KeyName, job.Id, string.Join("; ", removeFile.Errors));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
job.CompletedAt = DateTime.UtcNow;
|
||||||
|
logger.LogInformation("Successfully removed file {BucketName}/{KeyName} for job with id {JobId}.", consumeContext.Message.BucketName, consumeContext.Message.KeyName, job.Id);
|
||||||
|
}
|
||||||
|
|
||||||
await database.SaveChangesAsync(consumeContext.CancellationToken);
|
await database.SaveChangesAsync(consumeContext.CancellationToken);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Musify.Application.Contracts.Infrastructure;
|
using Musify.Application.Contracts.Infrastructure;
|
||||||
|
|
||||||
@@ -9,14 +8,7 @@ namespace Musify.Infrastructure.Persistence
|
|||||||
{
|
{
|
||||||
public static void AddDatabase(this IServiceCollection serviceDescriptors, IConfiguration configuration)
|
public static void AddDatabase(this IServiceCollection serviceDescriptors, IConfiguration configuration)
|
||||||
{
|
{
|
||||||
var connectionString = configuration.GetConnectionString("Default")
|
serviceDescriptors.AddDbContext<Database>();
|
||||||
?? throw new InvalidOperationException("Default Connection connection string not found.");
|
|
||||||
|
|
||||||
serviceDescriptors.AddDbContext<Database>(options =>
|
|
||||||
{
|
|
||||||
options.UseNpgsql(connectionString);
|
|
||||||
} );
|
|
||||||
|
|
||||||
serviceDescriptors.AddScoped<IDatabase>(serviceProvider => serviceProvider.GetRequiredService<Database>());
|
serviceDescriptors.AddScoped<IDatabase>(serviceProvider => serviceProvider.GetRequiredService<Database>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace Musify.Infrastructure.Persistence
|
|||||||
var configuration = new ConfigurationBuilder()
|
var configuration = new ConfigurationBuilder()
|
||||||
.SetBasePath(Directory.GetCurrentDirectory())
|
.SetBasePath(Directory.GetCurrentDirectory())
|
||||||
.AddJsonFile("DesignSettings.json")
|
.AddJsonFile("DesignSettings.json")
|
||||||
|
.AddUserSecrets<DatabaseDesignTimeFactory>()
|
||||||
.Build();
|
.Build();
|
||||||
var databaseConfiguration = DatabaseConfiguration.Load(configuration);
|
var databaseConfiguration = DatabaseConfiguration.Load(configuration);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user