* @brief Resolves the dataset that a transform-apply call should target. */
| 1049 | * @brief Resolves the dataset that a transform-apply call should target. |
| 1050 | */ |
| 1051 | static QJsonObject scriptTargetDataset(const QJsonObject& args) |
| 1052 | { |
| 1053 | if (args.contains(QStringLiteral("groupId")) && args.contains(Keys::DatasetId)) { |
| 1054 | QJsonObject dataset; |
| 1055 | dataset[QStringLiteral("groupId")] = args.value(QStringLiteral("groupId")).toInt(); |
| 1056 | dataset[Keys::DatasetId] = args.value(Keys::DatasetId).toInt(); |
| 1057 | QJsonObject out; |
| 1058 | out[QStringLiteral("ok")] = true; |
| 1059 | out[QStringLiteral("dataset")] = dataset; |
| 1060 | return out; |
| 1061 | } |
| 1062 | |
| 1063 | QJsonObject dsArgs; |
| 1064 | if (args.contains(Keys::UniqueId)) |
| 1065 | dsArgs[Keys::UniqueId] = args.value(Keys::UniqueId).toInt(); |
| 1066 | |
| 1067 | if (!args.value(QStringLiteral("dataset")).toString().isEmpty()) { |
| 1068 | const auto datasetName = args.value(QStringLiteral("dataset")).toString(); |
| 1069 | if (datasetName.contains(QLatin1Char('/'))) |
| 1070 | dsArgs[QStringLiteral("path")] = datasetName; |
| 1071 | else |
| 1072 | dsArgs[QStringLiteral("title")] = datasetName; |
| 1073 | } |
| 1074 | if (args.contains(QStringLiteral("groupId"))) |
| 1075 | dsArgs[QStringLiteral("groupId")] = args.value(QStringLiteral("groupId")).toInt(); |
| 1076 | |
| 1077 | if (dsArgs.isEmpty()) { |
| 1078 | QJsonObject out; |
| 1079 | out[QStringLiteral("ok")] = false; |
| 1080 | out[QStringLiteral("error")] = QStringLiteral("missing_dataset_target"); |
| 1081 | out[QStringLiteral("hint")] = |
| 1082 | QStringLiteral("Pass groupId+datasetId, dataset path/title, or uniqueId."); |
| 1083 | return out; |
| 1084 | } |
| 1085 | |
| 1086 | return resolveDataset(dsArgs); |
| 1087 | } |
| 1088 | |
| 1089 | /** |
| 1090 | * @brief Picks the frame-parser dry-run command and seeds its inputs. |
no test coverage detected