|
|
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; |
|
|
|
|
|
@Column({ default: false }) |
|
|
isPaymentVerified: boolean; |
|
|
|
|
|
@CreateDateColumn() |
|
|
createdAt: Date; |
|
|
|
|
|
@UpdateDateColumn() |
|
|
updatedAt: Date; |
|
|
} |
|
|
|