Пример #1
0
void SQLite3Backend::updateUserSetting(long id, const std::string &variable, const std::string &value) {
	BEGIN(m_updateUserSetting);
	BIND_STR(m_updateUserSetting, value);
	BIND_INT(m_updateUserSetting, id);
	BIND_STR(m_updateUserSetting, variable);
	EXECUTE_STATEMENT(m_updateUserSetting, "m_updateUserSetting");
}
Пример #2
0
void SQLite3Backend::updateBuddySetting(long userId, long buddyId, const std::string &variable, int type, const std::string &value) {
	BEGIN(m_updateBuddySetting);
	BIND_INT(m_updateBuddySetting, userId);
	BIND_INT(m_updateBuddySetting, buddyId);
	BIND_STR(m_updateBuddySetting, variable);
	BIND_INT(m_updateBuddySetting, type);
	BIND_STR(m_updateBuddySetting, value);
	EXECUTE_STATEMENT(m_updateBuddySetting, "m_updateBuddySetting");
}
Пример #3
0
void SQLite3Backend::getUserSetting(long id, const std::string &variable, int &type, std::string &value) {
	BEGIN(m_getUserSetting);
	BIND_INT(m_getUserSetting, id);
	BIND_STR(m_getUserSetting, variable);
	if(sqlite3_step(m_getUserSetting) != SQLITE_ROW) {
		BEGIN(m_setUserSetting);
		BIND_INT(m_setUserSetting, id);
		BIND_STR(m_setUserSetting, variable);
		BIND_INT(m_setUserSetting, type);
		BIND_STR(m_setUserSetting, value);
		EXECUTE_STATEMENT(m_setUserSetting, "m_setUserSetting");
	}
	else {
		type = GET_INT(m_getUserSetting);
		value = GET_STR(m_getUserSetting);
	}

	int ret;
	while((ret = sqlite3_step(m_getUserSetting)) == SQLITE_ROW) {
	}
}
Пример #4
0
long SQLite3Backend::addBuddy(long userId, const BuddyInfo &buddyInfo) {
// 	"INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES (?, ?, ?, ?, ?, ?)"
	std::string groups = StorageBackend::serializeGroups(buddyInfo.groups);
	BEGIN(m_addBuddy);
	BIND_INT(m_addBuddy, userId);
	BIND_STR(m_addBuddy, buddyInfo.legacyName);
	BIND_STR(m_addBuddy, buddyInfo.subscription);
	BIND_STR(m_addBuddy, groups);
	BIND_STR(m_addBuddy, buddyInfo.alias);
	BIND_INT(m_addBuddy, buddyInfo.flags);

	if(sqlite3_step(m_addBuddy) != SQLITE_DONE) {
		LOG4CXX_ERROR(logger, "addBuddy query"<< (sqlite3_errmsg(m_db) == NULL ? "" : sqlite3_errmsg(m_db)));
		return -1;
	}

	long id = (long) sqlite3_last_insert_rowid(m_db);

// 	INSERT OR REPLACE INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES (?, ?, ?, ?, ?)
	BEGIN(m_updateBuddySetting);
	BIND_INT(m_updateBuddySetting, userId);
	BIND_INT(m_updateBuddySetting, id);
	BIND_STR(m_updateBuddySetting, buddyInfo.settings.find("icon_hash")->first);
	BIND_INT(m_updateBuddySetting, TYPE_STRING);
	BIND_STR(m_updateBuddySetting, buddyInfo.settings.find("icon_hash")->second.s);

	EXECUTE_STATEMENT(m_updateBuddySetting, "updateBuddySetting query");
	return id;
}
Пример #5
0
void SQLite3Backend::getBuddySetting(long userId, long buddyId, const std::string &variable, int &type, std::string &value) {
	BEGIN(m_getBuddySetting);
	BIND_INT(m_getBuddySetting, userId);
	BIND_INT(m_getBuddySetting, buddyId);
	BIND_STR(m_getBuddySetting, variable);
	if(sqlite3_step(m_getBuddySetting) == SQLITE_ROW) {
		type = GET_INT(m_getBuddySetting);
		value = GET_STR(m_getBuddySetting);
	}

	int ret;
	while((ret = sqlite3_step(m_getBuddySetting)) == SQLITE_ROW) {
	}
}
Пример #6
0
bool getAvatar(const std::string &db_path, const std::string &name, std::string &photo) {
	bool ret = false;
	sqlite3 *db;
	LOG4CXX_INFO(logger, "Opening database " << db_path);
	if (sqlite3_open(db_path.c_str(), &db)) {
		sqlite3_close(db);
		LOG4CXX_ERROR(logger, "Can't open database");
	}
	else {
		sqlite3_stmt *stmt;
		PREP_STMT(stmt, "SELECT avatar_image FROM Contacts WHERE skypename=?");
		if (stmt) {
			BEGIN(stmt);
			BIND_STR(stmt, name);
			if(sqlite3_step(stmt) == SQLITE_ROW) {
				int size = sqlite3_column_bytes(stmt, 0);
				if (size > 0) {
				    const void *data = sqlite3_column_blob(stmt, 0);
				    photo = std::string((const char *)data + 1, size - 1);
				    ret = true;
				} else {
				    ret = false;
				}
			}
			else {
				LOG4CXX_ERROR(logger, (sqlite3_errmsg(db) == NULL ? "" : sqlite3_errmsg(db)));
			}

			int ret;
			while((ret = sqlite3_step(stmt)) == SQLITE_ROW) {
			}
			FINALIZE_STMT(stmt);
		}
		else {
			LOG4CXX_ERROR(logger, "Can't create prepared statement");
			LOG4CXX_ERROR(logger, (sqlite3_errmsg(db) == NULL ? "" : sqlite3_errmsg(db)));
		}
		sqlite3_close(db);
	}
	return ret;
}
Пример #7
0
void SQLite3Backend::updateBuddy(long userId, const BuddyInfo &buddyInfo) {
// 	UPDATE " + m_prefix + "buddies SET groups=?, nickname=?, flags=?, subscription=? WHERE user_id=? AND uin=?
	std::string groups = StorageBackend::serializeGroups(buddyInfo.groups);
	BEGIN(m_updateBuddy);
	BIND_STR(m_updateBuddy, groups);
	BIND_STR(m_updateBuddy, buddyInfo.alias);
	BIND_INT(m_updateBuddy, buddyInfo.flags);
	BIND_STR(m_updateBuddy, buddyInfo.subscription);
	BIND_INT(m_updateBuddy, userId);
	BIND_STR(m_updateBuddy, buddyInfo.legacyName);

	EXECUTE_STATEMENT(m_updateBuddy, "updateBuddy query");

// 	INSERT OR REPLACE INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES (?, ?, ?, ?, ?)
	BEGIN(m_updateBuddySetting);
	BIND_INT(m_updateBuddySetting, userId);
	BIND_INT(m_updateBuddySetting, buddyInfo.id);
	BIND_STR(m_updateBuddySetting, buddyInfo.settings.find("icon_hash")->first);
	BIND_INT(m_updateBuddySetting, TYPE_STRING);
	BIND_STR(m_updateBuddySetting, buddyInfo.settings.find("icon_hash")->second.s);

	EXECUTE_STATEMENT(m_updateBuddySetting, "updateBuddySetting query");
}