import { Body, Controller, HttpCode, Post, UploadedFile, UseInterceptors } from '@nestjs/common'; import { Throttle } from '@nestjs/throttler'; import { FileInterceptor } from '@nestjs/platform-express'; import { memoryStorage } from 'multer'; import { QuickImportDto } from './dto/quick-import.dto'; import { QuickImportService, QuickImportResult } from './quick-import.service'; @Controller('quick-import') export class QuickImportController { constructor(private readonly quickImportService: QuickImportService) {} @Post() @HttpCode(200) @Throttle({ default: { ttl: 60_000, limit: 20 } }) @UseInterceptors( FileInterceptor('file', { storage: memoryStorage(), limits: { fileSize: 10 * 1024 * 1024 }, fileFilter: (req, file, callback) => { if ( file.mimetype === 'application/pdf' || file.mimetype === 'application/octet-stream' || file.mimetype === 'image/jpeg' || file.mimetype === 'image/png' || file.mimetype === 'image/webp' ) { callback(null, true); } else { callback(new Error('Otillåten filtyp. Använd JPEG, PNG, WebP eller PDF.'), false); } }, }), ) async importFromInput( @Body() body: QuickImportDto, @UploadedFile() file?: Express.Multer.File, ): Promise { if (file) { return this.quickImportService.importFromUpload(file); } return this.quickImportService.importFromInput(body?.input ?? ''); } }