comparison Framework/PostgreSQL/PostgreSQLDatabase.cpp @ 226:a4918d57435c

DatabaseManager doesn't IDatabaseFactory anymore
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 02 Apr 2021 19:23:36 +0200
parents fbb52129158a
children 35598014f140
comparison
equal deleted inserted replaced
225:94c9908e6aca 226:a4918d57435c
20 20
21 21
22 #include "PostgreSQLIncludes.h" // Must be the first 22 #include "PostgreSQLIncludes.h" // Must be the first
23 #include "PostgreSQLDatabase.h" 23 #include "PostgreSQLDatabase.h"
24 24
25 #include "../Common/ImplicitTransaction.h"
26 #include "../Common/RetryDatabaseFactory.h"
25 #include "PostgreSQLResult.h" 27 #include "PostgreSQLResult.h"
26 #include "PostgreSQLStatement.h" 28 #include "PostgreSQLStatement.h"
27 #include "PostgreSQLTransaction.h" 29 #include "PostgreSQLTransaction.h"
28 #include "../Common/ImplicitTransaction.h"
29 30
30 #include <Logging.h> 31 #include <Logging.h>
31 #include <OrthancException.h> 32 #include <OrthancException.h>
32 33
33 #include <boost/lexical_cast.hpp> 34 #include <boost/lexical_cast.hpp>
296 297
297 PostgreSQLDatabase::TransientAdvisoryLock::~TransientAdvisoryLock() 298 PostgreSQLDatabase::TransientAdvisoryLock::~TransientAdvisoryLock()
298 { 299 {
299 database_.ReleaseAdvisoryLock(lock_); 300 database_.ReleaseAdvisoryLock(lock_);
300 } 301 }
302
303
304 PostgreSQLDatabase* PostgreSQLDatabase::OpenDatabaseConnection(const PostgreSQLParameters& parameters)
305 {
306 class Factory : public RetryDatabaseFactory
307 {
308 private:
309 const PostgreSQLParameters& parameters_;
310
311 protected:
312 virtual IDatabase* TryOpen()
313 {
314 std::unique_ptr<PostgreSQLDatabase> db(new PostgreSQLDatabase(parameters_));
315 db->Open();
316 return db.release();
317 }
318
319 public:
320 Factory(const PostgreSQLParameters& parameters) :
321 RetryDatabaseFactory(parameters.GetMaxConnectionRetries(),
322 parameters.GetConnectionRetryInterval()),
323 parameters_(parameters)
324 {
325 }
326 };
327
328 Factory factory(parameters);
329 return dynamic_cast<PostgreSQLDatabase*>(factory.Open());
330 }
301 } 331 }