This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#include "mission/mission_queue.hpp"
|
||||
|
||||
#include "util/file_util.hpp"
|
||||
#include "storage/database.hpp"
|
||||
#include "util/id_util.hpp"
|
||||
|
||||
#include <chrono>
|
||||
@@ -40,7 +40,7 @@ double paramNumber(const nlohmann::json& params, const std::string& key, double
|
||||
|
||||
} // namespace
|
||||
|
||||
MissionQueue::MissionQueue(std::filesystem::path queue_path) : queue_path_(std::move(queue_path))
|
||||
MissionQueue::MissionQueue(Database& db) : db_(db)
|
||||
{
|
||||
load();
|
||||
ensureRunnerDefaults();
|
||||
@@ -60,22 +60,15 @@ void MissionQueue::load()
|
||||
std::lock_guard<std::recursive_mutex> lock(mu_);
|
||||
queue_ = nlohmann::json::array();
|
||||
runner_ = nlohmann::json::object();
|
||||
if (!std::filesystem::exists(queue_path_))
|
||||
nlohmann::json parsed;
|
||||
if (!db_.getDocument("mission_queue", parsed))
|
||||
return;
|
||||
try
|
||||
if (parsed.is_object())
|
||||
{
|
||||
const auto parsed = nlohmann::json::parse(FileUtil::readBinary(queue_path_));
|
||||
if (parsed.is_object())
|
||||
{
|
||||
if (parsed.contains("queue") && parsed["queue"].is_array())
|
||||
queue_ = parsed["queue"];
|
||||
if (parsed.contains("runner") && parsed["runner"].is_object())
|
||||
runner_ = parsed["runner"];
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
queue_ = nlohmann::json::array();
|
||||
if (parsed.contains("queue") && parsed["queue"].is_array())
|
||||
queue_ = parsed["queue"];
|
||||
if (parsed.contains("runner") && parsed["runner"].is_object())
|
||||
runner_ = parsed["runner"];
|
||||
}
|
||||
ensureRunnerDefaults();
|
||||
}
|
||||
@@ -83,7 +76,7 @@ void MissionQueue::load()
|
||||
void MissionQueue::saveUnlocked() const
|
||||
{
|
||||
const nlohmann::json payload = {{"queue", queue_}, {"runner", runner_}};
|
||||
FileUtil::writeBinaryAtomic(queue_path_, payload.dump(2));
|
||||
db_.setDocument("mission_queue", payload);
|
||||
}
|
||||
|
||||
void MissionQueue::ensureRunnerDefaults()
|
||||
|
||||
Reference in New Issue
Block a user