From 44e39cbce07f215ded6ed127e4b0d720363a6499 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Mon, 8 Aug 2022 11:53:39 +0100
Subject: [PATCH] Add Group object wrapper

---
 .../Group/Functors/GroupGetCreatedMS.swift    | 22 ++++++++++
 .../Group/Functors/GroupGetCreatedNano.swift  | 22 ++++++++++
 .../Group/Functors/GroupGetId.swift           | 27 ++++++++++++
 .../Group/Functors/GroupGetInitMessage.swift  | 27 ++++++++++++
 .../Group/Functors/GroupGetMembership.swift   | 24 +++++++++++
 .../Group/Functors/GroupGetName.swift         | 27 ++++++++++++
 .../Group/Functors/GroupGetTrackedId.swift    | 22 ++++++++++
 .../Group/Functors/GroupSerialize.swift       | 28 +++++++++++++
 Sources/ElixxirDAppsSDK/Group/Group.swift     | 41 +++++++++++++++++++
 9 files changed, 240 insertions(+)
 create mode 100644 Sources/ElixxirDAppsSDK/Group/Functors/GroupGetCreatedMS.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Group/Functors/GroupGetCreatedNano.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Group/Functors/GroupGetId.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Group/Functors/GroupGetInitMessage.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Group/Functors/GroupGetMembership.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Group/Functors/GroupGetName.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Group/Functors/GroupGetTrackedId.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Group/Functors/GroupSerialize.swift
 create mode 100644 Sources/ElixxirDAppsSDK/Group/Group.swift

diff --git a/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetCreatedMS.swift b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetCreatedMS.swift
new file mode 100644
index 00000000..41960aba
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetCreatedMS.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct GroupGetCreatedMS {
+  public var run: () -> Int64
+
+  public func callAsFunction() -> Int64 {
+    run()
+  }
+}
+
+extension GroupGetCreatedMS {
+  public static func live(_ bindingsGroup: BindingsGroup) -> GroupGetCreatedMS {
+    GroupGetCreatedMS(run: bindingsGroup.getCreatedMS)
+  }
+}
+
+extension GroupGetCreatedMS {
+  public static let unimplemented = GroupGetCreatedMS(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetCreatedNano.swift b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetCreatedNano.swift
new file mode 100644
index 00000000..982c0cc3
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetCreatedNano.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct GroupGetCreatedNano {
+  public var run: () -> Int64
+
+  public func callAsFunction() -> Int64 {
+    run()
+  }
+}
+
+extension GroupGetCreatedNano {
+  public static func live(_ bindingsGroup: BindingsGroup) -> GroupGetCreatedNano {
+    GroupGetCreatedNano(run: bindingsGroup.getCreatedNano)
+  }
+}
+
+extension GroupGetCreatedNano {
+  public static let unimplemented = GroupGetCreatedNano(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetId.swift b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetId.swift
new file mode 100644
index 00000000..85f7509b
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetId.swift
@@ -0,0 +1,27 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct GroupGetId {
+  public var run: () -> Data
+
+  public func callAsFunction() -> Data {
+    run()
+  }
+}
+
+extension GroupGetId {
+  public static func live(_ bindingsGroup: BindingsGroup) -> GroupGetId {
+    GroupGetId {
+      guard let data = bindingsGroup.getID() else {
+        fatalError("BindingsGroup.getID returned `nil`")
+      }
+      return data
+    }
+  }
+}
+
+extension GroupGetId {
+  public static let unimplemented = GroupGetId(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetInitMessage.swift b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetInitMessage.swift
new file mode 100644
index 00000000..b3ac47d8
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetInitMessage.swift
@@ -0,0 +1,27 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct GroupGetInitMessage {
+  public var run: () -> Data
+
+  public func callAsFunction() -> Data {
+    run()
+  }
+}
+
+extension GroupGetInitMessage {
+  public static func live(_ bindingsGroup: BindingsGroup) -> GroupGetInitMessage {
+    GroupGetInitMessage {
+      guard let data = bindingsGroup.getInitMessage() else {
+        fatalError("BindingsGroup.getInitMessage returned `nil`")
+      }
+      return data
+    }
+  }
+}
+
+extension GroupGetInitMessage {
+  public static let unimplemented = GroupGetInitMessage(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetMembership.swift b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetMembership.swift
new file mode 100644
index 00000000..1d78a248
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetMembership.swift
@@ -0,0 +1,24 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct GroupGetMembership {
+  public var run: () throws -> Data
+
+  public func callAsFunction() throws -> Data {
+    try run()
+  }
+}
+
+extension GroupGetMembership {
+  public static func live(_ bindingsGroup: BindingsGroup) -> GroupGetMembership {
+    GroupGetMembership {
+      try bindingsGroup.getMembership()
+    }
+  }
+}
+
+extension GroupGetMembership {
+  public static let unimplemented = GroupGetMembership(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetName.swift b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetName.swift
new file mode 100644
index 00000000..f355a164
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetName.swift
@@ -0,0 +1,27 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct GroupGetName {
+  public var run: () -> Data
+
+  public func callAsFunction() -> Data {
+    run()
+  }
+}
+
+extension GroupGetName {
+  public static func live(_ bindingsGroup: BindingsGroup) -> GroupGetName {
+    GroupGetName {
+      guard let data = bindingsGroup.getName() else {
+        fatalError("BindingsGroup.getName returned `nil`")
+      }
+      return data
+    }
+  }
+}
+
+extension GroupGetName {
+  public static let unimplemented = GroupGetName(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetTrackedId.swift b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetTrackedId.swift
new file mode 100644
index 00000000..4ec389e0
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Group/Functors/GroupGetTrackedId.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct GroupGetTrackedId {
+  public var run: () -> Int
+
+  public func callAsFunction() -> Int {
+    run()
+  }
+}
+
+extension GroupGetTrackedId {
+  public static func live(_ bindingsGroup: BindingsGroup) -> GroupGetTrackedId {
+    GroupGetTrackedId(run: bindingsGroup.getTrackedID)
+  }
+}
+
+extension GroupGetTrackedId {
+  public static let unimplemented = GroupGetTrackedId(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Group/Functors/GroupSerialize.swift b/Sources/ElixxirDAppsSDK/Group/Functors/GroupSerialize.swift
new file mode 100644
index 00000000..aa6cea1e
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Group/Functors/GroupSerialize.swift
@@ -0,0 +1,28 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct GroupSerialize {
+  public var run: () -> Data
+
+  public func callAsFunction() -> Data {
+    run()
+  }
+}
+
+extension GroupSerialize {
+  public static func live(_ bindingsGroup: BindingsGroup) -> GroupSerialize {
+    GroupSerialize {
+      guard let data = bindingsGroup.serialize() else {
+        fatalError("BindingsGroup.serialize returned `nil`")
+      }
+      return data
+    }
+  }
+}
+
+extension GroupSerialize {
+  public static let unimplemented = GroupSerialize(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
+
diff --git a/Sources/ElixxirDAppsSDK/Group/Group.swift b/Sources/ElixxirDAppsSDK/Group/Group.swift
new file mode 100644
index 00000000..8fa75499
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Group/Group.swift
@@ -0,0 +1,41 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct Group {
+  public var getCreatedMS: GroupGetCreatedMS
+  public var getCreatedNano: GroupGetCreatedNano
+  public var getId: GroupGetId
+  public var getInitMessage: GroupGetInitMessage
+  public var getMembership: GroupGetMembership
+  public var getName: GroupGetName
+  public var getTrackedID: GroupGetTrackedId
+  public var serialize: GroupSerialize
+}
+
+extension Group {
+  public static func live(_ bindingsGroup: BindingsGroup) -> Group {
+    Group(
+      getCreatedMS: .live(bindingsGroup),
+      getCreatedNano: .live(bindingsGroup),
+      getId: .live(bindingsGroup),
+      getInitMessage: .live(bindingsGroup),
+      getMembership: .live(bindingsGroup),
+      getName: .live(bindingsGroup),
+      getTrackedID: .live(bindingsGroup),
+      serialize: .live(bindingsGroup)
+    )
+  }
+}
+
+extension Group {
+  public static let unimplemented = Group(
+    getCreatedMS: .unimplemented,
+    getCreatedNano: .unimplemented,
+    getId: .unimplemented,
+    getInitMessage: .unimplemented,
+    getMembership: .unimplemented,
+    getName: .unimplemented,
+    getTrackedID: .unimplemented,
+    serialize: .unimplemented
+  )
+}
-- 
GitLab