import Decimal from "decimal.js"; import { Column, Entity, ManyToOne, OneToMany } from "typeorm"; import { BankAccount } from "./bank-account.entity"; import { BaseEntity } from "../../../common/entities/base.entity"; import { DecimalTransformer } from "../../../common/transformers/decimal.transformer"; import { User } from "../../users/entities/user.entity"; import { WalletTransaction } from "../../wallets/entities/transaction.entity"; import { DepositRequestStatus } from "../enums/deposit-request-status.enum"; import { TransferType } from "../enums/payment-type.enum"; @Entity() export class DepositRequest extends BaseEntity { @ManyToOne(() => BankAccount, (bankAccount) => bankAccount.depositRequests, { nullable: false, onDelete: "RESTRICT" }) bankAccount: BankAccount; @ManyToOne(() => User, { nullable: false, onDelete: "RESTRICT" }) user: User; @Column({ type: "varchar", length: 250, nullable: false }) receiptUrl: string; @Column({ type: "varchar", length: 250, nullable: true }) comment: string; @Column({ type: "enum", enum: TransferType, nullable: false }) type: TransferType; @Column({ type: "decimal", precision: 16, scale: 2, nullable: false, transformer: new DecimalTransformer() }) amount: Decimal; @Column({ type: "enum", enum: DepositRequestStatus, default: DepositRequestStatus.PENDING }) status: DepositRequestStatus; @OneToMany(() => WalletTransaction, (transaction) => transaction.depositRequest) transactions: WalletTransaction[]; }