mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Make attachments use a DatabaseLookupTable.
This commit is contained in:
@@ -11,13 +11,32 @@ import Foundation
|
||||
public protocol DatabaseTable {
|
||||
|
||||
var name: String { get }
|
||||
var databaseIDKey: String { get}
|
||||
|
||||
func fetchObjectsWithIDs(_ databaseIDs: Set<String>, in database: FMDatabase) -> [DatabaseObject]
|
||||
func objectsWithResultSet(_ resultSet: FMResultSet) -> [DatabaseObject]
|
||||
func objectWithRow(_ row: FMResultSet) -> DatabaseObject?
|
||||
|
||||
func save(_ objects: [DatabaseObject], in database: FMDatabase)
|
||||
}
|
||||
|
||||
public extension DatabaseTable {
|
||||
|
||||
// MARK: Default implementations
|
||||
|
||||
func fetchObjectsWithIDs(_ databaseIDs: Set<String>, in database: FMDatabase) -> [DatabaseObject] {
|
||||
|
||||
guard let resultSet = selectRowsWhere(key: databaseIDKey, inValues: Array(databaseIDs), in: database) else {
|
||||
return [DatabaseObject]()
|
||||
}
|
||||
return objectsWithResultSet(resultSet)
|
||||
}
|
||||
|
||||
func objectsWithResultSet(_ resultSet: FMResultSet) -> [DatabaseObject] {
|
||||
|
||||
return resultSet.flatMap(objectWithRow)
|
||||
}
|
||||
|
||||
// MARK: Fetching
|
||||
|
||||
public func selectRowsWhere(key: String, equals value: Any, in database: FMDatabase) -> FMResultSet? {
|
||||
|
||||
@@ -31,7 +31,7 @@ public final class DatabaseLookupTable {
|
||||
self.cache = DatabaseLookupTableCache(relationshipName)
|
||||
}
|
||||
|
||||
public func attachRelationships(to objects: [DatabaseObject], in database: FMDatabase) {
|
||||
public func attachRelatedObjects(to objects: [DatabaseObject], in database: FMDatabase) {
|
||||
|
||||
let objectsThatMayHaveRelatedObjects = cache.objectsThatMayHaveRelatedObjects(objects)
|
||||
if objectsThatMayHaveRelatedObjects.isEmpty {
|
||||
@@ -54,7 +54,7 @@ public final class DatabaseLookupTable {
|
||||
cache.update(with: objectsNeedingFetching)
|
||||
}
|
||||
|
||||
public func saveRelationships(for objects: [DatabaseObject], in database: FMDatabase) {
|
||||
public func saveRelatedObjects(for objects: [DatabaseObject], in database: FMDatabase) {
|
||||
|
||||
var objectsWithNoRelationships = [DatabaseObject]()
|
||||
var objectsWithRelationships = [DatabaseObject]()
|
||||
|
||||
Reference in New Issue
Block a user