From a879a68ad86113c5d75e7fd1e58950bc9e88e0ee Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Fri, 15 Apr 2022 18:25:11 -0700 Subject: [PATCH] define feeditem models in core data model --- .../CoreDataModel.xcdatamodel/contents | 36 +++++- .../OmnivoreKit/Sources/Models/FeedItem.swift | 117 +++++++++--------- .../Sources/Models/FeedItemLabel.swift | 54 ++++---- .../Services/DataService/DataService.swift | 1 - 4 files changed, 125 insertions(+), 83 deletions(-) diff --git a/apple/OmnivoreKit/Sources/Models/CoreData/CoreDataModel.xcdatamodeld/CoreDataModel.xcdatamodel/contents b/apple/OmnivoreKit/Sources/Models/CoreData/CoreDataModel.xcdatamodeld/CoreDataModel.xcdatamodel/contents index 12986cc36..605103808 100644 --- a/apple/OmnivoreKit/Sources/Models/CoreData/CoreDataModel.xcdatamodeld/CoreDataModel.xcdatamodel/contents +++ b/apple/OmnivoreKit/Sources/Models/CoreData/CoreDataModel.xcdatamodeld/CoreDataModel.xcdatamodel/contents @@ -1,4 +1,38 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apple/OmnivoreKit/Sources/Models/FeedItem.swift b/apple/OmnivoreKit/Sources/Models/FeedItem.swift index 92d886716..3e95f54c8 100644 --- a/apple/OmnivoreKit/Sources/Models/FeedItem.swift +++ b/apple/OmnivoreKit/Sources/Models/FeedItem.swift @@ -1,4 +1,4 @@ -import CoreData +// import CoreData import Foundation public struct HomeFeedData { @@ -11,28 +11,32 @@ public struct HomeFeedData { } } -public class FeedItemManagedObject: NSManagedObject { - static let entityName = "FeedItemManagedObject" - - @NSManaged public var id: String - @NSManaged public var title: String - @NSManaged public var createdAt: Date - @NSManaged public var savedAt: Date - @NSManaged public var readingProgress: Double - @NSManaged public var readingProgressAnchor: Int - @NSManaged public var imageURLString: String? - @NSManaged public var onDeviceImageURLString: String? - @NSManaged public var documentDirectoryPath: String? - @NSManaged public var pageURLString: String - @NSManaged public var descriptionText: String? - @NSManaged public var publisherURLString: String? - @NSManaged public var author: String? - @NSManaged public var publishDate: Date? - @NSManaged public var slug: String - @NSManaged public var isArchived: Bool - @NSManaged public var contentReader: String? - @NSManaged public var labels: Set -} +// public class FeedItemManagedObject: NSManagedObject { +// static let entityName = "FeedItemManagedObject" +// +// @nonobjc public class func fetchRequest() -> NSFetchRequest { +// NSFetchRequest(entityName: entityName) +// } +// +// @NSManaged public var id: String +// @NSManaged public var title: String +// @NSManaged public var createdAt: Date +// @NSManaged public var savedAt: Date +// @NSManaged public var readingProgress: Double +// @NSManaged public var readingProgressAnchor: Int +// @NSManaged public var imageURLString: String? +// @NSManaged public var onDeviceImageURLString: String? +// @NSManaged public var documentDirectoryPath: String? +// @NSManaged public var pageURLString: String +// @NSManaged public var descriptionText: String? +// @NSManaged public var publisherURLString: String? +// @NSManaged public var author: String? +// @NSManaged public var publishDate: Date? +// @NSManaged public var slug: String +// @NSManaged public var isArchived: Bool +// @NSManaged public var contentReader: String? +// @NSManaged public var labels: Set +// } public struct FeedItem: Identifiable, Hashable { public let id: String @@ -94,39 +98,40 @@ public struct FeedItem: Identifiable, Hashable { self.labels = labels } - func toManagedObject(inContext context: NSManagedObjectContext) -> FeedItemManagedObject? { - guard let entityDescription = NSEntityDescription.entity(forEntityName: FeedItemManagedObject.entityName, in: context) else { - print("Failed to create \(FeedItemManagedObject.entityName)") - return nil - } - - let object = FeedItemManagedObject(entity: entityDescription, insertInto: context) - object.id = id - object.title = title - object.createdAt = createdAt - object.savedAt = savedAt - object.readingProgress = readingProgress - object.readingProgressAnchor = readingProgressAnchor - object.imageURLString = imageURLString - object.onDeviceImageURLString = onDeviceImageURLString - object.documentDirectoryPath = documentDirectoryPath - object.pageURLString = pageURLString - object.descriptionText = descriptionText - object.publisherURLString = publisherURLString - object.author = author - object.publishDate = publishDate - object.slug = slug - object.isArchived = isArchived - object.contentReader = contentReader - - for label in labels { - if let managedLabel = label.toManagedObject(inContext: context) { - object.labels.insert(managedLabel) - } - } - - return object - } +// func toManagedObject(inContext context: NSManagedObjectContext) -> FeedItemManagedObject? { +// let entityName = FeedItemManagedObject.entityName +// guard let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: context) else { +// print("Failed to create \(entityName)") +// return nil +// } +// +// let object = FeedItemManagedObject(entity: entityDescription, insertInto: context) +// object.id = id +// object.title = title +// object.createdAt = createdAt +// object.savedAt = savedAt +// object.readingProgress = readingProgress +// object.readingProgressAnchor = readingProgressAnchor +// object.imageURLString = imageURLString +// object.onDeviceImageURLString = onDeviceImageURLString +// object.documentDirectoryPath = documentDirectoryPath +// object.pageURLString = pageURLString +// object.descriptionText = descriptionText +// object.publisherURLString = publisherURLString +// object.author = author +// object.publishDate = publishDate +// object.slug = slug +// object.isArchived = isArchived +// object.contentReader = contentReader +// +// for label in labels { +// if let managedLabel = label.toManagedObject(inContext: context) { +// object.labels.insert(managedLabel) +// } +// } +// +// return object +// } public static func fromJsonArticle(linkData: Data) -> FeedItem? { try? JSONDecoder().decode(JSONArticle.self, from: linkData).feedItem diff --git a/apple/OmnivoreKit/Sources/Models/FeedItemLabel.swift b/apple/OmnivoreKit/Sources/Models/FeedItemLabel.swift index 04161da22..b37af81a9 100644 --- a/apple/OmnivoreKit/Sources/Models/FeedItemLabel.swift +++ b/apple/OmnivoreKit/Sources/Models/FeedItemLabel.swift @@ -1,4 +1,4 @@ -import CoreData +// import CoreData import Foundation public struct FeedItemLabel: Decodable, Hashable { @@ -22,29 +22,33 @@ public struct FeedItemLabel: Decodable, Hashable { self.labelDescription = labelDescription } - func toManagedObject(inContext context: NSManagedObjectContext) -> FeedItemLabelManagedObject? { - let entityName = FeedItemLabelManagedObject.entityName - guard let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: context) else { - print("Failed to create \(entityName)") - return nil - } - - let object = FeedItemLabelManagedObject(entity: entityDescription, insertInto: context) - object.id = id - object.name = name - object.color = color - object.createdAt = createdAt - object.labelDescription = labelDescription - return object - } +// func toManagedObject(inContext context: NSManagedObjectContext) -> FeedItemLabelManagedObject? { +// let entityName = FeedItemLabelManagedObject.entityName +// guard let entityDescription = NSEntityDescription.entity(forEntityName: entityName, in: context) else { +// print("Failed to create \(entityName)") +// return nil +// } +// +// let object = FeedItemLabelManagedObject(entity: entityDescription, insertInto: context) +// object.id = id +// object.name = name +// object.color = color +// object.createdAt = createdAt +// object.labelDescription = labelDescription +// return object +// } } -public class FeedItemLabelManagedObject: NSManagedObject { - static let entityName = "FeedItemLabelManagedObject" - - @NSManaged public var id: String - @NSManaged public var name: String - @NSManaged public var color: String - @NSManaged public var createdAt: Date? - @NSManaged public var labelDescription: String? -} +// public class FeedItemLabelManagedObject: NSManagedObject { +// static let entityName = "FeedItemLabelManagedObject" +// +// @nonobjc public class func fetchRequest() -> NSFetchRequest { +// NSFetchRequest(entityName: entityName) +// } +// +// @NSManaged public var id: String +// @NSManaged public var name: String +// @NSManaged public var color: String +// @NSManaged public var createdAt: Date? +// @NSManaged public var labelDescription: String? +// } diff --git a/apple/OmnivoreKit/Sources/Services/DataService/DataService.swift b/apple/OmnivoreKit/Sources/Services/DataService/DataService.swift index f0648b797..846e337c8 100644 --- a/apple/OmnivoreKit/Sources/Services/DataService/DataService.swift +++ b/apple/OmnivoreKit/Sources/Services/DataService/DataService.swift @@ -1,5 +1,4 @@ import Combine -import CoreData import Foundation import Models