feat(sprint4): achievements, community goals, hall of fame, profile
Some checks failed
CI/CD — Build & Deploy / Build & Deploy (push) Failing after 37s
Some checks failed
CI/CD — Build & Deploy / Build & Deploy (push) Failing after 37s
4 modules: achievement (15 succès, 5 catégories, 3 paliers), community (objectifs collectifs + boosts globaux), halloffame (classement mensuel), profile (titre actif + badges + % progression). Event-driven: combat/forge/craft émettent des events via @nestjs/event-emitter. Character entity: +activeTitle, +totalGoldEarned. Seeds: 15 achievements + 3 community goals.
This commit is contained in:
33
src/halloffame/hall-of-fame.entity.ts
Normal file
33
src/halloffame/hall-of-fame.entity.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import {
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
Column,
|
||||
ManyToOne,
|
||||
JoinColumn,
|
||||
} from 'typeorm';
|
||||
import { Character } from '../character/entities/character.entity';
|
||||
|
||||
@Entity('hall_of_fame')
|
||||
export class HallOfFame {
|
||||
@PrimaryGeneratedColumn('uuid')
|
||||
id: string;
|
||||
|
||||
@Column({ name: 'character_id' })
|
||||
characterId: string;
|
||||
|
||||
@ManyToOne(() => Character)
|
||||
@JoinColumn({ name: 'character_id' })
|
||||
character: Character;
|
||||
|
||||
@Column({ length: 7 })
|
||||
period: string; // 'YYYY-MM'
|
||||
|
||||
@Column()
|
||||
rank: number;
|
||||
|
||||
@Column({ name: 'contribution_total', type: 'bigint' })
|
||||
contributionTotal: number;
|
||||
|
||||
@Column({ length: 50 })
|
||||
badge: string; // 'top1_april_2026'
|
||||
}
|
||||
Reference in New Issue
Block a user