Implement product creation functionality in product module

master
nicekid1 2 months ago
parent 44b3017ce4
commit 780fb8bc1f
  1. 18
      src/products/products.controller.ts
  2. 9
      src/products/products.module.ts
  3. 19
      src/products/products.service.ts

@ -1,8 +1,18 @@
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { ProductsService } from './products.service';
import { Controller, Get, Post, Body, Patch, Param, Delete, Res } from "@nestjs/common";
import { ProductsService } from "./products.service";
import { Product } from "./entities/product.entity";
@Controller('products')
@Controller("products")
export class ProductsController {
constructor(private readonly productsService: ProductsService) {}
@Post()
async create(@Body() body: { name: string; description: string; price: number }) {
const { name, description, price } = body;
const product = await this.productsService.create(name, description, price);
return {
message: 'Product created successfully!',
product
};
}
}

@ -1,8 +1,11 @@
import { Module } from '@nestjs/common';
import { ProductsService } from './products.service';
import { ProductsController } from './products.controller';
import { Module } from "@nestjs/common";
import { ProductsService } from "./products.service";
import { ProductsController } from "./products.controller";
import { SequelizeModule } from "@nestjs/sequelize";
import { Product } from "./entities/product.entity";
@Module({
imports: [SequelizeModule.forFeature([Product])],
controllers: [ProductsController],
providers: [ProductsService],
})

@ -1,6 +1,19 @@
import { Injectable } from '@nestjs/common';
import { Injectable } from "@nestjs/common";
import { InjectModel } from "@nestjs/sequelize";
import { Product } from "./entities/product.entity";
@Injectable()
export class ProductsService {
constructor(@InjectModel(Product) private readonly productModel: typeof Product) {}
async create(name: string, description: string, price: number): Promise<Product> {
try {
if (!name || !description || price <= 0) {
throw new Error("Invalid input data");
}
const product = await this.productModel.create({ name, description, price });
return product;
} catch (error) {
throw new Error("Error creating product");
}
}
}

Loading…
Cancel
Save