Changeset - e58ede7d51dc
[Not reviewed]
0 4 0
HanzZ - 14 years ago 2011-04-10 20:22:21
hanzz.k@gmail.com
getBuddies sqlite statement
4 files changed with 37 insertions and 10 deletions:
0 comments (0 inline, 0 general)
include/transport/sqlite3backend.h
Show inline comments
 
@@ -77,7 +77,7 @@ class SQLite3Backend : public StorageBackend
 
		/// \param id id of user - UserInfo.id
 
		/// \param roster string list used to store user's roster
 
		/// \return true if user has been found in database and roster has been fetched
 
		bool getBuddies(long id, std::list<std::string> &roster);
 
		bool getBuddies(long id, std::list<BuddyInfo> &roster);
 

	
 
		long addBuddy(long userId, const BuddyInfo &buddyInfo);
 

	
 
@@ -103,6 +103,7 @@ class SQLite3Backend : public StorageBackend
 
		sqlite3_stmt *m_removeUserBuddiesSettings;
 
		sqlite3_stmt *m_addBuddy;
 
		sqlite3_stmt *m_updateBuddy;
 
		sqlite3_stmt *m_getBuddies;
 
};
 

	
 
}
include/transport/storagebackend.h
Show inline comments
 
@@ -71,7 +71,7 @@ class StorageBackend
 
		virtual bool removeUser(long id) = 0;
 

	
 
		/// getBuddies
 
		virtual bool getBuddies(long id, std::list<std::string> &roster) = 0;
 
		virtual bool getBuddies(long id, std::list<BuddyInfo> &roster) = 0;
 

	
 
		virtual long addBuddy(long userId, const BuddyInfo &buddyInfo) = 0;
 
		virtual void updateBuddy(long userId, const BuddyInfo &buddyInfo) = 0;
src/sqlite3backend.cpp
Show inline comments
 
@@ -42,10 +42,14 @@
 
	}
 
	
 
#define BEGIN(STATEMENT) 	sqlite3_reset(m_addBuddy);\
 
							int STATEMENT##_id = 1;
 

	
 
#define BIND_INT(STATEMENT, VARIABLE) sqlite3_bind_int(STATEMENT, STATEMENT##_id++, VARIABLE);
 
#define BIND_STR(STATEMENT, VARIABLE) sqlite3_bind_text(STATEMENT, STATEMENT##_id++, VARIABLE.c_str(), -1, SQLITE_STATIC);
 
							int STATEMENT##_id = 1;\
 
							int STATEMENT##_id_get = -1;\
 
							(void)STATEMENT##_id_get;
 

	
 
#define BIND_INT(STATEMENT, VARIABLE) sqlite3_bind_int(STATEMENT, STATEMENT##_id++, VARIABLE)
 
#define BIND_STR(STATEMENT, VARIABLE) sqlite3_bind_text(STATEMENT, STATEMENT##_id++, VARIABLE.c_str(), -1, SQLITE_STATIC)
 
#define GET_INT(STATEMENT)	sqlite3_column_int(STATEMENT, STATEMENT##_id_get++)
 
#define GET_STR(STATEMENT)	(const char *) sqlite3_column_text(STATEMENT, STATEMENT##_id_get++)
 
#define EXECUTE_STATEMENT(STATEMENT, NAME) 	if(sqlite3_step(STATEMENT) != SQLITE_DONE) {\
 
		onStorageError(NAME, (sqlite3_errmsg(m_db) == NULL ? "" : sqlite3_errmsg(m_db)));\
 
			}
 
@@ -95,6 +99,7 @@ bool SQLite3Backend::connect() {
 

	
 
	PREP_STMT(m_addBuddy, "INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES (?, ?, ?, ?, ?, ?)");
 
	PREP_STMT(m_updateBuddy, "UPDATE " + m_prefix + "buddies SET groups=?, nickname=?, flags=?, subscription=? WHERE user_id=? AND uin=?");
 
	PREP_STMT(m_getBuddies, "SELECT id uin, subscription, nickname, groups, flags FROM " + m_prefix + "buddies WHERE user_id=? ORDER BY id ASC");
 

	
 
	return true;
 
}
 
@@ -239,7 +244,28 @@ void SQLite3Backend::updateBuddy(long userId, const BuddyInfo &buddyInfo) {
 
	EXECUTE_STATEMENT(m_updateBuddy, "updateBuddy query");
 
}
 

	
 
bool SQLite3Backend::getBuddies(long id, std::list<std::string> &roster) {
 
bool SQLite3Backend::getBuddies(long id, std::list<BuddyInfo> &roster) {
 
// 	"SELECT id, user_id, uin, subscription, nickname, groups, flags FROM " + m_prefix + "buddies WHERE user_id=? ORDER BY id ASC"
 
	BEGIN(m_getBuddies);
 
	BIND_INT(m_getBuddies, id);
 

	
 
	int ret;
 
	while((ret = sqlite3_step(m_getUser)) == SQLITE_ROW) {
 
		BuddyInfo b;
 
		b.id = GET_INT(m_getBuddies);
 
		b.legacyName = GET_STR(m_getBuddies);
 
		b.subscription = GET_STR(m_getBuddies);
 
		b.alias = GET_STR(m_getBuddies);
 
		b.groups.push_back(GET_STR(m_getBuddies));
 
		b.flags = GET_INT(m_getBuddies);
 
		roster.push_back(b);
 
	}
 

	
 
	if (ret != SQLITE_DONE) {
 
		onStorageError("getBuddies query", (sqlite3_errmsg(m_db) == NULL ? "" : sqlite3_errmsg(m_db)));
 
		return false;
 
	}
 
	
 
	return true;
 
}
 

	
src/userregistration.cpp
Show inline comments
 
@@ -77,11 +77,11 @@ bool UserRegistration::unregisterUser(const std::string &barejid) {
 
	User *user = m_userManager->getUser(barejid);
 

	
 
	// roster contains already escaped jids
 
	std::list <std::string> roster;
 
	std::list <BuddyInfo> roster;
 
	m_storageBackend->getBuddies(userInfo.id, roster);
 

	
 
	for(std::list<std::string>::iterator u = roster.begin(); u != roster.end() ; u++){
 
		std::string name = *u;
 
	for(std::list<BuddyInfo>::iterator u = roster.begin(); u != roster.end() ; u++){
 
		std::string name = (*u).legacyName;
 

	
 
		response = Swift::Presence::create();
 
		response->setTo(Swift::JID(barejid));
0 comments (0 inline, 0 general)