* @brief Return one session's metadata + tags. */
| 400 | * @brief Return one session's metadata + tags. |
| 401 | */ |
| 402 | API::CommandResponse API::Handlers::SessionsHandler::get(const QString& id, |
| 403 | const QJsonObject& params) |
| 404 | { |
| 405 | if (!params.contains(QStringLiteral("sessionId"))) |
| 406 | return CommandResponse::makeError( |
| 407 | id, ErrorCode::MissingParam, QStringLiteral("Missing required parameter: sessionId")); |
| 408 | |
| 409 | const int sessionId = params.value(QStringLiteral("sessionId")).toInt(); |
| 410 | auto& db = Sessions::DatabaseManager::instance(); |
| 411 | if (!db.isOpen()) |
| 412 | return CommandResponse::makeError( |
| 413 | id, |
| 414 | ErrorCode::ExecutionError, |
| 415 | QStringLiteral("No database open. Call sessions.openDatabase first.")); |
| 416 | |
| 417 | const auto meta = db.sessionMetadata(sessionId); |
| 418 | if (meta.isEmpty()) |
| 419 | return CommandResponse::makeError( |
| 420 | id, ErrorCode::InvalidParam, QStringLiteral("Session not found: %1").arg(sessionId)); |
| 421 | |
| 422 | QJsonObject result; |
| 423 | result[QStringLiteral("sessionId")] = sessionId; |
| 424 | result[QStringLiteral("metadata")] = QJsonObject::fromVariantMap(meta); |
| 425 | result[QStringLiteral("tags")] = QJsonArray::fromVariantList(db.tagsForSession(sessionId)); |
| 426 | return CommandResponse::makeSuccess(id, result); |
| 427 | } |
| 428 | |
| 429 | /** |
| 430 | * @brief Delete a stored session by id. |
nothing calls this directly
no test coverage detected