Skip to content

Instantly share code, notes, and snippets.

@ebubekirsezer
Last active October 22, 2022 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ebubekirsezer/9df2cfa492afd86e16433e680750dda5 to your computer and use it in GitHub Desktop.
Save ebubekirsezer/9df2cfa492afd86e16433e680750dda5 to your computer and use it in GitHub Desktop.
//
// RealmManagerExtension.swift
// GitStar
//
// Created by EbubekirSezer on 21.10.2022.
//
import Foundation
import RealmSwift
extension RealmManager {
// MARK: GET
func get<T: BaseModel>(type: T.Type, in path: RealmFileType = .Default) -> Results<T>? {
return type.allObjects(in: RealmManager.service.realm(named: path.rawValue))
}
// MARK: ADD
func add(object: BaseModel?, in path: RealmFileType = .Default) {
guard let object = object else { return }
self.add(objects: [object], in: path)
}
func add<T: Collection>(objects: T?, in path: RealmFileType = .Default) where T.Element: BaseModel {
guard let realm = self.realm(named: path.rawValue) else { return }
guard let objects = objects else { return }
do {
try? realm.write({
realm.add(objects)
})
}
}
// MARK: DELETE
func delete<T: BaseModel>(object: T?, in path: RealmFileType = .Default) {
guard let object = object else { return }
self.delete([object], in: path)
}
func delete<T: Collection>(_ objects: T?, in path: RealmFileType = .Default) where T.Element: BaseModel {
guard let realm = self.realm(named: path.rawValue) else { return }
guard let objects = objects else { return }
do {
try? realm.write({
realm.delete(objects, cascading: true)
})
}
}
func deleteAllObjects(in path: RealmFileType = .Default) {
let realm = self.realm(named: path.rawValue)
do {
try? realm?.write({
realm?.deleteAll()
})
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment