Mercurial > hg > orthanc
comparison OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp @ 5589:b51ee994cd6f find-refactoring
renamed FindResponse::Item as FindResponse::Resource
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 03 May 2024 17:26:06 +0200 |
parents | 1b0fc6685f57 |
children | 8b32213af23e |
comparison
equal
deleted
inserted
replaced
5588:1b0fc6685f57 | 5589:b51ee994cd6f |
---|---|
1171 SQLite::Statement statement(db_, SQLITE_FROM_HERE_DYNAMIC(sqlLookup), sqlLookup); | 1171 SQLite::Statement statement(db_, SQLITE_FROM_HERE_DYNAMIC(sqlLookup), sqlLookup); |
1172 formatter.Bind(statement); | 1172 formatter.Bind(statement); |
1173 | 1173 |
1174 while (statement.Step()) | 1174 while (statement.Step()) |
1175 { | 1175 { |
1176 response.Add(new FindResponse::Item(request.GetLevel(), statement.ColumnString(0))); | 1176 response.Add(new FindResponse::Resource(request.GetLevel(), statement.ColumnString(0))); |
1177 } | 1177 } |
1178 } | 1178 } |
1179 else | 1179 else |
1180 { | 1180 { |
1181 { | 1181 { |
1193 formatter.Bind(statement); | 1193 formatter.Bind(statement); |
1194 | 1194 |
1195 while (statement.Step()) | 1195 while (statement.Step()) |
1196 { | 1196 { |
1197 const std::string resourceId = statement.ColumnString(0); | 1197 const std::string resourceId = statement.ColumnString(0); |
1198 response.Add(new FindResponse::Item(request.GetLevel(), resourceId)); | 1198 response.Add(new FindResponse::Resource(request.GetLevel(), resourceId)); |
1199 } | 1199 } |
1200 } | 1200 } |
1201 | 1201 |
1202 // request Each response content through INNER JOIN with the temporary table | 1202 // request Each response content through INNER JOIN with the temporary table |
1203 if (request.HasResponseContent(FindRequest::ResponseContent_MainDicomTags)) | 1203 if (request.HasResponseContent(FindRequest::ResponseContent_MainDicomTags)) |
1209 formatter.Bind(statement); | 1209 formatter.Bind(statement); |
1210 | 1210 |
1211 while (statement.Step()) | 1211 while (statement.Step()) |
1212 { | 1212 { |
1213 const std::string& resourceId = statement.ColumnString(0); | 1213 const std::string& resourceId = statement.ColumnString(0); |
1214 assert(response.HasItem(resourceId)); | 1214 assert(response.HasResource(resourceId)); |
1215 response.GetItem(resourceId).AddStringDicomTag(request.GetLevel(), | 1215 response.GetResource(resourceId).AddStringDicomTag(request.GetLevel(), |
1216 statement.ColumnInt(1), | 1216 statement.ColumnInt(1), |
1217 statement.ColumnInt(2), | 1217 statement.ColumnInt(2), |
1218 statement.ColumnString(3)); | 1218 statement.ColumnString(3)); |
1219 } | 1219 } |
1220 } | 1220 } |
1221 | 1221 |
1222 if (request.HasResponseContent(FindRequest::ResponseContent_Children)) | 1222 if (request.HasResponseContent(FindRequest::ResponseContent_Children)) |
1223 { | 1223 { |
1224 SQLite::Statement statement(db_, SQLITE_FROM_HERE, | 1224 SQLite::Statement statement(db_, SQLITE_FROM_HERE, |
1225 "SELECT filtered.publicId, childLevel.publicId AS childPublicId " | 1225 "SELECT filtered.publicId, childLevel.publicId AS childPublicId " |
1226 "FROM Resources as currentLevel " | 1226 "FROM Resources as currentLevel " |
1227 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = currentLevel.internalId " | 1227 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = currentLevel.internalId " |
1228 " INNER JOIN Resources childLevel ON childLevel.parentId = currentLevel.internalId"); | 1228 " INNER JOIN Resources childLevel ON childLevel.parentId = currentLevel.internalId"); |
1229 formatter.Bind(statement); | 1229 formatter.Bind(statement); |
1230 | 1230 |
1231 while (statement.Step()) | 1231 while (statement.Step()) |
1232 { | 1232 { |
1233 const std::string& resourceId = statement.ColumnString(0); | 1233 const std::string& resourceId = statement.ColumnString(0); |
1234 assert(response.HasItem(resourceId)); | 1234 assert(response.HasResource(resourceId)); |
1235 response.GetItem(resourceId).AddChildIdentifier(GetChildResourceType(request.GetLevel()), statement.ColumnString(1)); | 1235 response.GetResource(resourceId).AddChildIdentifier(GetChildResourceType(request.GetLevel()), statement.ColumnString(1)); |
1236 } | 1236 } |
1237 } | 1237 } |
1238 | 1238 |
1239 if (request.HasResponseContent(FindRequest::ResponseContent_Parent)) | 1239 if (request.HasResponseContent(FindRequest::ResponseContent_Parent)) |
1240 { | 1240 { |
1241 SQLite::Statement statement(db_, SQLITE_FROM_HERE, | 1241 SQLite::Statement statement(db_, SQLITE_FROM_HERE, |
1242 "SELECT filtered.publicId, parentLevel.publicId AS parentPublicId " | 1242 "SELECT filtered.publicId, parentLevel.publicId AS parentPublicId " |
1243 "FROM Resources as currentLevel " | 1243 "FROM Resources as currentLevel " |
1244 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = currentLevel.internalId " | 1244 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = currentLevel.internalId " |
1245 " INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId"); | 1245 " INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId"); |
1246 | 1246 |
1247 while (statement.Step()) | 1247 while (statement.Step()) |
1248 { | 1248 { |
1249 const std::string& resourceId = statement.ColumnString(0); | 1249 const std::string& resourceId = statement.ColumnString(0); |
1250 const std::string& parentId = statement.ColumnString(1); | 1250 const std::string& parentId = statement.ColumnString(1); |
1251 assert(response.HasItem(resourceId)); | 1251 assert(response.HasResource(resourceId)); |
1252 response.GetItem(resourceId).SetParentIdentifier(parentId); | 1252 response.GetResource(resourceId).SetParentIdentifier(parentId); |
1253 } | 1253 } |
1254 } | 1254 } |
1255 | 1255 |
1256 if (request.HasResponseContent(FindRequest::ResponseContent_Metadata)) | 1256 if (request.HasResponseContent(FindRequest::ResponseContent_Metadata)) |
1257 { | 1257 { |
1258 SQLite::Statement statement(db_, SQLITE_FROM_HERE, | 1258 SQLite::Statement statement(db_, SQLITE_FROM_HERE, |
1259 "SELECT filtered.publicId, metadata.type, metadata.value " | 1259 "SELECT filtered.publicId, metadata.type, metadata.value " |
1260 "FROM Metadata " | 1260 "FROM Metadata " |
1261 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = Metadata.id"); | 1261 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = Metadata.id"); |
1262 | 1262 |
1263 while (statement.Step()) | 1263 while (statement.Step()) |
1264 { | 1264 { |
1265 const std::string& resourceId = statement.ColumnString(0); | 1265 const std::string& resourceId = statement.ColumnString(0); |
1266 assert(response.HasItem(resourceId)); | 1266 assert(response.HasResource(resourceId)); |
1267 response.GetItem(resourceId).AddMetadata(static_cast<MetadataType>(statement.ColumnInt(1)), | 1267 response.GetResource(resourceId).AddMetadata(static_cast<MetadataType>(statement.ColumnInt(1)), |
1268 statement.ColumnString(2)); | 1268 statement.ColumnString(2)); |
1269 } | 1269 } |
1270 } | 1270 } |
1271 | 1271 |
1272 if (request.HasResponseContent(FindRequest::ResponseContent_Labels)) | 1272 if (request.HasResponseContent(FindRequest::ResponseContent_Labels)) |
1273 { | 1273 { |
1274 SQLite::Statement statement(db_, SQLITE_FROM_HERE, | 1274 SQLite::Statement statement(db_, SQLITE_FROM_HERE, |
1275 "SELECT filtered.publicId, label " | 1275 "SELECT filtered.publicId, label " |
1276 "FROM Labels " | 1276 "FROM Labels " |
1277 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = Labels.id"); | 1277 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = Labels.id"); |
1278 | 1278 |
1279 while (statement.Step()) | 1279 while (statement.Step()) |
1280 { | 1280 { |
1281 const std::string& resourceId = statement.ColumnString(0); | 1281 const std::string& resourceId = statement.ColumnString(0); |
1282 assert(response.HasItem(resourceId)); | 1282 assert(response.HasResource(resourceId)); |
1283 response.GetItem(resourceId).AddLabel(statement.ColumnString(1)); | 1283 response.GetResource(resourceId).AddLabel(statement.ColumnString(1)); |
1284 } | 1284 } |
1285 } | 1285 } |
1286 | 1286 |
1287 if (request.HasResponseContent(FindRequest::ResponseContent_Attachments)) | 1287 if (request.HasResponseContent(FindRequest::ResponseContent_Attachments)) |
1288 { | 1288 { |
1289 SQLite::Statement statement(db_, SQLITE_FROM_HERE, | 1289 SQLite::Statement statement(db_, SQLITE_FROM_HERE, |
1290 "SELECT filtered.publicId, uuid, fileType, uncompressedSize, compressionType, compressedSize, " | 1290 "SELECT filtered.publicId, uuid, fileType, uncompressedSize, compressionType, compressedSize, " |
1291 " uncompressedMD5, compressedMD5 " | 1291 " uncompressedMD5, compressedMD5 " |
1292 "FROM AttachedFiles " | 1292 "FROM AttachedFiles " |
1293 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = AttachedFiles.id"); | 1293 " INNER JOIN FilteredResourcesIds filtered ON filtered.internalId = AttachedFiles.id"); |
1294 | 1294 |
1295 while (statement.Step()) | 1295 while (statement.Step()) |
1296 { | 1296 { |
1297 const std::string& resourceId = statement.ColumnString(0); | 1297 const std::string& resourceId = statement.ColumnString(0); |
1298 FileInfo attachment = FileInfo(statement.ColumnString(1), | 1298 FileInfo attachment = FileInfo(statement.ColumnString(1), |
1301 statement.ColumnString(6), | 1301 statement.ColumnString(6), |
1302 static_cast<CompressionType>(statement.ColumnInt(4)), | 1302 static_cast<CompressionType>(statement.ColumnInt(4)), |
1303 statement.ColumnInt64(5), | 1303 statement.ColumnInt64(5), |
1304 statement.ColumnString(7)); | 1304 statement.ColumnString(7)); |
1305 | 1305 |
1306 assert(response.HasItem(resourceId)); | 1306 assert(response.HasResource(resourceId)); |
1307 response.GetItem(resourceId).AddAttachment(attachment); | 1307 response.GetResource(resourceId).AddAttachment(attachment); |
1308 }; | 1308 }; |
1309 } | 1309 } |
1310 | 1310 |
1311 // TODO-FIND: implement other responseContent: ResponseContent_ChildInstanceId, ResponseContent_ChildrenMetadata (later: ResponseContent_IsStable) | 1311 // TODO-FIND: implement other responseContent: ResponseContent_ChildInstanceId, ResponseContent_ChildrenMetadata (later: ResponseContent_IsStable) |
1312 | 1312 |