This commit is contained in:
Martin Rotter 2024-09-25 09:15:37 +02:00
parent c2b75bb8c8
commit bf2d600364
2 changed files with 25 additions and 12 deletions

View File

@ -41,8 +41,7 @@ QMap<int, QString> DatabaseQueries::messageTableAttributes(bool only_msg_table,
"END AS has_enclosures");
if (is_sqlite) {
field_names[MSG_DB_LABELS] =
QSL("(SELECT GROUP_CONCAT(Labels.name) FROM Labels WHERE Messages.labels LIKE '%.' || "
field_names[MSG_DB_LABELS] = QSL("(SELECT GROUP_CONCAT(Labels.name) FROM Labels WHERE Messages.labels LIKE '%.' || "
"Labels.custom_id || '.%') as msg_labels");
}
else {
@ -3036,13 +3035,30 @@ void DatabaseQueries::assignMessageFilterToFeed(const QSqlDatabase& db,
bool* ok) {
QSqlQuery q(db);
q.prepare(QSL("INSERT INTO MessageFiltersInFeeds (filter, feed_custom_id, account_id) "
"VALUES(:filter, :feed_custom_id, :account_id);"));
q.prepare(QSL("SELECT COUNT(*) FROM MessageFiltersInFeeds "
"WHERE filter = :filter AND feed_custom_id = :feed_custom_id AND account_id = :account_id;"));
q.setForwardOnly(true);
q.bindValue(QSL(":filter"), filter_id);
q.bindValue(QSL(":feed_custom_id"), feed_custom_id);
q.bindValue(QSL(":account_id"), account_id);
if (q.exec() && q.next()) {
auto already_included_count = q.value(0).toInt();
if (already_included_count > 0) {
if (ok != nullptr) {
*ok = true;
}
return;
}
}
q.prepare(QSL("INSERT INTO MessageFiltersInFeeds (filter, feed_custom_id, account_id) "
"VALUES(:filter, :feed_custom_id, :account_id);"));
q.bindValue(QSL(":filter"), filter_id);
q.bindValue(QSL(":feed_custom_id"), feed_custom_id);
q.bindValue(QSL(":account_id"), account_id);
q.setForwardOnly(true);
if (q.exec()) {
if (ok != nullptr) {

View File

@ -209,6 +209,7 @@ bool Feed::removeUnwantedArticles(QSqlDatabase& db) {
}
void Feed::appendMessageFilter(MessageFilter* filter) {
removeMessageFilter(filter);
m_messageFilters.append(QPointer<MessageFilter>(filter));
}
@ -351,12 +352,8 @@ void Feed::setMessageFilters(const QList<QPointer<MessageFilter>>& filters) {
}
void Feed::removeMessageFilter(MessageFilter* filter) {
int idx = m_messageFilters.indexOf(filter);
if (idx >= 0) {
m_messageFilters.removeAll(filter);
}
}
QString Feed::additionalTooltip() const {
QString stat = getStatusDescription();