Files
teamwallet/myteamwallet_backend/src/players/entities/player.entity.ts
2026-07-31 23:37:54 +02:00

74 lines
1.5 KiB
TypeScript

import {
AfterLoad,
BeforeInsert,
Column,
Entity,
Index,
ManyToOne,
OneToMany,
PrimaryGeneratedColumn,
RelationId,
} from 'typeorm';
import { EntityHelper } from 'src/utils/entity-helper';
import { TeamRole } from 'src/team-roles/entities/team-roles.entity';
import { Team } from 'src/teams/entities/team.entity';
import { User } from 'src/users/entities/user.entity';
import { Transaction } from 'src/transactions/entitites/transaction.entity';
@Entity()
export class Player extends EntityHelper {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
@ManyToOne(() => TeamRole, {
eager: true,
})
teamRole?: TeamRole | null;
@Index('IDX_player_team_id')
@ManyToOne(() => Team, {
eager: true,
})
team: Team;
@Column({ type: 'decimal', precision: 10, scale: 2, default: 0 })
balance: number;
@Index('IDX_player_user_id')
@ManyToOne(() => User, (user) => user.players, {
eager: true,
})
user?: User | null;
@RelationId((player: Player) => player.user)
userId?: number | null;
@OneToMany(() => Transaction, (transaction) => transaction.player)
transactions: Transaction[];
@AfterLoad()
updateValue() {
this.balance = Number(this.balance);
}
@Column({ default: true })
active: boolean;
@BeforeInsert()
prepareData() {
if (this.balance == null) {
this.balance = 0;
}
if (this.transactions == null) {
this.transactions = [];
}
}
}