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