diff --git a/src/db_client.cpp b/src/db_client.cpp index 8874bc4..0ab83d1 100644 --- a/src/db_client.cpp +++ b/src/db_client.cpp @@ -211,9 +211,28 @@ JobStatusType Connection::get_job_status(std::string job) { } -JobStatusType Connection::get_task_status(db::uuid_t) { - std::cout << "JOB STATUS called, implement me pls" << std::endl; - return JobStatusType::IN_PROGRESS; +JobStatusType Connection::get_task_status(db::uuid_t task) { + + auto get_task_status_lambda = [](pqxx::work *txn, db::uuid_t *task, db::JobStatusType *status){ + auto res = txn->exec_params("SELECT part_status FROM artifacts WHERE id = $1 LIMIT 1;", *task); + + if (res.size() < 1) { + *status = db::JobStatusType::UNKNOWN; + } else { + *status = res[0]["part_status"].as(); + } + }; + + std::function get_task_status_func = get_task_status_lambda; + + db::JobStatusType status; + + if (!this->send_request(&get_task_status_func, &task, &status)) { + std::cerr << "Error: Status for task " << db::to_string(task) << " could not be fetched, returning unknown." << std::endl; + return db::JobStatusType::UNKNOWN; + } + + return status; } }