import { Controller, Get, Post, Body, Patch, Param, Delete, ParseIntPipe, Query, DefaultValuePipe } from '@nestjs/common';
import { LogsService } from './logs.service';
import { CreateLogDto } from './dto/create-log.dto';
import { UpdateLogDto } from './dto/update-log.dto';
import { ApiTags } from '@nestjs/swagger';

@Controller('logs')
@ApiTags('logs')
export class LogsController {
	constructor(private readonly logsService: LogsService) {}

	@Post()
	create(@Body() createLogDto: CreateLogDto) {
		return this.logsService.create(createLogDto);
	}

	@Get()
	findAll(@Query('page', new DefaultValuePipe(1), ParseIntPipe) page: number, @Query('limit', new DefaultValuePipe(10), ParseIntPipe) limit: number, @Query('sortBy') sortBy: string, @Query('sortOrder') sortOrder: string, @Query('search') search: string, @Query('type') type: string, @Query('typeId', new DefaultValuePipe(1), ParseIntPipe) typeId: number) {
		return this.logsService.findAll((page - 1) * limit, limit, sortBy, sortOrder, search, type, typeId);
	}

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

	@Get('job/:jobId')
	findByJobId(@Param('jobId') jobId: string) {
		return this.logsService.findByJobId(jobId);
	}

	@Patch(':id')
	update(@Param('id') id: string, @Body() updateLogDto: UpdateLogDto) {
		return this.logsService.update(+id, updateLogDto);
	}

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