zurri / src /entities /Subscription.ts
nexusbert's picture
initial commit
b5e5eac
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;
}