Created
June 1, 2019 18:11
-
-
Save jemai/529df2e2862fb348c0545f8e1b8a735b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension Persister { | |
// MARK: - Read Methods | |
static func select<T: CodableObject>(type: T.Type, filter: NSPredicate? = nil) -> Results<T> { | |
do { | |
let realm = try Realm() | |
if let predicate = filter { | |
return realm.objects(T.self).filter(predicate) | |
} else { | |
return realm.objects(T.self) | |
} | |
} catch let error as NSError { | |
fatalError("Error opening Realm: \(error)") | |
} | |
} | |
// MARK: - Write methods | |
static func insert(object: CodableObject, update: Bool? = nil) { | |
do { | |
let realm = try Realm() | |
try realm.write { | |
if let update = update { | |
realm.add(object, update: update) | |
} else { | |
realm.add(object) | |
} | |
} | |
} catch let error as NSError { | |
fatalError("Error opening Realm: \(error)") | |
} | |
} | |
static func insert(objects: [CodableObject], update: Bool? = nil) { | |
do { | |
let realm = try Realm() | |
try realm.write { | |
if let update = update { | |
realm.add(objects, update: update) | |
} else { | |
realm.add(objects) | |
} | |
} | |
} catch let error as NSError { | |
fatalError("Error opening Realm: \(error)") | |
} | |
} | |
static func delete(object: CodableObject) { | |
// Delete an object with a transaction | |
do { | |
let realm = try Realm() | |
try realm.write { | |
realm.delete(object) | |
} | |
} catch let error as NSError { | |
fatalError("Error opening Realm: \(error)") | |
} | |
} | |
static func delete<T: CodableObject>(type: T.Type, filter: NSPredicate?) { | |
do { | |
let realm = try Realm() | |
try realm.write { | |
if let predicate = filter { | |
realm.delete(realm.objects(T.self).filter(predicate)) | |
} else { | |
realm.delete(realm.objects(T.self)) | |
} | |
} | |
} catch let error as NSError { | |
fatalError("Error opening Realm: \(error)") | |
} | |
} | |
static func resetDB() { | |
// Delete an object with a transaction | |
do { | |
let realm = try Realm() | |
try realm.write { | |
realm.deleteAll() | |
} | |
} catch let error as NSError { | |
fatalError("Error opening Realm: \(error)") | |
} | |
} | |
static func deleteAll<T: CodableObject>(type: T.Type) { | |
// Delete an object with a transaction | |
do { | |
let realm = try Realm() | |
try realm.write { | |
realm.delete(realm.objects(T.self)) | |
} | |
} catch let error as NSError { | |
fatalError("Error opening Realm: \(error)") | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment