back photo + event tags and persons
This commit is contained in:
72
back/ServicesExtensions/Options.cs
Normal file
72
back/ServicesExtensions/Options.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
using back.Options;
|
||||
|
||||
namespace back.ServicesExtensions;
|
||||
|
||||
public static partial class ServicesExtensions
|
||||
{
|
||||
private static IConfiguration ConfigureOptions(this IServiceCollection services)
|
||||
{
|
||||
IConfiguration config = services.BuildServiceProvider().GetRequiredService<IConfiguration>();
|
||||
string? baseDirectory = null;
|
||||
|
||||
services.Configure<Databases>(config.GetSection(nameof(Databases)));
|
||||
services.Configure<DatabaseConfig>(DatabaseConfig.DataStorage, config.GetSection(DatabaseConfig.DataStorage));
|
||||
services.Configure<DatabaseConfig>(DatabaseConfig.BlobStorage, config.GetSection(DatabaseConfig.BlobStorage));
|
||||
|
||||
services.PostConfigure<Databases>(databases =>
|
||||
{
|
||||
if (databases.BaseDirectory != null && !Directory.Exists(databases.BaseDirectory))
|
||||
{
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(databases.BaseDirectory);
|
||||
Console.WriteLine($"Base directory created at: {databases.BaseDirectory}");
|
||||
baseDirectory = databases.BaseDirectory;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
$"Failed to create base directory at {databases.BaseDirectory}. " +
|
||||
"Please ensure the path is valid and accessible.", ex
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
services.PostConfigure<DatabaseConfig>(DatabaseConfig.DataStorage, config =>
|
||||
{
|
||||
PostConfigureDatabaseConfig(config, baseDirectory);
|
||||
});
|
||||
|
||||
services.PostConfigure<DatabaseConfig>(DatabaseConfig.BlobStorage, config =>
|
||||
{
|
||||
PostConfigureDatabaseConfig(config, baseDirectory);
|
||||
});
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
private static void PostConfigureDatabaseConfig(DatabaseConfig config, string? baseDirectory)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(config.SystemContainer))
|
||||
{
|
||||
var path = config.SystemContainer;
|
||||
if (!string.IsNullOrEmpty(baseDirectory))
|
||||
{
|
||||
path = Path.Combine(baseDirectory, path);
|
||||
}
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(path);
|
||||
Console.WriteLine($"System container for {config.Provider} created at: {path}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
$"Failed to create system container at {path}. " +
|
||||
"Please ensure the path is valid and accessible.", ex
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user