michangarrito-backend-v2/src/modules/referrals/entities/referral-reward.entity.ts
rckrdmrd 59e6ea4ab6 Migración desde michangarrito/backend - Estándar multi-repo v2
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 08:12:07 -06:00

71 lines
1.4 KiB
TypeScript

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