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