Changes
This commit is contained in:
@@ -8,14 +8,12 @@ namespace Musify.Application.Configuration
|
||||
public static void AddPlayListConfiguration(this IServiceCollection serviceDescriptors, IConfiguration configuration)
|
||||
{
|
||||
var playListConfiguration = PlayListConfiguration.Load(configuration);
|
||||
|
||||
serviceDescriptors.AddSingleton(playListConfiguration);
|
||||
}
|
||||
|
||||
public static void AddStorageConfiguration(this IServiceCollection serviceDescriptors, IConfiguration configuration)
|
||||
{
|
||||
var storageConfiguration = StorageConfiguration.Load(configuration);
|
||||
|
||||
serviceDescriptors.AddSingleton(storageConfiguration);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ namespace Musify.Application.Configuration
|
||||
?? throw new InvalidOperationException($"{SectionName} configuration section not found.");
|
||||
|
||||
Validate(section);
|
||||
|
||||
return section;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@ namespace Musify.Application.Configuration
|
||||
?? throw new InvalidOperationException($"{SectionName} configuration section not found.");
|
||||
|
||||
Validate(section);
|
||||
|
||||
return section;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace Musify.Infrastructure.Configuration
|
||||
{
|
||||
public static class ConfigurationDependencyInjection
|
||||
{
|
||||
public static void AddKeycloakConfiguration(this IServiceCollection serviceDescriptors, IConfiguration configuration)
|
||||
{
|
||||
var keycloakConfiguration = KeycloakConfiguration.Load(configuration);
|
||||
serviceDescriptors.AddSingleton(keycloakConfiguration);
|
||||
}
|
||||
|
||||
public static void AddDatabaseConfiguration(this IServiceCollection serviceDescriptors, IConfiguration configuration)
|
||||
{
|
||||
var databaseConfiguration = DatabaseConfiguration.Load(configuration);
|
||||
serviceDescriptors.AddSingleton(databaseConfiguration);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace Musify.Infrastructure.Configuration
|
||||
{
|
||||
public class DatabaseConfiguration
|
||||
{
|
||||
public const string SectionName = "Database";
|
||||
|
||||
public string ConnectionString { get; set; } = string.Empty;
|
||||
|
||||
public static DatabaseConfiguration Load(IConfiguration configuration)
|
||||
{
|
||||
var databaseConfiguration = configuration.GetSection(SectionName).Get<DatabaseConfiguration>()
|
||||
?? throw new InvalidOperationException($"{SectionName} configuration section not found.");
|
||||
|
||||
Validate(databaseConfiguration);
|
||||
return databaseConfiguration;
|
||||
}
|
||||
|
||||
static void Validate(DatabaseConfiguration configuration)
|
||||
{
|
||||
EnsureValue(configuration.ConnectionString, nameof(configuration.ConnectionString));
|
||||
}
|
||||
|
||||
static void EnsureValue(string value, string name)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
throw new InvalidOperationException($"{name} configuration value not found.");
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -1,6 +1,6 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace Musify.Infrastructure.Identity
|
||||
namespace Musify.Infrastructure.Configuration
|
||||
{
|
||||
public class KeycloakConfiguration
|
||||
{
|
||||
@@ -20,7 +20,6 @@ namespace Musify.Infrastructure.Identity
|
||||
?? throw new InvalidOperationException($"{SectionName} configuration section not found.");
|
||||
|
||||
Validate(keycloakConfiguration);
|
||||
|
||||
return keycloakConfiguration;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Musify.Application.Contracts.Infrastructure;
|
||||
using Musify.Infrastructure.Configuration;
|
||||
|
||||
namespace Musify.Infrastructure.Identity
|
||||
{
|
||||
@@ -9,9 +10,7 @@ namespace Musify.Infrastructure.Identity
|
||||
public static void AddKeycloakAuthentication(this IServiceCollection serviceDescriptors, IConfiguration configuration)
|
||||
{
|
||||
var keycloakConfiguration = KeycloakConfiguration.Load(configuration);
|
||||
|
||||
serviceDescriptors.AddSingleton(keycloakConfiguration);
|
||||
|
||||
serviceDescriptors.AddScoped<IKeycloakUserClient, KeycloakIdentityService>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ using Keycloak.Net.Models.Users;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Musify.Application.Contracts.Infrastructure;
|
||||
using Musify.Application.Users.Contracts;
|
||||
using Musify.Infrastructure.Configuration;
|
||||
|
||||
namespace Musify.Infrastructure.Identity
|
||||
{
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Musify.Application.Contracts.Infrastructure;
|
||||
using Musify.Domain.Entities;
|
||||
using Musify.Infrastructure.Configuration;
|
||||
|
||||
namespace Musify.Infrastructure.Persistence
|
||||
{
|
||||
public class Database(DbContextOptions<Database> dbContextOptions)
|
||||
: DbContext(dbContextOptions), IDatabase
|
||||
public class Database(DatabaseConfiguration configuration)
|
||||
: DbContext, IDatabase
|
||||
{
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||
{
|
||||
optionsBuilder.UseNpgsql(configuration.ConnectionString);
|
||||
}
|
||||
|
||||
public DbSet<User> Users => Set<User>();
|
||||
|
||||
public DbSet<Track> Tracks => Set<Track>();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Design;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Musify.Infrastructure.Configuration;
|
||||
|
||||
namespace Musify.Infrastructure.Persistence
|
||||
{
|
||||
@@ -12,12 +13,15 @@ namespace Musify.Infrastructure.Persistence
|
||||
.SetBasePath(Directory.GetCurrentDirectory())
|
||||
.AddJsonFile("AppSettings.json")
|
||||
.Build();
|
||||
var connectionString = configuration.GetConnectionString("Default");
|
||||
|
||||
var databaseConfiguration = configuration.GetSection(DatabaseConfiguration.SectionName)
|
||||
.Get<DatabaseConfiguration>()
|
||||
?? throw new InvalidOperationException($"Failed to load {DatabaseConfiguration.SectionName} configuration.");
|
||||
|
||||
var optionsBuilder = new DbContextOptionsBuilder<Database>();
|
||||
optionsBuilder.UseNpgsql(connectionString);
|
||||
optionsBuilder.UseNpgsql(databaseConfiguration.ConnectionString);
|
||||
|
||||
return new Database(optionsBuilder.Options);
|
||||
return new Database(databaseConfiguration);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,14 +12,12 @@ namespace Musify.Infrastructure.Storage
|
||||
serviceDescriptors.AddScoped<IAmazonS3>(serviceProvider =>
|
||||
{
|
||||
var configuration = serviceProvider.GetRequiredService<StorageConfiguration>();
|
||||
|
||||
var s3Configuration = new AmazonS3Config
|
||||
{
|
||||
ServiceURL = configuration.ServiceUrl,
|
||||
ForcePathStyle = configuration.ForcePathStyle,
|
||||
UseHttp = configuration.UseHttp,
|
||||
};
|
||||
|
||||
return new AmazonS3Client(configuration.AccessKey, configuration.SecretAccessKey, s3Configuration);
|
||||
} );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user