< Summary

Line coverage
100%
Covered lines: 33
Uncovered lines: 0
Coverable lines: 33
Total lines: 56
Line coverage: 100%
Branch coverage
83%
Covered branches: 15
Total branches: 18
Branch coverage: 83.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
AddParameters(...)100%2100%
.ctor(...)100%1100%
QueryAsync()81.25%16100%
ExecuteAsync()100%1100%

File(s)

/home/rob/github-runner/_work/snacks-bb-g1-weidinger-g1-sinnreich/snacks-bb-g1-weidinger-g1-sinnreich/src/Snacks.DAL/Common/AdoTemplate.cs

#LineLine coverage
 1using System.Data.Common;
 2using System.Data;
 3
 4namespace Snacks.DAL.Common;
 5
 6public delegate T RowMapper<T>(IDataRecord row);
 7
 8public class AdoTemplate : IAdoTemplate
 9{
 10    private readonly IConnectionFactory connectionFactory;
 11
 12    private void AddParameters(DbCommand command, QueryParameter[] parameters)
 32813    {
 343214        foreach (var p in parameters)
 122415        {
 122416            DbParameter dbParameter = command.CreateParameter();
 122417            dbParameter.ParameterName = p.Name;
 122418            dbParameter.Value = p.Value;
 122419            command.Parameters.Add(dbParameter);
 122420        }
 32821    }
 22
 25623    public AdoTemplate(IConnectionFactory connectionFactory)
 25624    {
 25625        this.connectionFactory = connectionFactory;
 25626    }
 27
 28    public async Task<IEnumerable<T>> QueryAsync<T>(string sql, RowMapper<T> rowMapper, params QueryParameter[] paramete
 18629    {
 18630        await using DbConnection connection = await connectionFactory.CreateConnectionAsync();
 31
 18632        await using DbCommand command = connection.CreateCommand();
 18633        command.CommandText = sql;
 18634        AddParameters(command, parameters);
 18635        await using DbDataReader reader = await command.ExecuteReaderAsync();
 36
 18637        List<T> items = new List<T>();
 39038        while (await reader.ReadAsync())
 20439        {
 20440            items.Add((T)rowMapper(reader));
 20441        }
 18642        return items;
 18643    }
 44
 45    public async Task<int> ExecuteAsync(string sql,params QueryParameter[] parameters)
 14246    {
 14247        await using DbConnection connection =  await connectionFactory.CreateConnectionAsync();
 48
 14249        await  using DbCommand command = connection.CreateCommand();
 14250        command.CommandText = sql;
 14251        AddParameters(command, parameters);
 52
 14253        return await command.ExecuteNonQueryAsync();
 14254    }
 55
 56}