static async deleteBasedOnPrefix()

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: '' };
    }