D image/user/db/file_indexer_001.sql => image/user/db/file_indexer_001.sql +0 -36
@@ 1,36 0,0 @@
--- Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
--- For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
--- Main file table
-CREATE TABLE IF NOT EXISTS file_tab (
- file_id INTEGER,
- path TEXT NOT NULL UNIQUE,
- size INTEGER,
- mime_type INTEGER,
- mtime INTEGER,
- directory TEXT,
- file_type INTEGER,
- PRIMARY KEY (file_id),
- CONSTRAINT file_path_unique
- UNIQUE (file_id, path) ON CONFLICT REPLACE
- );
-
--- Table contains information
--- about file metadata.
-CREATE TABLE IF NOT EXISTS metadata_tab (
- file_id INTEGER NOT NULL,
- property TEXT NOT NULL,
- value TEXT NOT NULL,
- PRIMARY KEY (file_id, property),
- FOREIGN KEY (file_id) REFERENCES file_tab(file_id)
- );
-
--- Table contains information who to inform
--- about changes in values.
-CREATE TABLE IF NOT EXISTS notifications_tab (
- id INTEGER PRIMARY KEY,
- path TEXT NOT NULL,
- service TEXT,
- CONSTRAINT notification_unique
- UNIQUE(path, service)
-);
D image/user/db/file_indexer_002.sql => image/user/db/file_indexer_002.sql +0 -26
@@ 1,26 0,0 @@
--- Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
--- For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-INSERT OR REPLACE INTO file_tab (file_id, path, size, mime_type, mtime, directory, file_type) VALUES
- (1, 'mp3/track1.mp3', 456666, 1, 1603929600, 'mp3',12297),
- (2, 'mp3/track2.mp3', 345354 ,1, 1603929604, 'mp3',12297),
- (3, 'mp3/track3.mp3', 34534 ,1, 1603929604, 'mp3',12297),
- (4, 'mp3/track4.mp3', 345354 ,1, 1603929604, 'mp3',12297);
-
-
-INSERT OR REPLACE INTO metadata_tab (file_id, property, value) VALUES
- (1,'artist','Sting'),
- (1,'genre','Rock'),
- (1,'album','Album1'),
- (2,'artist','Madonna'),
- (2,'genre','Rock'),
- (2,'album','Album2'),
- (3,'artist','Lady Gaga'),
- (3,'genre','Rock'),
- (3,'album','Album3'),
- (4,'artist','Nick Levis'),
- (4,'genre','Soul'),
- (4,'album','Album4');
-
-INSERT OR REPLACE INTO notifications_tab (id, path, service) VALUES
- (1,'mp3','ServiceDB');
M module-services/service-db/CMakeLists.txt => module-services/service-db/CMakeLists.txt +0 -2
@@ 18,7 18,6 @@ set(SOURCES
agents/settings/SettingsProxy.cpp
agents/settings/SettingsCache.cpp
agents/settings/FactorySettings.cpp
- agents/file_indexer/FileIndexerAgent.cpp
agents/quotes/QuotesAgent.cpp
)
@@ 42,4 41,3 @@ target_link_libraries(${PROJECT_NAME}
if (${ENABLE_TESTS})
add_subdirectory(test)
endif ()
-
D module-services/service-db/agents/file_indexer/FileIndexerAgent.cpp => module-services/service-db/agents/file_indexer/FileIndexerAgent.cpp +0 -535
@@ 1,535 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#include "FileIndexerAgent.hpp"
-#include "FileIndexer_queries.hpp"
-
-#include <log.hpp>
-#include <purefs/filesystem_paths.hpp>
-#include <Application.hpp>
-#include <memory>
-
-FileIndexerAgent::FileIndexerAgent(sys::Service *parentService) : DatabaseAgent(parentService)
-{
- database = std::make_unique<Database>(getDbFilePath().c_str());
-}
-
-void FileIndexerAgent::initDb()
-{
- auto notifications = database->query(FileIndexer::Statements::getAllNotifications);
- if (nullptr == notifications || DatabaseAgent::ONE_ROW_FOUND == notifications->getRowCount()) {
- return;
- }
- if (notifications->getFieldCount() == FileIndexer::NOTIFICATION_RECORD_COLUMN_COUNT) {
- fileChangeRecipents.clear();
- do {
- std::string directory = (*notifications)[1].getString();
- std::string service = (*notifications)[2].getString();
- fileChangeRecipents[directory].insert(service);
- } while (notifications->nextRow());
- }
-}
-
-void FileIndexerAgent::deinitDb()
-{
- database->deinitialize();
-}
-
-void FileIndexerAgent::registerMessages()
-{
- // connect handler & message in parent service
- using std::placeholders::_1;
-
- // all API asynchronic
- parentService->connect(FileIndexer::Messages::GetListDirRequest(),
- std::bind(&FileIndexerAgent::handleListDir, this, _1));
-
- parentService->connect(FileIndexer::Messages::GetRecordMessage(),
- std::bind(&FileIndexerAgent::handleGetRecord, this, _1));
- parentService->connect(FileIndexer::Messages::SetRecordMessage(),
- std::bind(&FileIndexerAgent::handleSetRecord, this, _1));
-
- parentService->connect(FileIndexer::Messages::GetPropertyMessage(),
- std::bind(&FileIndexerAgent::handleGetProperty, this, _1));
- parentService->connect(FileIndexer::Messages::SetPropertyMessage(),
- std::bind(&FileIndexerAgent::handleSetProperty, this, _1));
-
- parentService->connect(FileIndexer::Messages::GetAllPropertiesMessage(),
- std::bind(&FileIndexerAgent::handleGetAllProperties, this, _1));
- parentService->connect(FileIndexer::Messages::SetPropertiesMessage(),
- std::bind(&FileIndexerAgent::handleSetProperties, this, _1));
-
- parentService->connect(FileIndexer::Messages::DeleteFileMessage(),
- std::bind(&FileIndexerAgent::handleDeleteFile, this, _1));
- parentService->connect(FileIndexer::Messages::DeleteAllFilesInDirMessage(),
- std::bind(&FileIndexerAgent::handleDeleteAllFilesInDir, this, _1));
-
- parentService->connect(FileIndexer::Messages::RegisterOnFileChange(),
- std::bind(&FileIndexerAgent::handleRegisterOnFileChange, this, _1));
- parentService->connect(FileIndexer::Messages::UnregisterOnFileChange(),
- std::bind(&FileIndexerAgent::handleUnregisterOnFileChange, this, _1));
-}
-
-auto FileIndexerAgent::getDbInitString() -> const std::string
-{
- return {};
-}
-
-auto FileIndexerAgent::getDbFilePath() -> const std::string
-{
- return (purefs::dir::getUserDiskPath() / "file_indexer.db").string();
-}
-auto FileIndexerAgent::getAgentName() -> const std::string
-{
- return std::string("fileIndexerAgent");
-}
-
-auto FileIndexerAgent::dbRegisterFileChange(std::string dir, std::string service) -> bool
-{
- auto retQuery = database->query(FileIndexer::Statements::getNotification, dir.c_str(), service.c_str());
- if (nullptr == retQuery || DatabaseAgent::ZERO_ROWS_FOUND == retQuery->getRowCount()) {
- // notification does not exist in db, insert a new one
- return database->execute(FileIndexer::Statements::setNotification, dir.c_str(), service.c_str());
- }
- // service already registered for the dir
- return false;
-}
-
-auto FileIndexerAgent::dbUnregisterFileChange(std::string dir, std::string service) -> bool
-{
- return database->execute(FileIndexer::Statements::clearNotificationdRow, dir.c_str(), service.c_str());
-}
-
-auto FileIndexerAgent::handleRegisterOnFileChange(sys::Message *req) -> sys::MessagePointer
-{
- std::string directory;
- if (auto msg = dynamic_cast<FileIndexer::Messages::RegisterOnFileChange *>(req)) {
- if (msg->directory != nullptr) {
- directory = *(msg->directory);
- if (dbRegisterFileChange(directory, msg->sender)) {
- auto it = fileChangeRecipents.find(directory);
- if (fileChangeRecipents.end() == it) {
- fileChangeRecipents[directory] = {msg->sender};
- }
- else {
- it->second.insert(msg->sender);
- }
- }
- }
- }
- LOG_INFO("RegisterOnFileChange from %s", req->sender.c_str());
- return std::make_shared<sys::ResponseMessage>();
-}
-
-auto FileIndexerAgent::handleUnregisterOnFileChange(sys::Message *req) -> sys::MessagePointer
-{
- std::string directory;
- if (auto msg = dynamic_cast<FileIndexer::Messages::UnregisterOnFileChange *>(req)) {
- if (msg->directory != nullptr) {
- directory = *(msg->directory);
- if (dbUnregisterFileChange(directory, msg->sender)) {
- auto it = fileChangeRecipents.find(directory);
- if (fileChangeRecipents.end() != it) {
- it->second.erase(msg->sender);
- }
- }
- }
- }
- LOG_INFO("UnRegisterOnFileChange from %s", req->sender.c_str());
- return std::make_shared<sys::ResponseMessage>();
-}
-
-auto FileIndexerAgent::dbGetFilesCount() -> unsigned int
-{
- auto retQuery = database->query(FileIndexer::Statements::getFilesCount);
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return 0;
- }
- return (*retQuery)[0].getUInt32();
-}
-
-auto FileIndexerAgent::dbGeMetadataCount() -> unsigned int
-{
- auto retQuery = database->query(FileIndexer::Statements::getMetadataCount);
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return 0;
- }
- return (*retQuery)[0].getUInt32();
-}
-
-auto FileIndexerAgent::dbListDir(unsigned int offset, unsigned int limit, const std::string &directory)
- -> std::unique_ptr<FileIndexer::ListDir>
-{
- auto retQuery = database->query(FileIndexer::Statements::getFilesByDir, directory.c_str());
- return getList<FileIndexer::ListDir, FileIndexer::FileRecord>(offset, limit, std::move(retQuery));
-}
-
-auto FileIndexerAgent::handleListDir(sys::Message *req) -> sys::MessagePointer
-{
- if (auto msg = dynamic_cast<FileIndexer::Messages::GetListDirRequest *>(req)) {
- return std::make_shared<FileIndexer::Messages::GetListDirResponse>(
- dbListDir(msg->offset, msg->limit, msg->directory));
- }
- return std::make_shared<sys::ResponseMessage>();
-}
-
-auto FileIndexerAgent::dbGetRecord(std::unique_ptr<FileIndexer::FileRecord> record) -> FileIndexer::FileRecord
-{
- std::unique_ptr<QueryResult> retQuery = nullptr;
-
- if (false == record->path.empty()) {
- retQuery = database->query(FileIndexer::Statements::getFileInfoByPath, record->path.c_str());
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return FileIndexer::FileRecord{};
- }
- }
- else if (record->file_id != FileIndexer::FILE_ID_NOT_EXISTS) {
- retQuery = database->query(FileIndexer::Statements::getFileInfoById, record->file_id);
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return FileIndexer::FileRecord{};
- }
- }
- else {
- return FileIndexer::FileRecord{};
- }
- return FileIndexer::FileRecord(retQuery.get());
-}
-
-auto FileIndexerAgent::dbSetRecord(std::unique_ptr<FileIndexer::FileRecord> record) -> bool
-{
- auto retQuery = database->query(FileIndexer::Statements::getFileInfoByPath, record->path.c_str());
- FileIndexer::FileRecord retRecord(retQuery.get());
-
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- // file do not exist in db, insert a new file record
- return database->execute(FileIndexer::Statements::insertFileInfo,
- // retRecord.file_id,
- record->path.c_str(),
- record->size,
- record->mime_type,
- record->mtime,
- record->directory.c_str(),
- record->file_type);
- }
- // update existing file record
- return database->execute(FileIndexer::Statements::updateFileInfo,
- record->path.c_str(),
- record->size,
- record->mime_type,
- record->mtime,
- record->directory.c_str(),
- record->file_type,
- retRecord.file_id);
-}
-
-auto FileIndexerAgent::dbDeleteFile(std::unique_ptr<FileIndexer::FileRecord> record) -> bool
-{
- unsigned int file_id = FileIndexer::FILE_ID_NOT_EXISTS;
- if (false == record->path.empty()) {
- auto retQuery = database->query(FileIndexer::Statements::getFileIdByPath, record->path.c_str());
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return false;
- }
- else {
- file_id = (*retQuery)[0].getUInt32();
- }
- }
- else {
- file_id = record->file_id;
- }
- return database->execute(FileIndexer::Statements::deleteFileById, file_id, file_id);
-}
-
-auto FileIndexerAgent::dbDeleteAllFilesInDir(std::unique_ptr<FileIndexer::FileRecord> record) -> bool
-{
- bool retStatus = false;
- if (false == record->directory.empty()) {
- auto retQuery = database->query(FileIndexer::Statements::getFilesIdByDir, record->directory.c_str());
- if (nullptr == retQuery || DatabaseAgent::ZERO_ROWS_FOUND == retQuery->getRowCount()) {
- return false;
- }
- else {
- do {
- unsigned int file_id = (*retQuery)[0].getUInt32();
- retStatus = database->execute(FileIndexer::Statements::deleteFileById, file_id, file_id);
- } while (retQuery->nextRow() && retStatus);
- return retStatus;
- }
- }
- else {
- return false;
- }
-}
-
-auto FileIndexerAgent::dbUpdateRecord(std::unique_ptr<FileIndexer::FileRecord> record) -> bool
-{
- return database->execute(FileIndexer::Statements::updateFileInfo,
- record->path.c_str(),
- record->size,
- record->mime_type,
- record->mtime,
- record->directory.c_str(),
- record->file_type,
- record->file_id);
-}
-
-auto FileIndexerAgent::handleGetRecord(sys::Message *req) -> sys::MessagePointer
-{
- if (auto msg = dynamic_cast<FileIndexer::Messages::GetRecordMessage *>(req)) {
- auto record = std::move(msg->record);
- msg->dbRecord = dbGetRecord(std::move(record));
- return std::make_shared<FileIndexer::Messages::GetRecordResponseMessage>(
- std::make_unique<FileIndexer::FileRecord>(msg->dbRecord));
- }
- return sys::msgHandled();
-}
-
-auto FileIndexerAgent::handleSetRecord(sys::Message *req) -> sys::MessagePointer
-{
- if (auto msg = dynamic_cast<FileIndexer::Messages::SetRecordMessage *>(req)) {
- auto recordPtr = std::move(msg->record);
- FileIndexer::FileRecord record = *recordPtr;
- msg->dbRecord = dbGetRecord(std::make_unique<FileIndexer::FileRecord>(record));
-
- if (!(msg->dbRecord.RecordEqual(record))) {
- auto updateMsg = std::make_shared<FileIndexer::Messages::RecordChangedMessage>(
- std::move(recordPtr), std::make_unique<FileIndexer::FileRecord>(msg->dbRecord));
-
- parentService->bus.sendUnicast(std::move(updateMsg), msg->sender);
- dbSetRecord(std::make_unique<FileIndexer::FileRecord>(record));
-
- for (auto recipient : fileChangeRecipents[record.directory]) {
- auto notifyMsg = std::make_shared<FileIndexer::Messages::DirectoryContentChangedMessage>(
- std::make_unique<std::string>(record.directory));
- parentService->bus.sendUnicast(std::move(notifyMsg), recipient);
- }
- }
- }
- return sys::msgHandled();
-}
-
-auto FileIndexerAgent::handleDeleteFile(sys::Message *req) -> sys::MessagePointer
-{
- if (auto msg = dynamic_cast<FileIndexer::Messages::DeleteFileMessage *>(req)) {
- auto recordPtr = std::move(msg->record);
- FileIndexer::FileRecord record = *recordPtr;
- msg->dbRecord = dbGetRecord(std::make_unique<FileIndexer::FileRecord>(record));
-
- auto deleteMsg = std::make_shared<FileIndexer::Messages::FileDeletedMessage>(std::move(recordPtr));
-
- parentService->bus.sendUnicast(std::move(deleteMsg), msg->sender);
- dbDeleteFile(std::make_unique<FileIndexer::FileRecord>(record));
-
- for (auto recipient : fileChangeRecipents[record.directory]) {
- auto notifyMsg = std::make_shared<FileIndexer::Messages::DirectoryContentChangedMessage>(
- std::make_unique<std::string>(record.directory));
- parentService->bus.sendUnicast(std::move(notifyMsg), recipient);
- }
- }
- return sys::msgHandled();
-}
-
-auto FileIndexerAgent::handleDeleteAllFilesInDir(sys::Message *req) -> sys::MessagePointer
-{
- if (auto msg = dynamic_cast<FileIndexer::Messages::DeleteAllFilesInDirMessage *>(req)) {
- auto recordPtr = std::move(msg->record);
- FileIndexer::FileRecord record = *recordPtr;
- msg->dbRecord = dbGetRecord(std::make_unique<FileIndexer::FileRecord>(record));
-
- auto deleteMsg =
- std::make_shared<FileIndexer::Messages::AllFilesInDirDeletedDeletedMessage>(std::move(recordPtr));
-
- parentService->bus.sendUnicast(std::move(deleteMsg), msg->sender);
- dbDeleteAllFilesInDir(std::make_unique<FileIndexer::FileRecord>(record));
-
- for (auto recipient : fileChangeRecipents[record.directory]) {
- auto notifyMsg = std::make_shared<FileIndexer::Messages::DirectoryContentChangedMessage>(
- std::make_unique<std::string>(record.directory));
- parentService->bus.sendUnicast(std::move(notifyMsg), recipient);
- }
- }
- return sys::msgHandled();
-}
-
-auto FileIndexerAgent::dbGetProperty(std::unique_ptr<FileIndexer::FileMetadata> metaData) -> FileIndexer::FileMetadata
-{
- auto itr = metaData->properties.begin();
- auto property = itr->first;
-
- std::unique_ptr<QueryResult> retQuery = nullptr;
-
- retQuery = database->query(FileIndexer::Statements::getPropertyValue, property.c_str(), metaData->path.c_str());
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return *metaData;
- }
- FileIndexer::FileMetadata retMetaData;
- retMetaData.file_id = (*retQuery)[0].getUInt32();
- retMetaData.properties.clear();
- retMetaData.properties.emplace((*retQuery)[1].getString(), (*retQuery)[2].getString());
- return retMetaData;
-}
-
-auto FileIndexerAgent::dbGetAllProperties(std::unique_ptr<FileIndexer::FileMetadata> metaData)
- -> FileIndexer::FileMetadata
-{
- std::unique_ptr<QueryResult> retQuery = nullptr;
- FileIndexer::FileMetadata retMetaData = {};
-
- retQuery = database->query(FileIndexer::Statements::getAllProperties, metaData->path.c_str());
- if (nullptr == retQuery) {
- return retMetaData;
- }
- if (retQuery->getRowCount() > 0) {
- retMetaData.file_id = (*retQuery)[0].getUInt32();
- retMetaData.properties.clear();
- do {
- retMetaData.properties.emplace((*retQuery)[1].getString(), (*retQuery)[2].getString());
- } while (retQuery->nextRow());
- }
- return retMetaData;
-}
-
-auto FileIndexerAgent::dbSetProperty(std::unique_ptr<FileIndexer::FileMetadata> metaData) -> bool
-{
- std::unique_ptr<QueryResult> retQuery = nullptr;
- unsigned int fileId;
-
- if (false == metaData->path.empty()) {
- retQuery = database->query(FileIndexer::Statements::getFileInfoByPath, metaData->path.c_str());
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return false;
- }
- fileId = (*retQuery)[0].getUInt32();
- }
- else if (metaData->file_id != FileIndexer::FILE_ID_NOT_EXISTS) {
- retQuery = database->query(FileIndexer::Statements::getFileInfoById, metaData->file_id);
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return false;
- }
- fileId = metaData->file_id;
- }
- else {
- // there is no way to identify the file (id or path)
- return false;
- }
-
- auto itr = metaData->properties.begin();
- auto property = itr->first;
- auto value = itr->second;
- return database->execute(FileIndexer::Statements::insertPropertyValue, fileId, property.c_str(), value.c_str());
-}
-
-auto FileIndexerAgent::dbSetProperties(std::unique_ptr<FileIndexer::FileMetadata> metaData) -> bool
-{
- bool statusCode = true;
- std::unique_ptr<QueryResult> retQuery = nullptr;
- unsigned int fileId;
-
- if (false == metaData->path.empty()) {
- retQuery = database->query(FileIndexer::Statements::getFileInfoByPath, metaData->path.c_str());
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return false;
- }
- fileId = (*retQuery)[0].getUInt32();
- }
- else if (metaData->file_id != FileIndexer::FILE_ID_NOT_EXISTS) {
- retQuery = database->query(FileIndexer::Statements::getFileInfoById, metaData->file_id);
- if (nullptr == retQuery || DatabaseAgent::ONE_ROW_FOUND != retQuery->getRowCount()) {
- return false;
- }
- fileId = metaData->file_id;
- }
- else {
- // there is no way to identify the file (id or path)
- return false;
- }
-
- for (auto propVal : metaData->properties) {
- statusCode = database->execute(
- FileIndexer::Statements::insertPropertyValue, fileId, propVal.first.c_str(), propVal.second.c_str());
- if (!statusCode)
- return statusCode;
- }
- return statusCode;
-}
-
-auto FileIndexerAgent::dbUpdateProperties(std::unique_ptr<FileIndexer::FileMetadata> metaData) -> bool
-{
- bool statusCode = true;
- for (auto propVal : metaData->properties) {
- statusCode = database->execute(FileIndexer::Statements::updatePropertyValue,
- propVal.second.c_str(),
- metaData->file_id,
- propVal.first.c_str());
- if (!statusCode)
- return statusCode;
- }
- return statusCode;
-}
-
-auto FileIndexerAgent::handleGetProperty(sys::Message *req) -> sys::MessagePointer
-{
- if (auto msg = dynamic_cast<FileIndexer::Messages::GetPropertyMessage *>(req)) {
- auto metaDataPtr = std::move(msg->metaData);
- FileIndexer::FileMetadata metaData = *metaDataPtr;
- msg->dbMetaData = dbGetProperty(std::make_unique<FileIndexer::FileMetadata>(metaData));
- return std::make_shared<FileIndexer::Messages::GetPropertyResponseMessage>(
- std::make_unique<FileIndexer::FileMetadata>(msg->dbMetaData));
- }
- return sys::msgHandled();
-}
-
-auto FileIndexerAgent::handleGetAllProperties(sys::Message *req) -> sys::MessagePointer
-{
- if (auto msg = dynamic_cast<FileIndexer::Messages::GetAllPropertiesMessage *>(req)) {
- auto metaDataPtr = std::move(msg->metaData);
- FileIndexer::FileMetadata metaData = *metaDataPtr;
- msg->dbMetaData = dbGetAllProperties(std::make_unique<FileIndexer::FileMetadata>(metaData));
- return std::make_shared<FileIndexer::Messages::GetPropertyResponseMessage>(
- std::make_unique<FileIndexer::FileMetadata>(msg->dbMetaData));
- }
- return sys::msgHandled();
-}
-
-auto FileIndexerAgent::handleSetProperty(sys::Message *req) -> sys::MessagePointer
-{
- if (auto msg = dynamic_cast<FileIndexer::Messages::SetPropertyMessage *>(req)) {
- auto metaDataPtr = std::move(msg->metaData);
- FileIndexer::FileMetadata metaData = *metaDataPtr;
-
- auto itr = metaDataPtr->properties.begin();
- auto value = itr->second;
-
- msg->dbMetaData = dbGetProperty(std::make_unique<FileIndexer::FileMetadata>(metaData));
- auto dbItr = msg->dbMetaData.properties.begin();
- auto dbValue = dbItr->second;
-
- if (dbValue != value) {
- auto updateMsg = std::make_shared<FileIndexer::Messages::PropertyChangedMessage>(
- std::move(metaDataPtr), std::make_unique<FileIndexer::FileMetadata>(msg->dbMetaData));
- parentService->bus.sendUnicast(std::move(updateMsg), msg->sender);
- dbSetProperty(std::make_unique<FileIndexer::FileMetadata>(metaData));
- }
- }
- return sys::msgHandled();
-}
-
-auto FileIndexerAgent::handleSetProperties(sys::Message *req) -> sys::MessagePointer
-{
- if (auto msg = dynamic_cast<FileIndexer::Messages::SetPropertiesMessage *>(req)) {
- auto metaDataPtr = std::move(msg->metaData);
- FileIndexer::FileMetadata metaData = *metaDataPtr;
- msg->dbMetaData = dbGetAllProperties(std::make_unique<FileIndexer::FileMetadata>(metaData));
- auto updateMsg = std::make_shared<FileIndexer::Messages::PropertyChangedMessage>(
- std::move(metaDataPtr), std::make_unique<FileIndexer::FileMetadata>(msg->dbMetaData));
- parentService->bus.sendUnicast(std::move(updateMsg), msg->sender);
- dbSetProperties(std::make_unique<FileIndexer::FileMetadata>(metaData));
-
- for (auto recipient : fileChangeRecipents[metaData.directory]) {
- auto notifyMsg = std::make_shared<FileIndexer::Messages::DirectoryContentChangedMessage>(
- std::make_unique<std::string>(metaData.directory));
- parentService->bus.sendUnicast(std::move(notifyMsg), recipient);
- }
- }
- return sys::msgHandled();
-}
D module-services/service-db/agents/file_indexer/FileIndexerAgent.hpp => module-services/service-db/agents/file_indexer/FileIndexerAgent.hpp +0 -59
@@ 1,59 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#pragma once
-
-#include <service-db/DatabaseAgent.hpp>
-#include <service-db/FileIndexerMessages.hpp>
-
-#include <set>
-
-class FileIndexerAgent : public DatabaseAgent
-{
- public:
- FileIndexerAgent(sys::Service *parentService);
- ~FileIndexerAgent() = default;
-
- void initDb() override;
- void deinitDb() override;
- void registerMessages() override;
- auto getAgentName() -> const std::string override;
-
- protected:
- // msg handlers
- auto handleRegisterOnFileChange(sys::Message *req) -> sys::MessagePointer;
- auto handleUnregisterOnFileChange(sys::Message *req) -> sys::MessagePointer;
- auto handleListDir(sys::Message *req) -> sys::MessagePointer;
- auto handleGetProperty(sys::Message *req) -> sys::MessagePointer;
- auto handleGetAllProperties(sys::Message *req) -> sys::MessagePointer;
- auto handleSetProperty(sys::Message *req) -> sys::MessagePointer;
- auto handleSetProperties(sys::Message *req) -> sys::MessagePointer;
- auto handleGetRecord(sys::Message *req) -> sys::MessagePointer;
- auto handleSetRecord(sys::Message *req) -> sys::MessagePointer;
- auto handleDeleteFile(sys::Message *req) -> sys::MessagePointer;
- auto handleDeleteAllFilesInDir(sys::Message *req) -> sys::MessagePointer;
-
- using MapOfRecipentsToBeNotified = std::map<std::string, std::set<std::string>>;
- MapOfRecipentsToBeNotified fileChangeRecipents;
-
- private:
- // db operations
- auto dbRegisterFileChange(std::string dir, std::string service) -> bool;
- auto dbUnregisterFileChange(std::string dir, std::string service) -> bool;
- auto dbListDir(unsigned int offset, unsigned int limit, const std::string &directory)
- -> std::unique_ptr<FileIndexer::ListDir>;
- auto dbGetProperty(std::unique_ptr<FileIndexer::FileMetadata> metaData) -> FileIndexer::FileMetadata;
- auto dbSetProperty(std::unique_ptr<FileIndexer::FileMetadata> metaData) -> bool;
- auto dbSetProperties(std::unique_ptr<FileIndexer::FileMetadata> metaData) -> bool;
- auto dbUpdateProperties(std::unique_ptr<FileIndexer::FileMetadata> metaData) -> bool;
- auto dbGetAllProperties(std::unique_ptr<FileIndexer::FileMetadata> metaData) -> FileIndexer::FileMetadata;
- auto dbGetRecord(std::unique_ptr<FileIndexer::FileRecord> record) -> FileIndexer::FileRecord;
- auto dbSetRecord(std::unique_ptr<FileIndexer::FileRecord> record) -> bool;
- auto dbDeleteFile(std::unique_ptr<FileIndexer::FileRecord> record) -> bool;
- auto dbDeleteAllFilesInDir(std::unique_ptr<FileIndexer::FileRecord> record) -> bool;
- auto dbUpdateRecord(std::unique_ptr<FileIndexer::FileRecord> record) -> bool;
- auto getDbInitString() -> const std::string override;
- auto getDbFilePath() -> const std::string override;
- auto dbGetFilesCount() -> unsigned int;
- auto dbGeMetadataCount() -> unsigned int;
-};
D module-services/service-db/agents/file_indexer/FileIndexer_queries.hpp => module-services/service-db/agents/file_indexer/FileIndexer_queries.hpp +0 -136
@@ 1,136 0,0 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#pragma once
-
-namespace FileIndexer::Statements
-{
-
- constexpr auto getFilesCount = R"sql(
- SELECT COUNT(FT.file_id) AS FILE_PATH_EXISTS FROM file_tab AS FT;
- )sql";
-
- constexpr auto getMetadataCount = R"sql(
- SELECT COUNT(MT.file_id) AS FILE_PATH_EXISTS FROM metadata_tab AS MT;
- )sql";
-
- constexpr auto checkFileExists = R"sql(
- SELECT COUNT(size) AS FILE_PATH_EXISTS FROM file_tab AS FT
- WHERE FT.path = '%q'
- COLLATE NOCASE;
- )sql";
-
- constexpr auto getFileIdByPath = R"sql(
- SELECT FT.file_id FROM file_tab AS FT
- WHERE FT.path = '%q'
- COLLATE NOCASE;
- )sql";
-
- constexpr auto getFilePathById = R"sql(
- SELECT FT.path FROM file_tab AS FT
- WHERE FT.file_id = '%lu'
- COLLATE NOCASE;
- )sql";
-
- constexpr auto getFileInfoByPath = R"sql(
- SELECT file_id, path, size, mime_type, mtime, directory ,file_type FROM file_tab AS FT
- WHERE FT.path = '%q'
- COLLATE NOCASE;
- )sql";
-
- constexpr auto getFileInfoById = R"sql(
- SELECT file_id, path, size, mime_type, mtime, directory, file_type FROM file_tab AS FT
- WHERE FT.file_id = '%lu'
- COLLATE NOCASE;
- )sql";
-
- constexpr auto getFilesByDir = R"sql(
- SELECT file_id, path, size, mime_type, mtime, directory, file_type FROM file_tab AS FT
- WHERE FT.directory = '%q'
- COLLATE NOCASE;
- )sql";
-
- constexpr auto insertFileInfo = R"sql(
- INSERT OR REPLACE INTO file_tab (path, size, mime_type, mtime, directory, file_type) VALUES
- ('%q', '%lu', '%lu' , '%lu', '%q', '%lu') ;
- )sql";
-
- constexpr auto updateFileInfo = R"sql(
- UPDATE file_tab SET path= '%q',
- size= '%lu',
- mime_type= '%lu',
- mtime= '%lu',
- directory ='%q',
- file_type= '%lu'
- WHERE file_id = '%lu' ;
- )sql";
-
- constexpr auto deleteFileById = R"sql(
- DELETE FROM file_tab AS FT
- WHERE FT.file_id = '%lu';
- DELETE FROM metadata_tab AS MT
- WHERE MT.file_id = '%lu';
- )sql";
-
- constexpr auto deleteAllFileInfoInDir = R"sql(
- DELETE FROM file_tab AS FT
- WHERE FT.directory = '%q';
- )sql";
-
- constexpr auto getFilesIdByDir = R"sql(
- SELECT file_id FROM file_tab AS FT
- WHERE FT.directory = '%q'
- COLLATE NOCASE;
- )sql";
-
- constexpr auto getPropertyValue = R"sql(
- SELECT MT.file_id, MT.property, MT.value
- FROM metadata_tab AS MT, file_tab AS FT
- WHERE MT.property = '%q' AND FT.path = '%q' AND FT.file_id = MT.file_id
- COLLATE NOCASE;
- )sql";
-
- constexpr auto getAllProperties = R"sql(
- SELECT MT.file_id, MT.property, MT.value
- FROM metadata_tab AS MT, file_tab AS FT
- WHERE FT.path = '%q' AND FT.file_id = MT.file_id
- COLLATE NOCASE;
- )sql";
-
- constexpr auto insertPropertyValue = R"sql(
- INSERT OR REPLACE INTO metadata_tab (file_id, property, value) VALUES
- ( '%lu', '%q', '%q' ) ;
- )sql";
-
- constexpr auto updatePropertyValue = R"sql(
- UPDATE metadata_tab SET value = '%q'
- WHERE file_id= '%lu' AND property = '%q' ;
- )sql";
-
- constexpr auto setNotification = R"sql(
- INSERT OR REPLACE INTO notifications_tab (path, service) VALUES
- ( '%q' , '%q' ) ;
- )sql";
-
- constexpr auto updateNotification = R"sql(
- UPDATE notifications_tab SET path = '%q', service = '%q'
- WHERE id = '%lu';
- )sql";
-
- constexpr auto clearNotificationdRow = R"sql(
- DELETE FROM notifications_tab
- WHERE path = '%q' AND service = '%q';
- )sql";
-
- constexpr auto getAllNotifications = R"sql(
- SELECT id, path, service
- FROM notifications_tab AS NT;
- )sql";
-
- constexpr auto getNotification = R"sql(
- SELECT id, path, service
- FROM notifications_tab AS NT
- WHERE path= '%q' AND service = '%q';
- )sql";
-
-} // namespace FileIndexer::Statements
D module-services/service-db/test/test-service-db-file_indexer.cpp => module-services/service-db/test/test-service-db-file_indexer.cpp +0 -318
@@ 1,318 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#include <catch2/catch.hpp>
-
-#include <Service/Service.hpp>
-#include <functional>
-#include <thread> // for Message_t, ResponseMessage, DataMessage, Message
-#include <service-db/ServiceDBCommon.hpp>
-
-#include <service-db/test/test-service-db-file_indexer.hpp>
-#include <service-db/FileIndexerMessages.hpp>
-
-class ClientService : public sys::Service
-{
- public:
- using sys::Service::Service;
-
- explicit ClientService(std::string name) : Service(name)
- {}
-
- sys::MessagePointer DataReceivedHandler(sys::DataMessage *msg, sys::ResponseMessage *resp)
- {
- return std::make_shared<sys::ResponseMessage>();
- }
-
- sys::ReturnCodes InitHandler()
- {
- return sys::ReturnCodes::Success;
- }
-
- sys::ReturnCodes DeinitHandler()
- {
- return sys::ReturnCodes::Success;
- }
-
- sys::ReturnCodes SwitchPowerModeHandler(const sys::ServicePowerMode mode)
- {
- return sys::ReturnCodes::Success;
- }
-};
-
-TEST_CASE("FileIndexer")
-{
- Database::initialize();
- std::string serviceName = "file_indexer_client";
- ClientService file_indexer_client_service(serviceName);
- file_indexer_client_service.InitHandler();
-
- SECTION("init db, register /unregister on file change")
- {
- std::cout << "Init File Indexer DB" << std::endl << std::flush;
- std::unique_ptr<FileIndexerTest> fiAgentTest{new FileIndexerTest(&file_indexer_client_service)};
- fiAgentTest->initDb();
- fiAgentTest->registerMessages();
-
- std::cout << "Register on file change" << std::endl << std::flush;
- std::string inputDirReg = "mp3";
- auto recordPtr = std::make_unique<std::string>(inputDirReg);
- auto regMsg = std::make_shared<FileIndexer::Messages::RegisterOnFileChange>(std::move(recordPtr));
- regMsg->sender = serviceName;
- sys::MessagePointer recMsg = fiAgentTest->handleRegisterOnFileChangeTest(regMsg.get());
- fiAgentTest->getNumberOfRecipients(inputDirReg);
-
- regMsg->sender = "serv1";
- recMsg = fiAgentTest->handleRegisterOnFileChangeTest(regMsg.get());
- auto recipientsCount1 = fiAgentTest->getNumberOfRecipients(inputDirReg);
-
- std::cout << "Unregister on file change" << std::endl << std::flush;
- std::string inputDirUnReg = "mp3";
- auto strPtr = std::make_unique<std::string>(inputDirUnReg);
- auto unregMsg = std::make_shared<FileIndexer::Messages::UnregisterOnFileChange>(std::move(strPtr));
- unregMsg->sender = serviceName;
- recMsg = fiAgentTest->handleUnregisterOnFileChangeTest(unregMsg.get());
- auto recipientsCount2 = fiAgentTest->getNumberOfRecipients(inputDirUnReg);
-
- REQUIRE(recipientsCount2 == recipientsCount1 - 1);
- REQUIRE(fiAgentTest->getAgentName() == "fileIndexerAgent");
- }
-
- SECTION("SetRecord & GetRecord")
- {
- FileIndexer::FileRecord record{};
- std::cout << "Test File indexer Get/Set/Get Record sequence:" << std::endl << std::flush;
-
- // GetRecord
- record.file_id = 1;
- auto recordPtr = std::make_unique<FileIndexer::FileRecord>(record);
- auto getMsg = std::make_shared<FileIndexer::Messages::GetRecordMessage>(std::move(recordPtr));
- std::unique_ptr<FileIndexerTest> fiAgentTest{new FileIndexerTest(&file_indexer_client_service)};
- sys::MessagePointer recMsg = fiAgentTest->handleGetRecordTest(getMsg.get());
- auto msg = dynamic_cast<FileIndexer::Messages::GetRecordResponseMessage *>(recMsg.get());
- auto fileRec = msg->record.get();
-
- LOG_INFO("file id= %d file path= %s size = %d mime= %d mtime = %d directory= %s ftype= %d",
- fileRec->file_id,
- fileRec->path.c_str(),
- fileRec->size,
- fileRec->mime_type,
- fileRec->mtime,
- fileRec->directory.c_str(),
- fileRec->file_type);
-
- REQUIRE(fileRec->file_id == record.file_id);
-
- record = *fileRec; // fill record by data recived from db
-
- // SetRecord - modify mime_type
- record.mime_type = 2;
- recordPtr = std::make_unique<FileIndexer::FileRecord>(record);
- auto setMsg = std::make_shared<FileIndexer::Messages::SetRecordMessage>(std::move(recordPtr));
- setMsg->sender = serviceName;
- recMsg = fiAgentTest->handleSetRecordTest(setMsg.get());
-
- // GetRecord to confirm changes in mime_type
- recordPtr = std::make_unique<FileIndexer::FileRecord>(record);
- getMsg = std::make_shared<FileIndexer::Messages::GetRecordMessage>(std::move(recordPtr));
- recMsg = fiAgentTest->handleGetRecordTest(getMsg.get());
- msg = dynamic_cast<FileIndexer::Messages::GetRecordResponseMessage *>(recMsg.get());
- fileRec = msg->record.get();
-
- LOG_INFO("file id= %d file path= %s size = %d mime= %d mtime = %d directory= %s ftype= %d",
- fileRec->file_id,
- fileRec->path.c_str(),
- fileRec->size,
- fileRec->mime_type,
- fileRec->mtime,
- fileRec->directory.c_str(),
- fileRec->file_type);
- // check if new value was set
- REQUIRE(fileRec->mime_type == record.mime_type);
- // check if the rest of the record did not change
- REQUIRE(fileRec->file_id == record.file_id);
- REQUIRE(fileRec->path == record.path);
- REQUIRE(fileRec->size == record.size);
- REQUIRE(fileRec->mtime == record.mtime);
- REQUIRE(fileRec->directory == record.directory);
- REQUIRE(fileRec->file_type == record.file_type);
- }
-
- SECTION("List dir - support for listview")
- {
- FileIndexer::ListDir inputData{};
- std::cout << "List dir - support for listview" << std::endl << std::flush;
-
- // GetListDir
- inputData.directory = "mp3";
- inputData.offset = 1;
- inputData.limit = 2;
-
- auto recordPtr = std::make_unique<FileIndexer::ListDir>(inputData);
- auto getMsg = std::make_shared<FileIndexer::Messages::GetListDirRequest>(std::move(recordPtr));
- std::unique_ptr<FileIndexerTest> fiAgentTest{new FileIndexerTest(&file_indexer_client_service)};
- sys::MessagePointer recMsg = fiAgentTest->handleListDirTest(getMsg.get());
- auto msg = dynamic_cast<FileIndexer::Messages::GetListDirResponse *>(recMsg.get());
- auto fileCount = msg->getCount();
- auto fileList = msg->getResults();
- LOG_INFO("Total number of files in %s = %d", inputData.directory.c_str(), fileCount);
- LOG_INFO("Limit= %d Offset= %d", inputData.limit, inputData.offset);
- for (auto fileRec : fileList) {
- LOG_INFO("file id= %d file path= %s size = %d mime= %d mtime = %d directory= %s ftype= %d",
- fileRec.file_id,
- fileRec.path.c_str(),
- fileRec.size,
- fileRec.mime_type,
- fileRec.mtime,
- fileRec.directory.c_str(),
- fileRec.file_type);
- }
- REQUIRE(fileList.size() == inputData.limit);
- REQUIRE(fileList[0].directory == inputData.directory);
- }
-
- SECTION("get/set Properties")
- {
- FileIndexer::FileMetadata inputMetaData{};
- std::cout << "get/set Properties" << std::endl << std::flush;
-
- // Get Properties
- inputMetaData.path = "mp3/track3.mp3";
- LOG_INFO("File path= %s", inputMetaData.path.c_str());
-
- auto recordPtr = std::make_unique<FileIndexer::FileMetadata>(inputMetaData);
- auto getMsg = std::make_shared<FileIndexer::Messages::GetAllPropertiesMessage>(std::move(recordPtr));
- std::unique_ptr<FileIndexerTest> fiAgentTest{new FileIndexerTest(&file_indexer_client_service)};
- sys::MessagePointer recMsg = fiAgentTest->handleGetAllPropertiesTest(getMsg.get());
- auto msg = dynamic_cast<FileIndexer::Messages::GetPropertyResponseMessage *>(recMsg.get());
- for (auto prop : msg->metaData->properties) {
- LOG_INFO("file id= %d property= %s value = %s",
- msg->metaData->file_id,
- prop.first.c_str(),
- prop.second.c_str());
- }
- REQUIRE(msg->metaData->properties.size() > 0);
-
- // set Properties
- inputMetaData.properties.clear();
- inputMetaData.properties.emplace("year", "2015");
-
- std::string newProperty = "time";
- std::string newPropertyValue = "5min";
- inputMetaData.properties.emplace(newProperty, newPropertyValue);
- recordPtr = std::make_unique<FileIndexer::FileMetadata>(inputMetaData);
- auto setMsg = std::make_shared<FileIndexer::Messages::SetPropertiesMessage>(std::move(recordPtr));
- setMsg->sender = serviceName;
- recMsg = fiAgentTest->handleSetPropertiesTest(setMsg.get());
-
- // Get Properties
- recordPtr = std::make_unique<FileIndexer::FileMetadata>(inputMetaData);
- getMsg = std::make_shared<FileIndexer::Messages::GetAllPropertiesMessage>(std::move(recordPtr));
- recMsg = fiAgentTest->handleGetAllPropertiesTest(getMsg.get());
- msg = dynamic_cast<FileIndexer::Messages::GetPropertyResponseMessage *>(recMsg.get());
- for (auto prop : msg->metaData->properties) {
- LOG_INFO("file id= %d property= %s value = %s",
- msg->metaData->file_id,
- prop.first.c_str(),
- prop.second.c_str());
- }
- // serch if a new property was set correctly
- std::string newPropertyValueFound;
- auto it = msg->metaData->properties.find(newProperty);
- if (msg->metaData->properties.end() != it) {
- newPropertyValueFound = it->second;
- }
- REQUIRE(newPropertyValueFound == newPropertyValue);
- }
-
- SECTION("DeleteFile /DeleteAllFilesInDir")
- {
- FileIndexer::ListDir inputData{};
- FileIndexer::FileRecord record{};
- std::cout << "DeleteFile /DeleteAllFilesInDir" << std::endl << std::flush;
-
- // SetRecord - add files
- auto recordPtr = std::make_unique<FileIndexer::FileRecord>(record);
- std::unique_ptr<FileIndexerTest> fiAgentTest{new FileIndexerTest(&file_indexer_client_service)};
- record.directory = "wav";
- record.path = "wav/file1.wav";
-
- recordPtr = std::make_unique<FileIndexer::FileRecord>(record);
- auto setMsg = std::make_shared<FileIndexer::Messages::SetRecordMessage>(std::move(recordPtr));
- setMsg->sender = serviceName;
- sys::MessagePointer recMsg = fiAgentTest->handleSetRecordTest(setMsg.get());
-
- record.path = "wav/file2.wav";
- recordPtr = std::make_unique<FileIndexer::FileRecord>(record);
- setMsg = std::make_shared<FileIndexer::Messages::SetRecordMessage>(std::move(recordPtr));
- setMsg->sender = serviceName;
- recMsg = fiAgentTest->handleSetRecordTest(setMsg.get());
-
- record.path = "wav/file3.wav";
- recordPtr = std::make_unique<FileIndexer::FileRecord>(record);
- setMsg = std::make_shared<FileIndexer::Messages::SetRecordMessage>(std::move(recordPtr));
- setMsg->sender = serviceName;
- recMsg = fiAgentTest->handleSetRecordTest(setMsg.get());
-
- std::cout << "Get listDir" << std::endl << std::flush;
- inputData.directory = "wav";
- inputData.offset = 0;
- inputData.limit = 10;
- auto inputDataPtr = std::make_unique<FileIndexer::ListDir>(inputData);
- auto getListDirMsg = std::make_shared<FileIndexer::Messages::GetListDirRequest>(std::move(inputDataPtr));
- recMsg = fiAgentTest->handleListDirTest(getListDirMsg.get());
- auto msg = dynamic_cast<FileIndexer::Messages::GetListDirResponse *>(recMsg.get());
- auto fileCount = msg->getCount();
- auto fileList = msg->getResults();
- LOG_INFO("Total number of files in %s = %d", inputData.directory.c_str(), fileCount);
- LOG_INFO("Limit= %d Offset= %d", inputData.limit, inputData.offset);
- for (auto fileRec : fileList) {
- LOG_INFO("file id= %d file path= %s size = %d mime= %d mtime = %d directory= %s ftype= %d",
- fileRec.file_id,
- fileRec.path.c_str(),
- fileRec.size,
- fileRec.mime_type,
- fileRec.mtime,
- fileRec.directory.c_str(),
- fileRec.file_type);
- }
-
- std::cout << "DeleteFile" << std::endl << std::flush;
- record.path = "wav/file1.wav";
- record.directory = "wav";
- recordPtr = std::make_unique<FileIndexer::FileRecord>(record);
- auto delMsg = std::make_shared<FileIndexer::Messages::DeleteFileMessage>(std::move(recordPtr));
- delMsg->sender = serviceName;
- auto delRecMsg = fiAgentTest->handleDeleteFileTest(delMsg.get());
-
- inputData.directory = "wav";
- inputData.offset = 0;
- inputData.limit = 10;
- inputDataPtr = std::make_unique<FileIndexer::ListDir>(inputData);
- getListDirMsg = std::make_shared<FileIndexer::Messages::GetListDirRequest>(std::move(inputDataPtr));
- recMsg = fiAgentTest->handleListDirTest(getListDirMsg.get());
- msg = dynamic_cast<FileIndexer::Messages::GetListDirResponse *>(recMsg.get());
- auto fileCountAfterDel = msg->getCount();
- REQUIRE(fileCountAfterDel == fileCount - 1);
-
- std::cout << "DeleteAllFilesInDir" << std::endl << std::flush;
- record.directory = "wav";
- recordPtr = std::make_unique<FileIndexer::FileRecord>(record);
- auto delAllMsg = std::make_shared<FileIndexer::Messages::DeleteAllFilesInDirMessage>(std::move(recordPtr));
- delAllMsg->sender = serviceName;
- delRecMsg = fiAgentTest->handleDeleteAllFilesInDirTest(delAllMsg.get());
-
- inputData.directory = "wav";
- inputData.offset = 0;
- inputData.limit = 10;
- inputDataPtr = std::make_unique<FileIndexer::ListDir>(inputData);
- getListDirMsg = std::make_shared<FileIndexer::Messages::GetListDirRequest>(std::move(inputDataPtr));
- recMsg = fiAgentTest->handleListDirTest(getListDirMsg.get());
- msg = dynamic_cast<FileIndexer::Messages::GetListDirResponse *>(recMsg.get());
- fileCountAfterDel = msg->getCount();
- REQUIRE(fileCountAfterDel == 0);
- std::cout << "DeleteFile /DeleteAllFilesInDir finished" << std::endl << std::flush;
- }
-
- Database::deinitialize();
-}
D module-services/service-db/test/test-service-db-file_indexer.hpp => module-services/service-db/test/test-service-db-file_indexer.hpp +0 -70
@@ 1,70 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#pragma once
-
-#include <service-db/DatabaseAgent.hpp>
-#include <service-db/FileIndexerMessages.hpp>
-#include <service-db/agents/file_indexer/FileIndexerAgent.hpp>
-
-class FileIndexerTest : public FileIndexerAgent
-{
- public:
- FileIndexerTest(sys::Service *parentService) : FileIndexerAgent(parentService){};
- ~FileIndexerTest() = default;
-
- auto handleGetRecordTest(FileIndexer::Messages::GetRecordMessage *req) -> sys::MessagePointer
- {
- return FileIndexerAgent::handleGetRecord(req);
- }
-
- auto handleSetRecordTest(FileIndexer::Messages::SetRecordMessage *req) -> sys::MessagePointer
- {
- return FileIndexerAgent::handleSetRecord(req);
- }
-
- auto handleListDirTest(FileIndexer::Messages::GetListDirRequest *req) -> sys::MessagePointer
- {
- return FileIndexerAgent::handleListDir(req);
- }
-
- auto handleGetAllPropertiesTest(FileIndexer::Messages::GetAllPropertiesMessage *req) -> sys::MessagePointer
- {
- return FileIndexerAgent::handleGetAllProperties(req);
- }
-
- auto handleSetPropertiesTest(FileIndexer::Messages::SetPropertiesMessage *req) -> sys::MessagePointer
- {
- return FileIndexerAgent::handleSetProperties(req);
- }
-
- auto handleRegisterOnFileChangeTest(FileIndexer::Messages::RegisterOnFileChange *req) -> sys::MessagePointer
- {
- return FileIndexerAgent::handleRegisterOnFileChange(req);
- }
-
- auto handleUnregisterOnFileChangeTest(FileIndexer::Messages::UnregisterOnFileChange *req) -> sys::MessagePointer
- {
- return FileIndexerAgent::handleUnregisterOnFileChange(req);
- }
-
- auto handleDeleteFileTest(FileIndexer::Messages::DeleteFileMessage *req) -> sys::MessagePointer
- {
- return FileIndexerAgent::handleDeleteFile(req);
- }
-
- auto handleDeleteAllFilesInDirTest(FileIndexer::Messages::DeleteAllFilesInDirMessage *req) -> sys::MessagePointer
- {
- return FileIndexerAgent::handleDeleteAllFilesInDir(req);
- }
-
- unsigned int getNumberOfRecipients(std::string directory)
- {
- unsigned int recipientCount = 0;
- for (auto recipient : fileChangeRecipents[directory]) {
- LOG_INFO("Notifications: directory= %s service= %s", directory.c_str(), recipient.c_str());
- recipientCount++;
- }
- return recipientCount++;
- }
-};
M products/BellHybrid/services/db/ServiceDB.cpp => products/BellHybrid/services/db/ServiceDB.cpp +0 -1
@@ 8,7 8,6 @@
#include <service-db/DBServiceMessage.hpp>
#include <service-db/agents/settings/SettingsAgent.hpp>
-#include <service-db/agents/file_indexer/FileIndexerAgent.hpp>
#include <time/ScopedTime.hpp>
#include <purefs/filesystem_paths.hpp>
M products/PurePhone/services/db/ServiceDB.cpp => products/PurePhone/services/db/ServiceDB.cpp +0 -2
@@ 16,7 16,6 @@
#include <module-db/Interface/SMSRecord.hpp>
#include <module-db/Interface/SMSTemplateRecord.hpp>
#include <purefs/filesystem_paths.hpp>
-#include <service-db/agents/file_indexer/FileIndexerAgent.hpp>
#include <service-db/agents/quotes/QuotesAgent.hpp>
#include <service-db/agents/settings/SettingsAgent.hpp>
#include <service-db/DBCalllogMessage.hpp>
@@ 235,7 234,6 @@ sys::ReturnCodes ServiceDB::InitHandler()
std::make_unique<db::multimedia_files::MultimediaFilesRecordInterface>(multimediaFilesDB.get());
databaseAgents.emplace(std::make_unique<SettingsAgent>(this, "settings_v2.db"));
- databaseAgents.emplace(std::make_unique<FileIndexerAgent>(this));
for (auto &dbAgent : databaseAgents) {
dbAgent->initDb();