Add easySQLQuery for simple sql query

This commit is contained in:
Benau 2019-05-09 12:29:29 +08:00
parent c38278fbc1
commit c90d32e35d
2 changed files with 23 additions and 164 deletions

View File

@ -318,23 +318,7 @@ void ServerLobby::initServerStatsTable()
<< " connected_time, disconnected_time, ping\n" << " connected_time, disconnected_time, ping\n"
<< " FROM " << m_server_stats_table << ";"; << " FROM " << m_server_stats_table << ";";
query = oss.str(); query = oss.str();
ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0); easySQLQuery(query);
if (ret == SQLITE_OK)
{
ret = sqlite3_step(stmt);
ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK)
{
Log::error("ServerLobby",
"Error finalize database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
}
else
{
Log::error("ServerLobby", "Error preparing database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
// _current_players // _current_players
// Current players in server with ip in human readable format and time // Current players in server with ip in human readable format and time
@ -352,23 +336,7 @@ void ServerLobby::initServerStatsTable()
<< " connected_time, ping FROM " << m_server_stats_table << "\n" << " connected_time, ping FROM " << m_server_stats_table << "\n"
<< " WHERE connected_time = disconnected_time;"; << " WHERE connected_time = disconnected_time;";
query = oss.str(); query = oss.str();
ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0); easySQLQuery(query);
if (ret == SQLITE_OK)
{
ret = sqlite3_step(stmt);
ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK)
{
Log::error("ServerLobby",
"Error finalize database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
}
else
{
Log::error("ServerLobby", "Error preparing database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
// _player_stats // _player_stats
// All players with online id and username with their time played stats // All players with online id and username with their time played stats
@ -389,23 +357,7 @@ void ServerLobby::initServerStatsTable()
<< " FROM " << m_server_stats_table << "\n" << " FROM " << m_server_stats_table << "\n"
<< " WHERE online_id != 0 GROUP BY online_id ORDER BY num_connections DESC;"; << " WHERE online_id != 0 GROUP BY online_id ORDER BY num_connections DESC;";
query = oss.str(); query = oss.str();
ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0); easySQLQuery(query);
if (ret == SQLITE_OK)
{
ret = sqlite3_step(stmt);
ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK)
{
Log::error("ServerLobby",
"Error finalize database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
}
else
{
Log::error("ServerLobby", "Error preparing database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
uint32_t last_host_id = 0; uint32_t last_host_id = 0;
query = StringUtils::insertValues("SELECT MAX(host_id) FROM %s;", query = StringUtils::insertValues("SELECT MAX(host_id) FROM %s;",
@ -442,23 +394,7 @@ void ServerLobby::initServerStatsTable()
"UPDATE %s SET disconnected_time = datetime('now') " "UPDATE %s SET disconnected_time = datetime('now') "
"WHERE connected_time = disconnected_time;", "WHERE connected_time = disconnected_time;",
m_server_stats_table.c_str()); m_server_stats_table.c_str());
ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0); easySQLQuery(query);
if (ret == SQLITE_OK)
{
ret = sqlite3_step(stmt);
ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK)
{
Log::error("ServerLobby",
"Error finalize database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
}
else
{
Log::error("ServerLobby", "Error preparing database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
#endif #endif
} // initServerStatsTable } // initServerStatsTable
@ -484,25 +420,7 @@ void ServerLobby::writeDisconnectInfoTable(STKPeer* peer)
"UPDATE %s SET disconnected_time = datetime('now'), ping = %d " "UPDATE %s SET disconnected_time = datetime('now'), ping = %d "
"WHERE host_id = %u;", m_server_stats_table.c_str(), "WHERE host_id = %u;", m_server_stats_table.c_str(),
peer->getAveragePing(), peer->getHostId()); peer->getAveragePing(), peer->getHostId());
easySQLQuery(query);
sqlite3_stmt* stmt = NULL;
int ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0);
if (ret == SQLITE_OK)
{
ret = sqlite3_step(stmt);
ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK)
{
Log::error("ServerLobby",
"Error finalize database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
}
else
{
Log::error("ServerLobby", "Error preparing database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
#endif #endif
} // writeDisconnectInfoTable } // writeDisconnectInfoTable
@ -835,7 +753,15 @@ void ServerLobby::cleanupDatabase()
oss << ");"; oss << ");";
query = oss.str(); query = oss.str();
} }
easySQLQuery(query);
} // cleanupDatabase
//-----------------------------------------------------------------------------
/** Run simple query without bothering the result. */
void ServerLobby::easySQLQuery(const std::string& query) const
{
if (!m_db)
return;
sqlite3_stmt* stmt = NULL; sqlite3_stmt* stmt = NULL;
int ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0); int ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0);
if (ret == SQLITE_OK) if (ret == SQLITE_OK)
@ -845,16 +771,17 @@ void ServerLobby::cleanupDatabase()
if (ret != SQLITE_OK) if (ret != SQLITE_OK)
{ {
Log::error("ServerLobby", Log::error("ServerLobby",
"Error finalize database for query %s: %s", "Error finalize database for easy query %s: %s",
query.c_str(), sqlite3_errmsg(m_db)); query.c_str(), sqlite3_errmsg(m_db));
} }
} }
else else
{ {
Log::error("ServerLobby", "Error preparing database for query %s: %s", Log::error("ServerLobby",
"Error preparing database for easy query %s: %s",
query.c_str(), sqlite3_errmsg(m_db)); query.c_str(), sqlite3_errmsg(m_db));
} }
} // cleanupDatabase } // easySQLQuery
#endif #endif
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -2523,25 +2450,7 @@ void ServerLobby::saveIPBanTable(const TransportAddress& addr)
"INSERT INTO %s (ip_start, ip_end) " "INSERT INTO %s (ip_start, ip_end) "
"VALUES (%u, %u);", "VALUES (%u, %u);",
ServerConfig::m_ip_ban_table.c_str(), addr.getIP(), addr.getIP()); ServerConfig::m_ip_ban_table.c_str(), addr.getIP(), addr.getIP());
easySQLQuery(query);
sqlite3_stmt* stmt = NULL;
int ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0);
if (ret == SQLITE_OK)
{
ret = sqlite3_step(stmt);
ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK)
{
Log::error("ServerLobby",
"Error finalize database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
}
else
{
Log::error("ServerLobby", "Error preparing database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
#endif #endif
} // saveIPBanTable } // saveIPBanTable
@ -2897,25 +2806,7 @@ void ServerLobby::handleUnencryptedConnection(std::shared_ptr<STKPeer> peer,
StringUtils::wideToUtf8( StringUtils::wideToUtf8(
peer->getPlayerProfiles()[0]->getName()).c_str(), player_count, peer->getPlayerProfiles()[0]->getName()).c_str(), player_count,
peer->getUserVersion().c_str(), peer->getAveragePing()); peer->getUserVersion().c_str(), peer->getAveragePing());
easySQLQuery(query);
sqlite3_stmt* stmt = NULL;
int ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0);
if (ret == SQLITE_OK)
{
ret = sqlite3_step(stmt);
ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK)
{
Log::error("ServerLobby",
"Error finalize database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
}
else
{
Log::error("ServerLobby", "Error preparing database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
#endif #endif
} // handleUnencryptedConnection } // handleUnencryptedConnection
@ -3735,24 +3626,7 @@ void ServerLobby::testBannedForIP(STKPeer* peer) const
"last_trigger = datetime('now') " "last_trigger = datetime('now') "
"WHERE ip_start = %u AND ip_end = %u;", "WHERE ip_start = %u AND ip_end = %u;",
ServerConfig::m_ip_ban_table.c_str(), ip_start, ip_end); ServerConfig::m_ip_ban_table.c_str(), ip_start, ip_end);
int ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0); easySQLQuery(query);
if (ret == SQLITE_OK)
{
ret = sqlite3_step(stmt);
ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK)
{
Log::error("ServerLobby",
"Error finalize database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
}
else
{
Log::error("ServerLobby",
"Error preparing database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
} }
#endif #endif
} // testBannedForIP } // testBannedForIP
@ -3811,24 +3685,7 @@ void ServerLobby::testBannedForOnlineId(STKPeer* peer,
"last_trigger = datetime('now') " "last_trigger = datetime('now') "
"WHERE online_id = %u;", "WHERE online_id = %u;",
ServerConfig::m_online_id_ban_table.c_str(), online_id); ServerConfig::m_online_id_ban_table.c_str(), online_id);
int ret = sqlite3_prepare_v2(m_db, query.c_str(), -1, &stmt, 0); easySQLQuery(query);
if (ret == SQLITE_OK)
{
ret = sqlite3_step(stmt);
ret = sqlite3_finalize(stmt);
if (ret != SQLITE_OK)
{
Log::error("ServerLobby",
"Error finalize database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
}
else
{
Log::error("ServerLobby",
"Error preparing database for query %s: %s",
query.c_str(), sqlite3_errmsg(m_db));
}
} }
#endif #endif
} // testBannedForOnlineId } // testBannedForOnlineId

View File

@ -82,6 +82,8 @@ private:
uint64_t m_last_cleanup_db_time; uint64_t m_last_cleanup_db_time;
void cleanupDatabase(); void cleanupDatabase();
void easySQLQuery(const std::string& query) const;
#endif #endif
void initDatabase(); void initDatabase();