Files
@ 14e450f7b5a8
Branch filter:
Location: libtransport.git/backends/twitter/userdb.cpp - annotation
14e450f7b5a8
1.9 KiB
text/x-c++hdr
Do not create pidfile and portfile directories on windows
db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 db3a434e6299 | #include "userdb.h"
DEFINE_LOGGER(logger, "Twitter Backend Database");
UserDB::UserDB(std::string database): errMsg(0), rc(0), dbOpen(false)
{
rc = sqlite3_open(database.c_str(), &db);
if( rc ) {
LOG4CXX_ERROR(logger, "Failed to open database" << database);
sqlite3_close(db);
exit(0);
}
LOG4CXX_INFO(logger, "Checking if table users is present")
if(exe(std::string("select * from users limit 1;")) != SQLITE_OK) {
exe("create table users (user text primarykey, key text, secret text);");
LOG4CXX_INFO(logger, "Created table users in the database");
}
dbOpen = true;
}
int UserDB::exe(std::string s_exe)
{
data.clear();
//LOG4CXX_INFO(logger, "Executing: " << s_exe)
rc = sqlite3_get_table(db, s_exe.c_str(), &result, &nRow, &nCol, &errMsg);
if( rc == SQLITE_OK ) {
int col = nCol; //Skip past the headers
for(int i = 0; i < nRow; ++i) {
std::vector<std::string> row;
for(int j = 0 ; j < nCol ; j++) row.push_back(result[col++]);
data.push_back(row);
}
}
sqlite3_free_table(result);
return rc;
}
void UserDB::insert(UserData info)
{
std::string q = "insert into users (user,key,secret) values ('" + info.user + "','" + info.accessTokenKey + "','" + info.accessTokenSecret + "');";
if(exe(q) != SQLITE_OK) {
LOG4CXX_ERROR(logger, "Failed to insert into database!");
exit(0);
}
}
void UserDB::fetch(std::string user, std::vector<std::string> &row)
{
std::string q = "select key,secret from users where user='" + user + "'";
if(exe(q) != SQLITE_OK) {
LOG4CXX_ERROR(logger, "Failed to fetch data from database!");
exit(0);
}
row = data[0];
}
std::set<std::string> UserDB::getRegisteredUsers()
{
std::string q = "select user from users";
if(exe(q) != SQLITE_OK) {
LOG4CXX_ERROR(logger, "Failed to registered users from database!");
exit(0);
}
std::set<std::string> users;
for(int i=0 ; i<data.size() ; i++)
users.insert(data[i][0]);
return users;
}
UserDB::~UserDB()
{
sqlite3_close(db);
}
|