Files
dsc-api/src/modules/referrals/entities/referral.entity.ts
T
2025-04-14 16:35:15 +03:30

29 lines
935 B
TypeScript

import { Column, Entity, ManyToOne, OneToMany } from "typeorm";
import { ReferralCode } from "./referral-code.entity";
import { ReferralReward } from "./referral-reward.entity";
import { BaseEntity } from "../../../common/entities/base.entity";
import { User } from "../../users/entities/user.entity";
import { ReferralStatus } from "../enums/referral-status.enum";
@Entity()
export class Referral extends BaseEntity {
@ManyToOne(() => User, (user) => user.referrals)
referrer: User;
@ManyToOne(() => User, (user) => user.referredBy)
referredUser: User;
@ManyToOne(() => ReferralCode, (code) => code.referrals)
referralCode: ReferralCode;
@OneToMany(() => ReferralReward, (reward) => reward.referral)
rewards: ReferralReward[];
@Column({ type: "enum", enum: ReferralStatus, default: ReferralStatus.PENDING })
status: ReferralStatus;
@Column({ type: "timestamptz", nullable: true })
completedAt?: Date;
}