Mercurial > hg > orthanc-databases
comparison Framework/Plugins/IndexBackend.h @ 417:15bfd9a76f8d pg-transactions
merge
author | Alain Mazy <am@osimis.io> |
---|---|
date | Fri, 23 Jun 2023 14:26:58 +0200 |
parents | 91124cc8a8c7 |
children | 7c1fe5d6c12c ecd0b719cff5 |
comparison
equal
deleted
inserted
replaced
370:d2b5d9c92214 | 417:15bfd9a76f8d |
---|---|
1 /** | 1 /** |
2 * Orthanc - A Lightweight, RESTful DICOM Store | 2 * Orthanc - A Lightweight, RESTful DICOM Store |
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
4 * Department, University Hospital of Liege, Belgium | 4 * Department, University Hospital of Liege, Belgium |
5 * Copyright (C) 2017-2022 Osimis S.A., Belgium | 5 * Copyright (C) 2017-2023 Osimis S.A., Belgium |
6 * Copyright (C) 2021-2022 Sebastien Jodogne, ICTEAM UCLouvain, Belgium | 6 * Copyright (C) 2021-2023 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
7 * | 7 * |
8 * This program is free software: you can redistribute it and/or | 8 * This program is free software: you can redistribute it and/or |
9 * modify it under the terms of the GNU Affero General Public License | 9 * modify it under the terms of the GNU Affero General Public License |
10 * as published by the Free Software Foundation, either version 3 of | 10 * as published by the Free Software Foundation, either version 3 of |
11 * the License, or (at your option) any later version. | 11 * the License, or (at your option) any later version. |
60 void ReadChangesInternal(IDatabaseBackendOutput& output, | 60 void ReadChangesInternal(IDatabaseBackendOutput& output, |
61 bool& done, | 61 bool& done, |
62 DatabaseManager& manager, | 62 DatabaseManager& manager, |
63 DatabaseManager::CachedStatement& statement, | 63 DatabaseManager::CachedStatement& statement, |
64 const Dictionary& args, | 64 const Dictionary& args, |
65 uint32_t maxResults); | 65 uint32_t limit); |
66 | 66 |
67 void ReadExportedResourcesInternal(IDatabaseBackendOutput& output, | 67 void ReadExportedResourcesInternal(IDatabaseBackendOutput& output, |
68 bool& done, | 68 bool& done, |
69 DatabaseManager::CachedStatement& statement, | 69 DatabaseManager::CachedStatement& statement, |
70 const Dictionary& args, | 70 const Dictionary& args, |
71 uint32_t maxResults); | 71 uint32_t limit); |
72 | 72 |
73 public: | 73 public: |
74 explicit IndexBackend(OrthancPluginContext* context); | 74 explicit IndexBackend(OrthancPluginContext* context); |
75 | 75 |
76 virtual OrthancPluginContext* GetContext() ORTHANC_OVERRIDE | 76 virtual OrthancPluginContext* GetContext() ORTHANC_OVERRIDE |
117 OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE; | 117 OrthancPluginResourceType resourceType) ORTHANC_OVERRIDE; |
118 | 118 |
119 virtual void GetAllPublicIds(std::list<std::string>& target, | 119 virtual void GetAllPublicIds(std::list<std::string>& target, |
120 DatabaseManager& manager, | 120 DatabaseManager& manager, |
121 OrthancPluginResourceType resourceType, | 121 OrthancPluginResourceType resourceType, |
122 uint64_t since, | 122 int64_t since, |
123 uint64_t limit) ORTHANC_OVERRIDE; | 123 uint32_t limit) ORTHANC_OVERRIDE; |
124 | 124 |
125 virtual void GetChanges(IDatabaseBackendOutput& output, | 125 virtual void GetChanges(IDatabaseBackendOutput& output, |
126 bool& done /*out*/, | 126 bool& done /*out*/, |
127 DatabaseManager& manager, | 127 DatabaseManager& manager, |
128 int64_t since, | 128 int64_t since, |
129 uint32_t maxResults) ORTHANC_OVERRIDE; | 129 uint32_t limit) ORTHANC_OVERRIDE; |
130 | 130 |
131 virtual void GetChildrenInternalId(std::list<int64_t>& target /*out*/, | 131 virtual void GetChildrenInternalId(std::list<int64_t>& target /*out*/, |
132 DatabaseManager& manager, | 132 DatabaseManager& manager, |
133 int64_t id) ORTHANC_OVERRIDE; | 133 int64_t id) ORTHANC_OVERRIDE; |
134 | 134 |
138 | 138 |
139 virtual void GetExportedResources(IDatabaseBackendOutput& output, | 139 virtual void GetExportedResources(IDatabaseBackendOutput& output, |
140 bool& done /*out*/, | 140 bool& done /*out*/, |
141 DatabaseManager& manager, | 141 DatabaseManager& manager, |
142 int64_t since, | 142 int64_t since, |
143 uint32_t maxResults) ORTHANC_OVERRIDE; | 143 uint32_t limit) ORTHANC_OVERRIDE; |
144 | 144 |
145 virtual void GetLastChange(IDatabaseBackendOutput& output, | 145 virtual void GetLastChange(IDatabaseBackendOutput& output, |
146 DatabaseManager& manager) ORTHANC_OVERRIDE; | 146 DatabaseManager& manager) ORTHANC_OVERRIDE; |
147 | 147 |
148 virtual void GetLastExportedResource(IDatabaseBackendOutput& output, | 148 virtual void GetLastExportedResource(IDatabaseBackendOutput& output, |
184 int64_t resourceId, | 184 int64_t resourceId, |
185 OrthancPluginResourceType resourceType, | 185 OrthancPluginResourceType resourceType, |
186 const char* date) ORTHANC_OVERRIDE; | 186 const char* date) ORTHANC_OVERRIDE; |
187 | 187 |
188 virtual void LogExportedResource(DatabaseManager& manager, | 188 virtual void LogExportedResource(DatabaseManager& manager, |
189 const OrthancPluginExportedResource& resource) ORTHANC_OVERRIDE; | 189 OrthancPluginResourceType resourceType, |
190 const char* publicId, | |
191 const char* modality, | |
192 const char* date, | |
193 const char* patientId, | |
194 const char* studyInstanceUid, | |
195 const char* seriesInstanceUid, | |
196 const char* sopInstanceUid) ORTHANC_OVERRIDE; | |
190 | 197 |
191 virtual bool LookupAttachment(IDatabaseBackendOutput& output, | 198 virtual bool LookupAttachment(IDatabaseBackendOutput& output, |
192 int64_t& revision /*out*/, | 199 int64_t& revision /*out*/, |
193 DatabaseManager& manager, | 200 DatabaseManager& manager, |
194 int64_t id, | 201 int64_t id, |
293 // New primitive since Orthanc 1.5.2 | 300 // New primitive since Orthanc 1.5.2 |
294 virtual void LookupResources(IDatabaseBackendOutput& output, | 301 virtual void LookupResources(IDatabaseBackendOutput& output, |
295 DatabaseManager& manager, | 302 DatabaseManager& manager, |
296 const std::vector<Orthanc::DatabaseConstraint>& lookup, | 303 const std::vector<Orthanc::DatabaseConstraint>& lookup, |
297 OrthancPluginResourceType queryLevel, | 304 OrthancPluginResourceType queryLevel, |
305 const std::set<std::string>& labels, | |
306 Orthanc::LabelsConstraint labelsConstraint, | |
298 uint32_t limit, | 307 uint32_t limit, |
299 bool requestSomeInstance) ORTHANC_OVERRIDE; | 308 bool requestSomeInstance) ORTHANC_OVERRIDE; |
300 #endif | 309 #endif |
301 | 310 |
302 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 | 311 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 |
318 int32_t metadata) ORTHANC_OVERRIDE; | 327 int32_t metadata) ORTHANC_OVERRIDE; |
319 | 328 |
320 virtual void TagMostRecentPatient(DatabaseManager& manager, | 329 virtual void TagMostRecentPatient(DatabaseManager& manager, |
321 int64_t patient) ORTHANC_OVERRIDE; | 330 int64_t patient) ORTHANC_OVERRIDE; |
322 | 331 |
323 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 | |
324 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) | |
325 // New primitive since Orthanc 1.5.4 | 332 // New primitive since Orthanc 1.5.4 |
326 virtual bool LookupResourceAndParent(int64_t& id, | 333 virtual bool LookupResourceAndParent(int64_t& id, |
327 OrthancPluginResourceType& type, | 334 OrthancPluginResourceType& type, |
328 std::string& parentPublicId, | 335 std::string& parentPublicId, |
329 DatabaseManager& manager, | 336 DatabaseManager& manager, |
330 const char* publicId) ORTHANC_OVERRIDE; | 337 const char* publicId) ORTHANC_OVERRIDE; |
331 # endif | 338 |
332 #endif | |
333 | |
334 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 | |
335 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) | |
336 // New primitive since Orthanc 1.5.4 | 339 // New primitive since Orthanc 1.5.4 |
337 virtual void GetAllMetadata(std::map<int32_t, std::string>& result, | 340 virtual void GetAllMetadata(std::map<int32_t, std::string>& result, |
338 DatabaseManager& manager, | 341 DatabaseManager& manager, |
339 int64_t id) ORTHANC_OVERRIDE; | 342 int64_t id) ORTHANC_OVERRIDE; |
340 # endif | |
341 #endif | |
342 | 343 |
343 virtual bool HasCreateInstance() const ORTHANC_OVERRIDE | 344 virtual bool HasCreateInstance() const ORTHANC_OVERRIDE |
344 { | 345 { |
345 // This extension is available in PostgreSQL and MySQL, but is | 346 // This extension is available in PostgreSQL and MySQL, but is |
346 // emulated by "CreateInstanceGeneric()" in SQLite | 347 // emulated by "CreateInstanceGeneric()" in SQLite |
378 void SetGlobalIntegerProperty(DatabaseManager& manager, | 379 void SetGlobalIntegerProperty(DatabaseManager& manager, |
379 const char* serverIdentifier, | 380 const char* serverIdentifier, |
380 int32_t property, | 381 int32_t property, |
381 int value); | 382 int value); |
382 | 383 |
384 virtual void AddLabel(DatabaseManager& manager, | |
385 int64_t resource, | |
386 const std::string& label) ORTHANC_OVERRIDE; | |
387 | |
388 virtual void RemoveLabel(DatabaseManager& manager, | |
389 int64_t resource, | |
390 const std::string& label) ORTHANC_OVERRIDE; | |
391 | |
392 virtual void ListLabels(std::list<std::string>& target, | |
393 DatabaseManager& manager, | |
394 int64_t resource) ORTHANC_OVERRIDE; | |
395 | |
396 virtual void ListAllLabels(std::list<std::string>& target, | |
397 DatabaseManager& manager) ORTHANC_OVERRIDE; | |
398 | |
383 /** | 399 /** |
384 * "maxDatabaseRetries" is to handle | 400 * "maxDatabaseRetries" is to handle |
385 * "OrthancPluginErrorCode_DatabaseCannotSerialize" if there is a | 401 * "OrthancPluginErrorCode_DatabaseCannotSerialize" if there is a |
386 * collision multiple writers. "countConnections" and | 402 * collision multiple writers. "countConnections" and |
387 * "maxDatabaseRetries" are only used if Orthanc >= 1.9.2. | 403 * "maxDatabaseRetries" are only used if Orthanc >= 1.9.2. |
390 size_t countConnections, | 406 size_t countConnections, |
391 unsigned int maxDatabaseRetries); | 407 unsigned int maxDatabaseRetries); |
392 | 408 |
393 static void Finalize(); | 409 static void Finalize(); |
394 | 410 |
395 static DatabaseManager* CreateSingleDatabaseManager(IDatabaseBackend& backend); | 411 static DatabaseManager* CreateSingleDatabaseManager(IDatabaseBackend& backend, |
412 bool hasIdentifierTags, | |
413 const std::list<IdentifierTag>& identifierTags); | |
396 }; | 414 }; |
397 } | 415 } |