From 2493a16828ea8c2adf64c6c1dce33344e4f14792 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Mon, 9 Dec 2024 09:39:34 -0600 Subject: [PATCH] file mgr db unit tests and fixes --- .../librepertory/src/db/rdb_file_mgr_db.cpp | 47 +++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/repertory/librepertory/src/db/rdb_file_mgr_db.cpp b/repertory/librepertory/src/db/rdb_file_mgr_db.cpp index 6b889834..0aef2713 100644 --- a/repertory/librepertory/src/db/rdb_file_mgr_db.cpp +++ b/repertory/librepertory/src/db/rdb_file_mgr_db.cpp @@ -33,8 +33,8 @@ namespace { [[nodiscard]] auto create_rocksdb(const repertory::app_config &cfg, const std::string &name, const std::vector &families, - std::vector &handles, - bool clear) -> std::unique_ptr { + std::vector &handles, bool clear) + -> std::unique_ptr { REPERTORY_USES_FUNCTION_NAME(); auto path = repertory::utils::path::combine(cfg.get_data_directory(), {name}); @@ -126,11 +126,26 @@ auto rdb_file_mgr_db::create_iterator(rocksdb::ColumnFamilyHandle *family) const db_->NewIterator(rocksdb::ReadOptions(), family)); } -auto rdb_file_mgr_db::get_next_upload() const -> std::optional {} +auto rdb_file_mgr_db::get_next_upload() const -> std::optional { + auto iter = create_iterator(upload_family_); + for (iter->SeekToFirst(); iter->Valid(); iter->Next()) { + auto parts = utils::string::split(iter->key().ToString(), '|', false); + parts.erase(parts.begin()); + + auto api_path = utils::string::join(parts, '|'); + + auto data = json::parse(iter->value().ToString()); + return upload_entry{ + api_path, + data.at("date_time").get(), + data.at("source_path").get(), + }; + } + + return std::nullopt; +} auto rdb_file_mgr_db::get_resume_list() const -> std::vector { - REPERTORY_USES_FUNCTION_NAME(); - std::vector ret; auto iter = create_iterator(resume_family_); @@ -150,9 +165,7 @@ auto rdb_file_mgr_db::get_resume_list() const -> std::vector { auto rdb_file_mgr_db::get_upload(const std::string &api_path) const -> std::optional { - REPERTORY_USES_FUNCTION_NAME(); auto iter = create_iterator(upload_family_); - for (iter->SeekToFirst(); iter->Valid(); iter->Next()) { auto parts = utils::string::split(iter->key().ToString(), '|', false); parts.erase(parts.begin()); @@ -194,7 +207,25 @@ auto rdb_file_mgr_db::remove_resume(const std::string &api_path) -> bool { }); } -auto rdb_file_mgr_db::remove_upload(const std::string &api_path) -> bool {} +auto rdb_file_mgr_db::remove_upload(const std::string &api_path) -> bool { + REPERTORY_USES_FUNCTION_NAME(); + + auto iter = create_iterator(upload_family_); + for (iter->SeekToFirst(); iter->Valid(); iter->Next()) { + auto parts = utils::string::split(iter->key().ToString(), '|', false); + parts.erase(parts.begin()); + + if (api_path != utils::string::join(parts, '|')) { + continue; + } + + return perform_action(function_name, []() -> rocksdb::Status { + return db_->Delete(rocksdb::WriteOptions{}, iter->key()); + }); + } + + return false; +} auto rdb_file_mgr_db::remove_upload_active(const std::string &api_path) -> bool {}