Rocket.Chat.ReactNative/ios/RocketChat Watch App/Database/Entity/Room.swift

37 lines
1.1 KiB
Swift

import CoreData
extension Room {
var messagesRequest: NSFetchRequest<Message> {
let request = Message.fetchRequest()
request.predicate = NSPredicate(format: "room == %@", self)
request.sortDescriptors = [NSSortDescriptor(keyPath: \Message.ts, ascending: true)]
return request
}
var lastMessage: Message? {
let request = Message.fetchRequest()
let thisRoomPredicate = NSPredicate(format: "room == %@", self)
let nonInfoMessagePredicate = NSPredicate(format: "t == nil", self)
request.predicate = NSCompoundPredicate(
andPredicateWithSubpredicates: [thisRoomPredicate, nonInfoMessagePredicate]
)
request.sortDescriptors = [NSSortDescriptor(keyPath: \Message.ts, ascending: false)]
request.fetchLimit = 1
return try? managedObjectContext?.fetch(request).first
}
var firstMessage: Message? {
let request = Message.fetchRequest()
request.predicate = NSPredicate(format: "room == %@", self)
request.sortDescriptors = [NSSortDescriptor(keyPath: \Message.ts, ascending: true)]
request.fetchLimit = 1
return try? managedObjectContext?.fetch(request).first
}
}