From f674e179d602d3ccb9818d28fe06f371059449dc Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Sun, 22 Jun 2025 16:54:02 +0200 Subject: parse and insert feeds and items --- src/rsshit_db.cpp | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/rsshit_db.cpp (limited to 'src/rsshit_db.cpp') diff --git a/src/rsshit_db.cpp b/src/rsshit_db.cpp new file mode 100644 index 0000000..d5d2a2a --- /dev/null +++ b/src/rsshit_db.cpp @@ -0,0 +1,60 @@ +#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; +} -- cgit v1.2.3-70-g09d2