fix: code review notes

This commit is contained in:
Nikita Semenov 2023-07-06 18:42:18 +03:00
parent 25c0d04d11
commit c55b8f73a9
5 changed files with 34 additions and 44 deletions

View File

@ -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()
}
}
}

View File

@ -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)
}

View File

@ -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

View File

@ -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())
}

View File

@ -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