back photo + event tags and persons

This commit is contained in:
2025-08-10 20:07:40 +02:00
parent 0cc8bddfa1
commit f61b48fa4b
46 changed files with 1438 additions and 189 deletions

View 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
);
}
}
}
}