44 lines
1.4 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|