Files
FACULTATE-HEALTHCARE_MANAGER/backend/Infrastructure/InfrastructureDI.cs
T
2024-04-08 02:31:05 +03:00

56 lines
2.4 KiB
C#

using Application.Services.Database;
using Application.Services.Database.MongoDB;
using Application.Services.HashingAlgorithms;
using Infrastructure.Data;
using Infrastructure.Services.HashingAlgorithms;
using Infrastructure.Services.MongoDB;
using Infrastructure.Services.PostgreSQL;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using MongoDB.Driver;
namespace Infrastructure;
public static class DependencyInjection
{
public static IServiceCollection AddInfrastructureServices(this IServiceCollection services,
IConfiguration configuration)
{
services.AddDbContext<HealthcareManagerDatabase>(options =>
options.UseNpgsql(configuration.GetConnectionString("HealthcareManagerDatabase")));
//PostgreSQL Services
services.AddScoped<IPatientRepository, PatientRepository>();
services.AddScoped<IDoctorRepository, DoctorRepository>();
services.AddScoped<IMedicalHistoryRepository, MedicalHistoryRepository>();
// MongoDB Service
var mongoDbConnectionString = configuration.GetValue<string>("ConnectionStrings:MongoDBConnection");
// Extract MongoDB database names
var healthcareManagerDatabaseName = configuration.GetValue<string>("HealthcareManagerDatabase:Name");
var medicalHistoryCollectionName = configuration.GetValue<string>("HealthcareManagerDatabase:MedicalRecordCollectionName");
var chatCollectionName = configuration.GetValue<string>("HealthcareManagerDatabase:ChatCollectionName");
// Register MongoDB services
services.AddSingleton<IMedicalHistoryMongoDbService>(serviceProvider =>
new MedicalHistoryMongoDbService(mongoDbConnectionString, healthcareManagerDatabaseName, medicalHistoryCollectionName));
services.AddSingleton<IChatMongoDbService>(serviceProvider =>
new ChatMongoDbService(mongoDbConnectionString, healthcareManagerDatabaseName, chatCollectionName));
// Other Services
services.AddScoped<IHashingAlgorithms, HashingAlgorithms>();
// services.AddScoped<IEmailService, EmailService>();
return services;
}
private static string ExtractMongoDbDatabaseName(string connectionString)
{
var connectionStringBuilder = new MongoUrlBuilder(connectionString);
return connectionStringBuilder.DatabaseName;
}
}