import { Controller, Get, Query, UseGuards } from '@nestjs/common';
import { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger';
import { plainToInstance } from 'class-transformer';
import { JwtAuthGuard } from '../auth/user/jwt.guard';
import { GetProductListDto, GetProductListResponseDto } from './product.dto';
import { ProductService } from './product.service';

@ApiTags('상품')
@UseGuards(JwtAuthGuard)
@Controller('product')
export class ProductController {
  constructor(private productService: ProductService) {}

  @ApiOperation({
    summary: `상품목록`,
    description: `default 값 (prdShow : 1 | prdType :PRD001)
                  default 정렬 (prdSort : desc)`,
  })
  @Get()
  @ApiOkResponse({ type: GetProductListResponseDto })
  async getProductList(@Query() query: GetProductListDto) {
    const data = await this.productService.getProductList(query);
    return plainToInstance(GetProductListResponseDto, data, {
      excludeExtraneousValues: true,
    });
  }
}
