import { Column, CreateDateColumn, Entity, Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn, } from 'typeorm'; import { Combatant } from '../combatant.enum'; import { CombatEventType } from '../combat-event-type.enum'; import { Combat } from './combat.entity'; @Entity({ name: 'combat_events' }) @Index('IDX_combat_events_combat_sequence', ['combatId', 'sequence'], { unique: true, }) export class CombatEvent { @PrimaryGeneratedColumn('uuid', { name: 'id' }) id!: string; @Column({ name: 'combat_id', type: 'uuid' }) combatId!: string; @Column({ name: 'round', type: 'integer' }) round!: number; @Column({ name: 'sequence', type: 'integer' }) sequence!: number; @Column({ name: 'type', type: 'enum', enum: CombatEventType, enumName: 'combat_event_type_enum', }) type!: CombatEventType; @Column({ name: 'source', type: 'enum', enum: Combatant, enumName: 'combatant_enum', }) source!: Combatant; @Column({ name: 'target', type: 'enum', enum: Combatant, enumName: 'combatant_enum', }) target!: Combatant; @Column({ name: 'amount', type: 'integer', nullable: true }) amount!: number | null; @CreateDateColumn({ name: 'created_at', type: 'timestamptz' }) createdAt!: Date; @ManyToOne(() => Combat, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'combat_id' }) combat!: Combat; }