return ret;
}
+
bool Cache::findItem(QString const& number, Source::Result& result)
{
bool connected = DB::connected();
DB::connect();
}
- QSqlQuery query;
- query.prepare("SELECT name, street, city FROM cache WHERE number = :number");
- query.bindValue(":number", number);
+ QSqlQuery query("SELECT name, street, city FROM cache WHERE number LIKE '%" + number.right(7) + "'");
+
+ //query.prepare("SELECT name, street, city FROM cache WHERE number = :number");
+ //query.bindValue(":number", number);
bool ret = false;
- if(query.exec() && query.next())
+ if(query.next())
{
result.number = number;
result.name = query.value(0).toString();
query.bindValue(":street", result.street);
query.bindValue(":city", result.city);
+ qDebug() << result.number << result.name << result.street << result.city;
+
if(!query.exec())
{
+ qDebug() << "Unable to add item to cache";
ret = false;
}
}
+bool Cache::logItem(Source::Result const& result, bool missed, unsigned int time)
+{
+ bool connected = DB::connected();
+
+ if(!connected)
+ {
+ DB::connect();
+ }
+
+ bool ret = true;
+
+ QSqlQuery query;
+
+ query.prepare("INSERT INTO log(number, name, street, city, country, time, missed) VALUES(:number, :name, :street, :city, :country, :time, :missed)");
+ query.bindValue(":number", result.number);
+ query.bindValue(":name", result.name);
+ query.bindValue(":street", result.street);
+ query.bindValue(":city", result.city);
+ query.bindValue(":country", result.country);
+ query.bindValue(":time", time);
+ int misVal = missed ? 1 : 0;
+
+ query.bindValue(":missed", misVal);
+
+ if(!query.exec())
+ {
+ ret = false;
+ }
+
+ query.clear();
+
+ // Delete old entries from cache
+ if(LOG_MAX_SIZE > 0)
+ {
+ if(query.exec("SELECT COUNT(*) FROM log") && query.next())
+ {
+ int itemsToDelete = query.value(0).toInt() - LOG_MAX_SIZE;
+
+ for(int i = 0; i < itemsToDelete; i++)
+ {
+ query.clear();
+
+ if(!query.exec("DELETE FROM cache WHERE id = (SELECT MIN(id) FROM cache)"))
+ {
+ QSqlError error = query.lastError();
+ qDebug() << "Unable to delete old cache entries: " << error.text();
+ ret = false;
+ }
+ }
+ }
+ else
+ {
+ QSqlError error = query.lastError();
+ qDebug() << "Unable to get count for cache entries: " << error.text();
+ ret = false;
+ }
+
+ }
+
+ if(!connected)
+ {
+ DB::disconnect();
+ }
+
+ return ret;
+
+}
+
+void Cache::getLogItems(QList<Cache::LogDetails>& items, int limit)
+{
+ bool connected = DB::connected();
+
+ if(!connected)
+ {
+ DB::connect();
+ }
+
+ QSqlQuery query("SELECT number, name, street, city, country, time, missed FROM log ORDER BY time DESC LIMIT " + QString::number(limit));
+
+ while(query.next())
+ {
+ LogDetails details;
+ details.result.number = query.value(0).toString();
+ details.result.name = query.value(1).toString();
+ details.result.street = query.value(2).toString();
+ details.result.city = query.value(3).toString();
+ details.result.country = query.value(4).toString();
+ details.time = query.value(5).toInt();
+
+ int missed = query.value(6).toInt();
+
+ details.missed = missed ? true : false;
+
+ items.push_back(details);
+ }
+
+ if(!connected)
+ {
+ DB::disconnect();
+ }
+
+}
+
+int Cache::clearLog()
+{
+ bool connected = DB::connected();
+
+ if(!connected)
+ {
+ DB::connect();
+ }
+
+ QSqlQuery query;
+ int ret = -1;
+
+ if(query.exec("DELETE FROM log"))
+ {
+ ret = query.numRowsAffected();
+ }
+
+ if(!connected)
+ {
+ DB::disconnect();
+ }
+
+ return ret;
+}
+
Cache& Cache::instance()
{
if(!instance_)