comparison Framework/Common/DatabaseManager.cpp @ 241:a063bbf10a3e

simplification of class DatabaseManager::Transaction
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 13 Apr 2021 12:07:30 +0200
parents f2b32d31fc99
children b97a537f4613
comparison
equal deleted inserted replaced
240:c82c2cf84ae8 241:a063bbf10a3e
239 239
240 DatabaseManager::Transaction::Transaction(DatabaseManager& manager, 240 DatabaseManager::Transaction::Transaction(DatabaseManager& manager,
241 TransactionType type) : 241 TransactionType type) :
242 manager_(manager), 242 manager_(manager),
243 database_(manager.GetDatabase()), 243 database_(manager.GetDatabase()),
244 committed_(false) 244 active_(true)
245 { 245 {
246 manager_.StartTransaction(type); 246 manager_.StartTransaction(type);
247 } 247 }
248 248
249 249
250 DatabaseManager::Transaction::~Transaction() 250 DatabaseManager::Transaction::~Transaction()
251 { 251 {
252 if (!committed_) 252 if (active_)
253 { 253 {
254 try 254 try
255 { 255 {
256 manager_.RollbackTransaction(); 256 manager_.RollbackTransaction();
257 } 257 }
264 } 264 }
265 265
266 266
267 void DatabaseManager::Transaction::Commit() 267 void DatabaseManager::Transaction::Commit()
268 { 268 {
269 if (committed_) 269 if (active_)
270 { 270 {
271 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); 271 manager_.CommitTransaction();
272 active_ = true;
272 } 273 }
273 else 274 else
274 { 275 {
275 manager_.CommitTransaction(); 276 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
276 committed_ = true; 277 }
278 }
279
280
281 void DatabaseManager::Transaction::Rollback()
282 {
283 if (active_)
284 {
285 manager_.RollbackTransaction();
286 active_ = true;
287 }
288 else
289 {
290 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
277 } 291 }
278 } 292 }
279 293
280 294
281 IResult& DatabaseManager::StatementBase::GetResult() const 295 IResult& DatabaseManager::StatementBase::GetResult() const