< Summary

Information
Class: Services.SearchServices.OrderSearch.OrderChangeNotifier
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/SearchServices/OrderSearch/OrderChangeNotifier.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 13
Coverable lines: 13
Total lines: 44
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
NotifyOrderChanged(...)100%210%
NotifyOrdersChanged(...)0%620%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/SearchServices/OrderSearch/OrderChangeNotifier.cs

#LineLine coverage
 1using Hangfire;
 2using Microsoft.Extensions.Logging;
 3using OzonRepositories.Data;
 4using Services.HangfireService;
 5
 6namespace Services.SearchServices.OrderSearch;
 7
 8/// <summary>
 9/// Реализация <see cref="IOrderChangeNotifier"/> (интерфейс объявлен в OzonRepositories, чтобы не
 10/// создавать обратную зависимость слоёв) — ставит изменённый заказ на переиндексацию в Elasticsearch
 11/// через Hangfire. Даёт секундную задержку для большинства операций; всё, что мимо неё пройдёт,
 12/// всё равно подхватит OrderSearchIncrementalSyncJob по Order.UpdatedAt в течение ~1 минуты.
 13/// </summary>
 14public class OrderChangeNotifier : IOrderChangeNotifier
 15{
 16    private readonly IBackgroundJobClient _backgroundJobClient;
 17    private readonly ILogger<OrderChangeNotifier> _logger;
 18
 019    public OrderChangeNotifier(IBackgroundJobClient backgroundJobClient, ILogger<OrderChangeNotifier> logger)
 20    {
 021        _backgroundJobClient = backgroundJobClient;
 022        _logger = logger;
 023    }
 24
 25    public void NotifyOrderChanged(int orderId)
 26    {
 27        try
 28        {
 029            _backgroundJobClient.EnqueueMain<IOrderSearchSyncService>(x => x.SyncOrderAsync(orderId));
 030        }
 031        catch (Exception ex)
 32        {
 033            _logger.LogWarning(ex, "Не удалось поставить заказ {OrderId} на переиндексацию — подхватит incremental sync"
 034        }
 035    }
 36
 37    public void NotifyOrdersChanged(IEnumerable<int> orderIds)
 38    {
 039        foreach (var orderId in orderIds.Distinct())
 40        {
 041            NotifyOrderChanged(orderId);
 42        }
 043    }
 44}