import { Entity, PrimaryColumn, Column, Index, Unique, ManyToOne, JoinColumn, } from 'typeorm'; import { ChallengeEntity } from './challenge.entity'; import { UserEntity } from './user.entity'; @Entity('solve') @Unique('uq_solve_challenge_user', ['challengeId', 'userId']) @Index('idx_solve_user', ['userId']) @Index('idx_solve_challenge', ['challengeId']) export class SolveEntity { @PrimaryColumn('text') id!: string; @Column('text', { name: 'challenge_id' }) challengeId!: string; @ManyToOne(() => ChallengeEntity, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'challenge_id' }) challenge?: ChallengeEntity; @Column('text', { name: 'user_id' }) userId!: string; @ManyToOne(() => UserEntity, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'user_id' }) user?: UserEntity; @Column('text', { name: 'solved_at' }) solvedAt!: string; @Column('integer', { name: 'points_awarded', default: 0 }) pointsAwarded!: number; @Column('integer', { name: 'base_points', default: 0 }) basePoints!: number; @Column('integer', { name: 'rank_bonus', default: 0 }) rankBonus!: number; @Column('integer', { name: 'is_first', default: 0 }) isFirst!: boolean; @Column('integer', { name: 'is_second', default: 0 }) isSecond!: boolean; @Column('integer', { name: 'is_third', default: 0 }) isThird!: boolean; }