1
0
mirror of https://github.com/bitwarden/server synced 2025-12-16 08:13:33 +00:00

Add queries, rename seed to scene

This commit is contained in:
Hinton
2025-10-18 15:55:48 -04:00
parent fd41332e4c
commit 1daf9ad892
13 changed files with 298 additions and 187 deletions

View File

@@ -21,7 +21,28 @@ public static class ServiceCollectionExtensions
foreach (var sceneType in sceneTypes)
{
services.TryAddScoped(sceneType);
services.TryAddKeyedScoped(typeof(IScene), sceneType.Name, (sp, key) => sp.GetRequiredService(sceneType));
services.TryAddKeyedScoped(typeof(IScene), sceneType.Name, (sp, _) => sp.GetRequiredService(sceneType));
}
return services;
}
/// <summary>
/// Dynamically registers all query types that implement IQuery<TRequest> from the Seeder assembly.
/// Queries are registered as keyed scoped services using their class name as the key.
/// </summary>
public static IServiceCollection AddQueries(this IServiceCollection services)
{
var seederAssembly = Assembly.Load("Seeder");
var queryTypes = seederAssembly.GetTypes()
.Where(t => t is { IsClass: true, IsAbstract: false } &&
t.GetInterfaces().Any(i => i.IsGenericType &&
i.GetGenericTypeDefinition().Name == "IQuery`1"));
foreach (var queryType in queryTypes)
{
services.TryAddScoped(queryType);
services.TryAddKeyedScoped(typeof(IQuery), queryType.Name, (sp, _) => sp.GetRequiredService(queryType));
}
return services;