fix: code review notes
This commit is contained in:
parent
25c0d04d11
commit
c55b8f73a9
|
|
@ -50,12 +50,9 @@ where SourceStorage.ErrorType == TargetStorage.ErrorType,
|
|||
}
|
||||
|
||||
open func store(value: ValueType) -> Result<Void, StorageError> {
|
||||
let _ = sourceStorage.deleteValue()
|
||||
.flatMapError {
|
||||
errorLogger.log(error: $0, file: #file, line: #line)
|
||||
|
||||
return .failure($0)
|
||||
}
|
||||
if case let .failure(error) = sourceStorage.deleteValue(), !error.isValueNotFound {
|
||||
errorLogger.log(error: error, file: #file, line: #line)
|
||||
}
|
||||
|
||||
return targetStorage.store(value: value)
|
||||
}
|
||||
|
|
@ -63,12 +60,9 @@ where SourceStorage.ErrorType == TargetStorage.ErrorType,
|
|||
open func getValue() -> Result<ValueType, StorageError> {
|
||||
targetStorage.getValue()
|
||||
.flatMap {
|
||||
let _ = sourceStorage.deleteValue()
|
||||
.flatMapError {
|
||||
errorLogger.log(error: $0, file: #file, line: #line)
|
||||
|
||||
return .failure($0)
|
||||
}
|
||||
if case let .failure(error) = sourceStorage.deleteValue(), !error.isValueNotFound {
|
||||
errorLogger.log(error: error, file: #file, line: #line)
|
||||
}
|
||||
|
||||
return .success($0)
|
||||
}
|
||||
|
|
@ -87,6 +81,13 @@ where SourceStorage.ErrorType == TargetStorage.ErrorType,
|
|||
|
||||
open func deleteValue() -> Result<Void, StorageError> {
|
||||
targetStorage.deleteValue()
|
||||
.flatMapError {
|
||||
if !$0.isValueNotFound {
|
||||
errorLogger.log(error: $0, file: #file, line: #line)
|
||||
}
|
||||
|
||||
return sourceStorage.deleteValue()
|
||||
}
|
||||
.flatMap {
|
||||
if sourceStorage.hasStoredValue() {
|
||||
return sourceStorage.deleteValue()
|
||||
|
|
@ -94,11 +95,6 @@ where SourceStorage.ErrorType == TargetStorage.ErrorType,
|
|||
|
||||
return .success($0)
|
||||
}
|
||||
.flatMapError {
|
||||
errorLogger.log(error: $0, file: #file, line: #line)
|
||||
|
||||
return sourceStorage.deleteValue()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,10 +28,6 @@ open class BaseCodableMigratingStorageContainer<SourceStorage,
|
|||
CodableKeyValueStorage
|
||||
where SourceStorage: CodableKeyValueStorage, TargetStorage: CodableKeyValueStorage {
|
||||
|
||||
public enum CodableTypeError: Error {
|
||||
case unableToConvertToEncodable
|
||||
}
|
||||
|
||||
public let errorLogger: ErrorLogger
|
||||
|
||||
public init(sourceStorage: SourceStorage,
|
||||
|
|
@ -48,17 +44,18 @@ where SourceStorage: CodableKeyValueStorage, TargetStorage: CodableKeyValueStora
|
|||
|
||||
targetStorage.codableObject(forKey: key, decoder: decoder)
|
||||
.flatMap {
|
||||
let _ = removeSourceValue(forKey: key)
|
||||
.flatMapError {
|
||||
errorLogger.log(error: $0, file: #file, line: #line)
|
||||
|
||||
return .failure($0)
|
||||
}
|
||||
if case let .failure(error) = removeSourceValue(forKey: key), !error.isValueNotFound {
|
||||
errorLogger.log(error: error, file: #file, line: #line)
|
||||
}
|
||||
|
||||
return .success($0)
|
||||
}
|
||||
.flatMapError { _ in
|
||||
sourceStorage.codableObject(forKey: key, decoder: decoder)
|
||||
.flatMapError {
|
||||
if !$0.isValueNotFound {
|
||||
errorLogger.log(error: $0, file: #file, line: #line)
|
||||
}
|
||||
|
||||
return sourceStorage.codableObject(forKey: key, decoder: decoder)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -66,12 +63,9 @@ where SourceStorage: CodableKeyValueStorage, TargetStorage: CodableKeyValueStora
|
|||
forKey key: StorageKey<Value>,
|
||||
encoder: CodableKeyValueEncoder) -> Result<Void, StorageError> {
|
||||
|
||||
let _ = removeSourceValue(forKey: key)
|
||||
.flatMapError {
|
||||
errorLogger.log(error: $0, file: #file, line: #line)
|
||||
|
||||
return .failure($0)
|
||||
}
|
||||
if case let .failure(error) = removeSourceValue(forKey: key), !error.isValueNotFound {
|
||||
errorLogger.log(error: error, file: #file, line: #line)
|
||||
}
|
||||
|
||||
return targetStorage.set(encodableObject: encodableObject, forKey: key, encoder: encoder)
|
||||
}
|
||||
|
|
@ -83,7 +77,9 @@ where SourceStorage: CodableKeyValueStorage, TargetStorage: CodableKeyValueStora
|
|||
.flatMapError { _ in .success(value) }
|
||||
}
|
||||
.flatMapError {
|
||||
errorLogger.log(error: $0, file: #file, line: #line)
|
||||
if !$0.isValueNotFound {
|
||||
errorLogger.log(error: $0, file: #file, line: #line)
|
||||
}
|
||||
|
||||
return removeSourceValue(forKey: key)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,8 +33,6 @@ final class MigratingBackingStoreTests: XCTestCase {
|
|||
|
||||
override func setUp() {
|
||||
profile = nil
|
||||
let _ = MockMigratingStorageContainer.defaultContainer.sourceStorage.removeValue(forKey: .profile)
|
||||
let _ = MockMigratingStorageContainer.defaultContainer.targetStorage.removeValue(forKey: .profile)
|
||||
}
|
||||
|
||||
// MARK: - Read Tests
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ final class MigratingSingleValueStorageTests: XCTestCase {
|
|||
let _ = targetRefreshTokenStorage.store(value: newToken)
|
||||
|
||||
XCTAssertEqual(try refreshToken.getValue().get(), newToken)
|
||||
XCTAssertNotNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertThrowsError(try sourceRefreshTokenStorage.getValue().get())
|
||||
XCTAssertNoThrow(try targetRefreshTokenStorage.getValue().get())
|
||||
}
|
||||
|
|
@ -120,7 +120,7 @@ final class MigratingSingleValueStorageTests: XCTestCase {
|
|||
let _ = targetRefreshTokenStorage.store(value: newToken)
|
||||
|
||||
XCTAssertNoThrow(try refreshToken.store(value: currentToken).get())
|
||||
XCTAssertNotNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertThrowsError(try sourceRefreshTokenStorage.getValue().get())
|
||||
XCTAssertEqual(try targetRefreshTokenStorage.getValue().get(), currentToken)
|
||||
}
|
||||
|
|
@ -145,7 +145,7 @@ final class MigratingSingleValueStorageTests: XCTestCase {
|
|||
let currentToken = "token"
|
||||
|
||||
XCTAssertNoThrow(try refreshToken.store(value: currentToken).get())
|
||||
XCTAssertNotNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertThrowsError(try sourceRefreshTokenStorage.getValue().get())
|
||||
XCTAssertEqual(try targetRefreshTokenStorage.getValue().get(), currentToken)
|
||||
}
|
||||
|
|
@ -186,7 +186,7 @@ final class MigratingSingleValueStorageTests: XCTestCase {
|
|||
let _ = sourceRefreshTokenStorage.store(value: oldToken)
|
||||
|
||||
XCTAssertNoThrow(try refreshToken.deleteValue().get())
|
||||
XCTAssertNotNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertThrowsError(try sourceRefreshTokenStorage.getValue().get())
|
||||
XCTAssertThrowsError(try targetRefreshTokenStorage.getValue().get())
|
||||
}
|
||||
|
|
@ -195,7 +195,7 @@ final class MigratingSingleValueStorageTests: XCTestCase {
|
|||
// PostCondition - source: ❌ target: ❌
|
||||
func testDeleteValueWithNoValues() throws {
|
||||
XCTAssertThrowsError(try refreshToken.deleteValue().get())
|
||||
XCTAssertNotNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertNil(MockStorageLogger.defaultLogger.getError())
|
||||
XCTAssertThrowsError(try sourceRefreshTokenStorage.getValue().get())
|
||||
XCTAssertThrowsError(try targetRefreshTokenStorage.getValue().get())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// Copyright (c) 2020 Touch Instinct
|
||||
// Copyright (c) 2023 Touch Instinct
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the Software), to deal
|
||||
|
|
|
|||
Loading…
Reference in New Issue