import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { CreateApplicationResponse } from '~/common/modules/neoleap/dtos/response'; import { Account } from '../entities/account.entity'; @Injectable() export class AccountRepository { constructor(@InjectRepository(Account) private readonly accountRepository: Repository) {} createAccount(data: CreateApplicationResponse): Promise { return this.accountRepository.save( this.accountRepository.create({ accountReference: data.accountId, accountNumber: data.accountNumber, iban: data.iBan, balance: 0, currency: '682', }), ); } getAccountByReferenceNumber(accountReference: string): Promise { return this.accountRepository.findOne({ where: { accountReference }, relations: ['cards'], }); } getAccountByAccountNumber(accountNumber: string): Promise { return this.accountRepository.findOne({ where: { accountNumber }, relations: ['cards'], }); } topUpAccountBalance(accountReference: string, amount: number) { return this.accountRepository.increment({ accountReference }, 'balance', amount); } decreaseAccountBalance(accountReference: string, amount: number) { return this.accountRepository.decrement({ accountReference }, 'balance', amount); } }