Mercurial > hg > orthanc-databases
diff Framework/Plugins/IndexBackend.cpp @ 76:a1c6238b26f8 db-changes
new extension implemented for PostgreSQL: GetChildrenMetadata
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 05 Jan 2019 15:51:25 +0100 |
parents | 52c70007bb87 |
children | 2ee166f77501 |
line wrap: on
line diff
--- a/Framework/Plugins/IndexBackend.cpp Sat Jan 05 11:41:15 2019 +0100 +++ b/Framework/Plugins/IndexBackend.cpp Sat Jan 05 15:51:25 2019 +0100 @@ -1860,4 +1860,28 @@ ExecuteSetResourcesContentMetadata(GetManager(), countMetadata, metadata); } #endif + + +#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1 + // New primitive since Orthanc 1.5.2 + void IndexBackend::GetChildrenMetadata(std::list<std::string>& target, + int64_t resourceId, + int32_t metadata) + { + DatabaseManager::CachedStatement statement( + STATEMENT_FROM_HERE, manager_, + "SELECT value FROM Metadata WHERE type=${metadata} AND " + "id IN (SELECT internalId FROM Resources WHERE parentId=${id})"); + + statement.SetReadOnly(true); + statement.SetParameterType("id", ValueType_Integer64); + statement.SetParameterType("metadata", ValueType_Integer64); + + Dictionary args; + args.SetIntegerValue("id", static_cast<int>(resourceId)); + args.SetIntegerValue("metadata", static_cast<int>(metadata)); + + ReadListOfStrings(target, statement, args); + } +#endif }