38 lines
1.6 KiB
C#
38 lines
1.6 KiB
C#
using CleanArchitecture.Application.Contracts.Infrastructure;
|
|
using CleanArchitecture.Application.Contracts.Persistence;
|
|
using CleanArchitecture.Application.Models;
|
|
using CleanArchitecture.Infrastructure.Email;
|
|
using CleanArchitecture.Infrastructure.Persistence;
|
|
using CleanArchitecture.Infrastructure.Repositories;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace CleanArchitecture.Infrastructure
|
|
{
|
|
public static class InfrastructureServiceRegistration
|
|
{
|
|
|
|
public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
var dbConnectionString = configuration.GetConnectionString("ConnectionString");
|
|
services.AddDbContext<StreamerDbContext>(options =>
|
|
|
|
options.UseMySql(dbConnectionString, ServerVersion.AutoDetect(dbConnectionString))
|
|
.LogTo(Console.WriteLine, new[] { DbLoggerCategory.Database.Command.Name }, Microsoft.Extensions.Logging.LogLevel.Information)
|
|
);
|
|
|
|
services.AddScoped<IUnitOfWork, UnitOfWork>();
|
|
|
|
services.AddScoped(typeof(IAsyncRepository<>), typeof(RepositoryBase<>));
|
|
services.AddScoped<IVideoRepository, VideoRepository>();
|
|
services.AddScoped<IStreamerRepository, StreamerRepository>();
|
|
|
|
services.Configure<EmailSettings>(c =>configuration.GetSection("EmailSettings"));
|
|
services.AddTransient<IEmailService, EmailService>();
|
|
|
|
return services;
|
|
}
|
|
}
|
|
}
|