61 lines
1.6 KiB
Swift
61 lines
1.6 KiB
Swift
//
|
|
// ItemListType.swift
|
|
// Reader
|
|
//
|
|
// Created by Shadowfacts on 3/13/22.
|
|
//
|
|
|
|
import Foundation
|
|
import CoreData
|
|
|
|
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<NSManagedObjectID> {
|
|
let req = NSFetchRequest<NSManagedObjectID>(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<Reader.Item>? {
|
|
let req = Reader.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
|
|
}
|
|
}
|