import { Test } from '@/modules/tests/entities/test.entity'; import { User } from '@/modules/users/entities/user.entity'; import { Column, CreateDateColumn, Entity, ManyToOne, OneToMany, OneToOne, PrimaryGeneratedColumn, BaseEntity, } from 'typeorm'; import { SubmissionStatus } from '../enums/submission-status.enum'; import { SubmissionAnswer } from './submission-answer.entity'; import { SubmissionResult } from './submission-result.entity'; import { Question } from '@/modules/questions/entities/question.entity'; @Entity() export class Submission extends BaseEntity { @PrimaryGeneratedColumn() id!: number; @Column({ type: 'varchar', nullable: true }) code!: string; @ManyToOne(() => User, { onDelete: 'CASCADE' }) user!: User; @ManyToOne(() => Test, { onDelete: 'CASCADE' }) test!: Test; @Column({ type: 'enum', enum: SubmissionStatus, default: SubmissionStatus.IN_PROGRESS, }) status!: SubmissionStatus; @ManyToOne(() => Question, { onDelete: 'SET NULL', nullable: true }) currentQuestion!: Question | null; @OneToMany(() => SubmissionAnswer, (answer) => answer.submission) answers!: Array; @OneToOne(() => SubmissionResult, (result) => result.submission) result?: SubmissionResult; @CreateDateColumn() createdAt!: Date; @Column({ type: 'timestamptz', nullable: true }) completedAt?: Date; }