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