in src/objectStorageService/s3ObjectStorageService.ts [110:144]
static async deleteBasedOnPrefix(prefix: string): Promise<GenericResponse> {
let token;
const promises = [];
do {
const listParams: any = {
Bucket: FHIR_BINARY_BUCKET,
Prefix: prefix,
ContinuationToken: token,
};
// eslint-disable-next-line no-await-in-loop
const results = await S3.listObjectsV2(listParams).promise();
const contents = results.Contents || [];
token = results.ContinuationToken;
const keysToDelete: any[] = contents.map((content) => {
return { Key: content.Key };
});
const params = {
Bucket: FHIR_BINARY_BUCKET,
Delete: {
Objects: keysToDelete,
},
};
logger.info('Delete Params', params);
promises.push(S3.deleteObjects(params).promise());
} while (token);
try {
await Promise.all(promises);
} catch (e) {
const message = 'Deletion has failed, please retry';
logger.error(message, e);
throw e;
}
return { message: '' };
}