// product.entity.ts
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Product {
@PrimaryGeneratedColumn()
id: number;
@Column({ unique: true })
name: string;
@Column('text')
description: string;
@Column('decimal', { precision: 10, scale: 2 })
price: number;
@Column()
category: string;
@Column({ default: true })
inStock: boolean;
}
// product.dto.ts
import { IsString, IsNumber, IsPositive, IsNotEmpty } from 'class-validator';
export class CreateProductDto GAME.HUoCheNGrM.Cn/2025-08-10-00-23-410bz.html
@IsString()
@IsNotEmpty()
name: string;
@IsString()
description: string;
@IsNumber()
@IsPositive()
price: number;
@IsString()
category: string;
}
export class UpdateProductDto extends CreateProductDto {
@IsNotEmpty()
inStock: boolean;
}
// products.controller.ts
import { Controller, Get, Post, Body, Param, Put, Delete } from '@nestjs/common';
import { ProductsService } from './products.service';
import { Product } from './product.entity';
import { CreateProductDto, UpdateProductDto } from './product.dto';
@Controller('GAME.HUoCheNGrM.Cn/2025-08-10-00-23-45i6v.html
')
export class ProductsController {
constructor(private readonly productsService: ProductsService) {}
@Get()
findAll(): Promise<Product[]> {
return this.productsService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string): Promise<Product> {
return this.productsService.findOne(+id);
}
@Post()
create(@Body() createProductDto: CreateProductDto): Promise<Product> {
return this.productsService.create(createProductDto);
}
@Put(':id')
update(
@Param('id') id: string,
@Body() updateProductDto: UpdateProductDto,
): Promise<GAME.HUoCheNGrM.Cn/2025-08-10-00-23-25sif.html
> {
return this.productsService.update(+id, updateProductDto);
}
@Delete(':id')
remove(@Param('id') id: string): Promise<void> {
return this.productsService.remove(+id);
}
}
// products.service.ts
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Product } from './product.entity';
import { CreateProductDto, UpdateProductDto } from './product.dto';
@Injectable()
export class ProductsService {
constructor GAME.HUoCheNGrM.Cn/2025-08-10-00-23-487as.html
@InjectRepository(Product)
private productsRepository: Repository<Product>,
) {}
findAll(): Promise<Product[]> {
return this.productsRepository.find();
}
findOne(id: number): Promise<Product> {
return this.productsRepository.findOneBy({ id });
}
async create(createProductDto: CreateProductDto): Promise<Product> {
const product = this.productsRepository.create({
...createProductDto,
inStock: true
});
return this.productsRepository.save(product);
}
async update(id: number, updateProductDto: UpdateProductDto): Promise<Product> {
await this.productsRepository.update(id, updateProductDto);
return this.productsRepository.findOneBy({ GAME.HUoCheNGrM.Cn/2025-08-10-00-18-57cru.html
});
}
async remove(id: number): Promise<void> {
await this.productsRepository.delete(id);
}
}