76 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Azure.Identity;
 | |
| using Core.Blueprint.DAL.Infrastructure.Context;
 | |
| using Core.Blueprint.DAL.Infrastructure.Contracts;
 | |
| using Core.Blueprint.DAL.Infrastructure.Proxies;
 | |
| using Core.Blueprint.DAL.Infrastructure.Repository;
 | |
| using Microsoft.EntityFrameworkCore;
 | |
| using Microsoft.Extensions.Azure;
 | |
| using Microsoft.Extensions.Configuration;
 | |
| using Microsoft.Extensions.DependencyInjection;
 | |
| using Microsoft.Extensions.Options;
 | |
| using System.Reflection;
 | |
| using Serilog;
 | |
| using Serilog.Events;
 | |
| using Serilog.Exceptions;
 | |
| 
 | |
| namespace Core.Blueprint.DAL.Infrastructure.Configure
 | |
| {
 | |
|     public static class DependencyInjection
 | |
|     {
 | |
|         public static IServiceCollection RegisterInfrastructure(this IServiceCollection services, IConfiguration configuration)
 | |
|         {
 | |
|             var chainedCredentials = new ChainedTokenCredential(
 | |
|                     new ManagedIdentityCredential(),
 | |
|                     new SharedTokenCacheCredential(),
 | |
|                     new VisualStudioCredential(),
 | |
|                     new VisualStudioCodeCredential()
 | |
|                 );
 | |
|             services.AddAzureClients(cfg =>
 | |
|             {
 | |
|                 cfg.AddBlobServiceClient(configuration.GetRequiredSection("Azure:BlobStorage")).WithCredential(chainedCredentials);
 | |
|                 cfg.AddSecretClient(configuration.GetRequiredSection("Azure:KeyVault")).WithCredential(chainedCredentials);
 | |
|             });
 | |
| 
 | |
|             services.AddDbContext<SqlServerContext>(options => options.UseSqlServer(configuration.GetConnectionString("SQLServerConnString")));
 | |
|          
 | |
|             // LogFactory
 | |
|             services.ConfigureLogging();
 | |
|             
 | |
|             //MongoDB
 | |
|             services.Configure<MongoDbSettings>(configuration.GetRequiredSection("MongoDbSettings"));
 | |
|             services.AddScoped<IMongoDbSettings>(serviceProvider =>
 | |
|                 serviceProvider.GetRequiredService<IOptions<MongoDbSettings>>().Value);
 | |
|             services.AddScoped<IMongoContext, MongoContext>();
 | |
|             services.AddScoped(serviceProvider =>
 | |
|             {
 | |
|                 var mongoContext = serviceProvider.GetRequiredService<IMongoContext>();
 | |
|                 return mongoContext.Database;
 | |
|             });
 | |
| 
 | |
|             services.AddScoped<IProxyBlobStorage, ProxyBlobStorage>();
 | |
|             services.AddScoped<ISampleImageRepository, SampleImageRepository>();
 | |
|             services.AddScoped<ISampleItemRepository, SampleItemRepository>();
 | |
|             services.AddScoped<IBlueprintRepository, BlueprintRepository>();
 | |
|             services.AddScoped<ISecretRepository, SecretRepository>();
 | |
| 
 | |
|             return services;
 | |
|         }
 | |
| 
 | |
|         public static void ConfigureLogging(this IServiceCollection services)
 | |
|         {
 | |
|             Log.Logger = new LoggerConfiguration()
 | |
|                 .Enrich.FromLogContext()
 | |
|                 .Enrich.WithMachineName()
 | |
|                 .Enrich.WithProcessId()
 | |
|                 .Enrich.WithThreadId()
 | |
|                 .Enrich.WithProperty("Application", Assembly.GetExecutingAssembly().GetName().Name)
 | |
|                 .Enrich.WithExceptionDetails()
 | |
|                 .MinimumLevel.Is(LogEventLevel.Information)
 | |
|                 .WriteTo.Console()
 | |
|                 .CreateLogger();
 | |
| 
 | |
|             services.AddSingleton(Log.Logger);
 | |
|         }
 | |
|     }
 | |
| }
 | 
