diff --git a/backend/src/builtin-cli.cpp b/backend/src/builtin-cli.cpp index 0396a82..5761b28 100644 --- a/backend/src/builtin-cli.cpp +++ b/backend/src/builtin-cli.cpp @@ -117,6 +117,7 @@ void BookStoreMain(bool is_server, std::string config_dir) { std::getline(std::cin, cmd); auto ret = std::move( engine.Execute(cmd, session_map[session_token].login_stack)); + if(ret.empty()) ret.push_back("[empty]"); std::cout << session_token << ' ' << operation_token << " " << ret.size() << std::endl; for (auto &line : ret) std::cout << line << std::endl; diff --git a/backend/src/engine.cpp b/backend/src/engine.cpp index 9916ba4..6f7cc8a 100644 --- a/backend/src/engine.cpp +++ b/backend/src/engine.cpp @@ -61,14 +61,12 @@ std::vector BookStoreEngineClass::Execute( login_stack.pop(); } if (!is_server) BookStore_ZYM::shut_down = true; - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } if (operation_map.find(head) == operation_map.end()) { for (int i = 0; i < cmd.length(); i++) if (cmd[i] != ' ') return std::vector({"Invalid"}); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } if (!login_stack.empty()) log_data_base.AddOperationRecord(login_stack.top().first, cmd, @@ -77,79 +75,51 @@ std::vector BookStoreEngineClass::Execute( log_data_base.AddOperationRecord("[nobody]", cmd, user_data_base); switch (operation_map[head]) { case OperationType::__Ksu: { - auto ret = std::move(ExecuteSu(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteSu(cmd, login_stack); } case OperationType::__Klogout: { - auto ret = std::move(ExecuteLogout(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteLogout(cmd, login_stack); } case OperationType::__Kuseradd: { - auto ret = std::move(ExecuteUserAdd(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteUserAdd(cmd, login_stack); } case OperationType::__Kregister: { - auto ret = std::move(ExecuteRegister(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteRegister(cmd, login_stack); } case OperationType::__Kdelete: { - auto ret = std::move(ExecuteDelete(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteDelete(cmd, login_stack); } case OperationType::__Kpasswd: { - auto ret = std::move(ExecutePasswd(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecutePasswd(cmd, login_stack); } case OperationType::__Kselect: { - auto ret = std::move(ExecuteSelect(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteSelect(cmd, login_stack); } case OperationType::__Kmodify: { - auto ret = std::move(ExecuteMOdify(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteMOdify(cmd, login_stack); } case OperationType::__Kimport: { - auto ret = std::move(ExecuteImport(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteImport(cmd, login_stack); } case OperationType::__Kshow: { ss >> head; if (head == "finance") goto dst_showfinance; - auto ret = std::move(ExecuteShow(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteShow(cmd, login_stack); } case OperationType::__Kshowfinance: { dst_showfinance:; - auto ret = std::move(ExecuteShowFinance(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteShowFinance(cmd, login_stack); } case OperationType::__Kbuy: { - auto ret = std::move(ExecuteBuy(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteBuy(cmd, login_stack); } case OperationType::__Kreport: { // return std::vector({"Invalid"}); - auto ret = std::move(ExecuteReport(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteReport(cmd, login_stack); } case OperationType::__Klog: { // return std::vector({"Invalid"}); - auto ret = std::move(ExecuteLog(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({""}); - return ret; + return ExecuteLog(cmd, login_stack); } } throw FatalError("Unknown Command", 5); @@ -173,15 +143,13 @@ std::vector BookStoreEngineClass::ExecuteSu( // debugPrint("has root previlege"); login_stack.push(std::make_pair(user_id, 0)); login_count[user_id]++; - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } // debugPrint("Examining", user_id, password); if (user_data_base.PAM(user_id, password)) { login_stack.push(std::make_pair(user_id, 0)); login_count[user_id]++; - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } return std::vector({"Invalid"}); } @@ -195,8 +163,7 @@ std::vector BookStoreEngineClass::ExecuteLogout( } login_count[login_stack.top().first]--; login_stack.pop(); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } std::vector BookStoreEngineClass::ExecuteRegister( @@ -208,8 +175,7 @@ std::vector BookStoreEngineClass::ExecuteRegister( if (user_data_base.GetPrevilege(user_id) != -1) return std::vector({"Invalid"}); user_data_base.AddUser(user_id, password, user_name, 1); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } std::vector BookStoreEngineClass::ExecutePasswd( @@ -232,14 +198,12 @@ std::vector BookStoreEngineClass::ExecutePasswd( return std::vector({"Invalid"}); } user_data_base.ChangePassword(user_id, new_password); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } if (!user_data_base.PAM(user_id, current_password)) return std::vector({"Invalid"}); user_data_base.ChangePassword(user_id, new_password); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } std::vector BookStoreEngineClass::ExecuteUserAdd( @@ -258,8 +222,7 @@ std::vector BookStoreEngineClass::ExecuteUserAdd( if (user_data_base.GetPrevilege(user_id) != -1) return std::vector({"Invalid"}); user_data_base.AddUser(user_id, password, user_name, privilege); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } std::vector BookStoreEngineClass::ExecuteDelete( @@ -275,8 +238,7 @@ std::vector BookStoreEngineClass::ExecuteDelete( if (user_data_base.GetPrevilege(user_id) == -1) return std::vector({"Invalid"}); user_data_base.DeleteUser(user_id); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } std::vector BookStoreEngineClass::ExecuteShow( @@ -362,8 +324,7 @@ std::vector BookStoreEngineClass::ExecuteSelect( tmp.second = BI_tmp.bid; // debugPrint("selected bid=", tmp.second); login_stack.push(tmp); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } std::vector BookStoreEngineClass::ExecuteMOdify( @@ -401,8 +362,7 @@ std::vector BookStoreEngineClass::ExecuteMOdify( // debugPrint("successfully checked keyword"); book_data_base.ModifyInfo(book_data_base.GetISBN(login_stack.top().second), new_ISBN, name, author, keyword, price, -1); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } std::vector BookStoreEngineClass::ExecuteImport( @@ -425,8 +385,7 @@ std::vector BookStoreEngineClass::ExecuteImport( book_data_base.ModifyInfo(book_data_base.GetISBN(login_stack.top().second), "", "", "", "", -1, tmp.quantity_remain + quantity); log_data_base.AddImport(tmp.bid, quantity, total_cost); - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } std::vector BookStoreEngineClass::ExecuteShowFinance( @@ -491,8 +450,7 @@ std::vector BookStoreEngineClass::ExecuteReport( log_data_base.FetchOperationRecord(ret, true); return ret; } - return is_server ? std::vector({""}) - : std::vector(); + return std::vector(); } std::string BookStoreEngineClass::QueryUserInfo(const std::string &user_name) {