feat(renown): add Reputation/Renown/TurnIn entities and update Character/ItemDefinition/CombatReward

This commit is contained in:
Bastian Wagner
2026-08-21 09:03:37 +02:00
parent 3662029ec9
commit 4fa1923525
10 changed files with 289 additions and 14 deletions

View File

@@ -0,0 +1,39 @@
import {
Column,
Entity,
Index,
JoinColumn,
ManyToOne,
PrimaryGeneratedColumn,
} from 'typeorm';
import { Character } from '../../characters/entities/character.entity';
import { RenownMilestoneDefinition } from './renown-milestone-definition.entity';
@Entity({ name: 'character_renown_milestones' })
@Index('IDX_character_renown_milestones_character_milestone', ['characterId', 'milestoneId'], {
unique: true,
})
export class CharacterRenownMilestone {
@PrimaryGeneratedColumn('uuid', { name: 'id' })
id!: string;
@Column({ name: 'character_id', type: 'uuid' })
characterId!: string;
@Column({ name: 'milestone_id', type: 'uuid' })
milestoneId!: string;
@Column({ name: 'completed_at', type: 'timestamptz' })
completedAt!: Date;
@Column({ name: 'times_completed', type: 'integer' })
timesCompleted!: number;
@ManyToOne(() => Character, { onDelete: 'CASCADE' })
@JoinColumn({ name: 'character_id' })
character!: Character;
@ManyToOne(() => RenownMilestoneDefinition, { onDelete: 'RESTRICT' })
@JoinColumn({ name: 'milestone_id' })
milestone!: RenownMilestoneDefinition;
}

View File

@@ -0,0 +1,39 @@
import {
Column,
CreateDateColumn,
Entity,
Index,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
@Entity({ name: 'renown_milestone_definitions' })
@Index('IDX_renown_milestone_definitions_key', ['key'], { unique: true })
export class RenownMilestoneDefinition {
@PrimaryGeneratedColumn('uuid', { name: 'id' })
id!: string;
@Column({ name: 'key', type: 'varchar', length: 100 })
key!: string;
@Column({ name: 'name', type: 'varchar', length: 150 })
name!: string;
@Column({ name: 'description', type: 'text' })
description!: string;
@Column({ name: 'renown_reward', type: 'integer' })
renownReward!: number;
@Column({ name: 'repeatable', type: 'boolean' })
repeatable!: boolean;
@Column({ name: 'enabled', type: 'boolean' })
enabled!: boolean;
@CreateDateColumn({ name: 'created_at', type: 'timestamptz' })
createdAt!: Date;
@UpdateDateColumn({ name: 'updated_at', type: 'timestamptz' })
updatedAt!: Date;
}