@@ -35,35 +35,14 @@ extension CoreDataRepository {
3535 ) async -> ( success: [ Model ] , failed: [ CoreDataBatchError < Model > ] ) {
3636 var successes = [ Model] ( )
3737 var failures = [ CoreDataBatchError < Model > ] ( )
38- await withTaskGroup ( of: Result< Model, CoreDataBatchError< Model>>. self , body: { [ weak self] group in
39- guard let self else {
40- group. cancelAll ( )
41- return
38+ for item in items {
39+ switch await create ( item, transactionAuthor: transactionAuthor) {
40+ case let . success( created) :
41+ successes. append ( created)
42+ case let . failure( error) :
43+ failures. append ( CoreDataBatchError ( item: item, error: error) )
4244 }
43- for item in items {
44- let added = group. addTaskUnlessCancelled {
45- async let result : Result < Model , CoreDataError > = self
46- . create ( item, transactionAuthor: transactionAuthor)
47- switch await result {
48- case let . success ( created) :
49- return . success( created)
50- case let . failure( error) :
51- return . failure ( CoreDataBatchError( item: item , error: error ) )
52- }
53- }
54- if !added {
55- return
56- }
57- }
58- for await result in group {
59- switch result {
60- case let . success( success) :
61- successes. append ( success)
62- case let . failure( failure) :
63- failures. append ( failure)
64- }
65- }
66- } )
45+ }
6746 return ( success: successes, failed: failures)
6847 }
6948
@@ -98,34 +77,14 @@ extension CoreDataRepository {
9877 ) async -> ( success: [ Model ] , failed: [ CoreDataBatchError < URL > ] ) {
9978 var successes = [ Model] ( )
10079 var failures = [ CoreDataBatchError < URL > ] ( )
101- await withTaskGroup ( of: Result< Model, CoreDataBatchError< URL>>. self , body: { [ weak self] group in
102- guard let self else {
103- group. cancelAll ( )
104- return
80+ for url in urls {
81+ switch await read ( url, of: Model . self) {
82+ case let . success( created) :
83+ successes. append ( created)
84+ case let . failure( error) :
85+ failures. append ( CoreDataBatchError ( item: url, error: error) )
10586 }
106- for url in urls {
107- let added = group. addTaskUnlessCancelled {
108- async let result = self . read ( url, of: Model . self)
109- switch await result {
110- case let . success ( created) :
111- return . success( created)
112- case let . failure( error) :
113- return . failure ( CoreDataBatchError( item: url , error: error ) )
114- }
115- }
116- if !added {
117- return
118- }
119- }
120- for await result in group {
121- switch result {
122- case let . success( success) :
123- successes. append ( success)
124- case let . failure( failure) :
125- failures. append ( failure)
126- }
127- }
128- } )
87+ }
12988 return ( success: successes, failed: failures)
13089 }
13190
@@ -169,38 +128,23 @@ extension CoreDataRepository {
169128 ) async -> ( success: [ Model ] , failed: [ CoreDataBatchError < Model > ] ) {
170129 var successes = [ Model] ( )
171130 var failures = [ CoreDataBatchError < Model > ] ( )
172- await withTaskGroup ( of: Result< Model, CoreDataBatchError< Model>>. self , body: { [ weak self] group in
173- guard let self else {
174- group. cancelAll ( )
175- return
131+ for item in items {
132+ guard let url = item. managedIdUrl else {
133+ failures. append ( CoreDataBatchError ( item: item, error: . noUrlOnItemToMapToObjectId) )
134+ continue
135+ }
136+ async let result : Result < Model , CoreDataError > = update (
137+ url,
138+ with: item,
139+ transactionAuthor: transactionAuthor
140+ )
141+ switch await result {
142+ case let . success ( created) :
143+ successes. append ( created)
144+ case let . failure( error) :
145+ failures . append ( CoreDataBatchError( item: item , error: error ) )
176146 }
177- for item in items {
178- let added = group. addTaskUnlessCancelled {
179- guard let url = item. managedIdUrl else {
180- return . failure( CoreDataBatchError ( item: item, error: . noUrlOnItemToMapToObjectId) )
181- }
182- async let result : Result < Model , CoreDataError > = self
183- . update ( url, with: item, transactionAuthor: transactionAuthor)
184- switch await result {
185- case let . success ( created) :
186- return . success( created)
187- case let . failure( error) :
188- return . failure ( CoreDataBatchError( item: item , error: error ) )
189- }
190- }
191- if !added {
192- return
193- }
194- }
195- for await result in group {
196- switch result {
197- case let . success( success) :
198- successes. append ( success)
199- case let . failure( failure) :
200- failures. append ( failure)
201- }
202- }
203- } )
147+ }
204148 return ( success: successes, failed: failures)
205149 }
206150
@@ -256,35 +200,14 @@ extension CoreDataRepository {
256200 ) async - > ( success: [ URL] , failed: [ CoreDataBatchError < URL > ] ) {
257201 var successes = [ URL] ( )
258202 var failures = [ CoreDataBatchError < URL > ] ( )
259- await withTaskGroup ( of: Result< URL, CoreDataBatchError< URL>>. self , body: { [ weak self] group in
260- guard let self else {
261- group. cancelAll ( )
262- return
203+ for url in urls {
204+ switch await delete ( url, transactionAuthor: transactionAuthor) {
205+ case . success:
206+ successes. append ( url)
207+ case let . failure( error) :
208+ failures. append ( CoreDataBatchError ( item: url, error: error) )
263209 }
264- for url in urls {
265- let added = group. addTaskUnlessCancelled {
266- async let result : Result < Void , CoreDataError > = self
267- . delete ( url, transactionAuthor: transactionAuthor)
268- switch await result {
269- case . success:
270- return . success( url)
271- case let . failure( error) :
272- return . failure ( CoreDataBatchError( item: url , error: error ) )
273- }
274- }
275- if !added {
276- return
277- }
278- }
279- for await result in group {
280- switch result {
281- case let . success( success) :
282- successes. append ( success)
283- case let . failure( failure) :
284- failures. append ( failure)
285- }
286- }
287- } )
210+ }
288211 return ( success: successes, failed: failures)
289212 }
290213
0 commit comments