import { BaseEntity, Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import { Guardian } from '~/guardian/entities/guradian.entity'; import { Junior } from '~/junior/entities'; import { MoneyRequestStatus } from '../enums'; @Entity('money_requests') export class MoneyRequest extends BaseEntity { @PrimaryGeneratedColumn('uuid') id!: string; @Column({ precision: 10, scale: 2, type: 'decimal', name: 'amount' }) amount!: number; @Column({ type: 'varchar', name: 'reason' }) reason!: string; @Column({ type: 'varchar', name: 'status', default: MoneyRequestStatus.PENDING }) status!: MoneyRequestStatus; @Column({ type: 'text', name: 'rejection_reason', nullable: true }) rejectionReason!: string | null; @Column({ type: 'uuid', name: 'junior_id' }) juniorId!: string; @Column({ type: 'uuid', name: 'guardian_id' }) guardianId!: string; @ManyToOne(() => Junior, (junior) => junior.moneyRequests, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'junior_id' }) junior!: Junior; @ManyToOne(() => Guardian, (guardian) => guardian.moneyRequests, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'guardian_id' }) guardian!: Guardian; @CreateDateColumn({ type: 'timestamp with time zone', default: () => 'CURRENT_TIMESTAMP', name: 'created_at' }) createdAt!: Date; @UpdateDateColumn({ type: 'timestamp with time zone', default: () => 'CURRENT_TIMESTAMP', name: 'updated_at' }) updatedAt!: Date; }