diff Framework/PostgreSQL/PostgreSQLDatabase.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 cc7af42d4f23
line wrap: on
line diff
--- a/Framework/PostgreSQL/PostgreSQLDatabase.cpp	Wed Apr 14 15:33:57 2021 +0200
+++ b/Framework/PostgreSQL/PostgreSQLDatabase.cpp	Wed Apr 14 17:57:08 2021 +0200
@@ -325,30 +325,37 @@
   }
 
 
-  PostgreSQLDatabase* PostgreSQLDatabase::OpenDatabaseConnection(const PostgreSQLParameters& parameters)
+  class PostgreSQLDatabase::Factory : public RetryDatabaseFactory
   {
-    class Factory : public RetryDatabaseFactory
+  private:
+    PostgreSQLParameters  parameters_;
+    
+  protected:
+    virtual IDatabase* TryOpen()
     {
-    private:
-      const PostgreSQLParameters&  parameters_;
+      std::unique_ptr<PostgreSQLDatabase> db(new PostgreSQLDatabase(parameters_));
+      db->Open();
+      return db.release();
+    }
+    
+  public:
+    explicit Factory(const PostgreSQLParameters& parameters) :
+      RetryDatabaseFactory(parameters.GetMaxConnectionRetries(),
+                           parameters.GetConnectionRetryInterval()),
+      parameters_(parameters)
+    {
+    }
+  };
 
-    protected:
-      virtual IDatabase* TryOpen()
-      {
-        std::unique_ptr<PostgreSQLDatabase> db(new PostgreSQLDatabase(parameters_));
-        db->Open();
-        return db.release();
-      }
-      
-    public:
-      explicit Factory(const PostgreSQLParameters& parameters) :
-        RetryDatabaseFactory(parameters.GetMaxConnectionRetries(),
-                             parameters.GetConnectionRetryInterval()),
-        parameters_(parameters)
-      {
-      }
-    };
 
+  IDatabaseFactory* PostgreSQLDatabase::CreateDatabaseFactory(const PostgreSQLParameters& parameters)
+  {
+    return new Factory(parameters);
+  }
+
+
+  PostgreSQLDatabase* PostgreSQLDatabase::CreateDatabaseConnection(const PostgreSQLParameters& parameters)
+  {
     Factory factory(parameters);
     return dynamic_cast<PostgreSQLDatabase*>(factory.Open());
   }