Files
FictionArchive/FictionArchive.Service.NovelService/Consumers/NovelImportCompletedConsumer.cs

44 lines
1.4 KiB
C#

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<INovelImportCompleted>
{
private readonly ILogger<NovelImportCompletedConsumer> _logger;
private readonly NovelServiceDbContext _dbContext;
public NovelImportCompletedConsumer(
ILogger<NovelImportCompletedConsumer> logger,
NovelServiceDbContext dbContext)
{
_logger = logger;
_dbContext = dbContext;
}
public async Task Consume(ConsumeContext<INovelImportCompleted> 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();
}
}
}