File: /var/dev/shahnamag/back-end/src/person/person.controller.ts
import { Controller, Get, Post, Body, Patch, Param, Delete, HttpException, HttpStatus } from '@nestjs/common';
import { PersonService } from './person.service';
import { CreatePersonDto } from './dto/create-person.dto';
import { UpdatePersonDto } from './dto/update-person.dto';
import { Public } from 'src/user/auth.guard';
@Controller('person')
export class PersonController {
constructor(private readonly personService: PersonService) {}
@Post()
create(@Body() createPersonDto: CreatePersonDto) {
return this.personService.create(createPersonDto);
}
@Public()
@Get()
async findAll() {
let persons = await this.personService.findAll().catch(error => error);
if(persons instanceof Error)
throw new HttpException({error: 500, message: persons.message}, HttpStatus.INTERNAL_SERVER_ERROR);
persons.forEach(person => person.cats = person.cats?.split(',').map(cat => +cat)) || []
return {data: persons, error: 0};
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.personService.findOne(+id);
}
@Patch(':id')
async update(@Param('id') id: string, @Body() updatePersonDto: UpdatePersonDto) {
let person = await this.personService.findOne(+id).catch(error => error);
if(person instanceof Error)
throw new HttpException({}, HttpStatus.INTERNAL_SERVER_ERROR);
if(!person)
throw new HttpException({}, HttpStatus.NOT_FOUND);
return this.personService.update(+id, updatePersonDto);
}
@Delete(':id')
remove(@Param('id') id: string) {
return this.personService.remove(+id);
}
}