Skip to content
Snippets Groups Projects
Commit f7ff8b59 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add DBManagerRemoveDB function

parent 7a15a34d
No related branches found
No related tags found
Loading
...@@ -4,6 +4,7 @@ public struct DBManager { ...@@ -4,6 +4,7 @@ public struct DBManager {
public var hasDB: DBManagerHasDB public var hasDB: DBManagerHasDB
public var makeDB: DBManagerMakeDB public var makeDB: DBManagerMakeDB
public var getDB: DBManagerGetDB public var getDB: DBManagerGetDB
public var removeDB: DBManagerRemoveDB
} }
extension DBManager { extension DBManager {
...@@ -17,7 +18,8 @@ extension DBManager { ...@@ -17,7 +18,8 @@ extension DBManager {
return DBManager( return DBManager(
hasDB: .init { container.db != nil }, hasDB: .init { container.db != nil },
makeDB: .live(setDB: { container.db = $0 }), 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 { ...@@ -26,6 +28,7 @@ extension DBManager {
public static let unimplemented = DBManager( public static let unimplemented = DBManager(
hasDB: .unimplemented, hasDB: .unimplemented,
makeDB: .unimplemented, makeDB: .unimplemented,
getDB: .unimplemented getDB: .unimplemented,
removeDB: .unimplemented
) )
} }
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)")
)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment