some enhancements for tournaments

This commit is contained in:
Torsten Schulz
2025-07-15 18:06:07 +02:00
parent f29185dd33
commit 69b4302e23
7 changed files with 646 additions and 492 deletions

View File

@@ -27,7 +27,8 @@ const Tournament = sequelize.define('Tournament', {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 1
}
},
advancingPerGroup: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 1 },
}, {
underscored: true,
tableName: 'tournament',

View File

@@ -1,36 +1,51 @@
// models/TournamentMatch.js
import { DataTypes } from 'sequelize';
import sequelize from '../database.js';
import Tournament from './Tournament.js';
import TournamentGroup from './TournamentGroup.js';
const TournamentMatch = sequelize.define('TournamentMatch', {
tournamentId: {
type: DataTypes.INTEGER,
allowNull: false,
tournamentId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: Tournament,
key: 'id'
},
groupId: {
type: DataTypes.INTEGER,
allowNull: true,
},
round: {
type: DataTypes.STRING,
allowNull: false,
},
player1Id: {
type: DataTypes.INTEGER,
allowNull: false,
},
player2Id: {
type: DataTypes.INTEGER,
allowNull: false,
},
isFinished: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: false,
},
result: {
type: DataTypes.STRING,
allowNull: true,
onDelete: 'CASCADE',
onUpdate: 'CASCADE'
},
groupId: {
type: DataTypes.INTEGER,
allowNull: true,
references: {
model: TournamentGroup,
key: 'id'
},
onDelete: 'SET NULL',
onUpdate: 'CASCADE'
},
round: {
type: DataTypes.STRING,
allowNull: false,
},
player1Id: {
type: DataTypes.INTEGER,
allowNull: false,
},
player2Id: {
type: DataTypes.INTEGER,
allowNull: false,
},
isFinished: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: false,
},
result: {
type: DataTypes.STRING,
allowNull: true,
},
}, {
underscored: true,
tableName: 'tournament_match',

View File

@@ -149,8 +149,19 @@ Tournament.hasMany(TournamentMatch, { foreignKey: 'tournamentId', as: 'tournamen
TournamentMatch.belongsTo(TournamentGroup, { foreignKey: 'groupId', as: 'group' });
TournamentGroup.hasMany(TournamentMatch, { foreignKey: 'groupId', as: 'tournamentMatches' });
TournamentResult.belongsTo(TournamentMatch, { foreignKey: 'matchId', as: 'match' });
TournamentMatch.hasMany(TournamentResult, { foreignKey: 'matchId', as: 'tournamentResults' });
TournamentMatch.hasMany(TournamentResult, {
foreignKey: 'matchId',
as: 'tournamentResults',
onDelete: 'CASCADE',
onUpdate: 'CASCADE'
});
TournamentResult.belongsTo(TournamentMatch, {
foreignKey: 'matchId',
as: 'match',
onDelete: 'CASCADE',
onUpdate: 'CASCADE'
});
TournamentMatch.belongsTo(TournamentMember, { foreignKey: 'player1Id', as: 'player1' });
TournamentMatch.belongsTo(TournamentMember, { foreignKey: 'player2Id', as: 'player2' });