Files
NetNewsWire/Frameworks/RSDatabase/RSDatabase/DatabaseObject.swift
2017-08-20 15:56:58 -07:00

57 lines
1.0 KiB
Swift

//
// DatabaseObject.swift
// RSDatabase
//
// Created by Brent Simmons on 8/7/17.
// Copyright © 2017 Ranchero Software, LLC. All rights reserved.
//
import Foundation
public protocol DatabaseObject {
var databaseID: String { get }
func setRelatedObjects(_ objects: [DatabaseObject], name: String)
func relatedObjectsWithName(_ name: String) -> [DatabaseObject]?
}
public extension DatabaseObject {
func setRelatedObjects(_ objects: [DatabaseObject], name: String) {
// Do nothing
}
func relatedObjectsWithName(_ name: String) -> [DatabaseObject]? {
return nil
}
}
extension Array where Element == DatabaseObject {
func dictionary() -> [String: DatabaseObject] {
var d = [String: DatabaseObject]()
for object in self {
d[object.databaseID] = object
}
return d
}
func databaseIDs() -> Set<String> {
return Set(self.map { $0.databaseID })
}
func includesObjectWithDatabaseID(_ databaseID: String) -> Bool {
for object in self {
if object.databaseID == databaseID {
return true
}
}
return false
}
}