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