import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn, } from 'typeorm'; import { Referral } from './referral.entity'; export enum RewardType { FREE_MONTH = 'free_month', DISCOUNT = 'discount', } export enum RewardStatus { AVAILABLE = 'available', USED = 'used', EXPIRED = 'expired', } @Entity({ schema: 'subscriptions', name: 'referral_rewards' }) export class ReferralReward { @PrimaryGeneratedColumn('uuid') id: string; @Column({ name: 'tenant_id' }) tenantId: string; @Column({ name: 'referral_id' }) referralId: string; @Column({ type: 'varchar', length: 20, default: RewardType.FREE_MONTH, }) type: RewardType; @Column({ name: 'months_earned', default: 0 }) monthsEarned: number; @Column({ name: 'months_used', default: 0 }) monthsUsed: number; @Column({ name: 'discount_percent', default: 0 }) discountPercent: number; @Column({ name: 'expires_at', type: 'timestamptz', nullable: true }) expiresAt: Date; @Column({ type: 'varchar', length: 20, default: RewardStatus.AVAILABLE, }) status: RewardStatus; @CreateDateColumn({ name: 'created_at' }) createdAt: Date; @UpdateDateColumn({ name: 'updated_at' }) updatedAt: Date; // Relations @ManyToOne(() => Referral) @JoinColumn({ name: 'referral_id' }) referral: Referral; }