Fix bug nado
This commit is contained in:
		
							parent
							
								
									9c4e0a4ae6
								
							
						
					
					
						commit
						b3b82e7595
					
				|  | @ -58,8 +58,7 @@ drive: | |||
| 
 | ||||
|   # OR | ||||
| 
 | ||||
|   # storage: 'object-storage' | ||||
|   # service: 'minio' | ||||
|   # storage: 'minio' | ||||
|   # bucket: | ||||
|   # prefix: | ||||
|   # config: | ||||
|  |  | |||
|  | @ -51,9 +51,8 @@ export type Source = { | |||
| 
 | ||||
| 	drive?: { | ||||
| 		storage: string; | ||||
| 		bucket: string; | ||||
| 		prefix: string; | ||||
| 		service?: string; | ||||
| 		bucket?: string; | ||||
| 		prefix?: string; | ||||
| 		config?: any; | ||||
| 	}; | ||||
| 
 | ||||
|  |  | |||
|  | @ -21,36 +21,31 @@ import config from '../../config'; | |||
| const log = debug('misskey:drive:add-file'); | ||||
| 
 | ||||
| async function save(readable: stream.Readable, name: string, type: string, hash: string, size: number, metadata: any): Promise<IDriveFile> { | ||||
| 	if (config.drive && config.drive.storage == 'object-storage') { | ||||
| 		if (config.drive.service == 'minio') { | ||||
| 	if (config.drive && config.drive.storage == 'minio') { | ||||
| 		const minio = new Minio.Client(config.drive.config); | ||||
| 		const id = uuid.v4(); | ||||
| 		const obj = `${config.drive.prefix}/${id}`; | ||||
| 		await minio.putObject(config.drive.bucket, obj, readable); | ||||
| 
 | ||||
| 			const minio = new Minio.Client(config.drive.config); | ||||
| 			const id = uuid.v4(); | ||||
| 			const obj = `${config.drive.prefix}/${id}`; | ||||
| 			await minio.putObject(config.drive.bucket, obj, readable); | ||||
| 		Object.assign(metadata, { | ||||
| 			withoutChunks: true, | ||||
| 			storage: 'minio', | ||||
| 			storageProps: { | ||||
| 				id: id | ||||
| 			}, | ||||
| 			url: `${ config.drive.config.secure ? 'https' : 'http' }://${ config.drive.config.endPoint }${ config.drive.config.port ? ':' + config.drive.config.port : '' }/${ config.drive.bucket }/${ obj }` | ||||
| 		}); | ||||
| 
 | ||||
| 			Object.assign(metadata, { | ||||
| 				withoutChunks: true, | ||||
| 				storage: 'object-storage', | ||||
| 				storageProps: { | ||||
| 					id: id | ||||
| 				}, | ||||
| 				url: `${ config.drive.config.secure ? 'https' : 'http' }://${ config.drive.config.endPoint }${ config.drive.config.port ? ':' + config.drive.config.port : '' }/${ config.drive.bucket }/${ obj }` | ||||
| 			}); | ||||
| 		const file = await DriveFile.insert({ | ||||
| 			length: size, | ||||
| 			uploadDate: new Date(), | ||||
| 			md5: hash, | ||||
| 			filename: name, | ||||
| 			metadata: metadata, | ||||
| 			contentType: type | ||||
| 		}); | ||||
| 
 | ||||
| 			const file = await DriveFile.insert({ | ||||
| 				length: size, | ||||
| 				uploadDate: new Date(), | ||||
| 				md5: hash, | ||||
| 				filename: name, | ||||
| 				metadata: metadata, | ||||
| 				contentType: type | ||||
| 			}); | ||||
| 
 | ||||
| 			return file; | ||||
| 		} else { | ||||
| 			throw 'unknown storage type'; | ||||
| 		} | ||||
| 		return file; | ||||
| 	} else { | ||||
| 		// Get MongoDB GridFS bucket
 | ||||
| 		const bucket = await getDriveFileBucket(); | ||||
|  |  | |||
|  | @ -4,37 +4,35 @@ import DriveFileThumbnail, { DriveFileThumbnailChunk } from '../../models/drive- | |||
| import config from '../../config'; | ||||
| 
 | ||||
| export default async function(file: IDriveFile, isExpired = false) { | ||||
| 	if (file.metadata.withoutChunks) { | ||||
| 		if (file.metadata.storage == 'object-storage') { | ||||
| 			const minio = new Minio.Client(config.drive.config); | ||||
| 			const obj = `${config.drive.prefix}/${file.metadata.storageProps.id}`; | ||||
| 			await minio.removeObject(config.drive.bucket, obj); | ||||
| 		} | ||||
| 	} else { | ||||
| 		// チャンクをすべて削除
 | ||||
| 		await DriveFileChunk.remove({ | ||||
| 			files_id: file._id | ||||
| 		}); | ||||
| 
 | ||||
| 		await DriveFile.update({ _id: file._id }, { | ||||
| 			$set: { | ||||
| 				'metadata.deletedAt': new Date(), | ||||
| 				'metadata.isExpired': isExpired | ||||
| 			} | ||||
| 		}); | ||||
| 
 | ||||
| 		//#region サムネイルもあれば削除
 | ||||
| 		const thumbnail = await DriveFileThumbnail.findOne({ | ||||
| 			'metadata.originalId': file._id | ||||
| 		}); | ||||
| 
 | ||||
| 		if (thumbnail) { | ||||
| 			await DriveFileThumbnailChunk.remove({ | ||||
| 				files_id: thumbnail._id | ||||
| 			}); | ||||
| 
 | ||||
| 			await DriveFileThumbnail.remove({ _id: thumbnail._id }); | ||||
| 		} | ||||
| 		//#endregion
 | ||||
| 	if (file.metadata.storage == 'minio') { | ||||
| 		const minio = new Minio.Client(config.drive.config); | ||||
| 		const obj = `${config.drive.prefix}/${file.metadata.storageProps.id}`; | ||||
| 		await minio.removeObject(config.drive.bucket, obj); | ||||
| 	} | ||||
| 
 | ||||
| 	// チャンクをすべて削除
 | ||||
| 	await DriveFileChunk.remove({ | ||||
| 		files_id: file._id | ||||
| 	}); | ||||
| 
 | ||||
| 	await DriveFile.update({ _id: file._id }, { | ||||
| 		$set: { | ||||
| 			'metadata.deletedAt': new Date(), | ||||
| 			'metadata.isExpired': isExpired | ||||
| 		} | ||||
| 	}); | ||||
| 
 | ||||
| 	//#region サムネイルもあれば削除
 | ||||
| 	const thumbnail = await DriveFileThumbnail.findOne({ | ||||
| 		'metadata.originalId': file._id | ||||
| 	}); | ||||
| 
 | ||||
| 	if (thumbnail) { | ||||
| 		await DriveFileThumbnailChunk.remove({ | ||||
| 			files_id: thumbnail._id | ||||
| 		}); | ||||
| 
 | ||||
| 		await DriveFileThumbnail.remove({ _id: thumbnail._id }); | ||||
| 	} | ||||
| 	//#endregion
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue