forked from chookspace/chookchat
now you can unlike :(
This commit is contained in:
@@ -200,8 +200,36 @@ void Database::addLike(uint64_t postId, uint64_t userId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sqlite3_step(stmt) != SQLITE_DONE) {
|
if (sqlite3_step(stmt) != SQLITE_DONE) {
|
||||||
|
// the user has UNLIKED something??? impossible
|
||||||
sqlite3_finalize(stmt);
|
sqlite3_finalize(stmt);
|
||||||
throw std::runtime_error("you lowkey already liked the post");
|
// get rid of their like, how sad
|
||||||
|
sql.str("");
|
||||||
|
sql.clear();
|
||||||
|
sql << "UPDATE posts SET likes = COALESCE(likes, 1) - 1 WHERE id = " << postId << ";";
|
||||||
|
sqlstr = sql.str();
|
||||||
|
|
||||||
|
if (sqlite3_prepare_v2(db, sqlstr.c_str(), -1, &stmt, nullptr) != SQLITE_OK) {
|
||||||
|
throw std::runtime_error("sqlite3 error: " + std::string(sqlite3_errmsg(db)));
|
||||||
|
}
|
||||||
|
if (sqlite3_step(stmt) != SQLITE_DONE) {
|
||||||
|
throw std::runtime_error("sqlite3 error: " + std::string(sqlite3_errmsg(db)));
|
||||||
|
}
|
||||||
|
sqlite3_finalize(stmt);
|
||||||
|
|
||||||
|
// remove like from the likes table :(
|
||||||
|
sql.str("");
|
||||||
|
sql.clear();
|
||||||
|
sql << "DELETE FROM likes WHERE postid = " << postId << " AND userid = " << userId << ";";
|
||||||
|
sqlstr = sql.str();
|
||||||
|
|
||||||
|
if (sqlite3_prepare_v2(db, sqlstr.c_str(), -1, &stmt, nullptr) != SQLITE_OK) {
|
||||||
|
throw std::runtime_error("sqlite3 error: " + std::string(sqlite3_errmsg(db)));
|
||||||
|
}
|
||||||
|
if (sqlite3_step(stmt) != SQLITE_DONE) {
|
||||||
|
throw std::runtime_error("sqlite3 error: " + std::string(sqlite3_errmsg(db)));
|
||||||
|
}
|
||||||
|
sqlite3_finalize(stmt);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
sqlite3_finalize(stmt);
|
sqlite3_finalize(stmt);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user