// // ItemListType.swift // Reader // // Created by Shadowfacts on 3/13/22. // import Foundation import CoreData import Persistence enum ItemListType: Hashable { case unread case all case group(Group) case feed(Feed) var title: String { switch self { case .unread: return "Unread Articles" case .all: return "All Articles" case let .group(group): return group.title case let .feed(feed): return feed.title! } } var idFetchRequest: NSFetchRequest { let req = NSFetchRequest(entityName: "Item") req.resultType = .managedObjectIDResultType switch self { case .unread: req.predicate = NSPredicate(format: "read = NO") case .all: break case .group(let group): req.predicate = NSPredicate(format: "feed in %@", group.feeds!) case .feed(let feed): req.predicate = NSPredicate(format: "feed = %@", feed) } return req } var countFetchRequest: NSFetchRequest? { let req = Item.fetchRequest() switch self { case .unread: req.predicate = NSPredicate(format: "read = NO") case .all: return nil case .group(let group): req.predicate = NSPredicate(format: "read = NO AND feed in %@", group.feeds!) case .feed(let feed): req.predicate = NSPredicate(format: "read = NO AND feed = %@", feed) } return req } }