diff Framework/MySQL/MySQLDatabase.cpp @ 255:d663d9e44f8d

reintroduction of IDatabaseFactory into DatabaseManager
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 14 Apr 2021 17:57:08 +0200
parents 33fa478c119a
children b8ba198a8df3
line wrap: on
line diff
--- a/Framework/MySQL/MySQLDatabase.cpp	Wed Apr 14 15:33:57 2021 +0200
+++ b/Framework/MySQL/MySQLDatabase.cpp	Wed Apr 14 17:57:08 2021 +0200
@@ -661,31 +661,38 @@
   }
 
   
-  MySQLDatabase* MySQLDatabase::OpenDatabaseConnection(const MySQLParameters& parameters)
+  class MySQLDatabase::Factory : public RetryDatabaseFactory
   {
-    class Factory : public RetryDatabaseFactory
-    {
-    private:
-      const MySQLParameters&  parameters_;
+  private:
+    MySQLParameters  parameters_;
 
-    protected:
-      virtual IDatabase* TryOpen()
-      {
-        std::unique_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_));
-        db->Open();
-        db->ExecuteMultiLines("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE", false);
-        return db.release();
-      }
+  protected:
+    virtual IDatabase* TryOpen()
+    {
+      std::unique_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_));
+      db->Open();
+      db->ExecuteMultiLines("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE", false);
+      return db.release();
+    }
       
-    public:
-      explicit Factory(const MySQLParameters& parameters) :
-        RetryDatabaseFactory(parameters.GetMaxConnectionRetries(),
-                             parameters.GetConnectionRetryInterval()),
-        parameters_(parameters)
-      {
-      }
-    };
+  public:
+    explicit Factory(const MySQLParameters& parameters) :
+      RetryDatabaseFactory(parameters.GetMaxConnectionRetries(),
+                           parameters.GetConnectionRetryInterval()),
+      parameters_(parameters)
+    {
+    }
+  };
 
+
+  IDatabaseFactory* MySQLDatabase::CreateDatabaseFactory(const MySQLParameters& parameters)
+  {
+    return new Factory(parameters);
+  }
+
+
+  MySQLDatabase* MySQLDatabase::CreateDatabaseConnection(const MySQLParameters& parameters)
+  {
     Factory factory(parameters);
     return dynamic_cast<MySQLDatabase*>(factory.Open());
   }