Line data Source code
1 : #include "LikesDatabaseManager.h"
2 : #include "api_server_constants.h"
3 :
4 : /* Para guardar:
5 : * likes entre personas
6 : * nombre nuevos matches
7 : * todos los matches de un usuario
8 : * todas las interacciones de un usario
9 : * */
10 :
11 204 : LikesDatabaseManager::LikesDatabaseManager(rocksdb::DB *database) : DatabaseManager(database) {
12 :
13 204 : }
14 :
15 84 : bool LikesDatabaseManager::matches(std::string user1, std::string user2){
16 168 : std::string aux, debug_msg;
17 84 : bool existed1 = getEntry(user1 + DB_SEPARATOR + user2, aux);
18 84 : bool liked1 = (existed1 && (aux.compare(LIKED_TOKEN) == 0));
19 84 : debug_msg = (existed1) ? " has " + aux: " did not interact with " + user2;
20 84 : LOGG(DEBUG) << user1 << debug_msg;
21 :
22 84 : bool existed2 = getEntry(user2 + DB_SEPARATOR + user1, aux);
23 84 : bool liked2 = ( existed2 && (aux.compare(LIKED_TOKEN) == 0));
24 84 : debug_msg = (existed2) ? " has " + aux: " did not interacted with " + user1;
25 84 : LOGG(DEBUG) << user2 << debug_msg;
26 :
27 168 : return liked1 && liked2;
28 : }
29 :
30 69 : void LikesDatabaseManager::saveLike(std::string deUser, std::string aUser, std::string boolean) {
31 138 : std::string interacted_aux, matches_aux, new_aux;
32 69 : this->addEntry(deUser + DB_SEPARATOR + aUser, boolean);
33 :
34 69 : if (getEntry(USERS_INTERACTED_OF + deUser, interacted_aux)){
35 25 : addEntry(USERS_INTERACTED_OF + deUser,interacted_aux + aUser + "\n");
36 : }else{
37 44 : addEntry(USERS_INTERACTED_OF + deUser,aUser + "\n");
38 : }
39 :
40 69 : if( matches(deUser,aUser)){
41 : //TODO refactor of registering new matches
42 27 : getEntry(MATCHES_OF + deUser, matches_aux);
43 27 : addEntry(MATCHES_OF + deUser, matches_aux + aUser + "\n");
44 :
45 27 : getEntry(NEW_MATCHES_OF + deUser, new_aux);
46 27 : addEntry(NEW_MATCHES_OF + deUser, new_aux + aUser + "\n");
47 :
48 27 : getEntry(MATCHES_OF + aUser, matches_aux);
49 27 : addEntry(MATCHES_OF + aUser, matches_aux + deUser + "\n");
50 :
51 27 : getEntry(NEW_MATCHES_OF + aUser, new_aux);
52 27 : addEntry(NEW_MATCHES_OF + aUser, new_aux + deUser + "\n");
53 :
54 69 : }
55 69 : }
56 :
57 11 : void LikesDatabaseManager::getMatches(std::string deUser, std::string &usernamesMatched){
58 11 : getEntry(MATCHES_OF + deUser, usernamesMatched);
59 11 : this->replaceEntry(NEW_MATCHES_OF + deUser, "");
60 11 : }
61 :
62 7 : void LikesDatabaseManager::getNewMatches(std::string deUser, std::string &usernamesMatched){
63 : //lo borra cuando lo pide y cuando pide todos los matches
64 7 : getEntry(NEW_MATCHES_OF + deUser, usernamesMatched);
65 7 : this->replaceEntry(NEW_MATCHES_OF + deUser, "");
66 7 : }
67 :
68 9 : void LikesDatabaseManager::getInteractedUsers(std::string deUser, std::string &usernamesInteracted){
69 9 : getEntry(USERS_INTERACTED_OF + deUser, usernamesInteracted);
70 39 : }
|