import { Controller, Get, Post, Body, Patch, Param, Delete, UseInterceptors, UploadedFile, ParseFilePipe, MaxFileSizeValidator, FileTypeValidator, ParseFilePipeBuilder, HttpStatus, UploadedFiles } from '@nestjs/common';
import { ImagesService } from './images.service';
import { CreateImageDto } from './dto/create-image.dto';
import { UpdateImageDto } from './dto/update-image.dto';
import { FileInterceptor, FilesInterceptor } from '@nestjs/platform-express';

@Controller('images')
export class ImagesController {
	constructor(private readonly imagesService: ImagesService) {}

	@Post()
	@UseInterceptors(FilesInterceptor('working-file'))
	create(
		@UploadedFiles(
			new ParseFilePipeBuilder()
				.addFileTypeValidator({
					fileType: /(jpg|jpeg|png|gif)$/,
				})
				.addMaxSizeValidator({
					maxSize: 1024 * 1024 * 32,
				})
				.build({
					errorHttpStatusCode: HttpStatus.UNPROCESSABLE_ENTITY,
				})
		)
		files: Array<Express.Multer.File>
	) {
		console.log('running create for images');
		return this.imagesService.create(files);
	}

	@Get()
	findAll() {
		return this.imagesService.findAll();
	}

	@Get(':id')
	findOne(@Param('id') id: string) {
		return this.imagesService.findOne(+id);
	}

	@Patch(':id')
	update(@Param('id') id: string, @Body() updateImageDto: UpdateImageDto) {
		return this.imagesService.update(+id, updateImageDto);
	}

	@Delete(':id')
	remove(@Param('id') id: string) {
		return this.imagesService.remove(+id);
	}
}
