using Microsoft.Extensions.Options; using Somnia.GuestLog.Models.Configuration; using Somnia.GuestLog.Utils.DI; namespace Somnia.GuestLog.Services.AddressQuery; public class ConfigFileAddressQueryFactory( IServiceProvider serviceProvider, IOptions config ) : IAddressQueryFactory, IFactoryDI { public static void RegisterFactoryItems(IServiceCollection services) { services.AddKeyedTransient(AddressQueryConfig.AddressQueryProviderEnum.Nominatim); } public IAddressQueryService GetService() { if (config.Value.EnableAddressQuery == false) { throw new InvalidOperationException("AddressQuery is disabled. Enable and configure it first!"); } return serviceProvider.GetKeyedService(config.Value.Provider) ?? throw new InvalidOperationException($"AddressQueryService not found for provider: '{config.Value.Provider}'"); } }