38 lines
1.5 KiB
TypeScript
Executable File
38 lines
1.5 KiB
TypeScript
Executable File
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[];
|
|
}
|