35 lines
972 B
Swift
35 lines
972 B
Swift
//
|
|
// Copyright Amazon.com Inc. or its affiliates.
|
|
// All Rights Reserved.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
import Amplify
|
|
import Foundation
|
|
|
|
enum MutationSyncMetadataMigrationStep {
|
|
case emptyMutationSyncMetadataStore
|
|
case emptyModelSyncMetadataStore
|
|
case removeMutationSyncMetadataCopyStore
|
|
case createMutationSyncMetadataCopyStore
|
|
case backfillMutationSyncMetadata
|
|
case removeMutationSyncMetadataStore
|
|
case renameMutationSyncMetadataCopy
|
|
}
|
|
|
|
/// Delegate used by `MutationSyncMetadataMigration` which can be implemented by different
|
|
/// storage adapters.
|
|
protocol MutationSyncMetadataMigrationDelegate: AnyObject {
|
|
|
|
func preconditionCheck() throws
|
|
|
|
func transaction(_ basicClosure: BasicThrowableClosure) throws
|
|
|
|
func mutationSyncMetadataStoreEmptyOrMigrated() throws -> Bool
|
|
|
|
func containsDuplicateIdsAcrossModels() throws -> Bool
|
|
|
|
func applyMigrationStep(_ step: MutationSyncMetadataMigrationStep) throws
|
|
}
|