-#include <QFileInfo>
-
#include "bookdb.h"
#include "platform.h"
#include "trace.h"
BookDb::BookDb()
{
- Trace t("BookDb::BookDb");
+ TRACE;
bool shouldCreate = false;
- QFileInfo info(Platform::dbPath());
+ QFileInfo info(Platform::instance()->dbPath());
if (!info.exists()) {
QDir dbDir;
- dbDir.mkpath(info.absolutePath());
+ if (!dbDir.mkpath(info.absolutePath())) {
+ qCritical() << "Could not create" << info.absolutePath();
+ }
shouldCreate = true;
}
db = QSqlDatabase::addDatabase("QSQLITE");
- db.setDatabaseName(Platform::dbPath());
+ db.setDatabaseName(QDir::toNativeSeparators(Platform::instance()->dbPath()));
if (!db.open()) {
- qCritical() << "Could not open" << Platform::dbPath();
+ qCritical() << "Could not open" << Platform::instance()->dbPath()
+ << ": Error" << db.lastError().text();
}
if (shouldCreate) {
create();
void BookDb::create()
{
- Trace t("BookDb::create");
+ TRACE;
QSqlQuery query;
- if (!query.exec("create table book (name text primary key, content blob)")) {
- qCritical() << "Failed to create database";
+ if (!query.exec("create table book "
+ "(name text primary key, content blob)")) {
+ qCritical() << "Failed to create database:"
+ << query.lastError().text();
}
}
QVariantHash BookDb::load(const QString &book)
{
- Trace t("BookDb::load");
+ TRACE;
qDebug() << book;
QVariantHash ret;
QByteArray bytes;
query.bindValue(0, book);
query.setForwardOnly(true);
if (!query.exec()) {
- qCritical() << "Query failed";
+ qCritical() << "Query failed:" << query.lastError().text();
return ret;
}
while (query.next()) {
in >> ret;
break;
}
- qDebug() << ret;
return ret;
}
void BookDb::save(const QString &book, const QVariantHash &data)
{
- Trace t("BookDb::save");
+ TRACE;
qDebug() << book;
- qDebug() << data;
QByteArray bytes;
QDataStream out(&bytes, QIODevice::WriteOnly);
out << data;
query.bindValue(0, book);
query.bindValue(1, bytes);
if (!query.exec()) {
- qCritical() << "Query failed";
+ qCritical() << "Query failed:" << query.lastError().text();
}
}
void BookDb::remove(const QString &book)
{
- // FIXME
- Q_UNUSED(book);
+ TRACE;
+ qDebug() << book;
+ QSqlQuery query("delete from book where name = ?");
+ query.bindValue(0, book);
+ if (!query.exec()) {
+ qCritical() << "Query failed:" << query.lastError().text();
+ }
}
QStringList BookDb::books()
{
- Trace t("BookDb::books");
+ TRACE;
QStringList ret;
QSqlQuery query("select name from book");
query.setForwardOnly(true);
if (!query.exec()) {
- qCritical() << "Query failed";
+ qCritical() << "Query failed:" << query.lastError().text();
return ret;
}
while (query.next()) {
qDebug() << ret;
return ret;
}
+
+void BookDb::removeAll()
+{
+ foreach (QString book, books()) {
+ remove(book);
+ }
+}