using FictionArchive.Service.NovelService.Services; using FictionArchive.Service.Shared.Contracts.Events; using MassTransit; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; namespace FictionArchive.Service.NovelService.Consumers; public class NovelImportCompletedConsumer : IConsumer { private readonly ILogger _logger; private readonly NovelServiceDbContext _dbContext; public NovelImportCompletedConsumer( ILogger logger, NovelServiceDbContext dbContext) { _logger = logger; _dbContext = dbContext; } public async Task Consume(ConsumeContext context) { var message = context.Message; _logger.LogInformation( "Novel import {ImportId} completed. Success: {Success}, NovelId: {NovelId}, Error: {Error}", message.ImportId, message.Success, message.NovelId, message.ErrorMessage); // Remove from ActiveImports to allow future imports var activeImport = await _dbContext.ActiveImports .FirstOrDefaultAsync(a => a.ImportId == message.ImportId); if (activeImport != null) { _dbContext.ActiveImports.Remove(activeImport); await _dbContext.SaveChangesAsync(); } } }