Vernissage/Vernissage/CoreData/StatusDataHandler.swift

77 lines
2.7 KiB
Swift
Raw Normal View History

2023-01-01 18:13:36 +01:00
//
// https://mczachurski.dev
// Copyright © 2023 Marcin Czachurski and the repository contributors.
// Licensed under the MIT License.
//
import Foundation
2023-01-02 08:11:38 +01:00
import CoreData
2023-01-10 08:04:25 +01:00
import MastodonKit
2023-01-01 18:13:36 +01:00
class StatusDataHandler {
2023-01-05 11:55:20 +01:00
public static let shared = StatusDataHandler()
private init() { }
2023-01-11 13:16:43 +01:00
func getStatusData(accountId: String, statusId: String) -> StatusData? {
2023-01-05 11:55:20 +01:00
let context = CoreDataHandler.shared.container.viewContext
let fetchRequest = StatusData.fetchRequest()
fetchRequest.fetchLimit = 1
2023-01-11 13:16:43 +01:00
let predicate1 = NSPredicate(format: "id = %@", statusId)
let predicate2 = NSPredicate(format: "pixelfedAccount.id = %@", accountId)
fetchRequest.predicate = NSCompoundPredicate.init(type: .and, subpredicates: [predicate1,predicate2])
2023-01-05 11:55:20 +01:00
do {
return try context.fetch(fetchRequest).first
} catch {
2023-01-08 17:56:07 +01:00
print("Error during fetching status (getStatusData)")
2023-01-05 11:55:20 +01:00
return nil
}
}
2023-01-11 13:16:43 +01:00
func getMaximumStatus(accountId: String, viewContext: NSManagedObjectContext? = nil) -> StatusData? {
2023-01-02 08:11:38 +01:00
let context = viewContext ?? CoreDataHandler.shared.container.viewContext
2023-01-01 18:13:36 +01:00
let fetchRequest = StatusData.fetchRequest()
fetchRequest.fetchLimit = 1
2023-01-11 13:16:43 +01:00
2023-01-01 18:13:36 +01:00
let sortDescriptor = NSSortDescriptor(key: "id", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor]
2023-01-11 13:16:43 +01:00
fetchRequest.predicate = NSPredicate(format: "pixelfedAccount.id = %@", accountId)
2023-01-01 18:13:36 +01:00
do {
let statuses = try context.fetch(fetchRequest)
return statuses.first
} catch {
2023-01-08 17:56:07 +01:00
print("Error during fetching maximum status (getMaximumStatus)")
2023-01-01 18:13:36 +01:00
return nil
}
}
2023-01-11 13:16:43 +01:00
func getMinimumStatus(accountId: String, viewContext: NSManagedObjectContext? = nil) -> StatusData? {
2023-01-02 08:11:38 +01:00
let context = viewContext ?? CoreDataHandler.shared.container.viewContext
let fetchRequest = StatusData.fetchRequest()
fetchRequest.fetchLimit = 1
2023-01-11 13:16:43 +01:00
2023-01-02 08:11:38 +01:00
let sortDescriptor = NSSortDescriptor(key: "id", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
2023-01-11 13:16:43 +01:00
fetchRequest.predicate = NSPredicate(format: "pixelfedAccount.id = %@", accountId)
2023-01-02 08:11:38 +01:00
do {
let statuses = try context.fetch(fetchRequest)
return statuses.first
} catch {
2023-01-08 17:56:07 +01:00
print("Error during fetching minimum status (getMinimumtatus)")
2023-01-02 08:11:38 +01:00
return nil
}
}
func createStatusDataEntity(viewContext: NSManagedObjectContext? = nil) -> StatusData {
let context = viewContext ?? CoreDataHandler.shared.container.viewContext
2023-01-01 18:13:36 +01:00
return StatusData(context: context)
}
}