M module-db/Common/Query.cpp => module-db/Common/Query.cpp +11 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "Query.hpp"
@@ 83,6 83,16 @@ std::shared_ptr<Query> QueryResult::getRequestQuery() const noexcept
return requestQuery;
}
+void QueryResult::setRecordID(const uint32_t modifiedRecordID)
+{
+ recordID = modifiedRecordID;
+}
+
+auto QueryResult::getRecordID() -> std::optional<uint32_t>
+{
+ return recordID;
+}
+
bool QueryResult::hasListener() const noexcept
{
return requestQuery && (requestQuery->getQueryListener() != nullptr);
M module-db/Common/Query.hpp => module-db/Common/Query.hpp +6 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 97,6 97,8 @@ namespace db
void setRequestQuery(const std::shared_ptr<Query> &requestQueryToSet);
std::shared_ptr<Query> getRequestQuery() const noexcept;
+ void setRecordID(const uint32_t modifiedRecordID);
+ [[nodiscard]] auto getRecordID() -> std::optional<uint32_t>;
bool handle();
@@ 105,6 107,9 @@ namespace db
protected:
std::shared_ptr<Query> requestQuery;
+
+ private:
+ std::optional<uint32_t> recordID;
};
} // namespace db
M module-db/Interface/SMSRecord.cpp => module-db/Interface/SMSRecord.cpp +9 -0
@@ 413,6 413,9 @@ std::unique_ptr<db::QueryResult> SMSRecordInterface::addQuery(const std::shared_
}
auto response = std::make_unique<db::query::SMSAddResult>(record, ret);
response->setRequestQuery(query);
+ if (ret) {
+ response->setRecordID(record.ID);
+ }
return response;
}
std::unique_ptr<db::QueryResult> SMSRecordInterface::removeQuery(const std::shared_ptr<db::Query> &query)
@@ 421,6 424,9 @@ std::unique_ptr<db::QueryResult> SMSRecordInterface::removeQuery(const std::shar
auto ret = RemoveByID(localQuery->id);
auto response = std::make_unique<db::query::SMSRemoveResult>(ret);
response->setRequestQuery(query);
+ if (ret) {
+ response->setRecordID(localQuery->id);
+ }
return response;
}
std::unique_ptr<db::QueryResult> SMSRecordInterface::updateQuery(const std::shared_ptr<db::Query> &query)
@@ 429,6 435,9 @@ std::unique_ptr<db::QueryResult> SMSRecordInterface::updateQuery(const std::shar
auto ret = Update(localQuery->record);
auto response = std::make_unique<db::query::SMSUpdateResult>(ret);
response->setRequestQuery(query);
+ if (ret) {
+ response->setRecordID(localQuery->record.ID);
+ }
return response;
}
M module-services/service-db/ServiceDBCommon.cpp => module-services/service-db/ServiceDBCommon.cpp +3 -1
@@ 35,8 35,10 @@ sys::MessagePointer ServiceDBCommon::DataReceivedHandler(sys::DataMessage *msgl,
auto query = msg->getQuery();
auto queryType = query->type;
auto result = interface->runQuery(std::move(query));
+ auto recordID = result->getRecordID().value_or(0);
responseMsg = std::make_shared<db::QueryResponse>(std::move(result));
- sendUpdateNotification(msg->getInterface(), queryType);
+
+ sendUpdateNotification(msg->getInterface(), queryType, recordID);
} break;
default: