Compare commits
	
		
			2 Commits 
		
	
	
		
			021e22fcc9
			...
			e18858fd60
		
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								 | 
						e18858fd60 | 10 months ago | 
| 
							
							
								 | 
						f65fbce4d6 | 10 months ago | 
				 4 changed files with 46 additions and 4 deletions
			
			
		@ -0,0 +1,4 @@ | 
				
			|||||||
 | 
					export interface AddBalanceResponse { | 
				
			||||||
 | 
					  message: string; | 
				
			||||||
 | 
					  balance: number; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,8 +1,19 @@ | 
				
			|||||||
import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; | 
					import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; | 
				
			||||||
import { WalletService } from './wallet.service'; | 
					import { WalletService } from './wallet.service'; | 
				
			||||||
 | 
					import { AddBalanceResponse } from './add-balance-response.interface'; | 
				
			||||||
 | 
					
 | 
				
			||||||
@Controller('wallet') | 
					@Controller('wallet') | 
				
			||||||
export class WalletController { | 
					export class WalletController { | 
				
			||||||
  constructor(private readonly walletService: WalletService) {} | 
					  constructor(private readonly walletService: WalletService) {} | 
				
			||||||
 | 
					  @Get(':userId') | 
				
			||||||
 | 
					  async getBalance(@Param('userId') userId: number): Promise<number> { | 
				
			||||||
 | 
					    return this.walletService.getBalance(userId); | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					  @Post(':userId/add') | 
				
			||||||
 | 
					  async addBalance( | 
				
			||||||
 | 
					    @Param('userId') userId: number, 
 | 
				
			||||||
 | 
					    @Body('amount') amount: number    
 | 
				
			||||||
 | 
					  ): Promise<AddBalanceResponse> { | 
				
			||||||
 | 
					    return this.walletService.addBalance(userId, amount); | 
				
			||||||
 | 
					  } | 
				
			||||||
} | 
					} | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,31 @@ | 
				
			|||||||
import { Injectable } from '@nestjs/common'; | 
					import { Injectable } from "@nestjs/common"; | 
				
			||||||
 | 
					import { InjectModel } from "@nestjs/sequelize"; | 
				
			||||||
 | 
					import { Wallet } from "./entities/wallet.entity"; | 
				
			||||||
 | 
					import { HttpException, HttpStatus } from "@nestjs/common"; | 
				
			||||||
 | 
					import { AddBalanceResponse } from "./add-balance-response.interface"; | 
				
			||||||
 | 
					
 | 
				
			||||||
@Injectable() | 
					@Injectable() | 
				
			||||||
export class WalletService { | 
					export class WalletService { | 
				
			||||||
 constructor(){} | 
					  constructor(@InjectModel(Wallet) private walletModel: typeof Wallet) {} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  async getBalance(userId: number): Promise<number> { | 
				
			||||||
 | 
					    const wallet = await this.walletModel.findOne({ where: { userId } }); | 
				
			||||||
 | 
					    return wallet ? wallet.balance : 0; | 
				
			||||||
 | 
					  } | 
				
			||||||
 | 
					  async addBalance(userId: number, amount: number): Promise<AddBalanceResponse> { | 
				
			||||||
 | 
					    try { | 
				
			||||||
 | 
					      const wallet = await this.walletModel.findOne({ where: { userId } }); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (wallet) { | 
				
			||||||
 | 
					        wallet.balance += Number(amount); | 
				
			||||||
 | 
					        await wallet.save(); | 
				
			||||||
 | 
					        return { message: "Balance updated successfully.", balance: wallet.balance }; | 
				
			||||||
 | 
					      } else { | 
				
			||||||
 | 
					        const newWallet = await this.walletModel.create({ userId, balance: amount }); | 
				
			||||||
 | 
					        return { message: "Wallet created and balance added successfully.", balance: newWallet.balance }; | 
				
			||||||
 | 
					      } | 
				
			||||||
 | 
					    } catch (error) { | 
				
			||||||
 | 
					      throw new HttpException("An error occurred while adding balance to the wallet.", HttpStatus.INTERNAL_SERVER_ERROR); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					  } | 
				
			||||||
} | 
					} | 
				
			||||||
 | 
				
			|||||||
					Loading…
					
					
				
		Reference in new issue