comparison Framework/Plugins/IDatabaseBackend.h @ 225:94c9908e6aca

removed DatabaseManager member out of class IndexBackend
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 01 Apr 2021 19:18:19 +0200
parents 61c309e06797
children a4918d57435c
comparison
equal deleted inserted replaced
224:61c309e06797 225:94c9908e6aca
22 22
23 #pragma once 23 #pragma once
24 24
25 #include "IDatabaseBackendOutput.h" 25 #include "IDatabaseBackendOutput.h"
26 #include "../Common/DatabasesEnumerations.h" 26 #include "../Common/DatabasesEnumerations.h"
27 #include "../Common/IDatabaseFactory.h" 27 #include "../Common/DatabaseManager.h"
28 28
29 #include <list> 29 #include <list>
30 30
31 namespace OrthancDatabases 31 namespace OrthancDatabases
32 { 32 {
43 43
44 virtual void SetOutputFactory(IDatabaseBackendOutput::IFactory* factory) = 0; 44 virtual void SetOutputFactory(IDatabaseBackendOutput::IFactory* factory) = 0;
45 45
46 virtual IDatabaseBackendOutput* CreateOutput() = 0; 46 virtual IDatabaseBackendOutput* CreateOutput() = 0;
47 47
48 virtual void Open() = 0; 48 virtual void AddAttachment(DatabaseManager& manager,
49 49 int64_t id,
50 virtual void Close() = 0;
51
52 virtual void AddAttachment(int64_t id,
53 const OrthancPluginAttachment& attachment) = 0; 50 const OrthancPluginAttachment& attachment) = 0;
54 51
55 virtual void AttachChild(int64_t parent, 52 virtual void AttachChild(DatabaseManager& manager,
53 int64_t parent,
56 int64_t child) = 0; 54 int64_t child) = 0;
57 55
58 virtual void ClearChanges() = 0; 56 virtual void ClearChanges(DatabaseManager& manager) = 0;
59 57
60 virtual void ClearExportedResources() = 0; 58 virtual void ClearExportedResources(DatabaseManager& manager) = 0;
61 59
62 virtual int64_t CreateResource(const char* publicId, 60 virtual int64_t CreateResource(DatabaseManager& manager,
61 const char* publicId,
63 OrthancPluginResourceType type) = 0; 62 OrthancPluginResourceType type) = 0;
64 63
65 virtual void DeleteAttachment(IDatabaseBackendOutput& output, 64 virtual void DeleteAttachment(IDatabaseBackendOutput& output,
65 DatabaseManager& manager,
66 int64_t id, 66 int64_t id,
67 int32_t attachment) = 0; 67 int32_t attachment) = 0;
68 68
69 virtual void DeleteMetadata(int64_t id, 69 virtual void DeleteMetadata(DatabaseManager& manager,
70 int64_t id,
70 int32_t metadataType) = 0; 71 int32_t metadataType) = 0;
71 72
72 virtual void DeleteResource(IDatabaseBackendOutput& output, 73 virtual void DeleteResource(IDatabaseBackendOutput& output,
74 DatabaseManager& manager,
73 int64_t id) = 0; 75 int64_t id) = 0;
74 76
75 virtual void GetAllInternalIds(std::list<int64_t>& target, 77 virtual void GetAllInternalIds(std::list<int64_t>& target,
78 DatabaseManager& manager,
76 OrthancPluginResourceType resourceType) = 0; 79 OrthancPluginResourceType resourceType) = 0;
77 80
78 virtual void GetAllPublicIds(std::list<std::string>& target, 81 virtual void GetAllPublicIds(std::list<std::string>& target,
82 DatabaseManager& manager,
79 OrthancPluginResourceType resourceType) = 0; 83 OrthancPluginResourceType resourceType) = 0;
80 84
81 virtual void GetAllPublicIds(std::list<std::string>& target, 85 virtual void GetAllPublicIds(std::list<std::string>& target,
86 DatabaseManager& manager,
82 OrthancPluginResourceType resourceType, 87 OrthancPluginResourceType resourceType,
83 uint64_t since, 88 uint64_t since,
84 uint64_t limit) = 0; 89 uint64_t limit) = 0;
85 90
86 /* Use GetOutput().AnswerChange() */ 91 /* Use GetOutput().AnswerChange() */
87 virtual void GetChanges(IDatabaseBackendOutput& output, 92 virtual void GetChanges(IDatabaseBackendOutput& output,
88 bool& done /*out*/, 93 bool& done /*out*/,
94 DatabaseManager& manager,
89 int64_t since, 95 int64_t since,
90 uint32_t maxResults) = 0; 96 uint32_t maxResults) = 0;
91 97
92 virtual void GetChildrenInternalId(std::list<int64_t>& target /*out*/, 98 virtual void GetChildrenInternalId(std::list<int64_t>& target /*out*/,
99 DatabaseManager& manager,
93 int64_t id) = 0; 100 int64_t id) = 0;
94 101
95 virtual void GetChildrenPublicId(std::list<std::string>& target /*out*/, 102 virtual void GetChildrenPublicId(std::list<std::string>& target /*out*/,
103 DatabaseManager& manager,
96 int64_t id) = 0; 104 int64_t id) = 0;
97 105
98 /* Use GetOutput().AnswerExportedResource() */ 106 /* Use GetOutput().AnswerExportedResource() */
99 virtual void GetExportedResources(IDatabaseBackendOutput& output, 107 virtual void GetExportedResources(IDatabaseBackendOutput& output,
100 bool& done /*out*/, 108 bool& done /*out*/,
109 DatabaseManager& manager,
101 int64_t since, 110 int64_t since,
102 uint32_t maxResults) = 0; 111 uint32_t maxResults) = 0;
103 112
104 /* Use GetOutput().AnswerChange() */ 113 /* Use GetOutput().AnswerChange() */
105 virtual void GetLastChange(IDatabaseBackendOutput& output) = 0; 114 virtual void GetLastChange(IDatabaseBackendOutput& output,
115 DatabaseManager& manager) = 0;
106 116
107 /* Use GetOutput().AnswerExportedResource() */ 117 /* Use GetOutput().AnswerExportedResource() */
108 virtual void GetLastExportedResource(IDatabaseBackendOutput& output) = 0; 118 virtual void GetLastExportedResource(IDatabaseBackendOutput& output,
119 DatabaseManager& manager) = 0;
109 120
110 /* Use GetOutput().AnswerDicomTag() */ 121 /* Use GetOutput().AnswerDicomTag() */
111 virtual void GetMainDicomTags(IDatabaseBackendOutput& output, 122 virtual void GetMainDicomTags(IDatabaseBackendOutput& output,
123 DatabaseManager& manager,
112 int64_t id) = 0; 124 int64_t id) = 0;
113 125
114 virtual std::string GetPublicId(int64_t resourceId) = 0; 126 virtual std::string GetPublicId(DatabaseManager& manager,
115 127 int64_t resourceId) = 0;
116 virtual uint64_t GetResourcesCount(OrthancPluginResourceType resourceType) = 0; 128
117 129 virtual uint64_t GetResourcesCount(DatabaseManager& manager,
118 virtual OrthancPluginResourceType GetResourceType(int64_t resourceId) = 0; 130 OrthancPluginResourceType resourceType) = 0;
119 131
120 virtual uint64_t GetTotalCompressedSize() = 0; 132 virtual OrthancPluginResourceType GetResourceType(DatabaseManager& manager,
133 int64_t resourceId) = 0;
134
135 virtual uint64_t GetTotalCompressedSize(DatabaseManager& manager) = 0;
121 136
122 virtual uint64_t GetTotalUncompressedSize() = 0; 137 virtual uint64_t GetTotalUncompressedSize(DatabaseManager& manager) = 0;
123 138
124 virtual bool IsExistingResource(int64_t internalId) = 0; 139 virtual bool IsExistingResource(DatabaseManager& manager,
125 140 int64_t internalId) = 0;
126 virtual bool IsProtectedPatient(int64_t internalId) = 0; 141
142 virtual bool IsProtectedPatient(DatabaseManager& manager,
143 int64_t internalId) = 0;
127 144
128 virtual void ListAvailableMetadata(std::list<int32_t>& target /*out*/, 145 virtual void ListAvailableMetadata(std::list<int32_t>& target /*out*/,
146 DatabaseManager& manager,
129 int64_t id) = 0; 147 int64_t id) = 0;
130 148
131 virtual void ListAvailableAttachments(std::list<int32_t>& target /*out*/, 149 virtual void ListAvailableAttachments(std::list<int32_t>& target /*out*/,
150 DatabaseManager& manager,
132 int64_t id) = 0; 151 int64_t id) = 0;
133 152
134 virtual void LogChange(int32_t changeType, 153 virtual void LogChange(DatabaseManager& manager,
154 int32_t changeType,
135 int64_t resourceId, 155 int64_t resourceId,
136 OrthancPluginResourceType resourceType, 156 OrthancPluginResourceType resourceType,
137 const char* date) = 0; 157 const char* date) = 0;
138 158
139 virtual void LogExportedResource(const OrthancPluginExportedResource& resource) = 0; 159 virtual void LogExportedResource(DatabaseManager& manager,
160 const OrthancPluginExportedResource& resource) = 0;
140 161
141 /* Use GetOutput().AnswerAttachment() */ 162 /* Use GetOutput().AnswerAttachment() */
142 virtual bool LookupAttachment(IDatabaseBackendOutput& output, 163 virtual bool LookupAttachment(IDatabaseBackendOutput& output,
164 DatabaseManager& manager,
143 int64_t id, 165 int64_t id,
144 int32_t contentType) = 0; 166 int32_t contentType) = 0;
145 167
146 virtual bool LookupGlobalProperty(std::string& target /*out*/, 168 virtual bool LookupGlobalProperty(std::string& target /*out*/,
169 DatabaseManager& manager,
147 const char* serverIdentifier, 170 const char* serverIdentifier,
148 int32_t property) = 0; 171 int32_t property) = 0;
149 172
150 virtual void LookupIdentifier(std::list<int64_t>& target /*out*/, 173 virtual void LookupIdentifier(std::list<int64_t>& target /*out*/,
174 DatabaseManager& manager,
151 OrthancPluginResourceType resourceType, 175 OrthancPluginResourceType resourceType,
152 uint16_t group, 176 uint16_t group,
153 uint16_t element, 177 uint16_t element,
154 OrthancPluginIdentifierConstraint constraint, 178 OrthancPluginIdentifierConstraint constraint,
155 const char* value) = 0; 179 const char* value) = 0;
156 180
157 virtual void LookupIdentifierRange(std::list<int64_t>& target /*out*/, 181 virtual void LookupIdentifierRange(std::list<int64_t>& target /*out*/,
182 DatabaseManager& manager,
158 OrthancPluginResourceType resourceType, 183 OrthancPluginResourceType resourceType,
159 uint16_t group, 184 uint16_t group,
160 uint16_t element, 185 uint16_t element,
161 const char* start, 186 const char* start,
162 const char* end) = 0; 187 const char* end) = 0;
163 188
164 virtual bool LookupMetadata(std::string& target /*out*/, 189 virtual bool LookupMetadata(std::string& target /*out*/,
190 DatabaseManager& manager,
165 int64_t id, 191 int64_t id,
166 int32_t metadataType) = 0; 192 int32_t metadataType) = 0;
167 193
168 virtual bool LookupParent(int64_t& parentId /*out*/, 194 virtual bool LookupParent(int64_t& parentId /*out*/,
195 DatabaseManager& manager,
169 int64_t resourceId) = 0; 196 int64_t resourceId) = 0;
170 197
171 virtual bool LookupResource(int64_t& id /*out*/, 198 virtual bool LookupResource(int64_t& id /*out*/,
172 OrthancPluginResourceType& type /*out*/, 199 OrthancPluginResourceType& type /*out*/,
200 DatabaseManager& manager,
173 const char* publicId) = 0; 201 const char* publicId) = 0;
174 202
175 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/) = 0;
176
177 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/, 203 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/,
204 DatabaseManager& manager) = 0;
205
206 virtual bool SelectPatientToRecycle(int64_t& internalId /*out*/,
207 DatabaseManager& manager,
178 int64_t patientIdToAvoid) = 0; 208 int64_t patientIdToAvoid) = 0;
179 209
180 virtual void SetGlobalProperty(const char* serverIdentifier, 210 virtual void SetGlobalProperty(DatabaseManager& manager,
211 const char* serverIdentifier,
181 int32_t property, 212 int32_t property,
182 const char* value) = 0; 213 const char* value) = 0;
183 214
184 virtual void SetMainDicomTag(int64_t id, 215 virtual void SetMainDicomTag(DatabaseManager& manager,
216 int64_t id,
185 uint16_t group, 217 uint16_t group,
186 uint16_t element, 218 uint16_t element,
187 const char* value) = 0; 219 const char* value) = 0;
188 220
189 virtual void SetIdentifierTag(int64_t id, 221 virtual void SetIdentifierTag(DatabaseManager& manager,
222 int64_t id,
190 uint16_t group, 223 uint16_t group,
191 uint16_t element, 224 uint16_t element,
192 const char* value) = 0; 225 const char* value) = 0;
193 226
194 virtual void SetMetadata(int64_t id, 227 virtual void SetMetadata(DatabaseManager& manager,
228 int64_t id,
195 int32_t metadataType, 229 int32_t metadataType,
196 const char* value) = 0; 230 const char* value) = 0;
197 231
198 virtual void SetProtectedPatient(int64_t internalId, 232 virtual void SetProtectedPatient(DatabaseManager& manager,
233 int64_t internalId,
199 bool isProtected) = 0; 234 bool isProtected) = 0;
200 235
201 virtual void StartTransaction(TransactionType type) = 0; 236 virtual uint32_t GetDatabaseVersion(DatabaseManager& manager) = 0;
202
203 virtual void RollbackTransaction() = 0;
204
205 virtual void CommitTransaction() = 0;
206
207 virtual uint32_t GetDatabaseVersion() = 0;
208 237
209 /** 238 /**
210 * Upgrade the database to the specified version of the database 239 * Upgrade the database to the specified version of the database
211 * schema. The upgrade script is allowed to make calls to 240 * schema. The upgrade script is allowed to make calls to
212 * OrthancPluginReconstructMainDicomTags(). 241 * OrthancPluginReconstructMainDicomTags().
213 **/ 242 **/
214 virtual void UpgradeDatabase(uint32_t targetVersion, 243 virtual void UpgradeDatabase(DatabaseManager& manager,
244 uint32_t targetVersion,
215 OrthancPluginStorageArea* storageArea) = 0; 245 OrthancPluginStorageArea* storageArea) = 0;
216 246
217 virtual void ClearMainDicomTags(int64_t internalId) = 0; 247 virtual void ClearMainDicomTags(DatabaseManager& manager,
248 int64_t internalId) = 0;
218 249
219 virtual bool HasCreateInstance() const = 0; 250 virtual bool HasCreateInstance() const = 0;
220 251
221 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 252 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
222 virtual void LookupResources(IDatabaseBackendOutput& output, 253 virtual void LookupResources(IDatabaseBackendOutput& output,
254 DatabaseManager& manager,
223 const std::vector<Orthanc::DatabaseConstraint>& lookup, 255 const std::vector<Orthanc::DatabaseConstraint>& lookup,
224 OrthancPluginResourceType queryLevel, 256 OrthancPluginResourceType queryLevel,
225 uint32_t limit, 257 uint32_t limit,
226 bool requestSomeInstance) = 0; 258 bool requestSomeInstance) = 0;
227 #endif 259 #endif
228 260
229 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 261 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
230 virtual void CreateInstance(OrthancPluginCreateInstanceResult& result, 262 virtual void CreateInstance(OrthancPluginCreateInstanceResult& result,
263 DatabaseManager& manager,
231 const char* hashPatient, 264 const char* hashPatient,
232 const char* hashStudy, 265 const char* hashStudy,
233 const char* hashSeries, 266 const char* hashSeries,
234 const char* hashInstance) = 0; 267 const char* hashInstance) = 0;
235 #endif 268 #endif
236 269
237 270
238 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 271 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
239 virtual void SetResourcesContent( 272 virtual void SetResourcesContent(
273 DatabaseManager& manager,
240 uint32_t countIdentifierTags, 274 uint32_t countIdentifierTags,
241 const OrthancPluginResourcesContentTags* identifierTags, 275 const OrthancPluginResourcesContentTags* identifierTags,
242 uint32_t countMainDicomTags, 276 uint32_t countMainDicomTags,
243 const OrthancPluginResourcesContentTags* mainDicomTags, 277 const OrthancPluginResourcesContentTags* mainDicomTags,
244 uint32_t countMetadata, 278 uint32_t countMetadata,
245 const OrthancPluginResourcesContentMetadata* metadata) = 0; 279 const OrthancPluginResourcesContentMetadata* metadata) = 0;
246 #endif 280 #endif
247 281
248 282
249 virtual void GetChildrenMetadata(std::list<std::string>& target, 283 virtual void GetChildrenMetadata(std::list<std::string>& target,
284 DatabaseManager& manager,
250 int64_t resourceId, 285 int64_t resourceId,
251 int32_t metadata) = 0; 286 int32_t metadata) = 0;
252 287
253 virtual int64_t GetLastChangeIndex() = 0; 288 virtual int64_t GetLastChangeIndex(DatabaseManager& manager) = 0;
254 289
255 virtual void TagMostRecentPatient(int64_t patientId) = 0; 290 virtual void TagMostRecentPatient(DatabaseManager& manager,
291 int64_t patientId) = 0;
256 292
257 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 293 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1
258 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) 294 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
259 // NB: "parentPublicId" must be cleared if the resource has no parent 295 // NB: "parentPublicId" must be cleared if the resource has no parent
260 virtual bool LookupResourceAndParent(int64_t& id, 296 virtual bool LookupResourceAndParent(int64_t& id,
261 OrthancPluginResourceType& type, 297 OrthancPluginResourceType& type,
262 std::string& parentPublicId, 298 std::string& parentPublicId,
299 DatabaseManager& manager,
263 const char* publicId) = 0; 300 const char* publicId) = 0;
264 # endif 301 # endif
265 #endif 302 #endif
266 303
267 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 304 #if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1
268 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4) 305 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 4)
269 virtual void GetAllMetadata(std::map<int32_t, std::string>& result, 306 virtual void GetAllMetadata(std::map<int32_t, std::string>& result,
307 DatabaseManager& manager,
270 int64_t id) = 0; 308 int64_t id) = 0;
271 # endif 309 # endif
272 #endif 310 #endif
273 }; 311 };
274 } 312 }