File size: 1,072 Bytes
b5e5eac |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
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;
}
|