* @brief Queries session metadata, columns, tags, and per-dataset stats. */
| 234 | * @brief Queries session metadata, columns, tags, and per-dataset stats. |
| 235 | */ |
| 236 | Sessions::ReportData Sessions::ReportData::buildFromSession(QSqlDatabase& db, |
| 237 | int sessionId, |
| 238 | const QSet<int>& selectedUniqueIds) |
| 239 | { |
| 240 | ReportData out; |
| 241 | out.valid = false; |
| 242 | out.sessionId = sessionId; |
| 243 | out.durationMs = 0; |
| 244 | out.frameCount = 0; |
| 245 | |
| 246 | if (!db.isOpen() || sessionId < 0) |
| 247 | return out; |
| 248 | |
| 249 | if (!loadSessionHeader(db, sessionId, out)) |
| 250 | return out; |
| 251 | |
| 252 | std::vector<DatasetStats> datasets; |
| 253 | if (!loadDatasetSkeleton(db, sessionId, datasets, selectedUniqueIds)) |
| 254 | return out; |
| 255 | |
| 256 | if (!loadNumericAggregates(db, sessionId, datasets)) |
| 257 | return out; |
| 258 | |
| 259 | loadStringSampleCounts(db, sessionId, datasets); |
| 260 | loadEdgeValues(db, sessionId, datasets, true); |
| 261 | loadEdgeValues(db, sessionId, datasets, false); |
| 262 | loadSessionTags(db, sessionId, out); |
| 263 | |
| 264 | out.datasets = std::move(datasets); |
| 265 | out.valid = true; |
| 266 | return out; |
| 267 | } |
| 268 | |
| 269 | //-------------------------------------------------------------------------------------------------- |
| 270 | // loadChartSeries |
nothing calls this directly
no test coverage detected