Esempio n. 1
0
std::shared_ptr<std::string> fCache::get(const std::string &key)
{
	std::stringstream sql;
	DatabaseResult result;
	sql << "SELECT data FROM " << TABLE_NAME << " WHERE id='" << key << "';";
    _db.executeSQL(sql.str().c_str(), result);
    if(result.isOK())
    {
    	///////////////////////////////////////////////////////////////////////////
    	// Update timestamp
    	sql.str("");
    	sql <<  "UPDATE " << TABLE_NAME << " SET timestamp=" << Timestamp::unixTime() << " WHERE id='" << key << "';";
    	_db.executeSQL(sql.str().c_str());
    	///////////////////////////////////////////////////////////////////////////

    	if(result.records.size()==1 && result.records[0].size() == 1)
    	{
            auto readBuffer = std::make_shared<std::string>(std::move(result.records.at(0).at(0)));
            if(!readBuffer->empty())
            {
                return readBuffer;
            }
    	}
    } else
    {
        AMIGO_LOG_E(TAG, "::get() sql failed: '%s'\n", sql.str().c_str());
    }

    return nullptr;
}
Esempio n. 2
0
int fCache::_getCacheSize()
{
	DatabaseResult result;
	std::stringstream sql;
	sql << "SELECT COUNT(*) FROM " << TABLE_NAME << " WHERE persistent=0;";
    _db.executeSQL(sql.str().c_str(), result);

    if(result.isOK() && result.records.size()==1 && result.records[0].size() == 1)
    {
    	return atoi(result.records.at(0).at(0).c_str());
    }
    return -1;
}
Esempio n. 3
0
bool fCache::isExist(const std::string &key)
{
	std::stringstream sql;
	DatabaseResult result;
	sql << "SELECT EXISTS(SELECT 1 FROM " << TABLE_NAME << " WHERE id='" << key << "');";
    _db.executeSQL(sql.str().c_str(), result);
    bool exist=false;
    if(result.isOK() && result.records.size()==1 && result.records[0].size() == 1)
    {
    	exist = (atoi(result.records.at(0).at(0).c_str()) > 0);
    }
    return exist;
}
Esempio n. 4
0
long fCache::getCacheSize(bool persistent)
{
	std::stringstream sql;
	DatabaseResult result;
	if(persistent)
		sql << "SELECT SUM(LENGTH(data)) FROM " << TABLE_NAME << " WHERE persistent=" << persistent << "";
	else
		sql << "SELECT SUM(LENGTH(data)) FROM " << TABLE_NAME;
    _db.executeSQL(sql.str().c_str(), result);
    if(result.isOK())
    {
    	if(result.records.size()==1 && result.records[0].size() == 1)
    	{
            std::string cacheSize = result.records.at(0).at(0);
            return atol(cacheSize.c_str());
        }    	
    }	
    return 0;
}