in reference-implementations/semantic-search-for-images/src/ingestion/Startup.cs [29:49]
public void ConfigureServices(IServiceCollection services)
{
var appSettings = Configuration.GetSection("AppSettings").Get<AppSettings>();
var credential = new DefaultAzureCredential(GenerateDefaultAzureCredentialOptions());
services.AddLogging(builder => builder.AddConsole());
services.AddSingleton(appSettings!);
services.AddSingleton<IDataIngestor, DataIngestor>();
if(appSettings!.DatabaseTargeted == Constants.DATABASE_TARGETED_COSMOSDB)
services.AddTransient<IDatabaseService, CosmosDbService>();
else if(appSettings!.DatabaseTargeted == Constants.DATABASE_TARGETED_AI_SEARCH)
services.AddTransient<IDatabaseService, AiSearchService>();
services.AddSingleton(new BlobServiceClient(new Uri(appSettings!.StorageAccount.Uri), credential));
services.AddTransient<IBlobService, BlobService>();
services.AddTransient<ICsvService, CsvService>();
services.AddTransient<IImageService, ImageService>();
services.AddSingleton<TokenCredential>(credential);
services.AddHttpClient(Constants.NAMED_HTTP_CLIENT).AddStandardResilienceHandler();
}