import { Controller, Get, Post, Put, Body, Param, Query } from '@nestjs/common'; import { ProductService } from './product.service'; import { Prisma } from '@prisma/client'; @Controller('products') export class ProductController { constructor(private readonly productService: ProductService) {} @Get(':id') async getProduct(@Param('id') id: string) { return this.productService.getProduct(Number(id)); } @Get() async getProducts( @Query('skip') skip?: string, @Query('take') take?: string, @Query('search') search?: string, @Query('maxPrice') maxPrice?: string, ) { if (search) { return this.productService.searchProducts(search); } return this.productService.getProducts({ skip: skip ? Number(skip) : undefined, take: take ? Number(take) : undefined, where: maxPrice ? { prices: { some: { regularPrice: { lte: Number(maxPrice), }, }, }, } : undefined, }); } @Post() async createProduct(@Body() data: Prisma.ProductCreateInput) { return this.productService.createProduct(data); } @Put(':id') async updateProduct( @Param('id') id: string, @Body() data: Prisma.ProductUpdateInput, ) { return this.productService.updateProduct({ where: { id: Number(id) }, data, }); } }