wip
This commit is contained in:
		| @@ -34,6 +34,8 @@ export type IMetadata = { | |||||||
| 	src?: string; | 	src?: string; | ||||||
| 	deletedAt?: Date; | 	deletedAt?: Date; | ||||||
| 	withoutChunks?: boolean; | 	withoutChunks?: boolean; | ||||||
|  | 	storage?: string; | ||||||
|  | 	storageProps?: any; | ||||||
| 	isSensitive?: boolean; | 	isSensitive?: boolean; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -35,9 +35,11 @@ async function save(readable: stream.Readable, name: string, type: string, hash: | |||||||
| 			await minio.putObject(config.drive.bucket, obj, readable); | 			await minio.putObject(config.drive.bucket, obj, readable); | ||||||
|  |  | ||||||
| 			Object.assign(metadata, { | 			Object.assign(metadata, { | ||||||
| 				storage: 'object-storage', |  | ||||||
| 				withoutChunks: true, | 				withoutChunks: true, | ||||||
| 				obj: id, | 				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 }` | 				url: `${ config.drive.config.secure ? 'https' : 'http' }://${ config.drive.config.endPoint }${ config.drive.config.port ? ':' + config.drive.config.port : '' }/${ config.drive.bucket }/${ obj }` | ||||||
| 			}); | 			}); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,30 +1,40 @@ | |||||||
|  | import * as Minio from 'minio'; | ||||||
| import DriveFile, { DriveFileChunk, IDriveFile } from '../../models/drive-file'; | import DriveFile, { DriveFileChunk, IDriveFile } from '../../models/drive-file'; | ||||||
| import DriveFileThumbnail, { DriveFileThumbnailChunk } from '../../models/drive-file-thumbnail'; | import DriveFileThumbnail, { DriveFileThumbnailChunk } from '../../models/drive-file-thumbnail'; | ||||||
|  | import config from '../../config'; | ||||||
|  |  | ||||||
| export default async function(file: IDriveFile, isExpired = false) { | export default async function(file: IDriveFile, isExpired = false) { | ||||||
| 	// チャンクをすべて削除 | 	if (file.metadata.withoutChunks) { | ||||||
| 	await DriveFileChunk.remove({ | 		if (file.metadata.storage == 'object-storage') { | ||||||
| 		files_id: file._id | 			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 DriveFile.update({ _id: file._id }, { |  | ||||||
| 		$set: { |  | ||||||
| 			'metadata.deletedAt': new Date(), |  | ||||||
| 			'metadata.isExpired': isExpired |  | ||||||
| 		} | 		} | ||||||
| 	}); | 	} else { | ||||||
|  | 		// チャンクをすべて削除 | ||||||
| 	//#region サムネイルもあれば削除 | 		await DriveFileChunk.remove({ | ||||||
| 	const thumbnail = await DriveFileThumbnail.findOne({ | 			files_id: file._id | ||||||
| 		'metadata.originalId': file._id |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
| 	if (thumbnail) { |  | ||||||
| 		await DriveFileThumbnailChunk.remove({ |  | ||||||
| 			files_id: thumbnail._id |  | ||||||
| 		}); | 		}); | ||||||
|  |  | ||||||
| 		await DriveFileThumbnail.remove({ _id: thumbnail._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 | ||||||
| 	} | 	} | ||||||
| 	//#endregion |  | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo