@@ -10,6 +10,12 @@ import Combine
10
10
import AWSPluginsCore
11
11
import Foundation
12
12
13
+ enum InitStorageEngineResult {
14
+ case successfullyInitialized
15
+ case alreadyInitialized
16
+ case failure( DataStoreError )
17
+ }
18
+
13
19
final public class AWSDataStorePlugin : DataStoreCategoryPlugin {
14
20
15
21
public var key : PluginKey = " awsDataStorePlugin "
@@ -110,12 +116,12 @@ final public class AWSDataStorePlugin: DataStoreCategoryPlugin {
110
116
/// Initializes the underlying storage engine
111
117
/// - Returns: success if the engine is successfully initialized or
112
118
/// a failure with a DataStoreError
113
- func initStorageEngine( ) -> DataStoreResult < Void > {
119
+ func initStorageEngine( ) -> InitStorageEngineResult {
114
120
storageEngineInitQueue. sync {
115
121
if storageEngine != nil {
116
- return . successfulVoid
122
+ return . alreadyInitialized
117
123
}
118
- var result : DataStoreResult < Void >
124
+
119
125
do {
120
126
if #available( iOS 13 . 0 , * ) {
121
127
if self . dataStorePublisher == nil {
@@ -125,12 +131,13 @@ final public class AWSDataStorePlugin: DataStoreCategoryPlugin {
125
131
try resolveStorageEngine ( dataStoreConfiguration: dataStoreConfiguration)
126
132
try storageEngine. setUp ( modelSchemas: ModelRegistry . modelSchemas)
127
133
try storageEngine. applyModelMigrations ( modelSchemas: ModelRegistry . modelSchemas)
128
- result = . successfulVoid
134
+
135
+ return . successfullyInitialized
129
136
} catch {
130
- result = . failure( causedBy: error)
131
137
log. error ( error: error)
138
+ return . failure( . invalidOperation( causedBy: error) )
132
139
}
133
- return result
140
+
134
141
}
135
142
}
136
143
@@ -144,7 +151,9 @@ final public class AWSDataStorePlugin: DataStoreCategoryPlugin {
144
151
}
145
152
146
153
switch initStorageEngine ( ) {
147
- case . success:
154
+ case . alreadyInitialized:
155
+ completion ( . successfulVoid)
156
+ case . successfullyInitialized:
148
157
storageEngine. startSync { result in
149
158
150
159
self . operationQueue. operations. forEach { operation in
0 commit comments