@@ -87,6 +87,7 @@ public PayloadService(
87
87
Timestamp = eventPayload . Timestamp ,
88
88
PatientDetails = patientDetails ,
89
89
PayloadDeleted = PayloadDeleted . No ,
90
+ Files = eventPayload . Payload . ToList ( )
90
91
} ;
91
92
92
93
if ( await _payloadRepository . CreateAsync ( payload ) )
@@ -173,12 +174,12 @@ public async Task<bool> DeletePayloadFromStorageAsync(string payloadId)
173
174
throw new MonaiNotFoundException ( $ "Payload with ID: { payloadId } not found") ;
174
175
}
175
176
176
- if ( payload . PayloadDeleted == PayloadDeleted . InProgress )
177
+ if ( payload . PayloadDeleted == PayloadDeleted . InProgress || payload . PayloadDeleted == PayloadDeleted . Yes )
177
178
{
178
- throw new MonaiBadRequestException ( $ "Deletion of files for payload ID: { payloadId } already in progress") ;
179
+ throw new MonaiBadRequestException ( $ "Deletion of files for payload ID: { payloadId } already in progress or already deleted ") ;
179
180
}
180
181
181
- // update the payload to in progress before we request deletion form MinIO
182
+ // update the payload to in progress before we request deletion from storage
182
183
payload . PayloadDeleted = PayloadDeleted . InProgress ;
183
184
await _payloadRepository . UpdateAsync ( payload ) ;
184
185
@@ -188,12 +189,19 @@ public async Task<bool> DeletePayloadFromStorageAsync(string payloadId)
188
189
{
189
190
try
190
191
{
191
- await _storageService . RemoveObjectsAsync ( payload . Bucket , payload . Files . Select ( f => f . Path ) ) ;
192
+ // get all objects for the payload in storage to be deleted
193
+ var allPayloadObjects = await _storageService . ListObjectsAsync ( payload . Bucket , payloadId , true ) ;
194
+
195
+ if ( allPayloadObjects . Any ( ) )
196
+ {
197
+ await _storageService . RemoveObjectsAsync ( payload . Bucket , allPayloadObjects . Select ( o => o . FilePath ) ) ;
198
+ }
199
+
192
200
payload . PayloadDeleted = PayloadDeleted . Yes ;
193
201
}
194
- catch
202
+ catch ( Exception ex )
195
203
{
196
- _logger . PayloadUpdateFailed ( payloadId ) ;
204
+ _logger . PayloadDeleteFailed ( payloadId , ex ) ;
197
205
payload . PayloadDeleted = PayloadDeleted . Failed ;
198
206
}
199
207
finally
0 commit comments