diff --git a/Services/VigenciaNotificationBackgroundService.cs b/Services/VigenciaNotificationBackgroundService.cs index 63193e1..f1c46b5 100644 --- a/Services/VigenciaNotificationBackgroundService.cs +++ b/Services/VigenciaNotificationBackgroundService.cs @@ -42,6 +42,12 @@ public class VigenciaNotificationBackgroundService : BackgroundService using var scope = _scopeFactory.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); + if (!await TableExistsAsync(db, "Notifications", stoppingToken)) + { + _logger.LogWarning("Tabela Notifications ainda não existe. Aguardando migrations."); + return; + } + var today = DateTime.UtcNow.Date; var reminderDays = _options.ReminderDays .Distinct() @@ -159,6 +165,30 @@ public class VigenciaNotificationBackgroundService : BackgroundService } } + private static async Task TableExistsAsync(AppDbContext db, string tableName, CancellationToken stoppingToken) + { + if (!db.Database.IsRelational()) + { + return true; + } + + var connection = db.Database.GetDbConnection(); + if (connection.State != System.Data.ConnectionState.Open) + { + await connection.OpenAsync(stoppingToken); + } + + await using var command = connection.CreateCommand(); + command.CommandText = "SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = @tableName)"; + var parameter = command.CreateParameter(); + parameter.ParameterName = "tableName"; + parameter.Value = tableName; + command.Parameters.Add(parameter); + + var result = await command.ExecuteScalarAsync(stoppingToken); + return result is bool exists && exists; + } + private static Notification BuildNotification( string tipo, string titulo,