import { Entity, PrimaryGeneratedColumn, ManyToOne, Column, CreateDateColumn, Unique } from 'typeorm';
import { User } from '../users/user.entity';
import { Course } from '../course/course.entity';

export type EnrollmentStatus = 'pending' | 'active' | 'cancelled' | 'refunded';

@Entity()
@Unique(['user', 'course'])
export class Enrollment {
    @PrimaryGeneratedColumn()
    id: number;

    @ManyToOne(() => User, { eager: true })
    user: User;

    @ManyToOne(() => Course, { eager: true })
    course: Course;

    @CreateDateColumn()
    subscribedAt: Date;

    @Column({ default: 'pending' })
    status: EnrollmentStatus;

    @Column({ nullable: true }) stripeCustomerId: string;
    @Column({ nullable: true }) stripeCheckoutSessionId: string;
    @Column({ nullable: true }) stripePaymentIntentId: string;
}
