1
0
mirror of https://github.com/bitwarden/server synced 2025-12-16 00:03:54 +00:00

Stricter scene and query types

SeederAPI only serves Scenes, Recipes are inteded to be used locally only.
This commit is contained in:
Matt Gibson
2025-10-29 12:27:15 -07:00
parent 16ee5cfaad
commit 878b78b51e
14 changed files with 261 additions and 204 deletions

View File

@@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using Bit.Seeder;
using Microsoft.Extensions.DependencyInjection.Extensions;
@@ -12,11 +12,15 @@ public static class ServiceCollectionExtensions
/// </summary>
public static IServiceCollection AddScenes(this IServiceCollection services)
{
var iSceneType1 = typeof(IScene<>);
var iSceneType2 = typeof(IScene<,>);
var isIScene = (Type t) => t == iSceneType1 || t == iSceneType2;
var seederAssembly = Assembly.Load("Seeder");
var sceneTypes = seederAssembly.GetTypes()
.Where(t => t is { IsClass: true, IsAbstract: false } &&
t.GetInterfaces().Any(i => i.IsGenericType &&
i.GetGenericTypeDefinition().Name == "IScene`1"));
isIScene(i.GetGenericTypeDefinition())));
foreach (var sceneType in sceneTypes)
{
@@ -33,11 +37,12 @@ public static class ServiceCollectionExtensions
/// </summary>
public static IServiceCollection AddQueries(this IServiceCollection services)
{
var iQueryType = typeof(IQuery<,>);
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"));
i.GetGenericTypeDefinition() == iQueryType));
foreach (var queryType in queryTypes)
{