Skip to content

Commit b672b49

Browse files
Merge pull request #23 from 0WAQ/main
优雅的
2 parents 36a0f9b + 768eed4 commit b672b49

File tree

3 files changed

+75
-62
lines changed

3 files changed

+75
-62
lines changed

mysql.cc

Lines changed: 73 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -6,36 +6,46 @@
66

77
#include "jdbc/mysql_driver.h"
88
#include "json/json.h"
9+
910
void sql_process_request(std::string sender, std::string receiver, std::string attitude)
1011
{
1112
std::vector<std::string> usernamelist;
12-
sql::mysql::MySQL_Driver *driver;
13-
driver = sql::mysql::get_mysql_driver_instance();
14-
sql::Connection *con;
15-
con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
13+
sql::mysql::MySQL_Driver *driver = sql::mysql::get_mysql_driver_instance();
14+
sql::Connection *con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
15+
1616
con->setSchema("flypen");
17+
1718
std::string readdata = "SELECT req FROM users WHERE username = ?";
1819
sql::PreparedStatement *readdatament = con->prepareStatement(readdata);
20+
1921
readdatament->setString(1, sender);
22+
2023
sql::ResultSet *resultSet = readdatament->executeQuery();
2124
std::string req;
25+
2226
if (resultSet->next())
2327
req = resultSet->getString("req");
28+
2429
size_t pos = req.find(sender);
25-
if (pos != std::string::npos&&pos!=0)
26-
{
30+
31+
if (pos != std::string::npos && pos!=0)
2732
req.erase(pos-1, sender.length()+1);
28-
}else if(pos==0)req.erase(pos, sender.length()+1);
33+
else if(pos == 0)
34+
req.erase(pos, sender.length()+1);
35+
2936
std::string updateQuery = "UPDATE users SET req = ? WHERE username = ?";
3037
sql::PreparedStatement *updateStatement = con->prepareStatement(updateQuery);
38+
3139
updateStatement->setString(1, req);
3240
updateStatement->setString(2, receiver);
3341
updateStatement->execute();
42+
3443
if (attitude == "allow")
3544
{
3645
std::string readdata = "SELECT friends FROM users WHERE username = ?";
3746
sql::PreparedStatement *Rreaddatament = con->prepareStatement(readdata);
3847
sql::PreparedStatement *Sreaddatament = con->prepareStatement(readdata);
48+
3949
Rreaddatament->setString(1, receiver);
4050
Sreaddatament->setString(1, sender);
4151
sql::ResultSet *RresultSet = Rreaddatament->executeQuery();
@@ -47,10 +57,12 @@ void sql_process_request(std::string sender, std::string receiver, std::string a
4757
if (SresultSet->next())
4858
Sfriendslist = SresultSet->getString("friends");
4959
size_t pos = Rfriendslist.find(sender);
50-
if(pos!=std::string::npos)return;
60+
if(pos != std::string::npos)
61+
return;
5162
std::string updateQuery = "UPDATE users SET friends = ? WHERE username = ?";
5263
sql::PreparedStatement *updateR = con->prepareStatement(updateQuery);
5364
sql::PreparedStatement *updateS = con->prepareStatement(updateQuery);
65+
5466
if (Rfriendslist != "")
5567
{
5668
Rfriendslist += "," + sender;
@@ -64,6 +76,7 @@ void sql_process_request(std::string sender, std::string receiver, std::string a
6476
updateR->setString(2, receiver);
6577
updateR->execute();
6678
}
79+
6780
if (Sfriendslist != "")
6881
{
6982
Sfriendslist += "," + receiver;
@@ -78,11 +91,10 @@ void sql_process_request(std::string sender, std::string receiver, std::string a
7891
updateS->execute();
7992
}
8093
}
81-
else
82-
{
83-
return;
84-
}
94+
95+
return;
8596
}
97+
8698
void sql_addrequest(std::string sender, std::string receiver)
8799
{
88100
std::vector<std::string> usernamelist;
@@ -117,6 +129,7 @@ void sql_addrequest(std::string sender, std::string receiver)
117129
updateStatement->execute();
118130
}
119131
}
132+
120133
void sql_addconnect(std::string connectptr)
121134
{
122135
try
@@ -140,6 +153,7 @@ void sql_addconnect(std::string connectptr)
140153
std::cerr << "SQL Exception: " << e.what() << std::endl;
141154
}
142155
}
156+
143157
void sql_addhistory(std::string sender, std::string receiver, std::string message, std::string isread)
144158
{
145159
try
@@ -167,6 +181,7 @@ void sql_addhistory(std::string sender, std::string receiver, std::string messag
167181
std::cerr << "SQL Exception: " << e.what() << std::endl;
168182
}
169183
}
184+
170185
void sql_add(std::string username, std::string passwd, int avatar) {
171186
try {
172187

@@ -194,6 +209,7 @@ void sql_add(std::string username, std::string passwd, int avatar) {
194209
std::cerr << "SQL Exception: " << e.what() << std::endl;
195210
}
196211
}
212+
197213
// bool sql_check(std::string user) {
198214
// bool result = false;
199215
// try {
@@ -230,60 +246,56 @@ void sql_add(std::string username, std::string passwd, int avatar) {
230246

231247
// return result;
232248
// }
233-
Json::Value get_chat_info(std::string me, std::string who_send_me="") {
234-
Json::Value json;
235249

236-
try {
237-
sql::mysql::MySQL_Driver *driver;
238-
driver = sql::mysql::get_mysql_driver_instance();
239-
sql::Connection *con;
240-
con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
241-
con->setSchema("flypen");
250+
Json::Value get_chat_info(std::string me, std::string who_send_me)
251+
{
252+
Json::Value json;
253+
std::string send[2] = {me, who_send_me};
242254

243-
if (!who_send_me.empty()) {
244-
std::string sql = "SELECT * FROM users WHERE username = ? LIMIT 1";
245-
sql::PreparedStatement *prepStmt = con->prepareStatement(sql);
246-
prepStmt->setString(1, who_send_me);
247-
248-
sql::ResultSet *res = prepStmt->executeQuery();
249-
if (res->next()) {
250-
Json::Value user;
251-
int avatar=res->getInt("avatar");
252-
std::string friends=res->getString("friends");
253-
std::string req=res->getString("req");
254-
user["avatar"] = avatar;
255-
user["friends"] = friends;
256-
user["req"] = req;
257-
258-
json[who_send_me] = user;
259-
}
260-
}
255+
try
256+
{
257+
sql::mysql::MySQL_Driver *driver;
258+
driver = sql::mysql::get_mysql_driver_instance();
259+
sql::Connection *con;
260+
con = driver->connect("tcp://8.130.48.157:3306", "root", "abc.123");
261+
con->setSchema("flypen");
261262

262-
if (!me.empty()) {
263-
std::string sql = "SELECT * FROM users WHERE username = ? LIMIT 1";
264-
sql::PreparedStatement *prepStmt = con->prepareStatement(sql);
265-
prepStmt->setString(1, me);
266-
267-
sql::ResultSet *res = prepStmt->executeQuery();
268-
if (res->next()) {
269-
Json::Value user;
270-
int avatar=res->getInt("avatar");
271-
std::string friends=res->getString("friends");
272-
std::string req=res->getString("req");
273-
user["avatar"] = avatar;
274-
user["friends"] = friends;
275-
user["req"] = req;
276-
277-
json[me] = user;
278-
}
279-
}
263+
for(int i = 0; i < 2; i++)
264+
{
265+
if(!send[i].empty())
266+
{
267+
std::string sql = "SELECT * FROM users WHERE username = ? LIMIT 1";
268+
sql::PreparedStatement *prepStmt = con->prepareStatement(sql);
269+
prepStmt->setString(1, send[i]);
270+
271+
sql::ResultSet *res = prepStmt->executeQuery();
272+
273+
if (res->next()) {
274+
Json::Value user;
275+
int avatar=res->getInt("avatar");
276+
std::string friends=res->getString("friends");
277+
std::string req=res->getString("req");
278+
279+
user["avatar"] = avatar;
280+
user["friends"] = friends;
281+
user["req"] = req;
280282

281-
} catch (sql::SQLException &e) {
282-
std::cerr << "SQL Exception: " << e.what() << std::endl;
283-
}
283+
Json::StreamWriterBuilder builder;
284+
std::string userJson = Json::writeString(builder, user);
284285

285-
return json;
286+
json[send[i]] = user;
287+
}
288+
}
289+
}
290+
}
291+
catch (sql::SQLException &e)
292+
{
293+
std::cerr << "SQL Exception: " << e.what() << std::endl;
294+
}
295+
296+
return json;
286297
}
298+
287299
bool sql_check(std::string user, std::string passwd) {
288300
bool result = false;
289301
try
@@ -331,6 +343,7 @@ bool sql_check(std::string user, std::string passwd) {
331343

332344
return result;
333345
}
346+
334347
Json::Value sql_find_my_msg(std::string me, std::string who_send_me)
335348
{
336349
// std::cout << "login user: " << user << std::endl;

mysql.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ void sql_addconnect(std::string connectptr);
1111
void sql_addrequest(std::string send,std::string receiver);
1212
void sql_process_request(std::string ,std::string,std::string);
1313
Json::Value sql_find_my_msg(std::string,std::string);
14-
Json::Value get_chat_info(std::string,std::string);
14+
Json::Value get_chat_info(std::string,std::string="");
1515
//bool sql_check(std::string );
1616
#endif

run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
cd build
44
cmake ..
55
make clean
6-
make -j 8
6+
make -j16
77
./flypen
88
cd ..

0 commit comments

Comments
 (0)