Files
heala-backend/src/modules/submissions/entities/submission.entity.ts
T
2026-10-07 16:34:11 +03:30

54 lines
1.4 KiB
TypeScript

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<SubmissionAnswer>;
@OneToOne(() => SubmissionResult, (result) => result.submission)
result?: SubmissionResult;
@CreateDateColumn()
createdAt!: Date;
@Column({ type: 'timestamptz', nullable: true })
completedAt?: Date;
}