save linkeditems to core data

This commit is contained in:
Satindar Dhillon 2022-04-19 11:50:17 -07:00
parent ed69e36576
commit 1012fccbb2
2 changed files with 48 additions and 0 deletions

View file

@ -1,3 +1,4 @@
import CoreData
import Foundation
public struct HomeFeedData {
@ -137,3 +138,48 @@ struct JSONArticle: Decodable {
)
}
}
public extension FeedItemDep {
func asManagedObject(inContext context: NSManagedObjectContext) -> LinkedItem {
let linkedItem = LinkedItem(context: context)
linkedItem.id = id
linkedItem.title = title
linkedItem.createdAt = createdAt
linkedItem.savedAt = savedAt
linkedItem.readingProgress = readingProgress
linkedItem.readingProgressAnchor = Int64(readingProgressAnchor)
linkedItem.imageURLString = imageURLString
linkedItem.onDeviceImageURLString = onDeviceImageURLString
linkedItem.pageURLString = pageURLString
linkedItem.descriptionText = descriptionText
linkedItem.publisherURLString = publisherURLString
linkedItem.author = author
linkedItem.publishDate = publishDate
linkedItem.slug = slug
linkedItem.isArchived = isArchived
linkedItem.contentReader = contentReader
// for label in item.labels {
// TODO: append labels
// }
return linkedItem
}
}
public extension Sequence where Element == FeedItemDep {
func persist(context: NSManagedObjectContext) -> [LinkedItem]? {
let linkedItems = map { $0.asManagedObject(inContext: context) }
do {
try context.save()
print("LinkedItems saved succesfully")
return linkedItems
} catch {
context.rollback()
print("Failed to save LinkedItems: \(error.localizedDescription)")
return nil
}
}
}

View file

@ -59,6 +59,8 @@ public extension DataService {
case let .success(payload):
switch payload.data {
case let .success(result: result):
// save items to coredata
_ = result.items.persist(context: self.persistentContainer.viewContext)
promise(.success(result))
case .error:
promise(.failure(.unknown))