mobile-ios/CovidSafe/BLELogDB.swift

64 lines
1.9 KiB
Swift
Raw Permalink Normal View History

2020-07-21 05:42:48 +00:00
//
// BLELogDB.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import UIKit
import CoreData
class BLELogDB {
static let shared = BLELogDB()
private let modelName = "debug"
private var localStoreUrl: URL?
private var _persistentContainer: CovidPersistentContainer?
var migrationDelegate: EncounterDBMigrationProgress?
var backgroundTask: UIBackgroundTaskIdentifier = .invalid
private lazy var managedObjectModel: NSManagedObjectModel = {
guard let modelURL = Bundle.main.url(forResource: self.modelName, withExtension: "momd") else {
fatalError("Unable to Find Data Model")
}
guard let managedObjectModel = NSManagedObjectModel(contentsOf: modelURL) else {
fatalError("Unable to Load Data Model")
}
return managedObjectModel
}()
public var persistentContainer: CovidPersistentContainer? {
get {
if let container = _persistentContainer {
return container
}
let container = CovidPersistentContainer(name: self.modelName)
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
_persistentContainer = container
return _persistentContainer
}
}
func registerBackgroundTask() {
backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
self?.endBackgroundTask()
}
assert(backgroundTask != .invalid)
}
func endBackgroundTask() {
if(backgroundTask != .invalid){
UIApplication.shared.endBackgroundTask(backgroundTask)
backgroundTask = .invalid
}
}
}