Files
dsc-api/src/modules/wallets/entities/transaction.entity.ts
T
2025-04-22 12:28:11 +03:30

35 lines
1.3 KiB
TypeScript
Executable File

import Decimal from "decimal.js";
import { Column, Entity, ManyToOne } from "typeorm";
import { Wallet } from "./wallet.entity";
import { BaseEntity } from "../../../common/entities/base.entity";
import { DecimalTransformer } from "../../../common/transformers/decimal.transformer";
import { DepositRequest } from "../../payments/entities/deposit-request.entity";
import { Payment } from "../../payments/entities/payment.entity";
import { TransactionType } from "../enums/transaction-type.enum";
@Entity()
export class WalletTransaction extends BaseEntity {
@Column({ type: "int", generated: "identity", insert: false })
numericId: number;
@ManyToOne(() => Wallet, (wallet) => wallet.transactions, { onDelete: "CASCADE", nullable: false })
wallet: Wallet;
@Column({ type: "decimal", precision: 16, scale: 2, nullable: false, transformer: new DecimalTransformer() })
amount: Decimal;
@Column({ type: "enum", enum: TransactionType, nullable: false })
type: TransactionType;
@Column({ type: "text", nullable: false })
description: string;
@ManyToOne(() => Payment, (payment) => payment.transactions, { onDelete: "CASCADE", nullable: true })
payment: Payment | null;
@ManyToOne(() => DepositRequest, (depositRequest) => depositRequest.transactions, { onDelete: "CASCADE", nullable: true })
depositRequest: DepositRequest | null;
}