fix: enhance database context configuration with retry logic for resilience
Some checks failed
release-dev / release-dev (push) Failing after 14s

This commit is contained in:
Suphonchai Phoonsawat 2025-12-15 11:12:29 +07:00
parent ff66aebdfa
commit 18ab28e335
2 changed files with 21 additions and 10 deletions

View file

@ -20,8 +20,6 @@ namespace BMA.EHR.Infrastructure
public static IServiceCollection AddLeavePersistence(this IServiceCollection services, public static IServiceCollection AddLeavePersistence(this IServiceCollection services,
IConfiguration configuration) IConfiguration configuration)
{ {
// leave db context // leave db context
var connectionStringLeave = configuration.GetConnectionString("LeaveConnection"); var connectionStringLeave = configuration.GetConnectionString("LeaveConnection");
@ -31,6 +29,10 @@ namespace BMA.EHR.Infrastructure
{ {
b.MigrationsAssembly(typeof(LeaveDbContext).Assembly.FullName); b.MigrationsAssembly(typeof(LeaveDbContext).Assembly.FullName);
b.MigrationsHistoryTable("__LeaveMigrationsHistory"); b.MigrationsHistoryTable("__LeaveMigrationsHistory");
b.EnableRetryOnFailure(
maxRetryCount: 5,
maxRetryDelay: System.TimeSpan.FromSeconds(30),
errorNumbersToAdd: null);
}), }),
ServiceLifetime.Transient); ServiceLifetime.Transient);
@ -43,8 +45,6 @@ namespace BMA.EHR.Infrastructure
public static IServiceCollection AddDisciplinePersistence(this IServiceCollection services, public static IServiceCollection AddDisciplinePersistence(this IServiceCollection services,
IConfiguration configuration) IConfiguration configuration)
{ {
// discipline db context // discipline db context
var connectionStringDiscipline = configuration.GetConnectionString("DisciplineConnection"); var connectionStringDiscipline = configuration.GetConnectionString("DisciplineConnection");
@ -54,7 +54,10 @@ namespace BMA.EHR.Infrastructure
{ {
b.MigrationsAssembly(typeof(DisciplineDbContext).Assembly.FullName); b.MigrationsAssembly(typeof(DisciplineDbContext).Assembly.FullName);
b.MigrationsHistoryTable("__DisciplineMigrationsHistory"); b.MigrationsHistoryTable("__DisciplineMigrationsHistory");
b.EnableRetryOnFailure(
maxRetryCount: 5,
maxRetryDelay: System.TimeSpan.FromSeconds(30),
errorNumbersToAdd: null);
}), }),
ServiceLifetime.Transient); ServiceLifetime.Transient);
@ -67,8 +70,6 @@ namespace BMA.EHR.Infrastructure
IConfiguration configuration) IConfiguration configuration)
{ {
services.AddTransient<MinIOService>(); services.AddTransient<MinIOService>();
var connectionString = configuration.GetConnectionString("DefaultConnection"); var connectionString = configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<ApplicationDBContext>(options => services.AddDbContext<ApplicationDBContext>(options =>
@ -77,9 +78,14 @@ namespace BMA.EHR.Infrastructure
{ {
b.MigrationsAssembly(typeof(ApplicationDBContext).Assembly.FullName); b.MigrationsAssembly(typeof(ApplicationDBContext).Assembly.FullName);
b.MigrationsHistoryTable("__EHRMigrationsHistory"); b.MigrationsHistoryTable("__EHRMigrationsHistory");
b.EnableRetryOnFailure(
maxRetryCount: 5,
maxRetryDelay: System.TimeSpan.FromSeconds(30),
errorNumbersToAdd: null);
}), }),
ServiceLifetime.Transient); ServiceLifetime.Transient);
services.AddTransient<IApplicationDBContext>(provider => provider.GetService<ApplicationDBContext>()); services.AddTransient<IApplicationDBContext>(provider => provider.GetService<ApplicationDBContext>());
@ -91,6 +97,10 @@ namespace BMA.EHR.Infrastructure
{ {
b.MigrationsAssembly(typeof(ApplicationDBExamContext).Assembly.FullName); b.MigrationsAssembly(typeof(ApplicationDBExamContext).Assembly.FullName);
b.MigrationsHistoryTable("__EHRMigrationsHistory"); b.MigrationsHistoryTable("__EHRMigrationsHistory");
b.EnableRetryOnFailure(
maxRetryCount: 5,
maxRetryDelay: System.TimeSpan.FromSeconds(30),
errorNumbersToAdd: null);
}), }),
ServiceLifetime.Transient); ServiceLifetime.Transient);

View file

@ -2167,8 +2167,8 @@ namespace BMA.EHR.Leave.Service.Controllers
timeStamps.CheckOut != null ? timeStamps.CheckOut != null ?
timeStamps.CheckOut.Value.ToThaiFullDate2() : timeStamps.CheckOut.Value.ToThaiFullDate2() :
"", "",
checkInTimeRaw = timeStamps?.CheckIn, checkInTimeRaw = timeStamps == null ? dd.date.Date : timeStamps?.CheckIn,
checkOutTimeRaw = timeStamps?.CheckOut, checkOutTimeRaw = timeStamps == null ? dd.date.Date : timeStamps?.CheckOut != null ? timeStamps?.CheckOut : null,
}; };
if (timeStamps != null) if (timeStamps != null)
@ -2204,7 +2204,8 @@ namespace BMA.EHR.Leave.Service.Controllers
count++; count++;
} }
} }
employees = employees.OrderBy(x => x.checkInDate).ThenBy(x => x.checkInTimeRaw ?? DateTime.MaxValue).ThenBy(x => x.checkOutTimeRaw ?? DateTime.MaxValue).ToList(); //employees = employees.OrderBy(x => x.checkInDate).ThenBy(x => x.checkInTimeRaw ?? DateTime.MaxValue).ThenBy(x => x.checkOutTimeRaw ?? DateTime.MaxValue).ToList();
employees = employees.OrderBy(x => x.checkInTimeRaw ?? DateTime.MaxValue).ThenBy(x => x.checkOutTimeRaw ?? DateTime.MaxValue).ToList();
for (int i = 0; i < employees.Count; i++) for (int i = 0; i < employees.Count; i++)
{ {
employees[i].no = i + 1; employees[i].no = i + 1;