#include "rsshit_db.h" #include #include #include #include #include #include #include #include #include #include "atomchannel.h" #include "constants.h" #include "playground.h" namespace { namespace feeds_field_names { const QString link{"link"}; const QString title{"title"}; const QString image_url{"image_url"}; } // namespace feeds_field_names } // namespace bool applyToDb(const std::shared_ptr channel) { if (channel->getOrInsertDbId() == rsshit::db::IdNotFound) return false; if (channel->items.isEmpty()) return true; channel->syncDbItems(); return true; } std::optional rsshit::db::open() { auto db = QSqlDatabase::database(); if (db.isValid() && db.isOpen()) return db; db = QSqlDatabase::addDatabase(rsshit::db::driver); const auto dataLocation = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); const QString dbFilepath{dataLocation + '/' + QFileInfo{rsshit::db::dbSqliteResourceFilename}.fileName()}; db.setDatabaseName(dbFilepath); qDebug() << "open" << dbFilepath; if (!db.open()) { qWarning() << "cannot open db:" << db.lastError().text(); return {}; } return db; }