mastodon-ios/CoreDataStack/Entity/HomeTimelineIndex.swift

65 lines
1.6 KiB
Swift

//
// HomeTimelineIndex.swift
// CoreDataStack
//
// Created by MainasuK Cirno on 2021/1/27.
//
import Foundation
import CoreData
final class HomeTimelineIndex: NSManagedObject {
public typealias ID = String
@NSManaged public private(set) var identifier: ID
@NSManaged public private(set) var domain: String
@NSManaged public private(set) var userIdentifier: String
@NSManaged public private(set) var createdAt: Date
// many-to-one relationship
@NSManaged public private(set) var toots: Toots
}
extension HomeTimelineIndex {
@discardableResult
public static func insert(
into context: NSManagedObjectContext,
property: Property,
toots: Toots
) -> HomeTimelineIndex {
let index: HomeTimelineIndex = context.insertObject()
index.identifier = property.identifier
index.domain = property.domain
index.userIdentifier = toots.author.identifier
index.createdAt = toots.createdAt
index.toots = toots
return index
}
}
extension HomeTimelineIndex {
public struct Property {
public let identifier: String
public let domain: String
public init(domain: String) {
self.identifier = UUID().uuidString + "@" + domain
self.domain = domain
}
}
}
extension HomeTimelineIndex: Managed {
public static var defaultSortDescriptors: [NSSortDescriptor] {
return [NSSortDescriptor(keyPath: \HomeTimelineIndex.createdAt, ascending: false)]
}
}