From 39fc37907152098d2de25bc4257917f3ae7cfa94 Mon Sep 17 00:00:00 2001 From: Bartosz Cichocki Date: Mon, 23 Nov 2020 09:37:39 +0100 Subject: [PATCH] [EGD-4399] no response fix (#1061) [EGD-4400] added contact ID sending after contact adding Co-authored-by: SP2FET --- module-db/Interface/ContactRecord.cpp | 2 +- module-db/queries/phonebook/QueryContactAdd.cpp | 2 +- module-db/queries/phonebook/QueryContactAdd.hpp | 9 +++++++-- .../service-desktop/endpoints/contacts/ContactHelper.cpp | 4 ++++ 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/module-db/Interface/ContactRecord.cpp b/module-db/Interface/ContactRecord.cpp index 8ae7ae39966d1ecd32f12a930f3330d4a0bc4b8b..132f688dc8ef0df903c0ffe8f6f80e16f84a43ea 100644 --- a/module-db/Interface/ContactRecord.cpp +++ b/module-db/Interface/ContactRecord.cpp @@ -297,7 +297,7 @@ auto ContactRecordInterface::addQuery(std::shared_ptr query) -> std:: { auto addQuery = dynamic_cast(query.get()); auto ret = ContactRecordInterface::Add(addQuery->rec); - auto response = std::make_unique(ret); + auto response = std::make_unique(ret, addQuery->rec.ID); response->setRequestQuery(query); return response; } diff --git a/module-db/queries/phonebook/QueryContactAdd.cpp b/module-db/queries/phonebook/QueryContactAdd.cpp index 610626600111c47cc049a4c62f3b39aeb542031b..6a457644b8457840adadab5eda6a05219b2b5be2 100644 --- a/module-db/queries/phonebook/QueryContactAdd.cpp +++ b/module-db/queries/phonebook/QueryContactAdd.cpp @@ -11,7 +11,7 @@ using namespace db::query; ContactAdd::ContactAdd(const ContactRecord &rec) : Query(Query::Type::Read), rec(std::move(rec)) {} -ContactAddResult::ContactAddResult(bool result) : result(result) +ContactAddResult::ContactAddResult(bool result, unsigned int id) : result(result), id(id) {} [[nodiscard]] auto ContactAdd::debugInfo() const -> std::string diff --git a/module-db/queries/phonebook/QueryContactAdd.hpp b/module-db/queries/phonebook/QueryContactAdd.hpp index 4e93259559b272e760337ca5e2e208c3f3efffe1..c9b854cccfe4c2297ee07fc40d1b55694609521c 100644 --- a/module-db/queries/phonebook/QueryContactAdd.hpp +++ b/module-db/queries/phonebook/QueryContactAdd.hpp @@ -24,15 +24,20 @@ namespace db::query class ContactAddResult : public QueryResult { public: - ContactAddResult(bool result); - auto getResult() -> bool + ContactAddResult(bool result, unsigned int id); + [[nodiscard]] auto getResult() const noexcept -> bool { return result; } + [[nodiscard]] auto getID() const noexcept -> unsigned int + { + return id; + } [[nodiscard]] auto debugInfo() const -> std::string override; private: bool result; + unsigned int id; }; }; // namespace db::query diff --git a/module-services/service-desktop/endpoints/contacts/ContactHelper.cpp b/module-services/service-desktop/endpoints/contacts/ContactHelper.cpp index d3b864e2993d9ff9e96c11b98fa122cdbdb8d07f..89e5911a876f9a88d4bc02cded88e4ee45d278cf 100644 --- a/module-services/service-desktop/endpoints/contacts/ContactHelper.cpp +++ b/module-services/service-desktop/endpoints/contacts/ContactHelper.cpp @@ -139,6 +139,8 @@ auto ContactHelper::createDBEntry(Context &context) -> sys::ReturnCodes auto newRecord = from_json(context.getBody()); if (newRecord.numbers.empty()) { LOG_ERROR("Empty number, not added!"); + context.setResponseStatus(http::Code::NotAcceptable); + MessageHandler::putToSendQueue(context.createSimpleResponse()); return sys::ReturnCodes::Failure; } @@ -148,6 +150,8 @@ auto ContactHelper::createDBEntry(Context &context) -> sys::ReturnCodes [](db::QueryResult *result, Context context) { if (auto contactResult = dynamic_cast(result)) { + context.setResponseBody( + json11::Json::object({{json::contacts::id, static_cast(contactResult->getID())}})); context.setResponseStatus(contactResult->getResult() ? http::Code::OK : http::Code::InternalServerError); MessageHandler::putToSendQueue(context.createSimpleResponse());