From 9de84b1db20162bbd0a39b028b204f5826fbe15b Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 29 Jul 2022 14:04:08 +0100
Subject: [PATCH] Wrap Backup object

---
 Sources/ElixxirDAppsSDK/Backup/Backup.swift   | 25 +++++++++++++++++++
 .../Backup/Functors/BackupAddJson.swift       | 22 ++++++++++++++++
 .../Backup/Functors/BackupIsRunning.swift     | 22 ++++++++++++++++
 .../Backup/Functors/BackupStop.swift          | 22 ++++++++++++++++
 4 files changed, 91 insertions(+)
 create mode 100644 Sources/ElixxirDAppsSDK/Backup/Backup.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Backup/Functors/BackupAddJson.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Backup/Functors/BackupIsRunning.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Backup/Functors/BackupStop.swift

diff --git a/Sources/ElixxirDAppsSDK/Backup/Backup.swift b/Sources/ElixxirDAppsSDK/Backup/Backup.swift
new file mode 100644
index 00000000..7c8abc19
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Backup/Backup.swift
@@ -0,0 +1,25 @@
+import Bindings
+
+public struct Backup {
+  public var isRunning: BackupIsRunning
+  public var addJSON: BackupAddJSON
+  public var stop: BackupStop
+}
+
+extension Backup {
+  public static func live(_ bindingsBackup: BindingsBackup) -> Backup {
+    Backup(
+      isRunning: .live(bindingsBackup),
+      addJSON: .live(bindingsBackup),
+      stop: .live(bindingsBackup)
+    )
+  }
+}
+
+extension Backup {
+  public static let unimplemented = Backup(
+    isRunning: .unimplemented,
+    addJSON: .unimplemented,
+    stop: .unimplemented
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Backup/Functors/BackupAddJson.swift b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupAddJson.swift
new file mode 100644
index 00000000..6c16884f
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupAddJson.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct BackupAddJSON {
+  public var run: (String) -> Void
+
+  public func callAsFunction(_ jsonString: String) {
+    run(jsonString)
+  }
+}
+
+extension BackupAddJSON {
+  public static func live(_ bindingsBackup: BindingsBackup) -> BackupAddJSON {
+    BackupAddJSON(run: bindingsBackup.addJson)
+  }
+}
+
+extension BackupAddJSON {
+  public static let unimplemented = BackupAddJSON(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Backup/Functors/BackupIsRunning.swift b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupIsRunning.swift
new file mode 100644
index 00000000..ceee5454
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupIsRunning.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct BackupIsRunning {
+  public var run: () -> Bool
+
+  public func callAsFunction() -> Bool {
+    run()
+  }
+}
+
+extension BackupIsRunning {
+  public static func live(_ bindingsBackup: BindingsBackup) -> BackupIsRunning {
+    BackupIsRunning(run: bindingsBackup.isBackupRunning)
+  }
+}
+
+extension BackupIsRunning {
+  public static let unimplemented = BackupIsRunning(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Backup/Functors/BackupStop.swift b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupStop.swift
new file mode 100644
index 00000000..b2df31ef
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupStop.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct BackupStop {
+  public var run: () throws -> Void
+
+  public func callAsFunction() throws {
+    try run()
+  }
+}
+
+extension BackupStop {
+  public static func live(_ bindingsBackup: BindingsBackup) -> BackupStop {
+    BackupStop(run: bindingsBackup.stop)
+  }
+}
+
+extension BackupStop {
+  public static let unimplemented = BackupStop(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
-- 
GitLab