HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
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);
  }
}