import { Entity, Column, PrimaryGeneratedColumn, ManyToOne, OneToMany } from 'typeorm';
import { User } from '../users/user.entity';
import { Lesson } from '../lessons/lesson.entity';

@Entity()
export class Course {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    title: string;

    @Column({ type: 'text' })
    description: string;

    @Column()
    duration: string; // e.g. "5h 30m" or store minutes as number

    @Column({ type: 'decimal', precision: 10, scale: 2 })
    price: number;

    @Column({ type: 'decimal', precision: 10, scale: 2, nullable: true })
    discountPrice: number | null;

    @Column()
    level: string;

    // optional metadata
    @Column({ default: false })
    isPublished: boolean;

    @Column({
        type: 'enum',
        enum: ['draft', 'pending', 'published', 'rejected'],
        default: 'draft'
    })
    publishStatus: 'draft' | 'pending' | 'published' | 'rejected';

    // relation: a trainer creates many courses
    @ManyToOne(() => User, (user) => user.courses, { eager: true })
    trainer: User;

    @OneToMany(() => Lesson, (lesson) => lesson.course, { cascade: true })
    lessons: Lesson[];

    // course.entity.ts (add)
    @Column({ type: 'decimal', precision: 3, scale: 2, default: 0 })
    ratingAvg: string; // e.g. "4.35"

    @Column({ type: 'int', default: 0 })
    ratingCount: number;

    @Column({ nullable: true })
    courseImage: string;

    @Column({ nullable: true })
    courseVideo: string;
}
