From 9d00a878516a7dab494ac577c00bf851925261f7 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Mon, 16 Dec 2024 14:54:59 -0600 Subject: [PATCH] fix encrypt provider start --- .../providers/encrypt/encrypt_provider.cpp | 45 +++++++++---------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp b/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp index eae03073..354e1a88 100644 --- a/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp +++ b/repertory/librepertory/src/providers/encrypt/encrypt_provider.cpp @@ -1042,46 +1042,41 @@ auto encrypt_provider::start(api_item_added_callback /*api_item_added*/, sql_create_tables); auto cfg = config_.get_encrypt_config(); + auto cfg_path = utils::path::absolute(cfg.path); - std::string source_path; auto result = utils::db::sqlite::db_select{*db_, file_table} .column("source_path") - .where("api_path") - .equals("/") + .where("source_path") + .equals(cfg_path) .and_() .where("directory") .equals(1) .go(); std::optional row; if (result.get_row(row) && row.has_value()) { - source_path = row->get_column("source_path").get_value(); + auto cur_path = utils::path::absolute( + row->get_column("source_path").get_value()); +#if defined(_WIN32) + if (utils::string::to_lower(cur_path) != + utils::string::to_lower(cfg_path)) { +#else //! defined(_WIN32) + if (cur_path != cfg_path) { +#endif // defined(_WIN32) + throw startup_exception(fmt::print( + "source path has changed|cur|{}|cfg|{}", cur_path, cfg.path)); + } } else { - // TODO error handling auto ins_res = utils::db::sqlite::db_insert{*db_, file_table} .column_value("api_path", "/") .column_value("data", "") .column_value("directory", 1) - .column_value("source_path", cfg.path) - .go(); - source_path = cfg.path; - } - - result = utils::db::sqlite::db_select{*db_, file_table} - .column("api_path") - .where("source_path") - .equals(source_path) - .and_() - .where("directory") - .equals(1) - .go(); - if (not result.has_row()) { - // TODO error handling - auto ins_res = utils::db::sqlite::db_insert{*db_, file_table} - .column_value("api_path", "/") - .column_value("data", "") - .column_value("directory", 1) - .column_value("source_path", source_path) + .column_value("source_path", cfg_path) .go(); + if (not ins_res.ok()) { + throw startup_exception(fmt::print("failed to create root|{}|{}", + ins_res.get_error(), + ins_res.get_error_str())); + } } polling::instance().set_callback({