comparison Framework/PostgreSQL/PostgreSQLDatabase.cpp @ 215:b40b30075c51

added TransactionType_Implicit
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 26 Mar 2021 17:32:29 +0100
parents ab96698c73a3
children fbb52129158a
comparison
equal deleted inserted replaced
214:ab96698c73a3 215:b40b30075c51
230 230
231 namespace 231 namespace
232 { 232 {
233 class PostgreSQLImplicitTransaction : public ImplicitTransaction 233 class PostgreSQLImplicitTransaction : public ImplicitTransaction
234 { 234 {
235 private:
236 PostgreSQLDatabase& db_;
237
238 protected: 235 protected:
239 virtual IResult* ExecuteInternal(IPrecompiledStatement& statement, 236 virtual IResult* ExecuteInternal(IPrecompiledStatement& statement,
240 const Dictionary& parameters) 237 const Dictionary& parameters)
241 { 238 {
242 return dynamic_cast<PostgreSQLStatement&>(statement).Execute(*this, parameters); 239 return dynamic_cast<PostgreSQLStatement&>(statement).Execute(*this, parameters);
245 virtual void ExecuteWithoutResultInternal(IPrecompiledStatement& statement, 242 virtual void ExecuteWithoutResultInternal(IPrecompiledStatement& statement,
246 const Dictionary& parameters) 243 const Dictionary& parameters)
247 { 244 {
248 dynamic_cast<PostgreSQLStatement&>(statement).ExecuteWithoutResult(*this, parameters); 245 dynamic_cast<PostgreSQLStatement&>(statement).ExecuteWithoutResult(*this, parameters);
249 } 246 }
250
251 public:
252 explicit PostgreSQLImplicitTransaction(PostgreSQLDatabase& db) :
253 db_(db)
254 {
255 }
256 }; 247 };
257 } 248 }
258 249
259 250
260 ITransaction* PostgreSQLDatabase::CreateTransaction(bool isImplicit) 251 ITransaction* PostgreSQLDatabase::CreateTransaction(TransactionType type)
261 { 252 {
262 if (isImplicit) 253 switch (type)
263 { 254 {
264 return new PostgreSQLImplicitTransaction(*this); 255 case TransactionType_Implicit:
265 } 256 return new PostgreSQLImplicitTransaction;
266 else 257
267 { 258 case TransactionType_ReadOnly:
268 return new PostgreSQLTransaction(*this); 259 // TODO => READ-ONLY
260 return new PostgreSQLTransaction(*this);
261
262 case TransactionType_ReadWrite:
263 return new PostgreSQLTransaction(*this);
264
265 default:
266 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
269 } 267 }
270 } 268 }
271 269
272 270
273 PostgreSQLDatabase::TransientAdvisoryLock::TransientAdvisoryLock( 271 PostgreSQLDatabase::TransientAdvisoryLock::TransientAdvisoryLock(