• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

loresoft / FluentCommand / 6164003308

12 Sep 2023 07:29PM UTC coverage: 51.111% (-0.01%) from 51.125%
6164003308

push

github

pwelter34
add support for registering multiple IDataConfiguration

948 of 2392 branches covered (0.0%)

Branch coverage included in aggregate %.

2 of 2 new or added lines in 1 file covered. (100.0%)

2777 of 4896 relevant lines covered (56.72%)

161.36 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

44.12
/src/FluentCommand/DataConfiguration.cs
1
using System.Data.Common;
2

3
using FluentCommand.Query.Generators;
4

5
namespace FluentCommand;
6

7
/// <summary>
8
/// The database configuration
9
/// </summary>
10
/// <seealso cref="IDataConfiguration" />
11
public class DataConfiguration : IDataConfiguration
12
{
13
    /// <summary>
14
    /// Initializes a new instance of the <see cref="DataConfiguration" /> class.
15
    /// </summary>
16
    /// <param name="providerFactory">The database provider factory.</param>
17
    /// <param name="connectionString">The database connection string.</param>
18
    /// <param name="cache">The data cache manager.</param>
19
    /// <param name="queryGenerator">The query generator.</param>
20
    /// <param name="queryLogger">The query command logger.</param>
21
    /// <exception cref="ArgumentNullException">The <paramref name="providerFactory"/> is null</exception>
22
    public DataConfiguration(
23
        DbProviderFactory providerFactory,
24
        string connectionString,
25
        IDataCache cache = null,
26
        IQueryGenerator queryGenerator = null,
27
        IDataQueryLogger queryLogger = null)
28
    {
29
        ProviderFactory = providerFactory ?? throw new ArgumentNullException(nameof(providerFactory));
3!
30
        ConnectionString = connectionString;
31
        QueryLogger = queryLogger;
32
        DataCache = cache;
33
        QueryGenerator = queryGenerator ?? new SqlServerGenerator();
3!
34
    }
3✔
35

36
    /// <summary>
37
    /// Gets the database provider factory.
38
    /// </summary>
39
    /// <value>
40
    /// The provider factory.
41
    /// </value>
42
    public virtual DbProviderFactory ProviderFactory { get; }
43

44
    /// <summary>
45
    /// Gets the database connection string.
46
    /// </summary>
47
    /// <value>
48
    /// The connection string.
49
    /// </value>
50
    public virtual string ConnectionString { get; }
51

52
    /// <summary>
53
    /// Gets the data command query logger.
54
    /// </summary>
55
    /// <value>
56
    /// The data command query logger.
57
    /// </value>
58
    public IDataQueryLogger QueryLogger { get; }
59

60
    /// <summary>
61
    /// Gets the data cache manager.
62
    /// </summary>
63
    /// <value>
64
    /// The data cache manager.
65
    /// </value>
66
    public virtual IDataCache DataCache { get; }
67

68
    /// <summary>
69
    /// Gets the query generator provider.
70
    /// </summary>
71
    /// <value>
72
    /// The query generator provider.
73
    /// </value>
74
    public IQueryGenerator QueryGenerator { get; }
75

76
    /// <summary>
77
    /// Creates a new data session from this database configuration
78
    /// </summary>
79
    /// <param name="connectionString">The connection string to use for the session.  If <paramref name="connectionString" /> is <c>null</c>, <see cref="ConnectionString" /> will be used.</param>
80
    /// <returns>
81
    /// A new <see cref="IDataSession" /> instance.
82
    /// </returns>
83
    public virtual IDataSession CreateSession(string connectionString = null)
84
    {
85
        var connection = CreateConnection(connectionString);
×
86
        return new DataSession(connection, true, DataCache, QueryGenerator, QueryLogger);
×
87
    }
88

89
    /// <summary>
90
    /// Creates a new data session from this database configuration
91
    /// </summary>
92
    /// <param name="transaction">The transaction to create the session with.</param>
93
    /// <returns>
94
    /// A new <see cref="IDataSession" /> instance.
95
    /// </returns>
96
    /// <exception cref="System.ArgumentNullException">transaction is null</exception>
97
    /// <exception cref="System.ArgumentException">The specified transaction doesn't have a vaild connection </exception>
98
    public IDataSession CreateSession(DbTransaction transaction)
99
    {
100
        if (transaction is null)
×
101
            throw new ArgumentNullException(nameof(transaction));
×
102

103
        if (transaction.Connection == null)
×
104
            throw new ArgumentException("The specified transaction doesn't have a vaild connection", nameof(transaction));
×
105

106
        return new DataSession(transaction, false, DataCache, QueryGenerator, QueryLogger);
×
107
    }
108

109
    /// <summary>
110
    /// Creates a new <see cref="DbConnection" /> instance from this database configuration.
111
    /// </summary>
112
    /// <param name="connectionString"></param>
113
    /// <returns>
114
    /// A new <see cref="DbConnection" /> instance.
115
    /// </returns>
116
    /// <exception cref="InvalidOperationException">Database provider factory failed to create a connection object.</exception>
117
    /// <exception cref="ArgumentException">The connection string is invalid</exception>
118
    public virtual DbConnection CreateConnection(string connectionString = null)
119
    {
120
        var connection = ProviderFactory.CreateConnection();
131✔
121
        if (connection == null)
131!
122
            throw new InvalidOperationException("Database provider factory failed to create a connection object.");
×
123

124
        connectionString ??= ConnectionString;
131✔
125
        if (string.IsNullOrEmpty(connectionString))
131!
126
            throw new ArgumentException("The connection string is invalid");
×
127

128
        connection.ConnectionString = connectionString;
131✔
129
        return connection;
131✔
130
    }
131
}
132

133

134
/// <summary>
135
/// The database configuration by discriminator.  Used to register multiple instances of IDataConfiguration.
136
/// </summary>
137
/// <typeparam name="TDiscriminator">The type of the discriminator.</typeparam>
138
/// <seealso cref="FluentCommand.IDataConfiguration" />
139
public class DataConfiguration<TDiscriminator> : DataConfiguration, IDataConfiguration<TDiscriminator>
140
{
141
    /// <summary>
142
    /// Initializes a new instance of the <see cref="DataConfiguration{TDiscriminator}"/> class.
143
    /// </summary>
144
    /// <param name="providerFactory">The database provider factory.</param>
145
    /// <param name="connectionString">The database connection string.</param>
146
    /// <param name="cache">The data cache manager.</param>
147
    /// <param name="queryGenerator">The query generator.</param>
148
    /// <param name="queryLogger">The query command logger.</param>
149
    public DataConfiguration(
150
        DbProviderFactory providerFactory,
151
        string connectionString,
152
        IDataCache cache = null,
153
        IQueryGenerator queryGenerator = null,
154
        IDataQueryLogger queryLogger = null)
155
        : base(providerFactory, connectionString, cache, queryGenerator, queryLogger)
×
156
    {
157
    }
×
158
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc