comparison OrthancServer/Sources/Database/StatelessDatabaseOperations.h @ 5568:b0b5546f1b9f find-refactoring

find refactor: re-use existing code. /studies?expand is almost fully implemented with new code
author Alain Mazy <am@orthanc.team>
date Thu, 25 Apr 2024 09:22:07 +0200
parents 12d8a1a266e9
children 738f80622e91
comparison
equal deleted inserted replaced
5567:f3562c1a150d 5568:b0b5546f1b9f
78 fileSize_(0), 78 fileSize_(0),
79 indexInSeries_(0) 79 indexInSeries_(0)
80 { 80 {
81 } 81 }
82 82
83 ExpandedResource(const FindResponse::Item& item);
84
83 void SetResource(ResourceType level, 85 void SetResource(ResourceType level,
84 const std::string& id) 86 const std::string& id)
85 { 87 {
86 level_ = level; 88 level_ = level;
87 id_ = id; 89 id_ = id;
109 }; 111 };
110 112
111 enum ExpandResourceFlags 113 enum ExpandResourceFlags
112 { 114 {
113 ExpandResourceFlags_None = 0, 115 ExpandResourceFlags_None = 0,
116 // used to fetch from DB and for output
114 ExpandResourceFlags_IncludeMetadata = (1 << 0), 117 ExpandResourceFlags_IncludeMetadata = (1 << 0),
115 ExpandResourceFlags_IncludeChildren = (1 << 1), 118 ExpandResourceFlags_IncludeChildren = (1 << 1),
116 ExpandResourceFlags_IncludeMainDicomTags = (1 << 2), 119 ExpandResourceFlags_IncludeMainDicomTags = (1 << 2),
117 ExpandResourceFlags_IncludeLabels = (1 << 3), 120 ExpandResourceFlags_IncludeLabels = (1 << 3),
118 121
119 ExpandResourceFlags_Default = (ExpandResourceFlags_IncludeMetadata | 122 // only used for output
120 ExpandResourceFlags_IncludeChildren | 123 ExpandResourceFlags_IncludeAllMetadata = (1 << 4), // new in Orthanc 1.12.4
121 ExpandResourceFlags_IncludeMainDicomTags | 124 ExpandResourceFlags_IncludeIsStable = (1 << 5), // new in Orthanc 1.12.4
122 ExpandResourceFlags_IncludeLabels) 125
126 ExpandResourceFlags_DefaultExtract = (ExpandResourceFlags_IncludeMetadata |
127 ExpandResourceFlags_IncludeChildren |
128 ExpandResourceFlags_IncludeMainDicomTags |
129 ExpandResourceFlags_IncludeLabels),
130
131 ExpandResourceFlags_DefaultOutput = (ExpandResourceFlags_IncludeMetadata |
132 ExpandResourceFlags_IncludeChildren |
133 ExpandResourceFlags_IncludeMainDicomTags |
134 ExpandResourceFlags_IncludeLabels |
135 ExpandResourceFlags_IncludeIsStable)
123 }; 136 };
124 137
125 class StatelessDatabaseOperations : public boost::noncopyable 138 class StatelessDatabaseOperations : public boost::noncopyable
126 { 139 {
127 public: 140 public:
376 { 389 {
377 transaction_.ListAllLabels(target); 390 transaction_.ListAllLabels(target);
378 } 391 }
379 392
380 void ExecuteFind(FindResponse& response, 393 void ExecuteFind(FindResponse& response,
381 const FindRequest& request) 394 const FindRequest& request,
382 { 395 const std::vector<DatabaseConstraint>& normalized)
383 transaction_.ExecuteFind(response, request); 396 {
397 transaction_.ExecuteFind(response, request, normalized);
384 } 398 }
385 }; 399 };
386 400
387 401
388 class ReadWriteTransaction : public ReadOnlyTransaction 402 class ReadWriteTransaction : public ReadOnlyTransaction
561 unsigned int maxRetries_; 575 unsigned int maxRetries_;
562 576
563 void NormalizeLookup(std::vector<DatabaseConstraint>& target, 577 void NormalizeLookup(std::vector<DatabaseConstraint>& target,
564 const DatabaseLookup& source, 578 const DatabaseLookup& source,
565 ResourceType level) const; 579 ResourceType level) const;
580
581 void NormalizeLookup(std::vector<DatabaseConstraint>& target,
582 const FindRequest& findRequest) const;
566 583
567 void ApplyInternal(IReadOnlyOperations* readOperations, 584 void ApplyInternal(IReadOnlyOperations* readOperations,
568 IReadWriteOperations* writeOperations); 585 IReadWriteOperations* writeOperations);
569 586
570 protected: 587 protected: