import { Entity, PrimaryGeneratedColumn, ManyToOne, Column, UpdateDateColumn, Unique } from 'typeorm';
import { User } from '../users/user.entity';
import { Course } from '../course/course.entity';
import { Lesson } from '../lessons/lesson.entity';
import { Step } from '../steps/step.entity';

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

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

  @ManyToOne(() => Lesson, { nullable: true, eager: true }) lastLesson: Lesson | null;
  @ManyToOne(() => Step, { nullable: true, eager: true }) lastStep: Step | null;

  @Column({ default: 0 })
  percent: number;              // optional: update approximately

  @Column({ default: false })
  completed: boolean;

  @UpdateDateColumn()
  updatedAt: Date;
}
