/
Shymer123
/
LumenServer
Обзор
Документация
Войти
/
Shymer123
/
LumenServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Server/SourceFiles/Services/MessageService.cpp
76 строк
3 KB
Shymer123
fixed the build via Docker, now everything is going correctly.
26 июн 2026, 18:02
26 июн 2026, 18:02
17a48df
Код
Авторство
О чём код?
#include "MessageService.h" #include "Core/Utils/UuidGenerator.h" #include "Data/Mappers/MessageMapper.h" #include <utility> namespace Services { MessageService::MessageService(Storage::Db::Repositories::MessageRepository& messageRepo, Services::FileService& fileService) : m_messageRepo(messageRepo), m_fileService(fileService) {} std::optional<Data::Models::Message> MessageService::sendMessage(const Data::Models::Message& message) { Data::Models::Message newMsg = message; newMsg.id = Core::Utils::generate_uuid(); auto entity = Data::Mappers::MessageMapper::toEntity(newMsg); if(!m_messageRepo.addMessage(entity)) { return std::nullopt; } for(const auto& file : message.fileAttachment) { std::string storagePath = m_fileService.getFilePath(file.id); m_fileService.saveFileMeta(file, newMsg.id, storagePath); } return newMsg; } std::optional<Data::Models::Message> MessageService::sendSystemMessage(const std::string& chatId, const std::string& text) { Data::Models::Message message; message.id = Core::Utils::generate_uuid(); message.chatId = chatId; message.senderId = "system"; message.timestamp = std::chrono::system_clock::now(); message.type = Core::Types::MessageType::System; message.status = Core::Types::MessageStatus::Sent; message.text = text; auto entity = Data::Mappers::MessageMapper::toEntity(message); if(!m_messageRepo.addMessage(entity)) { return std::nullopt; } return message; } std::vector<Data::Models::Message> MessageService::loadMessages(const std::string& chatId, int limit, int offset) { auto entities = m_messageRepo.getMessagesByChat(chatId, limit, offset); std::vector<Data::Models::Message> messages; for(const auto& e : std::as_const(entities)) { auto files = m_fileService.getFilesByMessageId(e.id); messages.push_back(Data::Mappers::MessageMapper::toModel(e, files)); } return messages; } std::optional<Data::Models::Message> MessageService::getLastMessage(const std::string& chatId) { auto entities = m_messageRepo.getLastMessage(chatId); if(!entities) return std::nullopt; return Data::Mappers::MessageMapper::toModel(*entities); } } // namespace Services