Slip- und Beschuldigungslogik überarbeitet
All checks were successful
Build / build (push) Successful in 2m19s
All checks were successful
Build / build (push) Successful in 2m19s
Slips werden jetzt 30 Sekunden vorgehalten und anschließend automatisch abgeschlossen; direkte Spieler-Beschuldigungen, Win-Status, SignalR-Events, MAUI-UI, EF-Mapping/Migrationen sowie Tests wurden an die neue Spiellogik angepasst.
This commit is contained in:
446
SlipItIn.Server/Migrations/20261004162039_UpdateGameRules.Designer.cs
generated
Normal file
446
SlipItIn.Server/Migrations/20261004162039_UpdateGameRules.Designer.cs
generated
Normal file
@@ -0,0 +1,446 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
||||
using SlipItIn.Server.Data;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace SlipItIn.Server.Migrations
|
||||
{
|
||||
[DbContext(typeof(SlipItInDbContext))]
|
||||
[Migration("20261004162039_UpdateGameRules")]
|
||||
partial class UpdateGameRules
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "10.0.12")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.Game", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<DateTime?>("EndedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("HostId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<string>("LobbyCode")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("MaxPlayers")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("RoundDurationSeconds")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime?>("StartedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("Status")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int?>("WinnerPlayerId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("HostId");
|
||||
|
||||
b.HasIndex("LobbyCode")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("WinnerPlayerId");
|
||||
|
||||
b.ToTable("Games");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.GameRound", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<DateTime?>("EndedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("GameId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("RoundNumber")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("StartedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("Status")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("GameId");
|
||||
|
||||
b.ToTable("GameRounds");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.Phrase", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("CreatorId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<string>("Text")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("CreatorId");
|
||||
|
||||
b.ToTable("Phrases");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.Player", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("ConnectionId")
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<int>("FailedSlips")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("GameId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<bool>("IsReady")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<DateTime>("JoinedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("Score")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("SuccessfulSlips")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("UserId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.HasIndex("GameId", "UserId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("Players");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.PlayerCard", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<DateTime>("AssignedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("GameRoundId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<bool>("IsUsed")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<int>("PhraseId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("PlayerId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime?>("SlippedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("GameRoundId");
|
||||
|
||||
b.HasIndex("PhraseId");
|
||||
|
||||
b.HasIndex("PlayerId");
|
||||
|
||||
b.ToTable("PlayerCards");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.SlipChallenge", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<int>("ChallengingPlayerId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("GameRoundId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime?>("ResolvedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<int>("Status")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int?>("TargetCardId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("TargetPlayerId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("ChallengingPlayerId");
|
||||
|
||||
b.HasIndex("GameRoundId");
|
||||
|
||||
b.HasIndex("TargetCardId");
|
||||
|
||||
b.HasIndex("TargetPlayerId");
|
||||
|
||||
b.ToTable("SlipChallenges");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.User", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("integer");
|
||||
|
||||
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<DateTime>("CreatedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("Email")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("boolean");
|
||||
|
||||
b.Property<string>("PasswordHash")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.Property<DateTime?>("UpdatedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.Property<string>("Username")
|
||||
.IsRequired()
|
||||
.HasColumnType("text");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("Email")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("Username")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("Users");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.Game", b =>
|
||||
{
|
||||
b.HasOne("SlipItIn.Shared.Models.User", "Host")
|
||||
.WithMany()
|
||||
.HasForeignKey("HostId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("SlipItIn.Shared.Models.Player", "WinnerPlayer")
|
||||
.WithMany()
|
||||
.HasForeignKey("WinnerPlayerId")
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
b.Navigation("Host");
|
||||
|
||||
b.Navigation("WinnerPlayer");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.GameRound", b =>
|
||||
{
|
||||
b.HasOne("SlipItIn.Shared.Models.Game", "Game")
|
||||
.WithMany("Rounds")
|
||||
.HasForeignKey("GameId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Game");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.Phrase", b =>
|
||||
{
|
||||
b.HasOne("SlipItIn.Shared.Models.User", "Creator")
|
||||
.WithMany()
|
||||
.HasForeignKey("CreatorId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Creator");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.Player", b =>
|
||||
{
|
||||
b.HasOne("SlipItIn.Shared.Models.Game", "Game")
|
||||
.WithMany("Players")
|
||||
.HasForeignKey("GameId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("SlipItIn.Shared.Models.User", "User")
|
||||
.WithMany("Players")
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Game");
|
||||
|
||||
b.Navigation("User");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.PlayerCard", b =>
|
||||
{
|
||||
b.HasOne("SlipItIn.Shared.Models.GameRound", "GameRound")
|
||||
.WithMany("ActiveCards")
|
||||
.HasForeignKey("GameRoundId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("SlipItIn.Shared.Models.Phrase", "Phrase")
|
||||
.WithMany("PlayerCards")
|
||||
.HasForeignKey("PhraseId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("SlipItIn.Shared.Models.Player", "Player")
|
||||
.WithMany("Cards")
|
||||
.HasForeignKey("PlayerId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("GameRound");
|
||||
|
||||
b.Navigation("Phrase");
|
||||
|
||||
b.Navigation("Player");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.SlipChallenge", b =>
|
||||
{
|
||||
b.HasOne("SlipItIn.Shared.Models.Player", "ChallengingPlayer")
|
||||
.WithMany()
|
||||
.HasForeignKey("ChallengingPlayerId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("SlipItIn.Shared.Models.GameRound", "GameRound")
|
||||
.WithMany("Challenges")
|
||||
.HasForeignKey("GameRoundId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("SlipItIn.Shared.Models.PlayerCard", "TargetCard")
|
||||
.WithMany()
|
||||
.HasForeignKey("TargetCardId")
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
b.HasOne("SlipItIn.Shared.Models.Player", "TargetPlayer")
|
||||
.WithMany()
|
||||
.HasForeignKey("TargetPlayerId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("ChallengingPlayer");
|
||||
|
||||
b.Navigation("GameRound");
|
||||
|
||||
b.Navigation("TargetCard");
|
||||
|
||||
b.Navigation("TargetPlayer");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.Game", b =>
|
||||
{
|
||||
b.Navigation("Players");
|
||||
|
||||
b.Navigation("Rounds");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.GameRound", b =>
|
||||
{
|
||||
b.Navigation("ActiveCards");
|
||||
|
||||
b.Navigation("Challenges");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.Phrase", b =>
|
||||
{
|
||||
b.Navigation("PlayerCards");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.Player", b =>
|
||||
{
|
||||
b.Navigation("Cards");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.User", b =>
|
||||
{
|
||||
b.Navigation("Players");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
78
SlipItIn.Server/Migrations/20261004162039_UpdateGameRules.cs
Normal file
78
SlipItIn.Server/Migrations/20261004162039_UpdateGameRules.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace SlipItIn.Server.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class UpdateGameRules : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "TargetCardId",
|
||||
table: "SlipChallenges",
|
||||
type: "integer",
|
||||
nullable: true,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "integer");
|
||||
|
||||
migrationBuilder.AddColumn<DateTime>(
|
||||
name: "SlippedAt",
|
||||
table: "PlayerCards",
|
||||
type: "timestamp with time zone",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "WinnerPlayerId",
|
||||
table: "Games",
|
||||
type: "integer",
|
||||
nullable: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Games_WinnerPlayerId",
|
||||
table: "Games",
|
||||
column: "WinnerPlayerId");
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_Games_Players_WinnerPlayerId",
|
||||
table: "Games",
|
||||
column: "WinnerPlayerId",
|
||||
principalTable: "Players",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_Games_Players_WinnerPlayerId",
|
||||
table: "Games");
|
||||
|
||||
migrationBuilder.DropIndex(
|
||||
name: "IX_Games_WinnerPlayerId",
|
||||
table: "Games");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "SlippedAt",
|
||||
table: "PlayerCards");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "WinnerPlayerId",
|
||||
table: "Games");
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "TargetCardId",
|
||||
table: "SlipChallenges",
|
||||
type: "integer",
|
||||
nullable: false,
|
||||
defaultValue: 0,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "integer",
|
||||
oldNullable: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ namespace SlipItIn.Server.Migrations
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "10.0.10")
|
||||
.HasAnnotation("ProductVersion", "10.0.12")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||
|
||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||
@@ -55,6 +55,9 @@ namespace SlipItIn.Server.Migrations
|
||||
b.Property<int>("Status")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int?>("WinnerPlayerId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("HostId");
|
||||
@@ -62,6 +65,8 @@ namespace SlipItIn.Server.Migrations
|
||||
b.HasIndex("LobbyCode")
|
||||
.IsUnique();
|
||||
|
||||
b.HasIndex("WinnerPlayerId");
|
||||
|
||||
b.ToTable("Games");
|
||||
});
|
||||
|
||||
@@ -188,6 +193,9 @@ namespace SlipItIn.Server.Migrations
|
||||
b.Property<int>("PlayerId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<DateTime?>("SlippedAt")
|
||||
.HasColumnType("timestamp with time zone");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("GameRoundId");
|
||||
@@ -222,7 +230,7 @@ namespace SlipItIn.Server.Migrations
|
||||
b.Property<int>("Status")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("TargetCardId")
|
||||
b.Property<int?>("TargetCardId")
|
||||
.HasColumnType("integer");
|
||||
|
||||
b.Property<int>("TargetPlayerId")
|
||||
@@ -289,7 +297,14 @@ namespace SlipItIn.Server.Migrations
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("SlipItIn.Shared.Models.Player", "WinnerPlayer")
|
||||
.WithMany()
|
||||
.HasForeignKey("WinnerPlayerId")
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
b.Navigation("Host");
|
||||
|
||||
b.Navigation("WinnerPlayer");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("SlipItIn.Shared.Models.GameRound", b =>
|
||||
@@ -377,8 +392,7 @@ namespace SlipItIn.Server.Migrations
|
||||
b.HasOne("SlipItIn.Shared.Models.PlayerCard", "TargetCard")
|
||||
.WithMany()
|
||||
.HasForeignKey("TargetCardId")
|
||||
.OnDelete(DeleteBehavior.Restrict)
|
||||
.IsRequired();
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
b.HasOne("SlipItIn.Shared.Models.Player", "TargetPlayer")
|
||||
.WithMany()
|
||||
|
||||
Reference in New Issue
Block a user