Mercurial > hg > orthanc-databases
diff Framework/Plugins/OrthancCppDatabasePlugin.h @ 71:d40c5fecd160 db-changes
new extension implemented for PostgreSQL: CreateInstance
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 04 Jan 2019 13:51:52 +0100 |
parents | e6c13ddd26d9 |
children | a4e440e65c68 |
line wrap: on
line diff
--- a/Framework/Plugins/OrthancCppDatabasePlugin.h Thu Jan 03 14:04:46 2019 +0100 +++ b/Framework/Plugins/OrthancCppDatabasePlugin.h Fri Jan 04 13:51:52 2019 +0100 @@ -491,12 +491,25 @@ virtual void ClearMainDicomTags(int64_t internalId) = 0; + virtual bool HasCreateInstance() const = 0; + #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 virtual void LookupResources(const std::vector<Orthanc::DatabaseConstraint>& lookup, OrthancPluginResourceType queryLevel, uint32_t limit, bool requestSomeInstance) = 0; #endif + +#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 + virtual void CreateInstance(OrthancPluginCreateInstanceResult& result, + const char* hashPatient, + const char* hashStudy, + const char* hashSeries, + const char* hashInstance) + { + throw std::runtime_error("Not implemented"); + } +#endif }; @@ -1503,6 +1516,26 @@ } #endif + +#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 + static OrthancPluginErrorCode CreateInstance(OrthancPluginCreateInstanceResult* output, + void* payload, + const char* hashPatient, + const char* hashStudy, + const char* hashSeries, + const char* hashInstance) + { + IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload); + + try + { + backend->CreateInstance(*output, hashPatient, hashStudy, hashSeries, hashInstance); + return OrthancPluginErrorCode_Success; + } + ORTHANC_PLUGINS_DATABASE_CATCH + } +#endif + public: /** @@ -1585,6 +1618,12 @@ #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 extensions.lookupResources = LookupResources; // New in Orthanc 1.5.2 (fast lookup) + + if (backend.HasCreateInstance()) + { + extensions.createInstance = CreateInstance; // New in Orthanc 1.5.2 (fast create) + } + performanceWarning = false; #endif