Mercurial > hg > orthanc-databases
diff Framework/Plugins/StorageBackend.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 | dd6cfc250747 |
children | 675f8322eb7c |
line wrap: on
line diff
--- a/Framework/Plugins/StorageBackend.cpp Thu Apr 01 19:18:19 2021 +0200 +++ b/Framework/Plugins/StorageBackend.cpp Fri Apr 02 19:23:36 2021 +0200 @@ -54,11 +54,35 @@ namespace OrthancDatabases { - StorageBackend::StorageBackend(IDatabaseFactory* factory) : - manager_(factory) + void StorageBackend::SetDatabase(IDatabase* database) { + if (database == NULL) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); + } + else if (manager_.get() != NULL) + { + delete database; + throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); + } + else + { + manager_.reset(new DatabaseManager(database)); + } } - + + DatabaseManager& StorageBackend::GetManager() + { + if (manager_.get() == NULL) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls); + } + else + { + return *manager_; + } + } + void StorageBackend::Create(DatabaseManager::Transaction& transaction, const std::string& uuid, @@ -387,7 +411,6 @@ { context_ = context; backend_.reset(backend); - backend_->GetManager().Open(); bool hasLoadedV2 = false;