comparison Framework/Plugins/OrthancCppDatabasePlugin.h @ 71:d40c5fecd160 db-changes

new extension implemented for PostgreSQL: CreateInstance
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 04 Jan 2019 13:51:52 +0100
parents e6c13ddd26d9
children a4e440e65c68
comparison
equal deleted inserted replaced
70:e6c13ddd26d9 71:d40c5fecd160
489 virtual void UpgradeDatabase(uint32_t targetVersion, 489 virtual void UpgradeDatabase(uint32_t targetVersion,
490 OrthancPluginStorageArea* storageArea) = 0; 490 OrthancPluginStorageArea* storageArea) = 0;
491 491
492 virtual void ClearMainDicomTags(int64_t internalId) = 0; 492 virtual void ClearMainDicomTags(int64_t internalId) = 0;
493 493
494 virtual bool HasCreateInstance() const = 0;
495
494 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 496 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
495 virtual void LookupResources(const std::vector<Orthanc::DatabaseConstraint>& lookup, 497 virtual void LookupResources(const std::vector<Orthanc::DatabaseConstraint>& lookup,
496 OrthancPluginResourceType queryLevel, 498 OrthancPluginResourceType queryLevel,
497 uint32_t limit, 499 uint32_t limit,
498 bool requestSomeInstance) = 0; 500 bool requestSomeInstance) = 0;
501 #endif
502
503 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
504 virtual void CreateInstance(OrthancPluginCreateInstanceResult& result,
505 const char* hashPatient,
506 const char* hashStudy,
507 const char* hashSeries,
508 const char* hashInstance)
509 {
510 throw std::runtime_error("Not implemented");
511 }
499 #endif 512 #endif
500 }; 513 };
501 514
502 515
503 516
1498 1511
1499 backend->LookupResources(lookup, queryLevel, limit, (requestSomeInstance != 0)); 1512 backend->LookupResources(lookup, queryLevel, limit, (requestSomeInstance != 0));
1500 return OrthancPluginErrorCode_Success; 1513 return OrthancPluginErrorCode_Success;
1501 } 1514 }
1502 ORTHANC_PLUGINS_DATABASE_CATCH 1515 ORTHANC_PLUGINS_DATABASE_CATCH
1516 }
1517 #endif
1518
1519
1520 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
1521 static OrthancPluginErrorCode CreateInstance(OrthancPluginCreateInstanceResult* output,
1522 void* payload,
1523 const char* hashPatient,
1524 const char* hashStudy,
1525 const char* hashSeries,
1526 const char* hashInstance)
1527 {
1528 IDatabaseBackend* backend = reinterpret_cast<IDatabaseBackend*>(payload);
1529
1530 try
1531 {
1532 backend->CreateInstance(*output, hashPatient, hashStudy, hashSeries, hashInstance);
1533 return OrthancPluginErrorCode_Success;
1534 }
1535 ORTHANC_PLUGINS_DATABASE_CATCH
1503 } 1536 }
1504 #endif 1537 #endif
1505 1538
1506 1539
1507 public: 1540 public:
1583 # endif 1616 # endif
1584 #endif 1617 #endif
1585 1618
1586 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 1619 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
1587 extensions.lookupResources = LookupResources; // New in Orthanc 1.5.2 (fast lookup) 1620 extensions.lookupResources = LookupResources; // New in Orthanc 1.5.2 (fast lookup)
1621
1622 if (backend.HasCreateInstance())
1623 {
1624 extensions.createInstance = CreateInstance; // New in Orthanc 1.5.2 (fast create)
1625 }
1626
1588 performanceWarning = false; 1627 performanceWarning = false;
1589 #endif 1628 #endif
1590 1629
1591 if (performanceWarning) 1630 if (performanceWarning)
1592 { 1631 {