comparison Framework/Plugins/DatabaseBackendAdapterV3.cpp @ 264:7ec412af11cb

implementation of "hasRevisionsSupport" primitive in database SDK
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 20 Apr 2021 15:56:22 +0200
parents b0c65094b299
children 16aac0287485 cd9521e04249
comparison
equal deleted inserted replaced
263:29d2b76516f6 264:7ec412af11cb
1039 } 1039 }
1040 ORTHANC_PLUGINS_DATABASE_CATCH(adapter->GetContext()); 1040 ORTHANC_PLUGINS_DATABASE_CATCH(adapter->GetContext());
1041 } 1041 }
1042 1042
1043 1043
1044 static OrthancPluginErrorCode HasRevisionsSupport(void* database,
1045 uint8_t* target)
1046 {
1047 DatabaseBackendAdapterV3::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV3::Adapter*>(database);
1048
1049 try
1050 {
1051 DatabaseBackendAdapterV3::Adapter::DatabaseAccessor accessor(*adapter);
1052 *target = (accessor.GetBackend().HasRevisionsSupport() ? 1 : 0);
1053 return OrthancPluginErrorCode_Success;
1054 }
1055 ORTHANC_PLUGINS_DATABASE_CATCH(adapter->GetContext());
1056 }
1057
1058
1044 static OrthancPluginErrorCode StartTransaction(void* database, 1059 static OrthancPluginErrorCode StartTransaction(void* database,
1045 OrthancPluginDatabaseTransaction** target /* out */, 1060 OrthancPluginDatabaseTransaction** target /* out */,
1046 OrthancPluginDatabaseTransactionType type) 1061 OrthancPluginDatabaseTransactionType type)
1047 { 1062 {
1048 DatabaseBackendAdapterV3::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV3::Adapter*>(database); 1063 DatabaseBackendAdapterV3::Adapter* adapter = reinterpret_cast<DatabaseBackendAdapterV3::Adapter*>(database);
2002 params.open = Open; 2017 params.open = Open;
2003 params.close = Close; 2018 params.close = Close;
2004 params.destructDatabase = DestructDatabase; 2019 params.destructDatabase = DestructDatabase;
2005 params.getDatabaseVersion = GetDatabaseVersion; 2020 params.getDatabaseVersion = GetDatabaseVersion;
2006 params.upgradeDatabase = UpgradeDatabase; 2021 params.upgradeDatabase = UpgradeDatabase;
2022 params.hasRevisionsSupport = HasRevisionsSupport;
2007 params.startTransaction = StartTransaction; 2023 params.startTransaction = StartTransaction;
2008 params.destructTransaction = DestructTransaction; 2024 params.destructTransaction = DestructTransaction;
2009 params.rollback = Rollback; 2025 params.rollback = Rollback;
2010 params.commit = Commit; 2026 params.commit = Commit;
2011 2027
2061 new Adapter(backend, countConnections)) != OrthancPluginErrorCode_Success) 2077 new Adapter(backend, countConnections)) != OrthancPluginErrorCode_Success)
2062 { 2078 {
2063 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, "Unable to register the database backend"); 2079 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, "Unable to register the database backend");
2064 } 2080 }
2065 2081
2066 if (backend->HasRevisionsSupport())
2067 {
2068 LOG(INFO) << "The database backend *has* support for revisions of metadata and attachments";
2069 }
2070 else
2071 {
2072 LOG(WARNING) << "The database backend has *no* support for revisions of metadata and attachments";
2073 }
2074
2075 backend->SetOutputFactory(new Factory); 2082 backend->SetOutputFactory(new Factory);
2076 2083
2077 isBackendInUse_ = true; 2084 isBackendInUse_ = true;
2078 } 2085 }
2079 2086