From 708ebb1a7fdf508263474ff7279add30db974be0 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Fri, 1 Feb 2019 13:02:16 -0800 Subject: [PATCH] Backs up Database folder on first launch Allows beta testers to recover data while testing Harmony syncing if something goes wrong --- Delta/Database/DatabaseManager.swift | 30 ++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/Delta/Database/DatabaseManager.swift b/Delta/Database/DatabaseManager.swift index 61be585..7c5054e 100644 --- a/Delta/Database/DatabaseManager.swift +++ b/Delta/Database/DatabaseManager.swift @@ -85,13 +85,25 @@ extension DatabaseManager { guard !self.isStarted else { return } - self.loadPersistentStores { (description, error) in - guard error == nil else { return completionHandler(error) } - - self.prepareDatabase { - self.isStarted = true - completionHandler(nil) + do + { + if !FileManager.default.fileExists(atPath: DatabaseManager.backupDirectoryURL.path) + { + try FileManager.default.copyItem(at: DatabaseManager.defaultDirectoryURL(), to: DatabaseManager.backupDirectoryURL) } + + self.loadPersistentStores { (description, error) in + guard error == nil else { return completionHandler(error) } + + self.prepareDatabase { + self.isStarted = true + completionHandler(nil) + } + } + } + catch + { + completionHandler(error) } } } @@ -505,6 +517,12 @@ extension DatabaseManager let artworkURL = gameURL.deletingPathExtension().appendingPathExtension("jpg") return artworkURL } + + class var backupDirectoryURL: URL + { + let backupDirectoryURL = FileManager.default.documentsDirectory.appendingPathComponent("Database-Backup") + return backupDirectoryURL + } } //MARK: - Notifications -