< Summary

Information
Class: OzonRepositories.Data.EmailMessageInboxRepository
Assembly: OzonRepositories
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonRepositories/Data/EmailMessageInboxRepository.cs
Line coverage
46%
Covered lines: 27
Uncovered lines: 31
Coverable lines: 58
Total lines: 115
Line coverage: 46.5%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Get()100%210%
GetAsync()100%210%
GetAsync()100%210%
Add()100%11100%
Update()100%11100%
Delete()100%210%
GetByExternalId(...)100%11100%
GetByUid(...)100%11100%
GetAllKnownExternalIdsAsync()100%11100%
GetAllKnownUidsAsync()100%11100%
GetPaged(...)100%210%
GetCount()100%210%
GetExternalIdsReceivedAfterAsync()100%210%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonRepositories/Data/EmailMessageInboxRepository.cs

#LineLine coverage
 1using Microsoft.EntityFrameworkCore;
 2using OzonDomains.Models;
 3using OzonRepositories.Context;
 4
 5namespace OzonRepositories.Data;
 6
 7public class EmailMessageInboxRepository : MainRepository, IRepository<EmailMessageInbox>
 8{
 89    public EmailMessageInboxRepository(ApplicationDbContext orderContext) : base(orderContext)
 10    {
 811    }
 12
 13    public Task<List<EmailMessageInbox>> Get()
 14    {
 015        return _context.EmailMessageInboxes
 016            .Include(x => x.Attachments)
 017            .OrderByDescending(x => x.CreatedAt)
 018            .ToListAsync();
 19    }
 20
 21    public async Task<EmailMessageInbox?> GetAsync(int id)
 22    {
 023        return await _context.EmailMessageInboxes
 024            .Include(x => x.Attachments)
 025            .FirstOrDefaultAsync(x => x.Id == id);
 026    }
 27
 28    public async Task<EmailMessageInbox?> GetAsync(EmailMessageInbox value)
 29    {
 030        return await _context.EmailMessageInboxes
 031            .Include(x => x.Attachments)
 032            .FirstOrDefaultAsync(x => x.MessageExternalId == value.MessageExternalId);
 033    }
 34
 35    public async Task<int> Add(EmailMessageInbox value)
 36    {
 237        _context.EmailMessageInboxes.Add(value);
 238        return await _context.SaveChangesAsync();
 239    }
 40
 41    public async Task<int> Update(EmailMessageInbox value)
 42    {
 243        _context.EmailMessageInboxes.Update(value);
 244        return await _context.SaveChangesAsync();
 245    }
 46
 47    public async Task<int> Delete(EmailMessageInbox value)
 48    {
 049        _context.EmailMessageInboxes.Remove(value);
 050        return await _context.SaveChangesAsync();
 051    }
 52
 53    public Task<EmailMessageInbox?> GetByExternalId(string messageExternalId)
 54    {
 555        return _context.EmailMessageInboxes
 556            .Include(x => x.Attachments)
 557            .FirstOrDefaultAsync(x => x.MessageExternalId == messageExternalId);
 58    }
 59
 60    public Task<EmailMessageInbox?> GetByUid(string uid)
 61    {
 562        return _context.EmailMessageInboxes
 563            .Include(x => x.Attachments)
 564            .FirstOrDefaultAsync(x => x.Uid == uid);
 65    }
 66
 67    public async Task<HashSet<string>> GetAllKnownExternalIdsAsync()
 68    {
 769        var ids = await _context.EmailMessageInboxes
 770            .AsNoTracking()
 771            .Select(x => x.MessageExternalId)
 772            .ToListAsync();
 73
 774        return ids.ToHashSet(StringComparer.Ordinal);
 775    }
 76
 77    public async Task<HashSet<string>> GetAllKnownUidsAsync()
 78    {
 779        var uids = await _context.EmailMessageInboxes
 780            .AsNoTracking()
 781            .Where(x => x.Uid != null && x.Uid != string.Empty)
 782            .Select(x => x.Uid!)
 783            .ToListAsync();
 84
 785        return uids.ToHashSet(StringComparer.Ordinal);
 786    }
 87
 88    public Task<List<EmailMessageInbox>> GetPaged(int page, int pageSize)
 89    {
 090        return _context.EmailMessageInboxes
 091            .Include(x => x.Attachments)
 092            // Сортируем по фактической дате письма, а не по времени обработки,
 093            // чтобы новые письма отображались корректно даже при старом "хвосте".
 094            .OrderByDescending(x => x.ReceivedAtUtc ?? x.CreatedAt)
 095            .Skip((page - 1) * pageSize)
 096            .Take(pageSize)
 097            .ToListAsync();
 98    }
 99
 100    public Task<int> GetCount()
 101    {
 0102        return _context.EmailMessageInboxes.CountAsync();
 103    }
 104
 105    public async Task<HashSet<string>> GetExternalIdsReceivedAfterAsync(DateTime sinceUtc)
 106    {
 0107        var ids = await _context.EmailMessageInboxes
 0108            .AsNoTracking()
 0109            .Where(x => (x.ReceivedAtUtc ?? x.CreatedAt) >= sinceUtc)
 0110            .Select(x => x.MessageExternalId)
 0111            .ToListAsync();
 112
 0113        return ids.ToHashSet(StringComparer.Ordinal);
 0114    }
 115}