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 }