From d70c0920f67d61320c1242e4cdea1322b5a6dea0 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Thu, 22 Sep 2022 17:33:29 +0200
Subject: [PATCH] Update DBManager

---
 .../Sources/AppCore/DBManager/DBManager.swift        | 12 +++++++++---
 .../Sources/AppCore/DBManager/DBManagerMakeDB.swift  | 10 +++-------
 .../AppCore/DBManager/DBManagerRemoveDB.swift        |  8 +++++++-
 3 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/Examples/xx-messenger/Sources/AppCore/DBManager/DBManager.swift b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManager.swift
index f591dc1c..beec52f8 100644
--- a/Examples/xx-messenger/Sources/AppCore/DBManager/DBManager.swift
+++ b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManager.swift
@@ -1,3 +1,4 @@
+import Foundation
 import XXModels
 
 public struct DBManager {
@@ -8,7 +9,12 @@ public struct DBManager {
 }
 
 extension DBManager {
-  public static func live() -> DBManager {
+  public static func live(
+    url: URL = FileManager.default
+      .urls(for: .applicationSupportDirectory, in: .userDomainMask)
+      .first!
+      .appendingPathComponent("database")
+  ) -> DBManager {
     class Container {
       var db: Database?
     }
@@ -17,9 +23,9 @@ extension DBManager {
 
     return DBManager(
       hasDB: .init { container.db != nil },
-      makeDB: .live(setDB: { container.db = $0 }),
+      makeDB: .live(url: url, setDB: { container.db = $0 }),
       getDB: .live(getDB: { container.db }),
-      removeDB: .live(getDB: { container.db }, unsetDB: { container.db = nil })
+      removeDB: .live(url: url, getDB: { container.db }, unsetDB: { container.db = nil })
     )
   }
 }
diff --git a/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerMakeDB.swift b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerMakeDB.swift
index a3f018b1..d7e5e93d 100644
--- a/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerMakeDB.swift
+++ b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerMakeDB.swift
@@ -13,18 +13,14 @@ public struct DBManagerMakeDB {
 
 extension DBManagerMakeDB {
   public static func live(
+    url: URL,
     setDB: @escaping (Database) -> Void
   ) -> DBManagerMakeDB {
     DBManagerMakeDB {
-      let dbDirectoryURL = FileManager.default
-        .urls(for: .applicationSupportDirectory, in: .userDomainMask)
-        .first!
-        .appendingPathComponent("database")
-
       try? FileManager.default
-        .createDirectory(at: dbDirectoryURL, withIntermediateDirectories: true)
+        .createDirectory(at: url, withIntermediateDirectories: true)
 
-      let dbFilePath = dbDirectoryURL
+      let dbFilePath = url
         .appendingPathComponent("db")
         .appendingPathExtension("sqlite")
         .path
diff --git a/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerRemoveDB.swift b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerRemoveDB.swift
index 69ab6e02..557a1a53 100644
--- a/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerRemoveDB.swift
+++ b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerRemoveDB.swift
@@ -13,12 +13,18 @@ public struct DBManagerRemoveDB {
 
 extension DBManagerRemoveDB {
   public static func live(
+    url: URL,
     getDB: @escaping () -> Database?,
     unsetDB: @escaping () -> Void
   ) -> DBManagerRemoveDB {
     DBManagerRemoveDB {
-      try getDB()?.drop()
+      let db = getDB()
       unsetDB()
+      try db?.drop()
+      let fm = FileManager.default
+      if fm.fileExists(atPath: url.path) {
+        try fm.removeItem(atPath: url.path)
+      }
     }
   }
 }
-- 
GitLab