diff --git a/scripts/V136__CRIAR_FK_QUESTAO_ID_TABELA_ALTERNATIVA.sql b/scripts/V136__CRIAR_FK_QUESTAO_ID_TABELA_ALTERNATIVA.sql new file mode 100644 index 00000000..368dfa8d --- /dev/null +++ b/scripts/V136__CRIAR_FK_QUESTAO_ID_TABELA_ALTERNATIVA.sql @@ -0,0 +1,2 @@ +delete from alternativa where not exists (select id from questao where id = questao_id); +ALTER TABLE public.alternativa ADD CONSTRAINT questao_id_fk FOREIGN KEY (questao_id) REFERENCES public.questao(id); \ No newline at end of file diff --git a/scripts/V137__CRIAR_FK_ALTERNATIVA_ID_TABELA_QUESTAO_ALUNO_RESPOSTA.sql b/scripts/V137__CRIAR_FK_ALTERNATIVA_ID_TABELA_QUESTAO_ALUNO_RESPOSTA.sql new file mode 100644 index 00000000..6a9e0a2b --- /dev/null +++ b/scripts/V137__CRIAR_FK_ALTERNATIVA_ID_TABELA_QUESTAO_ALUNO_RESPOSTA.sql @@ -0,0 +1,2 @@ +delete from questao_aluno_resposta where not exists (select 1 from alternativa a where a.id = alternativa_id) and alternativa_id is not null +ALTER TABLE public.questao_aluno_resposta ADD CONSTRAINT alternativa_id_fk FOREIGN KEY (alternativa_id) REFERENCES public.alternativa(id); \ No newline at end of file diff --git a/src/SME.SERAp.Prova.Api/Extensions/WarmUpTask.cs b/src/SME.SERAp.Prova.Api/Extensions/WarmUpTask.cs deleted file mode 100644 index 359bfacc..00000000 --- a/src/SME.SERAp.Prova.Api/Extensions/WarmUpTask.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using SME.SERAp.Prova.Aplicacao; -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace SME.SERAp.Prova.Api -{ - public class WarmUpCacheTask : IStartupTask - { - private readonly IServiceProvider _serviceProvider; - public WarmUpCacheTask(IServiceProvider serviceProvider) - { - _serviceProvider = serviceProvider; - } - - public async Task ExecuteAsync(CancellationToken cancellationToken = default) - { - using (var scope = _serviceProvider.CreateScope()) - { - var propagacaoCacheUseCase = scope.ServiceProvider.GetRequiredService(); - await propagacaoCacheUseCase.Propagar(); - } - } - } -} diff --git a/src/SME.SERAp.Prova.Api/Startup.cs b/src/SME.SERAp.Prova.Api/Startup.cs index cb5764a3..ece59f51 100644 --- a/src/SME.SERAp.Prova.Api/Startup.cs +++ b/src/SME.SERAp.Prova.Api/Startup.cs @@ -133,13 +133,6 @@ public void ConfigureServices(IServiceCollection services) services.AddSingleton(servicoTelemetria); RegistraMvc.Registrar(services, serviceProvider); DapperExtensionMethods.Init(servicoTelemetria); - - IniciarPropagacaoCache(services); - } - - private static void IniciarPropagacaoCache(IServiceCollection services) - { - services.AddStartupTask(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) diff --git a/src/SME.SERAp.Prova.Aplicacao/Interfaces/UseCase/IPropagacaoCacheUseCase.cs b/src/SME.SERAp.Prova.Aplicacao/Interfaces/UseCase/IPropagacaoCacheUseCase.cs deleted file mode 100644 index d543e54c..00000000 --- a/src/SME.SERAp.Prova.Aplicacao/Interfaces/UseCase/IPropagacaoCacheUseCase.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Threading.Tasks; - -namespace SME.SERAp.Prova.Aplicacao -{ - public interface IPropagacaoCacheUseCase - { - Task Propagar(); - } -} diff --git a/src/SME.SERAp.Prova.Aplicacao/UseCase/PropagacaoCacheUseCase.cs b/src/SME.SERAp.Prova.Aplicacao/UseCase/PropagacaoCacheUseCase.cs deleted file mode 100644 index c55ea3b8..00000000 --- a/src/SME.SERAp.Prova.Aplicacao/UseCase/PropagacaoCacheUseCase.cs +++ /dev/null @@ -1,88 +0,0 @@ -using SME.SERAp.Prova.Dados; -using SME.SERAp.Prova.Infra; -using SME.SERAp.Prova.Infra.Interfaces; -using System; -using System.Linq; -using System.Threading.Tasks; - -namespace SME.SERAp.Prova.Aplicacao.UseCase -{ - public class PropagacaoCacheUseCase : IPropagacaoCacheUseCase - { - private readonly IServicoLog servicoLog; - private readonly IRepositorioCache repositorioCache; - private readonly IRepositorioPropagacaoCache repositorioPropagacaoCache; - - public PropagacaoCacheUseCase(IServicoLog servicoLog, IRepositorioCache repositorioCache, IRepositorioPropagacaoCache repositorioPropagacaoCache) - { - this.servicoLog = servicoLog ?? throw new ArgumentNullException(nameof(servicoLog)); - this.repositorioCache = repositorioCache ?? throw new ArgumentNullException(nameof(repositorioCache)); - this.repositorioPropagacaoCache = repositorioPropagacaoCache ?? throw new ArgumentNullException(nameof(repositorioPropagacaoCache)); - } - - public async Task Propagar() - { - var progagandoCache = false; - - try - { - var dataHoraAtual = DateTime.Now; - Console.WriteLine($"~~> Inicializando WarmUp do cache as {dataHoraAtual}"); - - var minutosParaUmDia = (int)TimeSpan.FromDays(1).TotalMinutes; - - if (!await repositorioCache.ExisteChaveAsync(CacheChave.CachePropagado)) - { - progagandoCache = true; - await repositorioCache.SalvarRedisAsync(CacheChave.CachePropagado, true, minutosParaUmDia); - - var parametros = await repositorioPropagacaoCache.ObterParametrosParaCacheAsync(); - await repositorioCache.SalvarRedisAsync(CacheChave.Parametros, parametros, minutosParaUmDia); - - var provasAnosDatasEModalidades = await repositorioPropagacaoCache.ObterProvasAnosDatasEModalidadesParaCacheAsync(); - await repositorioCache.SalvarRedisAsync(CacheChave.ProvasAnosDatasEModalidades, provasAnosDatasEModalidades, minutosParaUmDia); - - var provas = await repositorioPropagacaoCache.ObterProvasLiberadasNoPeriodoParaCacheAsync(); - foreach (var prova in provas) - await repositorioCache.SalvarRedisAsync(string.Format(CacheChave.Prova, prova.Id), prova, minutosParaUmDia); - - var provasIds = provas.Select(p => p.Id).ToArray(); - - if (provasIds.Any()) - { - var questoesResumo = await repositorioPropagacaoCache.ObterQuestaoResumoParaCacheAsync(provasIds); - - foreach (var provaId in provasIds) - { - var questaoResumoProva = questoesResumo.Where(t => t.ProvaId == provaId); - - if (questaoResumoProva.Any()) - await repositorioCache.SalvarRedisAsync(string.Format(CacheChave.QuestaoProvaResumo, provaId), questaoResumoProva, minutosParaUmDia); - } - - var questoesCompletas = await repositorioPropagacaoCache.ObterQuestaoCompletaParaCacheAsync(provasIds); - foreach (var questao in questoesCompletas) - { - await repositorioCache.SalvarRedisToJsonAsync(string.Format(CacheChave.QuestaoCompleta, questao.Id), questao.Json, minutosParaUmDia); - } - - var questoesCompletasLegado = await repositorioPropagacaoCache.ObterQuestaoCompletaLegadoParaCacheAsync(provasIds); - foreach (var questao in questoesCompletasLegado) - { - await repositorioCache.SalvarRedisToJsonAsync(string.Format(CacheChave.QuestaoCompletaLegado, questao.Id), questao.Json, minutosParaUmDia); - } - } - } - - Console.WriteLine($"~~> WarmUp do cache Finalizado as {DateTime.Now}"); - } - catch (Exception ex) - { - servicoLog.Registrar("Erro ao Propagar os dados para o cache durante o warmUp do pod", ex); - - if (progagandoCache) - await repositorioCache.RemoverRedisAsync(CacheChave.CachePropagado); - } - } - } -} diff --git a/src/SME.SERAp.Prova.Dominio/Entidades/Prova.cs b/src/SME.SERAp.Prova.Dominio/Entidades/Prova.cs index f4faa754..f059dab8 100644 --- a/src/SME.SERAp.Prova.Dominio/Entidades/Prova.cs +++ b/src/SME.SERAp.Prova.Dominio/Entidades/Prova.cs @@ -38,6 +38,5 @@ public Prova(long id, string descricao,DateTime? inicioDownload, DateTime inicio public long? DisciplinaId { get; set; } public bool FormatoTai { get; set; } public ProvaFormatoTaiItem? ProvaFormatoTaiItem { get; set; } - } } \ No newline at end of file diff --git a/src/SME.SERAp.Prova.Infra/Cache/CacheChave.cs b/src/SME.SERAp.Prova.Infra/Cache/CacheChave.cs index 65ebde93..f311a782 100644 --- a/src/SME.SERAp.Prova.Infra/Cache/CacheChave.cs +++ b/src/SME.SERAp.Prova.Infra/Cache/CacheChave.cs @@ -7,7 +7,6 @@ public static string ObterChave(string chave, params object[] parametros) return string.Format(chave, parametros); } - public const string CachePropagado = "cache-propagado"; /// /// Questões resumidas da prova /// 0 - Prova Id diff --git a/src/SME.SERAp.Prova.IoC/RegistraDependencias.cs b/src/SME.SERAp.Prova.IoC/RegistraDependencias.cs index 390c5b58..d51dea17 100644 --- a/src/SME.SERAp.Prova.IoC/RegistraDependencias.cs +++ b/src/SME.SERAp.Prova.IoC/RegistraDependencias.cs @@ -82,7 +82,6 @@ private static void RegistrarCasosDeUso(IServiceCollection services) services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); - services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped();