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; }
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; }
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; }
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; }