From 19673f5c8a2e8883b7a5060c9517ab6ee61a80e2 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 19 Nov 2017 12:44:17 -0800 Subject: [PATCH] Add methods for fetching unread count since a certain date to Database.framework. --- Frameworks/Database/ArticlesTable.swift | 22 ++++++++++++++++++++++ Frameworks/Database/Database.swift | 5 +++++ 2 files changed, 27 insertions(+) diff --git a/Frameworks/Database/ArticlesTable.swift b/Frameworks/Database/ArticlesTable.swift index 0dbdba075..d0d88384f 100644 --- a/Frameworks/Database/ArticlesTable.swift +++ b/Frameworks/Database/ArticlesTable.swift @@ -142,6 +142,28 @@ final class ArticlesTable: DatabaseTable { } } + func fetchUnreadCount(_ feeds: Set, _ since: Date, _ callback: @escaping (Int) -> Void) { + + // Get unread count for today, for instance. + + let feedIDs = feeds.feedIDs() + queue.fetch { (database) in + + let placeholders = NSString.rs_SQLValueList(withPlaceholders: UInt(feedIDs.count))! + let sql = "select count(*) from articles natural join statuses where feedID in \(placeholders) and datePublished > ? and read=0 and userDeleted=0;" + + var parameters = [Any]() + parameters += Array(feedIDs) as [Any] + parameters += [since] as [Any] + + let unreadCount = self.numberWithSQLAndParameters(sql, parameters, in: database) + + DispatchQueue.main.async() { + callback(unreadCount) + } + } + } + // MARK: Status func mark(_ articles: Set
, _ statusKey: ArticleStatus.Key, _ flag: Bool) -> Set? { diff --git a/Frameworks/Database/Database.swift b/Frameworks/Database/Database.swift index 5f9c8d339..e37a50d20 100644 --- a/Frameworks/Database/Database.swift +++ b/Frameworks/Database/Database.swift @@ -61,6 +61,11 @@ public final class Database { articlesTable.fetchUnreadCounts(feeds, completion) } + public func fetchUnreadCount(for feeds: Set, since: Date, callback: @escaping (Int) -> Void) { + + articlesTable.fetchUnreadCount(feeds, since, callback) + } + // MARK: - Saving and Updating Articles public func update(feed: Feed, parsedFeed: ParsedFeed, completion: @escaping UpdateArticlesWithFeedCompletionBlock) {