Compare commits
No commits in common. 'e18858fd60b6005a2325d09f4f28a4971f9d4467' and '021e22fcc978da119e8ef40a550e03dd2eebb7f4' have entirely different histories.
e18858fd60
...
021e22fcc9
4 changed files with 4 additions and 46 deletions
@ -1,4 +0,0 @@ |
|||||||
export interface AddBalanceResponse { |
|
||||||
message: string; |
|
||||||
balance: number; |
|
||||||
} |
|
@ -1,19 +1,8 @@ |
|||||||
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,31 +1,7 @@ |
|||||||
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(@InjectModel(Wallet) private walletModel: typeof Wallet) {} |
constructor(){} |
||||||
|
|
||||||
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