forked from DebaucheryLibrarian/traxxx
				
			Changed S3 delete error handling.
This commit is contained in:
		
							parent
							
								
									dc04577a6c
								
							
						
					
					
						commit
						b5eddf61f9
					
				
							
								
								
									
										56
									
								
								src/media.js
								
								
								
								
							
							
						
						
									
										56
									
								
								src/media.js
								
								
								
								
							|  | @ -1000,41 +1000,37 @@ async function associateAvatars(profiles) { | |||
| } | ||||
| 
 | ||||
| async function deleteS3Objects(allMedia) { | ||||
| 	try { | ||||
| 		const statuses = await chunk(allMedia).reduce(async (chain, media) => { | ||||
| 			const acc = await chain; | ||||
| 	const statuses = await chunk(allMedia).reduce(async (chain, media) => { | ||||
| 		const acc = await chain; | ||||
| 
 | ||||
| 			const objects = media | ||||
| 				.map((item) => [ | ||||
| 					{ Key: item.path }, | ||||
| 					{ Key: item.thumbnail }, | ||||
| 					{ Key: item.lazy }, | ||||
| 				]) | ||||
| 				.flat() | ||||
| 				.filter((item) => item.Key); | ||||
| 		const objects = media | ||||
| 			.map((item) => [ | ||||
| 				{ Key: item.path }, | ||||
| 				{ Key: item.thumbnail }, | ||||
| 				{ Key: item.lazy }, | ||||
| 			]) | ||||
| 			.flat() | ||||
| 			.filter((item) => item.Key); | ||||
| 
 | ||||
| 			const deleteCommand = new DeleteObjectsCommand({ | ||||
| 				Bucket: config.s3.bucket, | ||||
| 				Delete: { | ||||
| 					Objects: objects, | ||||
| 					Quiet: false, | ||||
| 				}, | ||||
| 			}); | ||||
| 
 | ||||
| 			const status = await s3.send(deleteCommand); | ||||
| 
 | ||||
| 			logger.info(`Removed ${status.Deleted.length} media files from S3 bucket '${config.s3.bucket}', ${status.Errors.length} errors`); | ||||
| 
 | ||||
| 			return acc.concat(status); | ||||
| 		}, Promise.resolve()).catch((error) => { | ||||
| 			console.log(error); | ||||
| 		const deleteCommand = new DeleteObjectsCommand({ | ||||
| 			Bucket: config.s3.bucket, | ||||
| 			Delete: { | ||||
| 				Objects: objects, | ||||
| 				Quiet: false, | ||||
| 			}, | ||||
| 		}); | ||||
| 
 | ||||
| 		return statuses; | ||||
| 	} catch (error) { | ||||
| 		console.log(error); | ||||
| 		const status = await s3.send(deleteCommand); | ||||
| 
 | ||||
| 		logger.info(`Removed ${status.Deleted.length} media files from S3 bucket '${config.s3.bucket}', ${status.Errors.length} errors`); | ||||
| 
 | ||||
| 		return acc.concat(status); | ||||
| 	}, Promise.resolve()).catch((error) => { | ||||
| 		logger.error(`Failed to delete S3 objects: ${error.message}`); | ||||
| 		throw error; | ||||
| 	} | ||||
| 	}); | ||||
| 
 | ||||
| 	return statuses; | ||||
| } | ||||
| 
 | ||||
| async function flushOrphanedMedia(stage = 1) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue