diff --git a/Examples/xx-messenger/Sources/AppCore/DBManager/DBManager.swift b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManager.swift index 178e1078e56aaddaf6ef8170834ea830b944aac5..f591dc1c2d37c3f14cf1a47905ccee2e3379fad1 100644 --- a/Examples/xx-messenger/Sources/AppCore/DBManager/DBManager.swift +++ b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManager.swift @@ -4,6 +4,7 @@ public struct DBManager { public var hasDB: DBManagerHasDB public var makeDB: DBManagerMakeDB public var getDB: DBManagerGetDB + public var removeDB: DBManagerRemoveDB } extension DBManager { @@ -17,7 +18,8 @@ extension DBManager { return DBManager( hasDB: .init { container.db != nil }, makeDB: .live(setDB: { container.db = $0 }), - getDB: .live(getDB: { container.db }) + getDB: .live(getDB: { container.db }), + removeDB: .live(getDB: { container.db }, unsetDB: { container.db = nil }) ) } } @@ -26,6 +28,7 @@ extension DBManager { public static let unimplemented = DBManager( hasDB: .unimplemented, makeDB: .unimplemented, - getDB: .unimplemented + getDB: .unimplemented, + removeDB: .unimplemented ) } diff --git a/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerRemoveDB.swift b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerRemoveDB.swift new file mode 100644 index 0000000000000000000000000000000000000000..69ab6e020d1ae782b048c82d75fb667eb3d7b985 --- /dev/null +++ b/Examples/xx-messenger/Sources/AppCore/DBManager/DBManagerRemoveDB.swift @@ -0,0 +1,30 @@ +import Foundation +import XCTestDynamicOverlay +import XXDatabase +import XXModels + +public struct DBManagerRemoveDB { + public var run: () throws -> Void + + public func callAsFunction() throws -> Void { + try run() + } +} + +extension DBManagerRemoveDB { + public static func live( + getDB: @escaping () -> Database?, + unsetDB: @escaping () -> Void + ) -> DBManagerRemoveDB { + DBManagerRemoveDB { + try getDB()?.drop() + unsetDB() + } + } +} + +extension DBManagerRemoveDB { + public static let unimplemented = DBManagerRemoveDB( + run: XCTUnimplemented("\(Self.self)") + ) +}