M module-db/Interface/ContactRecord.cpp => module-db/Interface/ContactRecord.cpp +1 -1
@@ 297,7 297,7 @@ auto ContactRecordInterface::addQuery(std::shared_ptr<db::Query> query) -> std::
{
auto addQuery = dynamic_cast<db::query::ContactAdd *>(query.get());
auto ret = ContactRecordInterface::Add(addQuery->rec);
- auto response = std::make_unique<db::query::ContactAddResult>(ret);
+ auto response = std::make_unique<db::query::ContactAddResult>(ret, addQuery->rec.ID);
response->setRequestQuery(query);
return response;
}
M module-db/queries/phonebook/QueryContactAdd.cpp => module-db/queries/phonebook/QueryContactAdd.cpp +1 -1
@@ 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
M module-db/queries/phonebook/QueryContactAdd.hpp => module-db/queries/phonebook/QueryContactAdd.hpp +7 -2
@@ 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
M module-services/service-desktop/endpoints/contacts/ContactHelper.cpp => module-services/service-desktop/endpoints/contacts/ContactHelper.cpp +4 -0
@@ 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<db::query::ContactAddResult *>(result)) {
+ context.setResponseBody(
+ json11::Json::object({{json::contacts::id, static_cast<int>(contactResult->getID())}}));
context.setResponseStatus(contactResult->getResult() ? http::Code::OK
: http::Code::InternalServerError);
MessageHandler::putToSendQueue(context.createSimpleResponse());