mastodon-ios/CoreDataStack/Entity/Mention.swift

72 lines
1.8 KiB
Swift
Raw Normal View History

//
// Mention.swift
// CoreDataStack
//
// Created by sxiaojian on 2021/2/1.
//
import CoreData
import Foundation
public final class Mention: NSManagedObject {
public typealias ID = UUID
@NSManaged public private(set) var index: NSNumber
@NSManaged public private(set) var identifier: ID
@NSManaged public private(set) var id: String
@NSManaged public private(set) var createAt: Date
@NSManaged public private(set) var username: String
@NSManaged public private(set) var acct: String
@NSManaged public private(set) var url: String
// many-to-one relationship
2021-04-01 08:39:15 +02:00
@NSManaged public private(set) var status: Status
}
public extension Mention {
override func awakeFromInsert() {
super.awakeFromInsert()
2021-03-06 06:04:30 +01:00
setPrimitiveValue(UUID(), forKey: #keyPath(Mention.identifier))
}
@discardableResult
static func insert(
into context: NSManagedObjectContext,
property: Property,
index: Int
) -> Mention {
let mention: Mention = context.insertObject()
mention.index = NSNumber(value: index)
mention.id = property.id
mention.username = property.username
mention.acct = property.acct
mention.url = property.url
return mention
}
}
public extension Mention {
struct Property {
public let id: String
public let username: String
public let acct: String
public let url: String
public init(id: String, username: String, acct: String, url: String) {
self.id = id
self.username = username
self.acct = acct
self.url = url
}
}
}
extension Mention: Managed {
public static var defaultSortDescriptors: [NSSortDescriptor] {
return [NSSortDescriptor(keyPath: \Mention.createAt, ascending: false)]
}
}