From f3c899216ebf550c87f2a9de6411ab8d0cae1536 Mon Sep 17 00:00:00 2001 From: ysa23 Date: Thu, 31 May 2018 20:31:31 +0300 Subject: [PATCH 1/5] Simplifying the configuration of Storage. Use a simpler version of ISqlConnectionFactory that can be overriden by users in more complex cases --- .../Bootstrap/Bootstrapper.cs | 26 +++---- .../Bootstrap/MoranbernateBootstrap.cs | 32 --------- .../Bootstrap/Registration.cs | 16 ----- .../ClassHasNotBeenRegisteredException.cs | 14 ---- .../DictionaryExtentions.cs | 12 ---- .../ISqlConnectionFactory.cs | 5 -- .../Moranbernate/AggregatedQueryRunner.cs | 15 +++-- .../Moranbernate/MoranbernateStorage.cs | 45 ++++++------- .../SqlConnectionFactory.cs | 67 +++++++------------ .../SqlConnectionProvider.cs | 50 -------------- .../SqlConnectionProviderExtension.cs | 13 ---- 11 files changed, 63 insertions(+), 232 deletions(-) delete mode 100644 src/OhioBox.Storage.MySql/Bootstrap/MoranbernateBootstrap.cs delete mode 100644 src/OhioBox.Storage.MySql/Bootstrap/Registration.cs delete mode 100644 src/OhioBox.Storage.MySql/ClassHasNotBeenRegisteredException.cs delete mode 100644 src/OhioBox.Storage.MySql/DictionaryExtentions.cs delete mode 100644 src/OhioBox.Storage.MySql/SqlConnectionProvider.cs delete mode 100644 src/OhioBox.Storage.MySql/SqlConnectionProviderExtension.cs diff --git a/src/OhioBox.Storage.MySql.Tests/Bootstrap/Bootstrapper.cs b/src/OhioBox.Storage.MySql.Tests/Bootstrap/Bootstrapper.cs index 7ca3195..0e76216 100644 --- a/src/OhioBox.Storage.MySql.Tests/Bootstrap/Bootstrapper.cs +++ b/src/OhioBox.Storage.MySql.Tests/Bootstrap/Bootstrapper.cs @@ -1,28 +1,24 @@ using System.Configuration; using System.Reflection; -using OhioBox.Storage.MySql.Bootstrap; using OhioBox.Storage.MySql.Moranbernate; namespace OhioBox.Storage.MySql.Tests.Bootstrap { - public static class Bootstrapper - { - private static ISqlConnectionFactory _factory; + public static class Bootstrapper + { + private static ISqlConnectionFactory _factory; - public static ISqlConnectionFactory Init() - { - if (_factory != null) return _factory; + public static ISqlConnectionFactory Init() + { + if (_factory != null) return _factory; - MoranbernateInitializer.Initialize(typeof(Bootstrapper).GetTypeInfo().Assembly); + MoranbernateInitializer.Initialize(typeof(Bootstrapper).GetTypeInfo().Assembly); var connectionString = ConfigurationManager.ConnectionStrings["MySql"].ConnectionString; - - var factory = new SqlConnectionFactory(new DefaultMetricsReporter()); - factory.Add(connectionString, MoranbernateInitializer.GetMappedTypes()); - _factory = factory; + _factory = new SqlConnectionFactory(connectionString); - return _factory; - } - } + return _factory; + } + } } \ No newline at end of file diff --git a/src/OhioBox.Storage.MySql/Bootstrap/MoranbernateBootstrap.cs b/src/OhioBox.Storage.MySql/Bootstrap/MoranbernateBootstrap.cs deleted file mode 100644 index e1ff43c..0000000 --- a/src/OhioBox.Storage.MySql/Bootstrap/MoranbernateBootstrap.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Reflection; -using OhioBox.Storage.MySql.Moranbernate; - -namespace OhioBox.Storage.MySql.Bootstrap -{ - public static class MoranbernateBootstrap - { - public static Registration[] GetRegistrationCandidates(Type perfLoggerType = null) where TMetricsReporter : IMetricsReporter - { - perfLoggerType = perfLoggerType ?? typeof(DefaultPerfLogger<>); - - var perfLoggerInterfaceType = typeof(IPerfLogger<>); - if (!perfLoggerInterfaceType.GetTypeInfo().IsAssignableFrom(perfLoggerType)) - throw new StorageRegistrationException(perfLoggerInterfaceType, perfLoggerType); - - return new[] - { - new Registration(typeof(IAggregatedQueryRunner<>), typeof(AggregatedQueryRunner<>)), - new Registration(perfLoggerInterfaceType, perfLoggerType), - new Registration(typeof(IMetricsReporter), typeof(TMetricsReporter)) - }; - } - } - - public class StorageRegistrationException : Exception - { - public StorageRegistrationException(Type @interface, Type type) : - base($"Unable to create registrations. {type.Name} does not implement {@interface.Name}") - {} - } -} \ No newline at end of file diff --git a/src/OhioBox.Storage.MySql/Bootstrap/Registration.cs b/src/OhioBox.Storage.MySql/Bootstrap/Registration.cs deleted file mode 100644 index ba38e66..0000000 --- a/src/OhioBox.Storage.MySql/Bootstrap/Registration.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; - -namespace OhioBox.Storage.MySql.Bootstrap -{ - public class Registration - { - public Type Interface { get; } - public Type Implementor { get; } - - public Registration(Type interfaceType, Type implementor) - { - Interface = interfaceType; - Implementor = implementor; - } - } -} \ No newline at end of file diff --git a/src/OhioBox.Storage.MySql/ClassHasNotBeenRegisteredException.cs b/src/OhioBox.Storage.MySql/ClassHasNotBeenRegisteredException.cs deleted file mode 100644 index b10867b..0000000 --- a/src/OhioBox.Storage.MySql/ClassHasNotBeenRegisteredException.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; - -namespace OhioBox.Storage.MySql -{ - internal class ClassHasNotBeenRegisteredException : Exception - { - private const string MessageFormat = "No sql connection provider was found for type [{0}], class was not registered using Moranbernate."; - - internal ClassHasNotBeenRegisteredException(Type type) - : base(string.Format(MessageFormat, type.Name)) - { - } - } -} \ No newline at end of file diff --git a/src/OhioBox.Storage.MySql/DictionaryExtentions.cs b/src/OhioBox.Storage.MySql/DictionaryExtentions.cs deleted file mode 100644 index 08a0e29..0000000 --- a/src/OhioBox.Storage.MySql/DictionaryExtentions.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Collections.Generic; - -namespace OhioBox.Storage.MySql -{ - internal static class DictionaryExtentions - { - internal static TValue GetItemOrDefault(this IDictionary target, TKey key, TValue @default = default(TValue)) - { - return target.TryGetValue(key, out var value) ? value : @default; - } - } -} \ No newline at end of file diff --git a/src/OhioBox.Storage.MySql/ISqlConnectionFactory.cs b/src/OhioBox.Storage.MySql/ISqlConnectionFactory.cs index a3895a7..2a5f15f 100644 --- a/src/OhioBox.Storage.MySql/ISqlConnectionFactory.cs +++ b/src/OhioBox.Storage.MySql/ISqlConnectionFactory.cs @@ -7,10 +7,5 @@ namespace OhioBox.Storage.MySql public interface ISqlConnectionFactory { IDbConnection GetConnection(); - ISqlConnectionProvider GetConnectionProvider(); - IEnumerable Providers { get; } - IList> GetTypeFullNameAndAonnectionString(); - - void Add(string connectionString, IEnumerable types); } } \ No newline at end of file diff --git a/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs b/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs index cd4cc33..10b098a 100644 --- a/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs +++ b/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using OhioBox.Moranbernate.Querying; +using OhioBox.Storage.MySql.Bootstrap; namespace OhioBox.Storage.MySql.Moranbernate @@ -15,19 +16,19 @@ public interface IAggregatedQueryRunner internal class AggregatedQueryRunner : IAggregatedQueryRunner where T : class, new() { - private readonly ISqlConnectionProvider _connectionProvider; + private readonly ISqlConnectionFactory _connectionFactory; private readonly IPerfLogger _perfLogger; private readonly IMetricsReporter _metricsReporter; private readonly string _space = $"Storage.Moranbernate.{typeof(T).Name}"; public AggregatedQueryRunner(ISqlConnectionFactory connectionFactory, - IPerfLogger perfLogger, - IMetricsReporter metricsReporter) + IPerfLogger perfLogger = null, + IMetricsReporter metricsReporter = null) { - _perfLogger = perfLogger; - _metricsReporter = metricsReporter; - _connectionProvider = connectionFactory.GetConnectionProvider(); + _connectionFactory = connectionFactory; + _perfLogger = perfLogger ?? new DefaultPerfLogger(); + _metricsReporter = metricsReporter ?? new DefaultMetricsReporter(); } public IEnumerable> QueryAggregated(Action> query = null) @@ -35,7 +36,7 @@ public IEnumerable> QueryAggregated(Action> quer try { using (_metricsReporter.Report($"{_space}.Aggregate")) - using (var connection = _connectionProvider.GetOpenConnection()) + using (var connection = _connectionFactory.GetConnection()) { return connection .QueryAggregated(q => diff --git a/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs b/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs index 98b1493..fe51cd8 100644 --- a/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs +++ b/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs @@ -6,42 +6,37 @@ using System.Linq.Expressions; using OhioBox.Moranbernate.Querying; using OhioBox.Moranbernate.Utils; +using OhioBox.Storage.MySql.Bootstrap; namespace OhioBox.Storage.MySql.Moranbernate { public class MoranbernateStorage : IStorage where T : class, new() { - private readonly ISqlConnectionProvider _connectionProvider; + private readonly ISqlConnectionFactory _connectionFactory; private readonly IPerfLogger _perfLogger; private readonly IMetricsReporter _metricsReporter; private readonly string _space = $"Storage.Moranbernate.{typeof(T).Name}"; private const int QueryRuntimeThreshold = 1000; - public MoranbernateStorage(ISqlConnectionFactory connectionFactory, - IPerfLogger perfLogger, - IMetricsReporter metricsReporter) + IPerfLogger perfLogger = null, + IMetricsReporter metricsReporter = null) { - _perfLogger = perfLogger; - _metricsReporter = metricsReporter; - _connectionProvider = connectionFactory.GetConnectionProvider(); - } - - public QueryResults RunQuery(Func, IQueryable> queryOverQueryable) - { - throw new NotImplementedException(); + _connectionFactory = connectionFactory; + _perfLogger = perfLogger ?? new DefaultPerfLogger(); + _metricsReporter = metricsReporter ?? new DefaultMetricsReporter(); } public int Count(Action> queryManipulator) { using (_metricsReporter.Report($"{_space}.Count")) - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { - var count = conn.Count(restrictable => { - if (queryManipulator != null) - queryManipulator(new MoranbernateRestrictions(restrictable)); + var count = conn.Count(restrictable => + { + queryManipulator?.Invoke(new MoranbernateRestrictions(restrictable)); }); return Convert.ToInt32(count); } @@ -52,7 +47,7 @@ public void Delete(IList ts) if (ts.Count == 0) return; using (_metricsReporter.Report($"{_space}.Delete")) - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { foreach (var t in ts) conn.Delete(t); @@ -62,7 +57,7 @@ public void Delete(IList ts) public T GetById(object t) { using (_metricsReporter.Report($"{_space}.GetByid")) - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { return conn.GetById(t); } @@ -82,7 +77,7 @@ public IList Query(Action> queryManipulator) public void Add(T t) { using (_metricsReporter.Report($"{_space}.Add")) - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { conn.Insert(t); } @@ -91,7 +86,7 @@ public void Add(T t) public void Update(T t) { using (_metricsReporter.Report($"{_space}.Update")) - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { conn.Update(t); } @@ -100,7 +95,7 @@ public void Update(T t) public void Delete(T t) { using (_metricsReporter.Report($"{_space}.Delete")) - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { conn.Delete(t); } @@ -109,7 +104,7 @@ public void Delete(T t) public void Save(T t) { using (_metricsReporter.Report($"{_space}.Save")) - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { conn.Upsert(t); } @@ -165,7 +160,7 @@ private TR ExecuteQuery(Func action, s var rows = 0; try { - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { var result = action(conn); rows = result.rows; @@ -190,7 +185,7 @@ private void LogSlowQuery(long elapsedMilliseconds, int rowsReturned, string mes public void Add(IList ts) { using (_metricsReporter.Report($"{_space}.BulkInsert")) - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { conn.BulkInsert(ts); } @@ -199,7 +194,7 @@ public void Add(IList ts) public void Save(IList ts) { using (_metricsReporter.Report($"{_space}.BulkUpsert")) - using (var conn = _connectionProvider.GetOpenConnection()) + using (var conn = _connectionFactory.GetConnection()) { conn.BulkUpsert(ts); } diff --git a/src/OhioBox.Storage.MySql/SqlConnectionFactory.cs b/src/OhioBox.Storage.MySql/SqlConnectionFactory.cs index abd3849..5f9969f 100644 --- a/src/OhioBox.Storage.MySql/SqlConnectionFactory.cs +++ b/src/OhioBox.Storage.MySql/SqlConnectionFactory.cs @@ -1,63 +1,44 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; +using System.Data; +using System.Text.RegularExpressions; +using MySql.Data.MySqlClient; +using OhioBox.Storage.MySql.Bootstrap; namespace OhioBox.Storage.MySql { public class SqlConnectionFactory : ISqlConnectionFactory { + private readonly string _connectionString; private readonly IMetricsReporter _metricsReporter; - private readonly Dictionary _typeToConnection = new Dictionary(); - private readonly List _providers = new List(); + private readonly string _schema; - public IEnumerable Providers => _providers; - - public SqlConnectionFactory(IMetricsReporter metricsReporter) + public SqlConnectionFactory(string connectionString, IMetricsReporter metricsReporter = null) { - _metricsReporter = metricsReporter; + _connectionString = connectionString; + _schema = ParseSchema(connectionString); + _metricsReporter = metricsReporter ?? new DefaultMetricsReporter(); } - public IList> GetTypeFullNameAndAonnectionString() - { - return _typeToConnection.Select(connectionProvider => new KeyValuePair(connectionProvider.Key.FullName, connectionProvider.Value.ProvideConnection().ConnectionString)).ToList(); - } - - public void Add(string connectionString, IEnumerable types) + public IDbConnection GetConnection() { - var provider = new SqlConnectionProvider(connectionString, _metricsReporter); - - _providers.Add(provider); - - foreach (var type in types) + using (_metricsReporter.Report($"Storage.OpenConnection.{_schema}")) { - _typeToConnection.Add(type, provider); + var sqlConnection = new MySqlConnection(_connectionString); + sqlConnection.Open(); + return sqlConnection; } } - public IDbConnection GetConnection() - { - var provider = InnerGetConnectionProvider(); - - var connection = provider.ProvideConnection(); - - return connection; - } - - public ISqlConnectionProvider GetConnectionProvider() + private static string ParseSchema(string connectionString) { - return InnerGetConnectionProvider(); + try + { + return Regex.Match(connectionString, "Database=(.+?);").Groups[1].Value; + } + catch + { + return "MaorWroteABadRegex"; + } } - private ISqlConnectionProvider InnerGetConnectionProvider() - { - var type = typeof(T); - var provider = _typeToConnection.GetItemOrDefault(type); - - if (provider == null) - throw new ClassHasNotBeenRegisteredException(type); - - return provider; - } } } diff --git a/src/OhioBox.Storage.MySql/SqlConnectionProvider.cs b/src/OhioBox.Storage.MySql/SqlConnectionProvider.cs deleted file mode 100644 index a4215bb..0000000 --- a/src/OhioBox.Storage.MySql/SqlConnectionProvider.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Data; -using System.Text.RegularExpressions; -using MySql.Data.MySqlClient; - -namespace OhioBox.Storage.MySql -{ - public interface ISqlConnectionProvider - { - IDbConnection ProvideConnection(); - } - - public class SqlConnectionProvider : ISqlConnectionProvider - { - private readonly string _connectionString; - private readonly IMetricsReporter _metricsReporter; - private readonly string _schema; - - public SqlConnectionProvider(string connectionString, IMetricsReporter metricsReporter) - { - if (string.IsNullOrEmpty(connectionString)) throw new ArgumentNullException(nameof(connectionString)); - - _connectionString = connectionString; - _metricsReporter = metricsReporter; - _schema = ParseSchema(_connectionString); - } - - public IDbConnection ProvideConnection() - { - using (_metricsReporter.Report($"Storage.OpenConnection.{_schema}")) - { - var sqlConnection = new MySqlConnection(_connectionString); - sqlConnection.Open(); - return sqlConnection; - } - } - - private static string ParseSchema(string connectionString) - { - try - { - return Regex.Match(connectionString, "Database=(.+?);").Groups[1].Value; - } - catch - { - return "MaorWroteABadRegex"; - } - } - } -} \ No newline at end of file diff --git a/src/OhioBox.Storage.MySql/SqlConnectionProviderExtension.cs b/src/OhioBox.Storage.MySql/SqlConnectionProviderExtension.cs deleted file mode 100644 index ccb913e..0000000 --- a/src/OhioBox.Storage.MySql/SqlConnectionProviderExtension.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Data; - -namespace OhioBox.Storage.MySql -{ - public static class SqlConnectionProviderExtension - { - public static IDbConnection GetOpenConnection(this ISqlConnectionProvider provider) - { - var connection = provider.ProvideConnection(); - return connection; - } - } -} \ No newline at end of file From efc45e7dab7a430cf1e5c1d6fdcd30edb921879a Mon Sep 17 00:00:00 2001 From: ysa23 Date: Thu, 31 May 2018 20:33:31 +0300 Subject: [PATCH 2/5] Convert AggregatedQueryRunner to be public --- src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs b/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs index 10b098a..8986d81 100644 --- a/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs +++ b/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs @@ -13,7 +13,7 @@ public interface IAggregatedQueryRunner IEnumerable> QueryAggregated(Action> query = null); } - internal class AggregatedQueryRunner : IAggregatedQueryRunner + public class AggregatedQueryRunner : IAggregatedQueryRunner where T : class, new() { private readonly ISqlConnectionFactory _connectionFactory; From 3bf69af97ef10f9db3f57c1e9b1f213f7c249732 Mon Sep 17 00:00:00 2001 From: ysa23 Date: Thu, 31 May 2018 20:33:53 +0300 Subject: [PATCH 3/5] Move IPerfLogger to a more appropriate location --- src/OhioBox.Storage.MySql/{Moranbernate => }/IPerfLogger.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/OhioBox.Storage.MySql/{Moranbernate => }/IPerfLogger.cs (79%) diff --git a/src/OhioBox.Storage.MySql/Moranbernate/IPerfLogger.cs b/src/OhioBox.Storage.MySql/IPerfLogger.cs similarity index 79% rename from src/OhioBox.Storage.MySql/Moranbernate/IPerfLogger.cs rename to src/OhioBox.Storage.MySql/IPerfLogger.cs index a182c70..e0a9dba 100644 --- a/src/OhioBox.Storage.MySql/Moranbernate/IPerfLogger.cs +++ b/src/OhioBox.Storage.MySql/IPerfLogger.cs @@ -1,6 +1,6 @@ using System; -namespace OhioBox.Storage.MySql.Moranbernate +namespace OhioBox.Storage.MySql { public interface IPerfLogger { From 42934279c322d1dc2da1602095fda881fb63682f Mon Sep 17 00:00:00 2001 From: ysa23 Date: Thu, 31 May 2018 20:36:26 +0300 Subject: [PATCH 4/5] Add additional constructing option for MoranbernateStorage - using only connection string --- .../Moranbernate/MoranbernateStorage.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs b/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs index fe51cd8..e4de2d3 100644 --- a/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs +++ b/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs @@ -29,6 +29,15 @@ public MoranbernateStorage(ISqlConnectionFactory connectionFactory, _metricsReporter = metricsReporter ?? new DefaultMetricsReporter(); } + public MoranbernateStorage(string connectionString, + IPerfLogger perfLogger = null, + IMetricsReporter metricsReporter = null) + { + _connectionFactory = new SqlConnectionFactory(connectionString); + _perfLogger = perfLogger ?? new DefaultPerfLogger(); + _metricsReporter = metricsReporter ?? new DefaultMetricsReporter(); + } + public int Count(Action> queryManipulator) { using (_metricsReporter.Report($"{_space}.Count")) From 3d92d767d7cc0d3c8b16f1ecce7489fbcc99fd49 Mon Sep 17 00:00:00 2001 From: ysa23 Date: Thu, 31 May 2018 20:37:55 +0300 Subject: [PATCH 5/5] Same for AggregatedQueryRunner --- .../Moranbernate/AggregatedQueryRunner.cs | 9 +++++++++ .../Moranbernate/MoranbernateStorage.cs | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs b/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs index 8986d81..55ed5a4 100644 --- a/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs +++ b/src/OhioBox.Storage.MySql/Moranbernate/AggregatedQueryRunner.cs @@ -31,6 +31,15 @@ public AggregatedQueryRunner(ISqlConnectionFactory connectionFactory, _metricsReporter = metricsReporter ?? new DefaultMetricsReporter(); } + public AggregatedQueryRunner(string connectionString, + IPerfLogger perfLogger = null, + IMetricsReporter metricsReporter = null) + { + _perfLogger = perfLogger ?? new DefaultPerfLogger(); + _metricsReporter = metricsReporter ?? new DefaultMetricsReporter(); + _connectionFactory = new SqlConnectionFactory(connectionString, _metricsReporter); + } + public IEnumerable> QueryAggregated(Action> query = null) { try diff --git a/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs b/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs index e4de2d3..a3888f4 100644 --- a/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs +++ b/src/OhioBox.Storage.MySql/Moranbernate/MoranbernateStorage.cs @@ -33,9 +33,9 @@ public MoranbernateStorage(string connectionString, IPerfLogger perfLogger = null, IMetricsReporter metricsReporter = null) { - _connectionFactory = new SqlConnectionFactory(connectionString); _perfLogger = perfLogger ?? new DefaultPerfLogger(); _metricsReporter = metricsReporter ?? new DefaultMetricsReporter(); + _connectionFactory = new SqlConnectionFactory(connectionString, _metricsReporter); } public int Count(Action> queryManipulator)