import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, Index, } from 'typeorm'; import { User } from './User'; import { Agent } from './Agent'; export enum SubscriptionStatus { ACTIVE = 'active', EXPIRED = 'expired', CANCELLED = 'cancelled', } @Entity('subscriptions') @Index(['userId', 'status']) @Index(['agentId', 'status']) export class Subscription { @PrimaryGeneratedColumn('uuid') id: string; @ManyToOne(() => User, (user) => user.subscriptions) user: User; @Column() userId: string; @ManyToOne(() => Agent, (agent) => agent.subscriptions) agent: Agent; @Column() agentId: string; @Column({ type: 'enum', enum: SubscriptionStatus, default: SubscriptionStatus.ACTIVE, }) status: SubscriptionStatus; @Column() expiresAt: Date; @Column({ nullable: true }) paymentReference?: string; // Paystack reference @Column({ default: false }) isPaymentVerified: boolean; @CreateDateColumn() createdAt: Date; @UpdateDateColumn() updatedAt: Date; }