< Summary - Jellyfin

Information
Class: Emby.Server.Implementations.Data.ManagedConnection
Assembly: Emby.Server.Implementations
File(s): /srv/git/jellyfin/Emby.Server.Implementations/Data/ManagedConnection.cs
Line coverage
93%
Covered lines: 15
Uncovered lines: 1
Coverable lines: 16
Total lines: 62
Line coverage: 93.7%
Branch coverage
75%
Covered branches: 3
Total branches: 4
Branch coverage: 75%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
BeginTransaction()100%11100%
CreateCommand()100%11100%
Execute(...)100%11100%
PrepareStatement(...)100%11100%
Query(...)100%11100%
Dispose()75%4.03487.5%

File(s)

/srv/git/jellyfin/Emby.Server.Implementations/Data/ManagedConnection.cs

#LineLine coverage
 1#pragma warning disable CS1591
 2
 3using System;
 4using System.Collections.Generic;
 5using System.Threading;
 6using Microsoft.Data.Sqlite;
 7
 8namespace Emby.Server.Implementations.Data;
 9
 10public sealed class ManagedConnection : IDisposable
 11{
 12    private readonly SemaphoreSlim? _writeLock;
 13
 14    private SqliteConnection _db;
 15
 16    private bool _disposed = false;
 17
 18    public ManagedConnection(SqliteConnection db, SemaphoreSlim? writeLock)
 19    {
 82220        _db = db;
 82221        _writeLock = writeLock;
 82222    }
 23
 24    public SqliteTransaction BeginTransaction()
 12425        => _db.BeginTransaction();
 26
 27    public SqliteCommand CreateCommand()
 82828        => _db.CreateCommand();
 29
 30    public void Execute(string commandText)
 173531        => _db.Execute(commandText);
 32
 33    public SqliteCommand PrepareStatement(string sql)
 6134        => _db.PrepareStatement(sql);
 35
 36    public IEnumerable<SqliteDataReader> Query(string commandText)
 11037        => _db.Query(commandText);
 38
 39    public void Dispose()
 40    {
 82241        if (_disposed)
 42        {
 043            return;
 44        }
 45
 82246        if (_writeLock is null)
 47        {
 48            // Read connections are managed with an internal pool
 65449            _db.Dispose();
 50        }
 51        else
 52        {
 53            // Write lock is managed by BaseSqliteRepository
 54            // Don't dispose here
 16855            _writeLock.Release();
 56        }
 57
 82258        _db = null!;
 59
 82260        _disposed = true;
 82261    }
 62}