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; }