< Summary

Information
Class: OzonRepositories.Data.FileUploadRecordRepository
Assembly: OzonRepositories
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonRepositories/Data/FileUploadRecordRepository.cs
Line coverage
40%
Covered lines: 14
Uncovered lines: 21
Coverable lines: 35
Total lines: 75
Line coverage: 40%
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%11100%
Add()100%210%
Delete()100%11100%
Get()100%210%
GetPaginatedAsync()100%11100%
GetAsync()100%11100%
GetAsync()100%210%
Update()100%210%
GetExistingFileNamesAsync()0%620%

File(s)

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

#LineLine coverage
 1using Microsoft.EntityFrameworkCore;
 2using OzonDomains.Models;
 3using OzonRepositories.Context;
 4
 5namespace OzonRepositories.Data;
 6
 7public class FileUploadRecordRepository : MainRepository, IRepository<FileUploadRecord>
 8{
 49    public FileUploadRecordRepository(ApplicationDbContext dbContext) : base(dbContext)
 10    {
 411    }
 12
 13    public async Task<int> Add(FileUploadRecord value)
 14    {
 015        await _context.FileUploadRecords.AddAsync(value);
 016        return await _context.SaveChangesAsync();
 017    }
 18
 19    public async Task<int> Delete(FileUploadRecord value)
 20    {
 121        _context.FileUploadRecords.Remove(value);
 122        return await _context.SaveChangesAsync();
 123    }
 24
 25    public async Task<List<FileUploadRecord>> Get()
 26    {
 027        return await _context.FileUploadRecords.ToListAsync();
 028    }
 29
 30    public async Task<List<FileUploadRecord>> GetPaginatedAsync(int pageNumber, int pageSize)
 31    {
 132        return await _context.FileUploadRecords
 133            .OrderByDescending(r => r.Date)
 134            .ThenByDescending(r => r.Id)
 135            .Skip((pageNumber - 1) * pageSize)
 136            .Take(pageSize)
 137            .ToListAsync();
 138    }
 39
 40    public async Task<FileUploadRecord?> GetAsync(int id)
 41    {
 242        return await _context.FileUploadRecords.FindAsync(id);
 243    }
 44
 45    public async Task<FileUploadRecord?> GetAsync(FileUploadRecord value)
 46    {
 047        return await _context.FileUploadRecords
 048            .FirstOrDefaultAsync(f => f.FileName == value.FileName);
 049    }
 50
 51    public async Task<int> Update(FileUploadRecord value)
 52    {
 053        _context.FileUploadRecords.Update(value);
 054        return await _context.SaveChangesAsync();
 055    }
 56
 57    /// <summary>
 58    /// Одним запросом (WHERE FileName IN (...)) возвращает те из переданных имён файлов,
 59    /// которые уже есть в FileUploadRecords — вместо отдельного запроса на каждый файл.
 60    /// </summary>
 61    public async Task<HashSet<string>> GetExistingFileNamesAsync(IEnumerable<string> fileNames)
 62    {
 063        var names = fileNames.Distinct().ToList();
 064        if (names.Count == 0)
 065            return new HashSet<string>();
 66
 067        var existing = await _context.FileUploadRecords
 068            .AsNoTracking()
 069            .Where(f => names.Contains(f.FileName))
 070            .Select(f => f.FileName)
 071            .ToListAsync();
 72
 073        return existing.ToHashSet();
 074    }
 75}