< Summary

Information
Class: Anichron.Core.Data.Repository.EfInviteRepository
Assembly: Anichron.Core
File(s): /home/runner/work/anichron/anichron/src/Anichron.Core/Data/Repository/InviteRepository.cs
Tag: 228_36821334185
Line coverage
100%
Covered lines: 4
Uncovered lines: 0
Coverable lines: 4
Total lines: 20
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%
FindValidByHashAsync(...)100%11100%
Add(...)100%11100%

File(s)

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

#LineLine coverage
 1using Anichron.Core.Domain;
 2using Microsoft.EntityFrameworkCore;
 3
 4namespace Anichron.Core.Data.Repository;
 5
 6public interface IInviteRepository
 7{
 8    Task<Invite?> FindValidByHashAsync(string tokenHash, Instant now, CancellationToken ct);
 9    void Add(Invite invite);
 10}
 11
 512public sealed class EfInviteRepository(AnichronDbContext db) : IInviteRepository
 13{
 14    public Task<Invite?> FindValidByHashAsync(string tokenHash, Instant now, CancellationToken ct)
 515        => db.Invites.FirstOrDefaultAsync(
 516            i => i.TokenHash == tokenHash && i.UsedAt == null && i.ExpiresAt >= now, ct);
 17
 18    public void Add(Invite invite)
 119        => db.Invites.Add(invite);
 20}