comparison Framework/Plugins/OrthancCppDatabasePlugin.h @ 85:1012fe77241c db-changes

new extension implemented for PostgreSQL and SQLite: GetLastChangeIndex
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 10 Jan 2019 18:04:12 +0100
parents 2ee166f77501
children eb08ec14fb04
comparison
equal deleted inserted replaced
82:122f22550521 85:1012fe77241c
490 virtual void UpgradeDatabase(uint32_t targetVersion, 490 virtual void UpgradeDatabase(uint32_t targetVersion,
491 OrthancPluginStorageArea* storageArea) = 0; 491 OrthancPluginStorageArea* storageArea) = 0;
492 492
493 virtual void ClearMainDicomTags(int64_t internalId) = 0; 493 virtual void ClearMainDicomTags(int64_t internalId) = 0;
494 494
495 virtual bool HasCreateInstance() const = 0; 495 virtual bool HasCreateInstance() const
496 {
497 return false;
498 }
496 499
497 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 500 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
498 virtual void LookupResources(const std::vector<Orthanc::DatabaseConstraint>& lookup, 501 virtual void LookupResources(const std::vector<Orthanc::DatabaseConstraint>& lookup,
499 OrthancPluginResourceType queryLevel, 502 OrthancPluginResourceType queryLevel,
500 uint32_t limit, 503 uint32_t limit,
522 uint32_t countMetadata, 525 uint32_t countMetadata,
523 const OrthancPluginResourcesContentMetadata* metadata) = 0; 526 const OrthancPluginResourcesContentMetadata* metadata) = 0;
524 #endif 527 #endif
525 528
526 529
527 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
528 virtual void GetChildrenMetadata(std::list<std::string>& target, 530 virtual void GetChildrenMetadata(std::list<std::string>& target,
529 int64_t resourceId, 531 int64_t resourceId,
530 int32_t metadata) = 0; 532 int32_t metadata) = 0;
531 #endif 533
534 virtual int64_t GetLastChangeIndex() = 0;
532 }; 535 };
533 536
534 537
535 538
536 /** 539 /**
1583 ORTHANC_PLUGINS_DATABASE_CATCH 1586 ORTHANC_PLUGINS_DATABASE_CATCH
1584 } 1587 }
1585 #endif 1588 #endif
1586 1589
1587 1590
1588
1589 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
1590 // New primitive since Orthanc 1.5.2 1591 // New primitive since Orthanc 1.5.2
1591 static OrthancPluginErrorCode GetChildrenMetadata(OrthancPluginDatabaseContext* context, 1592 static OrthancPluginErrorCode GetChildrenMetadata(OrthancPluginDatabaseContext* context,
1592 void* payload, 1593 void* payload,
1593 int64_t resourceId, 1594 int64_t resourceId,
1594 int32_t metadata) 1595 int32_t metadata)
1611 1612
1612 return OrthancPluginErrorCode_Success; 1613 return OrthancPluginErrorCode_Success;
1613 } 1614 }
1614 ORTHANC_PLUGINS_DATABASE_CATCH 1615 ORTHANC_PLUGINS_DATABASE_CATCH
1615 } 1616 }
1616 #endif 1617
1617 1618
1619 // New primitive since Orthanc 1.5.2
1620 static OrthancPluginErrorCode GetLastChangeIndex(int64_t* result,
1621 void* payload)
1622 {
1623 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload);
1624 backend->GetOutput().SetAllowedAnswers(DatabaseBackendOutput::AllowedAnswers_None);
1625
1626 try
1627 {
1628 *result = backend->GetLastChangeIndex();
1629 return OrthancPluginErrorCode_Success;
1630 }
1631 ORTHANC_PLUGINS_DATABASE_CATCH
1632 }
1633
1618 1634
1619 public: 1635 public:
1620 /** 1636 /**
1621 * Register a custom database back-end written in C++. 1637 * Register a custom database back-end written in C++.
1622 * 1638 *
1698 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 1714 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
1699 // Optimizations brought by Orthanc 1.5.2 1715 // Optimizations brought by Orthanc 1.5.2
1700 extensions.lookupResources = LookupResources; // Fast lookup 1716 extensions.lookupResources = LookupResources; // Fast lookup
1701 extensions.setResourcesContent = SetResourcesContent; // Fast setting tags/metadata 1717 extensions.setResourcesContent = SetResourcesContent; // Fast setting tags/metadata
1702 extensions.getChildrenMetadata = GetChildrenMetadata; 1718 extensions.getChildrenMetadata = GetChildrenMetadata;
1719 extensions.getLastChangeIndex = GetLastChangeIndex;
1703 1720
1704 if (backend.HasCreateInstance()) 1721 if (backend.HasCreateInstance())
1705 { 1722 {
1706 extensions.createInstance = CreateInstance; // Fast creation of resources 1723 extensions.createInstance = CreateInstance; // Fast creation of resources
1707 } 1724 }