Tournament management

This commit is contained in:
2026-05-06 13:28:10 +02:00
parent 67d27ab21c
commit c70b9c554e
20 changed files with 1667 additions and 36 deletions
@@ -0,0 +1,392 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using TournamentOrganizer;
#nullable disable
namespace TournamentOrganizer.Migrations
{
[DbContext(typeof(TournamentContext))]
[Migration("20260506083354_AddTournamentTeam")]
partial class AddTournamentTeam
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "10.0.5");
modelBuilder.Entity("TournamentOrganizer.Models.Event", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTime>("End")
.HasColumnType("TEXT");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property<DateTime>("Start")
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("Events");
});
modelBuilder.Entity("TournamentOrganizer.Models.Game", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Description")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property<int?>("S1GroupAdvances")
.HasColumnType("INTEGER");
b.Property<int?>("S1Groups")
.HasColumnType("INTEGER");
b.Property<int>("S1RuleSet")
.HasColumnType("INTEGER");
b.Property<int?>("S2RuleSet")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.ToTable("Games");
});
modelBuilder.Entity("TournamentOrganizer.Models.Match", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<int>("TournamentId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("TournamentId");
b.ToTable("Matches");
});
modelBuilder.Entity("TournamentOrganizer.Models.Player", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<string>("Contact")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("TEXT");
b.Property<int>("TeamId")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("TeamId");
b.ToTable("Players");
});
modelBuilder.Entity("TournamentOrganizer.Models.PlayerParticipant", b =>
{
b.Property<int>("RoundId")
.HasColumnType("INTEGER");
b.Property<int>("PlayerId")
.HasColumnType("INTEGER");
b.HasKey("RoundId", "PlayerId");
b.HasIndex("PlayerId");
b.ToTable("PlayerParticipants");
});
modelBuilder.Entity("TournamentOrganizer.Models.Round", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<int>("MatchId")
.HasColumnType("INTEGER");
b.Property<int>("State")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("MatchId");
b.ToTable("Rounds");
});
modelBuilder.Entity("TournamentOrganizer.Models.Team", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<int?>("LeaderId")
.HasColumnType("INTEGER");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("LeaderId");
b.ToTable("Teams");
});
modelBuilder.Entity("TournamentOrganizer.Models.TeamParticipant", b =>
{
b.Property<int>("MatchId")
.HasColumnType("INTEGER");
b.Property<int>("TeamId")
.HasColumnType("INTEGER");
b.Property<int>("Score")
.HasColumnType("INTEGER");
b.Property<int>("Seed")
.HasColumnType("INTEGER");
b.HasKey("MatchId", "TeamId");
b.HasIndex("TeamId");
b.ToTable("TeamParticipants");
});
modelBuilder.Entity("TournamentOrganizer.Models.Tournament", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTime>("End")
.HasColumnType("TEXT");
b.Property<int>("EventId")
.HasColumnType("INTEGER");
b.Property<int>("GameId")
.HasColumnType("INTEGER");
b.Property<int?>("S1GroupAdvances")
.HasColumnType("INTEGER");
b.Property<int?>("S1Groups")
.HasColumnType("INTEGER");
b.Property<int>("S1RuleSet")
.HasColumnType("INTEGER");
b.Property<int?>("S2RuleSet")
.HasColumnType("INTEGER");
b.Property<DateTime>("Start")
.HasColumnType("TEXT");
b.HasKey("Id");
b.HasIndex("EventId");
b.HasIndex("GameId");
b.ToTable("Tournaments");
});
modelBuilder.Entity("TournamentOrganizer.Models.TournamentTeam", b =>
{
b.Property<int>("TournamentId")
.HasColumnType("INTEGER");
b.Property<int>("TeamId")
.HasColumnType("INTEGER");
b.Property<int>("Seed")
.HasColumnType("INTEGER");
b.HasKey("TournamentId", "TeamId");
b.HasIndex("TeamId");
b.ToTable("TournamentTeams");
});
modelBuilder.Entity("TournamentOrganizer.Models.Match", b =>
{
b.HasOne("TournamentOrganizer.Models.Tournament", "Tournament")
.WithMany()
.HasForeignKey("TournamentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Tournament");
});
modelBuilder.Entity("TournamentOrganizer.Models.Player", b =>
{
b.HasOne("TournamentOrganizer.Models.Team", "Team")
.WithMany("Players")
.HasForeignKey("TeamId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Team");
});
modelBuilder.Entity("TournamentOrganizer.Models.PlayerParticipant", b =>
{
b.HasOne("TournamentOrganizer.Models.Player", "Player")
.WithMany()
.HasForeignKey("PlayerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("TournamentOrganizer.Models.Round", "Round")
.WithMany()
.HasForeignKey("RoundId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Player");
b.Navigation("Round");
});
modelBuilder.Entity("TournamentOrganizer.Models.Round", b =>
{
b.HasOne("TournamentOrganizer.Models.Match", "Match")
.WithMany()
.HasForeignKey("MatchId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Match");
});
modelBuilder.Entity("TournamentOrganizer.Models.Team", b =>
{
b.HasOne("TournamentOrganizer.Models.Player", "Leader")
.WithMany()
.HasForeignKey("LeaderId")
.OnDelete(DeleteBehavior.SetNull);
b.Navigation("Leader");
});
modelBuilder.Entity("TournamentOrganizer.Models.TeamParticipant", b =>
{
b.HasOne("TournamentOrganizer.Models.Match", "Round")
.WithMany()
.HasForeignKey("MatchId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("TournamentOrganizer.Models.Team", "Team")
.WithMany("Matches")
.HasForeignKey("TeamId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Round");
b.Navigation("Team");
});
modelBuilder.Entity("TournamentOrganizer.Models.Tournament", b =>
{
b.HasOne("TournamentOrganizer.Models.Event", "Event")
.WithMany("Tournaments")
.HasForeignKey("EventId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("TournamentOrganizer.Models.Game", "Game")
.WithMany("Tournaments")
.HasForeignKey("GameId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Event");
b.Navigation("Game");
});
modelBuilder.Entity("TournamentOrganizer.Models.TournamentTeam", b =>
{
b.HasOne("TournamentOrganizer.Models.Team", "Team")
.WithMany("TournamentTeams")
.HasForeignKey("TeamId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("TournamentOrganizer.Models.Tournament", "Tournament")
.WithMany("TournamentTeams")
.HasForeignKey("TournamentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Team");
b.Navigation("Tournament");
});
modelBuilder.Entity("TournamentOrganizer.Models.Event", b =>
{
b.Navigation("Tournaments");
});
modelBuilder.Entity("TournamentOrganizer.Models.Game", b =>
{
b.Navigation("Tournaments");
});
modelBuilder.Entity("TournamentOrganizer.Models.Team", b =>
{
b.Navigation("Matches");
b.Navigation("Players");
b.Navigation("TournamentTeams");
});
modelBuilder.Entity("TournamentOrganizer.Models.Tournament", b =>
{
b.Navigation("TournamentTeams");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,51 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace TournamentOrganizer.Migrations
{
/// <inheritdoc />
public partial class AddTournamentTeam : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "TournamentTeams",
columns: table => new
{
TournamentId = table.Column<int>(type: "INTEGER", nullable: false),
TeamId = table.Column<int>(type: "INTEGER", nullable: false),
Seed = table.Column<int>(type: "INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TournamentTeams", x => new { x.TournamentId, x.TeamId });
table.ForeignKey(
name: "FK_TournamentTeams_Teams_TeamId",
column: x => x.TeamId,
principalTable: "Teams",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TournamentTeams_Tournaments_TournamentId",
column: x => x.TournamentId,
principalTable: "Tournaments",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_TournamentTeams_TeamId",
table: "TournamentTeams",
column: "TeamId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "TournamentTeams");
}
}
}
@@ -223,6 +223,24 @@ namespace TournamentOrganizer.Migrations
b.ToTable("Tournaments");
});
modelBuilder.Entity("TournamentOrganizer.Models.TournamentTeam", b =>
{
b.Property<int>("TournamentId")
.HasColumnType("INTEGER");
b.Property<int>("TeamId")
.HasColumnType("INTEGER");
b.Property<int>("Seed")
.HasColumnType("INTEGER");
b.HasKey("TournamentId", "TeamId");
b.HasIndex("TeamId");
b.ToTable("TournamentTeams");
});
modelBuilder.Entity("TournamentOrganizer.Models.Match", b =>
{
b.HasOne("TournamentOrganizer.Models.Tournament", "Tournament")
@@ -323,6 +341,25 @@ namespace TournamentOrganizer.Migrations
b.Navigation("Game");
});
modelBuilder.Entity("TournamentOrganizer.Models.TournamentTeam", b =>
{
b.HasOne("TournamentOrganizer.Models.Team", "Team")
.WithMany("TournamentTeams")
.HasForeignKey("TeamId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("TournamentOrganizer.Models.Tournament", "Tournament")
.WithMany("TournamentTeams")
.HasForeignKey("TournamentId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Team");
b.Navigation("Tournament");
});
modelBuilder.Entity("TournamentOrganizer.Models.Event", b =>
{
b.Navigation("Tournaments");
@@ -338,6 +375,13 @@ namespace TournamentOrganizer.Migrations
b.Navigation("Matches");
b.Navigation("Players");
b.Navigation("TournamentTeams");
});
modelBuilder.Entity("TournamentOrganizer.Models.Tournament", b =>
{
b.Navigation("TournamentTeams");
});
#pragma warning restore 612, 618
}