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