Implemented delete operation

This commit is contained in:
Alex Tran 2022-02-13 14:19:51 -06:00
parent 78dbe4061b
commit df2a63c02e
3 changed files with 48 additions and 3 deletions

View file

@ -22,7 +22,7 @@ import { AuthUserDto, GetAuthUser } from '../../decorators/auth-user.decorator';
import { CreateAssetDto } from './dto/create-asset.dto';
import { ServeFileDto } from './dto/serve-file.dto';
import { AssetOptimizeService } from '../../modules/image-optimize/image-optimize.service';
import { AssetType } from './entities/asset.entity';
import { AssetEntity, AssetType } from './entities/asset.entity';
import { GetAllAssetQueryDto } from './dto/get-all-asset-query.dto';
import { Response as Res } from 'express';
import { GetNewAssetQueryDto } from './dto/get-new-asset-query.dto';
@ -98,6 +98,21 @@ export class AssetController {
@Delete('/')
async deleteAssetById(@GetAuthUser() authUser: AuthUserDto, @Body(ValidationPipe) assetIds: DeleteAssetDto) {
return this.assetService.deleteAssetById(authUser, assetIds);
const deleteAssetList: AssetEntity[] = [];
assetIds.ids.forEach(async (id) => {
const assets = await this.assetService.getAssetById(authUser, id);
deleteAssetList.push(assets);
});
const result = await this.assetService.deleteAssetById(authUser, assetIds);
result.forEach((res) => {
deleteAssetList.filter((a) => a.id == res.id && res.status == 'success');
});
await this.backgroundTaskService.deleteFileOnDisk(deleteAssetList);
return result;
}
}

View file

@ -6,6 +6,7 @@ import { AssetEntity } from '../../api-v1/asset/entities/asset.entity';
import { ConfigService } from '@nestjs/config';
import exifr from 'exifr';
import { readFile } from 'fs/promises';
import fs from 'fs';
import { Logger } from '@nestjs/common';
import { ExifEntity } from '../../api-v1/asset/entities/exif.entity';
@ -56,4 +57,23 @@ export class BackgroundTaskProcessor {
Logger.error(`Error extracting EXIF ${e.toString()}`, 'extractExif');
}
}
@Process('delete-file-on-disk')
async deleteFileOnDisk(job) {
const { assets }: { assets: AssetEntity[] } = job.data;
assets.forEach(async (asset) => {
fs.unlink(asset.originalPath, (err) => {
if (err) {
console.log('error deleting ', asset.originalPath);
}
});
fs.unlink(asset.resizePath, (err) => {
if (err) {
console.log('error deleting ', asset.originalPath);
}
});
});
}
}

View file

@ -12,7 +12,7 @@ export class BackgroundTaskService {
) {}
async extractExif(savedAsset: AssetEntity, fileName: string, fileSize: number) {
const job = await this.backgroundTaskQueue.add(
await this.backgroundTaskQueue.add(
'extract-exif',
{
savedAsset,
@ -22,4 +22,14 @@ export class BackgroundTaskService {
{ jobId: randomUUID() },
);
}
async deleteFileOnDisk(assets: AssetEntity[]) {
await this.backgroundTaskQueue.add(
'delete-file-on-disk',
{
assets,
},
{ jobId: randomUUID() },
);
}
}