< Summary

Information
Class: Anichron.Core.Data.Repository.EfUserRepository
Assembly: Anichron.Core
File(s): /home/runner/work/anichron/anichron/src/Anichron.Core/Data/Repository/UserRepository.cs
Tag: 228_36821334185
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 56
Line coverage: 100%
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%
AnyAsync(...)100%11100%
AnyByUsernameAsync(...)100%11100%
AnyByEmailAsync(...)100%11100%
FindByIdAsync()100%11100%
FindByCredentialAsync(...)100%11100%
FindAdminByUsernameAsync(...)100%11100%
FindAdminsAsync(...)100%11100%
GetAllAsync(...)100%11100%
FindByIdWithConfigsAsync(...)100%11100%
Add(...)100%11100%
Remove(...)100%11100%

File(s)

/home/runner/work/anichron/anichron/src/Anichron.Core/Data/Repository/UserRepository.cs

#LineLine coverage
 1using Anichron.Core.Domain;
 2using Microsoft.EntityFrameworkCore;
 3
 4namespace Anichron.Core.Data.Repository;
 5
 6public interface IUserRepository
 7{
 8    Task<bool> AnyAsync(CancellationToken ct);
 9    Task<bool> AnyByUsernameAsync(string username, CancellationToken ct);
 10    Task<bool> AnyByEmailAsync(string email, CancellationToken ct);
 11    Task<User?> FindByIdAsync(Guid id, CancellationToken ct);
 12    Task<User?> FindByCredentialAsync(string normalizedCredential, CancellationToken ct);
 13    Task<User?> FindAdminByUsernameAsync(string username, CancellationToken ct);
 14    Task<List<User>> FindAdminsAsync(int take, CancellationToken ct);
 15    Task<List<User>> GetAllAsync(CancellationToken ct);
 16    Task<User?> FindByIdWithConfigsAsync(Guid id, CancellationToken ct);
 17    void Add(User user);
 18    void Remove(User user);
 19}
 20
 2421public sealed class EfUserRepository(AnichronDbContext db) : IUserRepository
 22{
 23    public Task<bool> AnyAsync(CancellationToken ct)
 224        => db.Users.AnyAsync(ct);
 25
 26    public Task<bool> AnyByUsernameAsync(string username, CancellationToken ct)
 227        => db.Users.AnyAsync(u => u.Username == username, ct);
 28
 29    public Task<bool> AnyByEmailAsync(string email, CancellationToken ct)
 230        => db.Users.AnyAsync(u => u.Email == email, ct);
 31
 32    public async Task<User?> FindByIdAsync(Guid id, CancellationToken ct)
 333        => await db.Users.FindAsync([id], ct);
 34
 35    public Task<User?> FindByCredentialAsync(string normalizedCredential, CancellationToken ct)
 336        => db.Users.FirstOrDefaultAsync(
 337            u => u.Username == normalizedCredential || u.Email == normalizedCredential, ct);
 38
 39    public Task<User?> FindAdminByUsernameAsync(string username, CancellationToken ct)
 340        => db.Users.FirstOrDefaultAsync(u => u.IsAdmin && u.Username == username, ct);
 41
 42    public Task<List<User>> FindAdminsAsync(int take, CancellationToken ct)
 243        => db.Users.Where(u => u.IsAdmin).Take(take).ToListAsync(ct);
 44
 45    public Task<List<User>> GetAllAsync(CancellationToken ct)
 346        => db.Users.Include(u => u.StorageConfigs).ToListAsync(ct);
 47
 48    public Task<User?> FindByIdWithConfigsAsync(Guid id, CancellationToken ct)
 449        => db.Users.Include(u => u.StorageConfigs).FirstOrDefaultAsync(u => u.Id == id, ct);
 50
 51    public void Add(User user)
 152        => db.Users.Add(user);
 53
 54    public void Remove(User user)
 155        => db.Users.Remove(user);
 56}