Mercurial > hg > orthanc-databases
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 } |