fix users database bugs

master
aliMohtarami 1 month ago
parent a864ed9999
commit fc67949151
  1. 1
      migrations/20250104074851-create-user.js
  2. 2
      migrations/20250105063054-create-cart.js
  3. 4
      src/app.module.ts
  4. 16
      src/shop/shop.controller.ts
  5. 10
      src/shop/shop.module.ts
  6. 8
      src/shop/shop.service.ts
  7. 10
      src/users/entities/user.entity.ts
  8. 6
      src/users/users.controller.ts
  9. 10
      src/users/users.module.ts
  10. 4
      src/users/users.service.ts

@ -22,6 +22,7 @@ module.exports = {
role: {
type: Sequelize.ENUM('admin', 'user'),
allowNull: false,
defaultValue: 'user',
},
firstName: {
type: Sequelize.STRING,

@ -32,7 +32,7 @@ module.exports = {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: 'Invoices', // نام جدول Invoices
model: 'Invoices',
key: 'id',
},
onDelete: 'CASCADE',

@ -5,7 +5,7 @@ import { ConfigModule } from "@nestjs/config";
import { SequelizeModule } from "@nestjs/sequelize";
import { databaseConfig } from "../config/database.config";
import { UsersModule } from './users/users.module';
import { ProductsModule } from './shop/shop.module';
import { ShopModule } from './shop/shop.module';
@Module({
@ -15,7 +15,7 @@ import { ProductsModule } from './shop/shop.module';
}),
SequelizeModule.forRoot(databaseConfig),
UsersModule,
ProductsModule,
ShopModule,
],
controllers: [AppController],

@ -1,13 +1,13 @@
import { Controller, Get, Post, Body, Param, Delete, Query, Put, UseGuards, Request, Patch, HttpException, HttpStatus } from "@nestjs/common";
import { InjectModel } from "@nestjs/sequelize";
import { ShopService } from "./shop.service";
import { Product } from "./entities/product.entity";
import { CreateProductDto } from "./dto/products/create-product.dto";
import { UpdateProductDto } from "./dto/products/update-product.dto";
import { RoleGuard } from "src/users/guard/role.guard";
import { AddToCartDto } from "./dto/cart/add-to-cart.dto";
import { JwtAuthGuard } from "src/users/guard/auth.guard";
import { CreateProductDto } from "./dto/products/create-product.dto";
import { UpdateProductDto } from "./dto/products/update-product.dto";
import { UpdateCartDto } from "./dto/cart/update-cart.dto";
import { InjectModel } from "@nestjs/sequelize";
import { AddToCartDto } from "./dto/cart/add-to-cart.dto";
import { Product } from "./entities/product.entity";
import { Transaction } from "./entities/transaction.entity";
import { Payment } from "./entities/payment.entity";
@ -54,12 +54,12 @@ export class ShopController {
//delete a product (admin)
@UseGuards(RoleGuard)
@Delete("product/:id")
async remove(@Param("id") id: string): Promise<{ message: string }> {
async remove(@Param("id") id: string){
return this.shopService.remove(id);
}
////////////////////////////////////////cart////////////////////////////////////////
//create and a item to cart (user)
@UseGuards(JwtAuthGuard)
@UseGuards(JwtAuthGuard)
@Post("cart")
async createAndAddItemToCart(@Body() addToCartDto: AddToCartDto, @Request() req: any) {
const userId = req.user.id;
@ -211,7 +211,7 @@ export class ShopController {
async getInvoices() {
return this.shopService.getInvoices();
}
//get specific user invoices
//get specific user invoices (admin)
@UseGuards(RoleGuard)
@Get('invoice/:id')
async getUserInvoice(@Param('id') id:number) {

@ -1,12 +1,12 @@
import { Module } from "@nestjs/common";
import { JwtModule } from "@nestjs/jwt";
import { SequelizeModule } from "@nestjs/sequelize";
import { ShopService } from "./shop.service";
import { ShopController } from "./shop.controller";
import { SequelizeModule } from "@nestjs/sequelize";
import { Product } from "./entities/product.entity";
import { RoleGuard } from "src/users/guard/role.guard";
import { JwtModule } from "@nestjs/jwt";
import { Cart } from "./entities/cart.entity";
import { JwtAuthGuard } from "src/users/guard/auth.guard";
import { Product } from "./entities/product.entity";
import { Cart } from "./entities/cart.entity";
import { Wallet } from "./entities/wallet.entity";
import { Transaction } from "./entities/transaction.entity";
import { Payment } from "./entities/payment.entity";
@ -23,4 +23,4 @@ import { Invoice } from "./entities/invoice.entity";
controllers: [ShopController],
providers: [ShopService, RoleGuard, JwtAuthGuard],
})
export class ProductsModule {}
export class ShopModule {}

@ -1,14 +1,14 @@
import { Injectable } from "@nestjs/common";
import { HttpException, HttpStatus } from "@nestjs/common";
import { InternalServerErrorException } from "@nestjs/common";
import { Op } from "sequelize";
import { InjectModel } from "@nestjs/sequelize";
import { Product } from "./entities/product.entity";
import { CreateProductDto } from "./dto/products/create-product.dto";
import { UpdateProductDto } from "./dto/products/update-product.dto";
import { Op } from "sequelize";
import { HttpException, HttpStatus } from "@nestjs/common";
import { Product } from "./entities/product.entity";
import { Cart } from "./entities/cart.entity";
import { Wallet } from "./entities/wallet.entity";
import { Transaction } from "./entities/transaction.entity";
import { InternalServerErrorException } from "@nestjs/common";
import { Invoice } from "./entities/invoice.entity";
const ZarinpalCheckout = require("zarinpal-checkout");

@ -10,6 +10,7 @@ export class User extends Model<User> {
@Column({
type: DataType.ENUM("admin", "user"),
defaultValue: "user",
allowNull: false,
})
role: string;
@ -23,7 +24,7 @@ export class User extends Model<User> {
@Column({ unique: true })
username: string;
@Column({ unique: true })
@Column({ unique: true, allowNull: false })
phoneNumber: string;
@Column({
@ -34,12 +35,11 @@ export class User extends Model<User> {
@Column({
type: DataType.STRING,
allowNull: true,
allowNull: true,
})
refreshToken: string;
}
export enum Gender {
Male = 'male',
Female = 'female',
Male = "male",
Female = "female",
}

@ -6,17 +6,16 @@ import { LoginUserDto } from "./dto/login-user.dto";
import { JwtAuthGuard } from "src/users/guard/auth.guard";
import { UpdateUserDto } from "./dto/update-user.dto";
import { RoleGuard } from "src/users/guard/role.guard";
import { plainToInstance } from "class-transformer";
@Controller("user")
export class UsersController {
constructor(private readonly usersService: UsersService) {}
//register as user
//register
@Post("register")
async register(@Body() createUserDto: CreateUserDto) {
return this.usersService.register(createUserDto);
}
//login as user
//login
@Post("login")
async login(@Body() loginUserDto: LoginUserDto) {
return this.usersService.login(loginUserDto);
@ -58,7 +57,6 @@ export class UsersController {
){
return this.usersService.findAll(page, limit);
}
// get a specific user info (admin)
@UseGuards(RoleGuard)
@Get("userinfo/:id")

@ -1,15 +1,13 @@
import { Module } from '@nestjs/common';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { SequelizeModule } from '@nestjs/sequelize';
import { User } from './entities/user.entity';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { PassportModule } from '@nestjs/passport';
import { JwtModule } from '@nestjs/jwt';
import { PassportModule } from '@nestjs/passport';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { User } from './entities/user.entity';
import { JwtAuthGuard } from 'src/users/guard/auth.guard';
@Module({
imports: [SequelizeModule.forFeature([User]),
PassportModule.register({ defaultStrategy: 'jwt' }),

@ -7,8 +7,6 @@ import { ConfigService } from "@nestjs/config";
import { CreateUserDto } from "./dto/create-user.dto";
import { LoginUserDto } from "./dto/login-user.dto";
import { UpdateUserDto } from "./dto/update-user.dto";
import e from "express";
import { IsInstance } from "class-validator";
@Injectable()
export class UsersService {
@ -168,7 +166,7 @@ export class UsersService {
try {
const user = await this.userModel.findOne({
where: { id: userId },
attributes: { exclude: ["password"] },
attributes: { exclude: ["password","refreshToken"] },
});
if (!user) {
throw new HttpException("User not found.", HttpStatus.NOT_FOUND);

Loading…
Cancel
Save