Mercurial > hg > orthanc
changeset 6188:da92d3af3c5d attach-custom-data
replaced db primitive GetAttachment by GetAttachmentCustomData, as the former is redundant with LookupAttachment
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 12 Jun 2025 16:06:27 +0200 (6 days ago) |
parents | b2b1f2dde05c |
children | 33f88747fe68 |
files | OrthancServer/Plugins/Engine/OrthancPluginDatabase.cpp OrthancServer/Plugins/Engine/OrthancPluginDatabaseV3.cpp OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.cpp OrthancServer/Plugins/Engine/OrthancPlugins.cpp OrthancServer/Plugins/Include/orthanc/OrthancDatabasePlugin.proto OrthancServer/Sources/Database/IDatabaseWrapper.h OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp OrthancServer/Sources/Database/StatelessDatabaseOperations.h |
diffstat | 9 files changed, 62 insertions(+), 102 deletions(-) [+] |
line wrap: on
line diff
--- a/OrthancServer/Plugins/Engine/OrthancPluginDatabase.cpp Thu Jun 12 13:28:36 2025 +0200 +++ b/OrthancServer/Plugins/Engine/OrthancPluginDatabase.cpp Thu Jun 12 16:06:27 2025 +0200 @@ -1499,16 +1499,15 @@ throw OrthancException(ErrorCode_InternalError); // Not supported } - virtual bool GetAttachment(FileInfo& attachment, - int64_t& revision, - const std::string& attachmentUuid) ORTHANC_OVERRIDE + virtual void GetAttachmentCustomData(std::string& customData, + const std::string& attachmentUuid) ORTHANC_OVERRIDE { throw OrthancException(ErrorCode_NotImplemented); // Not supported } - virtual void UpdateAttachmentCustomData(const std::string& attachmentUuid, - const void* customData, - size_t customDataSize) ORTHANC_OVERRIDE + virtual void SetAttachmentCustomData(const std::string& attachmentUuid, + const void* customData, + size_t customDataSize) ORTHANC_OVERRIDE { throw OrthancException(ErrorCode_NotImplemented); // Not supported }
--- a/OrthancServer/Plugins/Engine/OrthancPluginDatabaseV3.cpp Thu Jun 12 13:28:36 2025 +0200 +++ b/OrthancServer/Plugins/Engine/OrthancPluginDatabaseV3.cpp Thu Jun 12 16:06:27 2025 +0200 @@ -1111,16 +1111,15 @@ throw OrthancException(ErrorCode_InternalError); // Not supported } - virtual bool GetAttachment(FileInfo& attachment, - int64_t& revision, - const std::string& attachmentUuid) ORTHANC_OVERRIDE + virtual void GetAttachmentCustomData(std::string& customData, + const std::string& attachmentUuid) ORTHANC_OVERRIDE { throw OrthancException(ErrorCode_NotImplemented); // Not supported } - virtual void UpdateAttachmentCustomData(const std::string& attachmentUuid, - const void* customData, - size_t customDataSize) ORTHANC_OVERRIDE + virtual void SetAttachmentCustomData(const std::string& attachmentUuid, + const void* customData, + size_t customDataSize) ORTHANC_OVERRIDE { throw OrthancException(ErrorCode_NotImplemented); // Not supported }
--- a/OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.cpp Thu Jun 12 13:28:36 2025 +0200 +++ b/OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.cpp Thu Jun 12 16:06:27 2025 +0200 @@ -1024,28 +1024,18 @@ } - virtual bool GetAttachment(FileInfo& attachment, - int64_t& revision, - const std::string& attachmentUuid) ORTHANC_OVERRIDE + virtual void GetAttachmentCustomData(std::string& customData, + const std::string& attachmentUuid) ORTHANC_OVERRIDE { if (database_.GetDatabaseCapabilities().HasAttachmentCustomDataSupport()) { DatabasePluginMessages::TransactionRequest request; - request.mutable_get_attachment()->set_uuid(attachmentUuid); + request.mutable_get_attachment_custom_data()->set_uuid(attachmentUuid); DatabasePluginMessages::TransactionResponse response; - ExecuteTransaction(response, DatabasePluginMessages::OPERATION_GET_ATTACHMENT, request); + ExecuteTransaction(response, DatabasePluginMessages::OPERATION_GET_ATTACHMENT_CUSTOM_DATA, request); - if (response.get_attachment().found()) - { - revision = response.get_attachment().revision(); - Convert(attachment, response.get_attachment().attachment()); - return true; - } - else - { - return false; - } + customData = response.get_attachment_custom_data().custom_data(); } else { @@ -1054,9 +1044,9 @@ } } - virtual void UpdateAttachmentCustomData(const std::string& attachmentUuid, - const void* customData, - size_t customDataSize) ORTHANC_OVERRIDE + virtual void SetAttachmentCustomData(const std::string& attachmentUuid, + const void* customData, + size_t customDataSize) ORTHANC_OVERRIDE { if (database_.GetDatabaseCapabilities().HasAttachmentCustomDataSupport()) {
--- a/OrthancServer/Plugins/Engine/OrthancPlugins.cpp Thu Jun 12 13:28:36 2025 +0200 +++ b/OrthancServer/Plugins/Engine/OrthancPlugins.cpp Thu Jun 12 16:06:27 2025 +0200 @@ -4603,17 +4603,10 @@ CheckAttachmentCustomDataSupport(lock.GetContext()); - FileInfo fileInfo; - int64_t revision; - - if (lock.GetContext().GetIndex().GetAttachment(fileInfo, revision, parameters.attachmentUuid)) - { - CopyToMemoryBuffer(parameters.customData, fileInfo.GetCustomData()); - } - else - { - throw OrthancException(ErrorCode_UnknownResource); - } + std::string customData; + lock.GetContext().GetIndex().GetAttachmentCustomData(customData, parameters.attachmentUuid); + + CopyToMemoryBuffer(parameters.customData, customData); } void OrthancPlugins::ApplySetAttachmentCustomData(const _OrthancPluginSetAttachmentCustomData& parameters)
--- a/OrthancServer/Plugins/Include/orthanc/OrthancDatabasePlugin.proto Thu Jun 12 13:28:36 2025 +0200 +++ b/OrthancServer/Plugins/Include/orthanc/OrthancDatabasePlugin.proto Thu Jun 12 16:06:27 2025 +0200 @@ -337,7 +337,7 @@ OPERATION_ENQUEUE_VALUE = 57; // New in Orthanc 1.12.8 OPERATION_DEQUEUE_VALUE = 58; // New in Orthanc 1.12.8 OPERATION_GET_QUEUE_SIZE = 59; // New in Orthanc 1.12.8 - OPERATION_GET_ATTACHMENT = 60; // New in Orthanc 1.12.8 + OPERATION_GET_ATTACHMENT_CUSTOM_DATA = 60; // New in Orthanc 1.12.8 OPERATION_SET_ATTACHMENT_CUSTOM_DATA = 61; // New in Orthanc 1.12.8 } @@ -1075,15 +1075,13 @@ } } -message GetAttachment { +message GetAttachmentCustomData { message Request { string uuid = 1; } message Response { - bool found = 1; - FileInfo attachment = 2; - int64 revision = 3; + bytes custom_data = 1; } } @@ -1161,7 +1159,7 @@ EnqueueValue.Request enqueue_value = 157; DequeueValue.Request dequeue_value = 158; GetQueueSize.Request get_queue_size = 159; - GetAttachment.Request get_attachment = 160; + GetAttachmentCustomData.Request get_attachment_custom_data = 160; SetAttachmentCustomData.Request set_attachment_custom_data = 161; } @@ -1226,7 +1224,7 @@ EnqueueValue.Response enqueue_value = 157; DequeueValue.Response dequeue_value = 158; GetQueueSize.Response get_queue_size = 159; - GetAttachment.Response get_attachment = 160; + GetAttachmentCustomData.Response get_attachment_custom_data = 160; SetAttachmentCustomData.Response set_attachment_custom_data = 161; }
--- a/OrthancServer/Sources/Database/IDatabaseWrapper.h Thu Jun 12 13:28:36 2025 +0200 +++ b/OrthancServer/Sources/Database/IDatabaseWrapper.h Thu Jun 12 16:06:27 2025 +0200 @@ -286,13 +286,12 @@ int64_t id, FileContentType contentType) = 0; - virtual bool GetAttachment(FileInfo& attachment, - int64_t& revision, - const std::string& attachmentUuid) = 0; + virtual void GetAttachmentCustomData(std::string& customData, + const std::string& attachmentUuid) = 0; - virtual void UpdateAttachmentCustomData(const std::string& attachmentUuid, - const void* customData, - size_t customDataSize) = 0; + virtual void SetAttachmentCustomData(const std::string& attachmentUuid, + const void* customData, + size_t customDataSize) = 0; /** * If "shared" is "true", the property is shared by all the
--- a/OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp Thu Jun 12 13:28:36 2025 +0200 +++ b/OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp Thu Jun 12 16:06:27 2025 +0200 @@ -1824,37 +1824,33 @@ } } - virtual bool GetAttachment(FileInfo& attachment, - int64_t& revision, - const std::string& attachmentUuid) ORTHANC_OVERRIDE + virtual void GetAttachmentCustomData(std::string& customData, + const std::string& attachmentUuid) ORTHANC_OVERRIDE { SQLite::Statement s(db_, SQLITE_FROM_HERE, - "SELECT uuid, uncompressedSize, compressionType, compressedSize, " - "uncompressedMD5, compressedMD5, revision, customData, fileType FROM AttachedFiles WHERE uuid=?"); + "SELECT customData FROM AttachedFiles WHERE uuid=?"); s.BindString(0, attachmentUuid); if (!s.Step()) { - return false; + throw OrthancException(ErrorCode_UnknownResource); } else { - attachment = FileInfo(s.ColumnString(0), - static_cast<FileContentType>(s.ColumnInt(8)), - s.ColumnInt64(1), - s.ColumnString(4), - static_cast<CompressionType>(s.ColumnInt(2)), - s.ColumnInt64(3), - s.ColumnString(5)); - ReadCustomData(attachment, s, 7); - revision = s.ColumnInt(6); - return true; + if (s.ColumnIsNull(0)) + { + customData.clear(); + } + else if (!s.ColumnBlobAsString(0, &customData)) + { + throw OrthancException(ErrorCode_InternalError); + } } } - virtual void UpdateAttachmentCustomData(const std::string& attachmentUuid, - const void* customData, - size_t customDataSize) ORTHANC_OVERRIDE + virtual void SetAttachmentCustomData(const std::string& attachmentUuid, + const void* customData, + size_t customDataSize) ORTHANC_OVERRIDE { SQLite::Statement s(db_, SQLITE_FROM_HERE, "UPDATE AttachedFiles SET customData=? WHERE uuid=?");
--- a/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp Thu Jun 12 13:28:36 2025 +0200 +++ b/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp Thu Jun 12 16:06:27 2025 +0200 @@ -3565,36 +3565,24 @@ } - bool StatelessDatabaseOperations::GetAttachment(FileInfo& attachment, - int64_t& revision, - const std::string& attachmentUuid) + void StatelessDatabaseOperations::GetAttachmentCustomData(std::string& customData, + const std::string& attachmentUuid) { - class Operations : public ReadOnlyOperationsT3<FileInfo&, int64_t&, const std::string& > + class Operations : public ReadOnlyOperationsT2<std::string&, const std::string& > { - bool found_; public: - Operations(): - found_(false) - {} - - bool HasFound() - { - return found_; - } - virtual void ApplyTuple(ReadOnlyTransaction& transaction, const Tuple& tuple) ORTHANC_OVERRIDE { - found_ = transaction.GetAttachment(tuple.get<0>(), tuple.get<1>(), tuple.get<2>()); + transaction.GetAttachmentCustomData(tuple.get<0>(), tuple.get<1>()); } }; Operations operations; - operations.Apply(*this, attachment, revision, attachmentUuid); - - return operations.HasFound(); + operations.Apply(*this, customData, attachmentUuid); } + void StatelessDatabaseOperations::SetAttachmentCustomData(const std::string& attachmentUuid, const void* customData, size_t customDataSize) @@ -3626,6 +3614,7 @@ Apply(operations); } + StatelessDatabaseOperations::KeysValuesIterator::KeysValuesIterator(StatelessDatabaseOperations& db, const std::string& storeId) : db_(db),
--- a/OrthancServer/Sources/Database/StatelessDatabaseOperations.h Thu Jun 12 13:28:36 2025 +0200 +++ b/OrthancServer/Sources/Database/StatelessDatabaseOperations.h Thu Jun 12 16:06:27 2025 +0200 @@ -226,11 +226,10 @@ return transaction_.LookupAttachment(attachment, revision, id, contentType); } - bool GetAttachment(FileInfo& attachment, - int64_t& revision, - const std::string& attachmentUuid) + void GetAttachmentCustomData(std::string& customData, + const std::string& attachmentUuid) { - return transaction_.GetAttachment(attachment, revision, attachmentUuid); + return transaction_.GetAttachmentCustomData(customData, attachmentUuid); } bool LookupGlobalProperty(std::string& target, @@ -490,9 +489,8 @@ const void* customData, size_t customDataSize) { - return transaction_.UpdateAttachmentCustomData(attachmentUuid, customData, customDataSize); + return transaction_.SetAttachmentCustomData(attachmentUuid, customData, customDataSize); } - }; @@ -588,13 +586,12 @@ /* out */ uint64_t& countSeries, /* out */ uint64_t& countInstances); - bool GetAttachment(FileInfo& attachment, - int64_t& revision, - const std::string& attachmentUuid); + void GetAttachmentCustomData(std::string& customData, + const std::string& attachmentUuid); void SetAttachmentCustomData(const std::string& attachmentUuid, - const void* customData, - size_t customDataSize); + const void* customData, + size_t customDataSize); bool LookupAttachment(FileInfo& attachment, int64_t& revision,