mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
132 lines
4.2 KiB
C++
132 lines
4.2 KiB
C++
|
|
#include "NodeServer.h"
|
|
|
|
using namespace Poco::Data::Keywords;
|
|
|
|
namespace model {
|
|
namespace table {
|
|
|
|
bool NodeServerIsHederaNode(NodeServerType type) {
|
|
return type == NODE_SERVER_HEDERA_MAINNET_NODE || type == NODE_SERVER_HEDERA_TESTNET_NODE;
|
|
}
|
|
bool NodeServerHasGroup(NodeServerType type) {
|
|
return type == NODE_SERVER_GRADIDO_NODE || type == NODE_SERVER_GRADIDO_COMMUNITY;
|
|
}
|
|
|
|
|
|
NodeServer::NodeServer()
|
|
: mPort(0), mGroupId(0), mServerType(0), mNodeHederaId(0)
|
|
{
|
|
|
|
}
|
|
|
|
NodeServer::NodeServer(const std::string& url, int port, int groupId, NodeServerType type, int nodeHederaId)
|
|
: mUrl(url), mPort(port), mGroupId(groupId), mServerType(type), mNodeHederaId(nodeHederaId)
|
|
{
|
|
}
|
|
|
|
|
|
|
|
NodeServer::NodeServer(const NodeServerTuple& tuple)
|
|
: ModelBase(tuple.get<0>()),
|
|
mUrl(tuple.get<1>()), mPort(tuple.get<2>()), mGroupId(tuple.get<3>()),
|
|
mServerType(tuple.get<4>()), mNodeHederaId(tuple.get<5>()), mLastLiveSign(tuple.get<6>())
|
|
{
|
|
|
|
}
|
|
|
|
NodeServer::~NodeServer()
|
|
{
|
|
|
|
}
|
|
|
|
std::string NodeServer::toString()
|
|
{
|
|
std::stringstream ss;
|
|
|
|
ss << "id: " << getID() << std::endl;
|
|
ss << mUrl << ":" << mPort << std::endl;
|
|
ss << "group id: " << mGroupId << std::endl;
|
|
ss << "server type: " << nodeServerTypeToString((NodeServerType)mServerType) << std::endl;
|
|
ss << "node hedera id: " << mNodeHederaId << std::endl;
|
|
ss << "last live sign: " << Poco::DateTimeFormatter::format(mLastLiveSign, "%f.%m.%Y %H:%M:%S") << std::endl;
|
|
|
|
return ss.str();
|
|
}
|
|
|
|
const char* NodeServer::nodeServerTypeToString(NodeServerType type)
|
|
{
|
|
switch (type) {
|
|
case NODE_SERVER_NONE: return "none";
|
|
case NODE_SERVER_GRADIDO_NODE: return "Gradido Node";
|
|
case NODE_SERVER_GRADIDO_COMMUNITY: return "Gradido Community";
|
|
case NODE_SERVER_HEDERA_MAINNET_NODE: return "Hedera Mainnet Node";
|
|
case NODE_SERVER_HEDERA_TESTNET_NODE: return "Hedera Testnet Node";
|
|
default: return "<unknown>";
|
|
}
|
|
}
|
|
|
|
Poco::Data::Statement NodeServer::_loadFromDB(Poco::Data::Session session, const std::string& fieldName)
|
|
{
|
|
Poco::Data::Statement select(session);
|
|
|
|
select << "SELECT id, url, port, group_id, server_type, node_hedera_id, last_live_sign FROM " << getTableName()
|
|
<< " where " << fieldName << " = ?"
|
|
, into(mID), into(mUrl), into(mPort), into(mGroupId), into(mServerType), into(mNodeHederaId), into(mLastLiveSign);
|
|
|
|
return select;
|
|
}
|
|
|
|
Poco::Data::Statement NodeServer::_loadMultipleFromDB(Poco::Data::Session session, const std::string& fieldName)
|
|
{
|
|
Poco::Data::Statement select(session);
|
|
// typedef Poco::Tuple<std::string, std::string, std::string, Poco::Nullable<Poco::Data::BLOB>, int> UserTuple;
|
|
select << "SELECT id, url, port, group_id, server_type, node_hedera_id, last_live_sign FROM " << getTableName()
|
|
<< " where " << fieldName << " LIKE ?";
|
|
|
|
return select;
|
|
}
|
|
Poco::Data::Statement NodeServer::_loadMultipleFromDB(Poco::Data::Session session, const std::vector<std::string> fieldNames, MysqlConditionType conditionType/* = MYSQL_CONDITION_AND*/)
|
|
{
|
|
Poco::Data::Statement select(session);
|
|
select << "SELECT id, url, port, group_id, server_type, node_hedera_id, last_live_sign FROM " << getTableName()
|
|
<< " where " << fieldNames[0] << " = ? ";
|
|
if (conditionType == MYSQL_CONDITION_AND) {
|
|
for (int i = 1; i < fieldNames.size(); i++) {
|
|
select << " AND " << fieldNames[i] << " = ?";
|
|
}
|
|
}
|
|
else if (conditionType == MYSQL_CONDITION_OR) {
|
|
for (int i = 1; i < fieldNames.size(); i++) {
|
|
select << " OR " << fieldNames[i] << " = ?";
|
|
}
|
|
}
|
|
return select;
|
|
}
|
|
|
|
Poco::Data::Statement NodeServer::_loadIdFromDB(Poco::Data::Session session)
|
|
{
|
|
Poco::Data::Statement select(session);
|
|
Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex);
|
|
|
|
select << "SELECT id FROM " << getTableName()
|
|
<< " where url = ? AND port = ? "
|
|
, into(mID), use(mUrl), use(mPort);
|
|
|
|
return select;
|
|
}
|
|
|
|
Poco::Data::Statement NodeServer::_insertIntoDB(Poco::Data::Session session)
|
|
{
|
|
Poco::Data::Statement insert(session);
|
|
Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex);
|
|
|
|
insert << "INSERT INTO " << getTableName()
|
|
<< " (url, port, group_id, server_type, node_hedera_id) VALUES(?,?,?,?,?)"
|
|
, use(mUrl), use(mPort), use(mGroupId), use(mServerType), use(mNodeHederaId);
|
|
|
|
return insert;
|
|
}
|
|
|
|
}
|
|
} |