File: /var/dev/shahnamag/back-end/src/keyword/keyword.controller.ts
import { Controller, Get, Post, Body, Patch, Param, Delete, Query, HttpException, HttpStatus } from '@nestjs/common';
import { KeywordService } from './keyword.service';
import { CreateKeywordDto } from './dto/create-keyword.dto';
import { UpdateKeywordDto } from './dto/update-keyword.dto';
import { Public } from '../user/auth.guard';
// import { ConfigService } from '@nestjs/config';
@Controller('keyword')
export class KeywordController {
constructor(private readonly keywordService: KeywordService) {}
@Post()
create(@Body() createKeywordDto: CreateKeywordDto) {
return this.keywordService.create(createKeywordDto);
}
@Public()
@Get()
async findAll(@Query('onlyPublished') onlyPublished: number) {
let keywords = await this.keywordService.findAll().catch(error => error);
if(keywords instanceof Error)
throw new HttpException({error: 500, message: keywords.message}, HttpStatus.INTERNAL_SERVER_ERROR);
if(onlyPublished)
keywords = keywords
.map(keyword => {
keyword.verseKeywords = keyword.verseKeywords
.filter(verseKeyword => verseKeyword.state == 'accepted');
return keyword;
})
.filter(keyword => keyword.verseKeywords.length);
return {data: keywords, error: 0};
}
@Public()
@Get(':id')
async findOne(@Param('id') id: string, @Query('neighbours') neighbours: string) {
let result = await this.keywordService.findOne(+id).catch(error => error);
if(result instanceof Error)
throw new HttpException({error: 500, message: result.message}, HttpStatus.INTERNAL_SERVER_ERROR);
return {data: result, error: 0};
}
@Patch(':id')
update(@Param('id') id: string, @Body() updateKeywordDto: UpdateKeywordDto) {
return this.keywordService.update(+id, updateKeywordDto);
}
@Delete(':id')
remove(@Param('id') id: string) {
return this.keywordService.remove(+id);
}
}