MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / datasetSetVirtual

Method datasetSetVirtual

app/src/API/Handlers/ProjectHandler.cpp:2360–2408  ·  view source on GitHub ↗

* @brief Toggle the @c virtual_ flag on the dataset identified by (groupId, datasetId). */

Source from the content-addressed store, hash-verified

2358 * @brief Toggle the @c virtual_ flag on the dataset identified by (groupId, datasetId).
2359 */
2360API::CommandResponse API::Handlers::ProjectHandler::datasetSetVirtual(const QString& id,
2361 const QJsonObject& params)
2362{
2363 const QStringList required{
2364 QString(Keys::GroupId),
2365 QString(Keys::DatasetId),
2366 QString(Keys::Virtual),
2367 };
2368
2369 for (const auto& key : required)
2370 if (!params.contains(key))
2371 return CommandResponse::makeError(
2372 id, ErrorCode::MissingParam, QStringLiteral("Missing required parameter: %1").arg(key));
2373
2374 const int groupId = params.value(Keys::GroupId).toInt();
2375 const int datasetId = params.value(Keys::DatasetId).toInt();
2376 const bool isVirt = params.value(Keys::Virtual).toBool();
2377
2378 auto& pm = DataModel::ProjectModel::instance();
2379 const auto& groups = pm.groups();
2380 const auto git = std::find_if(
2381 groups.begin(), groups.end(), [groupId](const auto& g) { return g.groupId == groupId; });
2382
2383 if (git == groups.end())
2384 return CommandResponse::makeError(
2385 id, ErrorCode::InvalidParam, QStringLiteral("Group id not found: %1").arg(groupId));
2386
2387 const auto& datasets = git->datasets;
2388 const auto dit = std::find_if(datasets.begin(), datasets.end(), [datasetId](const auto& d) {
2389 return d.datasetId == datasetId;
2390 });
2391
2392 if (dit == datasets.end())
2393 return CommandResponse::makeError(id,
2394 ErrorCode::InvalidParam,
2395 QStringLiteral("Dataset id not found in group: %1/%2")
2396 .arg(QString::number(groupId), QString::number(datasetId)));
2397
2398 DataModel::Dataset updated = *dit;
2399 updated.virtual_ = isVirt;
2400 pm.updateDataset(groupId, datasetId, updated, true);
2401
2402 QJsonObject result;
2403 result[Keys::GroupId] = groupId;
2404 result[Keys::DatasetId] = datasetId;
2405 result[Keys::Virtual] = isVirt;
2406 result[QStringLiteral("updated")] = true;
2407 return CommandResponse::makeSuccess(id, result);
2408}
2409
2410/**
2411 * @brief Set the per-dataset transform code (Lua or JS; language matches the dataset's owning

Callers

nothing calls this directly

Calls 4

beginMethod · 0.80
updateDatasetMethod · 0.80
containsMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected