Mercurial > hg > orthanc
comparison OrthancServer/Sources/Database/StatelessDatabaseOperations.h @ 5455:176bc05f85f4 pg-transactions
DB: new Capabilities class to manage future new methods from DB plugins + Added IncrementGlobalProperty
author | Alain Mazy <am@osimis.io> |
---|---|
date | Thu, 07 Dec 2023 12:04:11 +0100 |
parents | 03501a258d9e |
children | dceed5e3d6a9 |
comparison
equal
deleted
inserted
replaced
5454:099d45f49fe1 | 5455:176bc05f85f4 |
---|---|
174 | 174 |
175 class ReadOnlyTransaction : public boost::noncopyable | 175 class ReadOnlyTransaction : public boost::noncopyable |
176 { | 176 { |
177 private: | 177 private: |
178 ITransactionContext& context_; | 178 ITransactionContext& context_; |
179 bool hasLabelsSupport_; | 179 const IDatabaseWrapper::Capabilities& dbCapabilities_; |
180 | 180 |
181 protected: | 181 protected: |
182 IDatabaseWrapper::ITransaction& transaction_; | 182 IDatabaseWrapper::ITransaction& transaction_; |
183 | 183 |
184 public: | 184 public: |
185 explicit ReadOnlyTransaction(IDatabaseWrapper::ITransaction& transaction, | 185 explicit ReadOnlyTransaction(IDatabaseWrapper::ITransaction& transaction, |
186 ITransactionContext& context, | 186 ITransactionContext& context, |
187 bool hasLabelsSupport) : | 187 const IDatabaseWrapper::Capabilities& dbCapabilities) : |
188 context_(context), | 188 context_(context), |
189 hasLabelsSupport_(hasLabelsSupport), | 189 dbCapabilities_(dbCapabilities), |
190 transaction_(transaction) | 190 transaction_(transaction) |
191 { | 191 { |
192 } | 192 } |
193 | 193 |
194 ITransactionContext& GetTransactionContext() | 194 ITransactionContext& GetTransactionContext() |
195 { | 195 { |
196 return context_; | 196 return context_; |
197 } | 197 } |
198 | 198 |
199 bool HasLabelsSupport() const | 199 const IDatabaseWrapper::Capabilities& GetDatabaseCapabilities() const |
200 { | 200 { |
201 return hasLabelsSupport_; | 201 return dbCapabilities_; |
202 } | 202 } |
203 | 203 |
204 /** | 204 /** |
205 * Higher-level constructions | 205 * Higher-level constructions |
206 **/ | 206 **/ |
390 class ReadWriteTransaction : public ReadOnlyTransaction | 390 class ReadWriteTransaction : public ReadOnlyTransaction |
391 { | 391 { |
392 public: | 392 public: |
393 ReadWriteTransaction(IDatabaseWrapper::ITransaction& transaction, | 393 ReadWriteTransaction(IDatabaseWrapper::ITransaction& transaction, |
394 ITransactionContext& context, | 394 ITransactionContext& context, |
395 bool hasLabelsSupport) : | 395 const IDatabaseWrapper::Capabilities& dbCapabilities) : |
396 ReadOnlyTransaction(transaction, context, hasLabelsSupport) | 396 ReadOnlyTransaction(transaction, context, dbCapabilities) |
397 { | 397 { |
398 } | 398 } |
399 | 399 |
400 void AddAttachment(int64_t id, | 400 void AddAttachment(int64_t id, |
401 const FileInfo& attachment, | 401 const FileInfo& attachment, |
461 const std::string& value) | 461 const std::string& value) |
462 { | 462 { |
463 transaction_.SetGlobalProperty(property, shared, value); | 463 transaction_.SetGlobalProperty(property, shared, value); |
464 } | 464 } |
465 | 465 |
466 int64_t IncrementGlobalProperty(GlobalProperty sequence, | |
467 bool shared, | |
468 int64_t increment) | |
469 { | |
470 return transaction_.IncrementGlobalProperty(sequence, shared, increment); | |
471 } | |
472 | |
466 void SetMetadata(int64_t id, | 473 void SetMetadata(int64_t id, |
467 MetadataType type, | 474 MetadataType type, |
468 const std::string& value, | 475 const std::string& value, |
469 int64_t revision) | 476 int64_t revision) |
470 { | 477 { |
538 class MainDicomTagsRegistry; | 545 class MainDicomTagsRegistry; |
539 class Transaction; | 546 class Transaction; |
540 | 547 |
541 IDatabaseWrapper& db_; | 548 IDatabaseWrapper& db_; |
542 boost::shared_ptr<MainDicomTagsRegistry> mainDicomTagsRegistry_; // "shared_ptr" because of PImpl | 549 boost::shared_ptr<MainDicomTagsRegistry> mainDicomTagsRegistry_; // "shared_ptr" because of PImpl |
543 bool hasFlushToDisk_; | |
544 | 550 |
545 // Mutex to protect the configuration options | 551 // Mutex to protect the configuration options |
546 boost::shared_mutex mutex_; | 552 boost::shared_mutex mutex_; |
547 std::unique_ptr<ITransactionContextFactory> factory_; | 553 std::unique_ptr<ITransactionContextFactory> factory_; |
548 unsigned int maxRetries_; | 554 unsigned int maxRetries_; |
573 unsigned int GetDatabaseVersion() | 579 unsigned int GetDatabaseVersion() |
574 { | 580 { |
575 return db_.GetDatabaseVersion(); | 581 return db_.GetDatabaseVersion(); |
576 } | 582 } |
577 | 583 |
584 const IDatabaseWrapper::Capabilities& GetDatabaseCapabilities() const | |
585 { | |
586 return db_.GetDatabaseCapabilities(); | |
587 } | |
588 | |
578 void FlushToDisk(); | 589 void FlushToDisk(); |
579 | 590 |
580 bool HasFlushToDisk() const | |
581 { | |
582 return hasFlushToDisk_; | |
583 } | |
584 | 591 |
585 void Apply(IReadOnlyOperations& operations); | 592 void Apply(IReadOnlyOperations& operations); |
586 | 593 |
587 void Apply(IReadWriteOperations& operations); | 594 void Apply(IReadWriteOperations& operations); |
588 | 595 |