comparison OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp @ 5586:fc3914c07dd3 find-refactoring

refactoring FindResponse
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 03 May 2024 17:02:02 +0200
parents 74cc31c8db2b
children 1b0fc6685f57
comparison
equal deleted inserted replaced
5583:74cc31c8db2b 5586:fc3914c07dd3
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 OrthancIdentifiers id; 1176 response.Add(new FindResponse::Item(request.GetLevel(), statement.ColumnString(0)));
1177 id.SetLevel(request.GetLevel(), statement.ColumnString(0));
1178
1179 FindResponse::Item* item = new FindResponse::Item(id);
1180 response.Add(item);
1181 } 1177 }
1182 } 1178 }
1183 else 1179 else
1184 { 1180 {
1185 std::map<std::string, FindResponse::Item*> items; // cache to the response items 1181 std::map<std::string, FindResponse::Item*> items; // cache to the response items
1199 1195
1200 while (statement.Step()) 1196 while (statement.Step())
1201 { 1197 {
1202 const std::string resourceId = statement.ColumnString(0); 1198 const std::string resourceId = statement.ColumnString(0);
1203 1199
1204 OrthancIdentifiers id; 1200 FindResponse::Item* item = new FindResponse::Item(request.GetLevel(), resourceId);
1205 id.SetLevel(request.GetLevel(), resourceId);
1206
1207 FindResponse::Item* item = new FindResponse::Item(id);
1208 items[resourceId] = item; 1201 items[resourceId] = item;
1209 response.Add(item); 1202 response.Add(item);
1210 } 1203 }
1211 } 1204 }
1212 1205
1220 formatter.Bind(statement); 1213 formatter.Bind(statement);
1221 1214
1222 while (statement.Step()) 1215 while (statement.Step())
1223 { 1216 {
1224 const std::string& resourceId = statement.ColumnString(0); 1217 const std::string& resourceId = statement.ColumnString(0);
1225 items[resourceId]->AddDicomTag(statement.ColumnInt(1), 1218 items[resourceId]->AddStringDicomTag(request.GetLevel(),
1226 statement.ColumnInt(2), 1219 statement.ColumnInt(1),
1227 statement.ColumnString(3), false); 1220 statement.ColumnInt(2),
1221 statement.ColumnString(3));
1228 } 1222 }
1229 } 1223 }
1230 1224
1231 if (request.HasResponseContent(FindRequest::ResponseContent_Children)) 1225 if (request.HasResponseContent(FindRequest::ResponseContent_Children))
1232 { 1226 {
1238 formatter.Bind(statement); 1232 formatter.Bind(statement);
1239 1233
1240 while (statement.Step()) 1234 while (statement.Step())
1241 { 1235 {
1242 const std::string& resourceId = statement.ColumnString(0); 1236 const std::string& resourceId = statement.ColumnString(0);
1243 items[resourceId]->AddChild(statement.ColumnString(1)); 1237 items[resourceId]->AddChildIdentifier(GetChildResourceType(request.GetLevel()), statement.ColumnString(1));
1244 } 1238 }
1245 } 1239 }
1246 1240
1247 if (request.HasResponseContent(FindRequest::ResponseContent_Parent)) 1241 if (request.HasResponseContent(FindRequest::ResponseContent_Parent))
1248 { 1242 {
1253 " INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId"); 1247 " INNER JOIN Resources parentLevel ON currentLevel.parentId = parentLevel.internalId");
1254 1248
1255 while (statement.Step()) 1249 while (statement.Step())
1256 { 1250 {
1257 const std::string& resourceId = statement.ColumnString(0); 1251 const std::string& resourceId = statement.ColumnString(0);
1258 items[resourceId]->SetIdentifier(GetParentResourceType(request.GetLevel()), statement.ColumnString(1)); 1252 const std::string& parentId = statement.ColumnString(1);
1253 items[resourceId]->SetParentIdentifier(parentId);
1259 } 1254 }
1260 } 1255 }
1261 1256
1262 if (request.HasResponseContent(FindRequest::ResponseContent_Metadata)) 1257 if (request.HasResponseContent(FindRequest::ResponseContent_Metadata))
1263 { 1258 {