~aleteoryx/muditaos

c9e1ec419ec920e7c932192fae284c8ad6c0a032 — Pawel Olejniczak 3 years ago 5e57914
[CP-1082] Collect sms notifications in outbox ep

When sms record is created/updated/removed during
connection with Mudita Center, notification of that
action should be collected in outbox endpoint to
keep contacts data synchronized between MuditaOS
and Mudita Center.
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: