diff --git a/code/server/DataBase/Entity/Chat.cs b/code/server/DataBase/Entity/Chat.cs
index 23a0921..3801003 100644
--- a/code/server/DataBase/Entity/Chat.cs
+++ b/code/server/DataBase/Entity/Chat.cs
@@ -6,13 +6,13 @@ namespace DataBase.Entity
public class Chat
{
public int chatId { get; set; }
- public int sender { get; set; }
- public int recipient { get; set; }
+ public int player1 { get; set; }
+ public int player2 { get; set; }
- [ForeignKey("sender")]
- public Player PlayerSender { get; set; }
+ [ForeignKey("player1")]
+ public Player PlayerId1 { get; set; }
- [ForeignKey("recipient")]
- public Player PlayerRecipient { get; set; }
+ [ForeignKey("player2")]
+ public Player PlayerId2 { get; set; }
}
}
diff --git a/code/server/DataBase/Entity/Message.cs b/code/server/DataBase/Entity/Message.cs
index f3e1e09..8940ded 100644
--- a/code/server/DataBase/Entity/Message.cs
+++ b/code/server/DataBase/Entity/Message.cs
@@ -8,7 +8,7 @@ namespace DataBase.Entity
{
public int messageId { get; set; }
public string message { get; set; }
- public TimeSpan timestamp { get; set; }
+ public DateTime timestamp { get; set; }
public int player { get; set; }
public int chat { get; set; }
diff --git a/code/server/DataBase/Migrations/20230216090507_initMigration.Designer.cs b/code/server/DataBase/Migrations/20230216090507_initMigration.Designer.cs
deleted file mode 100644
index 075662f..0000000
--- a/code/server/DataBase/Migrations/20230216090507_initMigration.Designer.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-using DataBase;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace DataBase.Migrations
-{
- [DbContext(typeof(PongDbContext))]
- [Migration("20230216090507_initMigration")]
- partial class initMigration
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder.HasAnnotation("ProductVersion", "7.0.3");
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/code/server/DataBase/Migrations/20230216090507_initMigration.cs b/code/server/DataBase/Migrations/20230216090507_initMigration.cs
deleted file mode 100644
index 16aadcc..0000000
--- a/code/server/DataBase/Migrations/20230216090507_initMigration.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace DataBase.Migrations
-{
- ///
- public partial class initMigration : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
-
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
-
- }
- }
-}
diff --git a/code/server/DataBase/Migrations/20230216153344_initMigration.Designer.cs b/code/server/DataBase/Migrations/20230216161314_initMigration.Designer.cs
similarity index 64%
rename from code/server/DataBase/Migrations/20230216153344_initMigration.Designer.cs
rename to code/server/DataBase/Migrations/20230216161314_initMigration.Designer.cs
index 0cdd6a2..bf3366b 100644
--- a/code/server/DataBase/Migrations/20230216153344_initMigration.Designer.cs
+++ b/code/server/DataBase/Migrations/20230216161314_initMigration.Designer.cs
@@ -10,8 +10,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace DataBase.Migrations
{
- [DbContext(typeof(PongDbContext))]
- [Migration("20230216153344_initMigration")]
+ [DbContext(typeof(PongDbContextWithStub))]
+ [Migration("20230216161314_initMigration")]
partial class initMigration
{
///
@@ -26,19 +26,27 @@ namespace DataBase.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
- b.Property("recipient")
+ b.Property("player1")
.HasColumnType("INTEGER");
- b.Property("sender")
+ b.Property("player2")
.HasColumnType("INTEGER");
b.HasKey("chatId");
- b.HasIndex("recipient");
+ b.HasIndex("player1");
- b.HasIndex("sender");
+ b.HasIndex("player2");
- b.ToTable("Chats");
+ b.ToTable("Chat");
+
+ b.HasData(
+ new
+ {
+ chatId = 1,
+ player1 = 1,
+ player2 = 2
+ });
});
modelBuilder.Entity("DataBase.Entity.Game", b =>
@@ -65,7 +73,17 @@ namespace DataBase.Migrations
b.HasIndex("winner");
- b.ToTable("Games");
+ b.ToTable("Game");
+
+ b.HasData(
+ new
+ {
+ gameId = 1,
+ durationGame = 65,
+ loser = 2,
+ nbMaxEchanges = 5,
+ winner = 1
+ });
});
modelBuilder.Entity("DataBase.Entity.Message", b =>
@@ -84,7 +102,7 @@ namespace DataBase.Migrations
b.Property("player")
.HasColumnType("INTEGER");
- b.Property("timestamp")
+ b.Property("timestamp")
.HasColumnType("TEXT");
b.HasKey("messageId");
@@ -93,7 +111,25 @@ namespace DataBase.Migrations
b.HasIndex("player");
- b.ToTable("Messages");
+ b.ToTable("Message");
+
+ b.HasData(
+ new
+ {
+ messageId = 1,
+ chat = 1,
+ message = "Salut mon gars !",
+ player = 1,
+ timestamp = new DateTime(2023, 2, 16, 17, 5, 12, 0, DateTimeKind.Unspecified)
+ },
+ new
+ {
+ messageId = 2,
+ chat = 1,
+ message = "Comment tu vas ?",
+ player = 2,
+ timestamp = new DateTime(2023, 2, 16, 17, 12, 35, 0, DateTimeKind.Unspecified)
+ });
});
modelBuilder.Entity("DataBase.Entity.Player", b =>
@@ -114,26 +150,42 @@ namespace DataBase.Migrations
b.HasKey("playerId");
- b.ToTable("Players");
+ b.ToTable("Player");
+
+ b.HasData(
+ new
+ {
+ playerId = 1,
+ name = "Rami",
+ nbBallTouchTotal = 20,
+ timePlayed = 120
+ },
+ new
+ {
+ playerId = 2,
+ name = "Hugo",
+ nbBallTouchTotal = 90,
+ timePlayed = 250
+ });
});
modelBuilder.Entity("DataBase.Entity.Chat", b =>
{
- b.HasOne("DataBase.Entity.Player", "PlayerRecipient")
+ b.HasOne("DataBase.Entity.Player", "PlayerId1")
.WithMany()
- .HasForeignKey("recipient")
+ .HasForeignKey("player1")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
- b.HasOne("DataBase.Entity.Player", "PlayerSender")
+ b.HasOne("DataBase.Entity.Player", "PlayerId2")
.WithMany()
- .HasForeignKey("sender")
+ .HasForeignKey("player2")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
- b.Navigation("PlayerRecipient");
+ b.Navigation("PlayerId1");
- b.Navigation("PlayerSender");
+ b.Navigation("PlayerId2");
});
modelBuilder.Entity("DataBase.Entity.Game", b =>
diff --git a/code/server/DataBase/Migrations/20230216153344_initMigration.cs b/code/server/DataBase/Migrations/20230216161314_initMigration.cs
similarity index 56%
rename from code/server/DataBase/Migrations/20230216153344_initMigration.cs
rename to code/server/DataBase/Migrations/20230216161314_initMigration.cs
index 4e28989..cb3f6a6 100644
--- a/code/server/DataBase/Migrations/20230216153344_initMigration.cs
+++ b/code/server/DataBase/Migrations/20230216161314_initMigration.cs
@@ -3,6 +3,8 @@ using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
+#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
+
namespace DataBase.Migrations
{
///
@@ -12,7 +14,7 @@ namespace DataBase.Migrations
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
- name: "Players",
+ name: "Player",
columns: table => new
{
playerId = table.Column(type: "INTEGER", nullable: false)
@@ -23,37 +25,37 @@ namespace DataBase.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Players", x => x.playerId);
+ table.PrimaryKey("PK_Player", x => x.playerId);
});
migrationBuilder.CreateTable(
- name: "Chats",
+ name: "Chat",
columns: table => new
{
chatId = table.Column(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
- sender = table.Column(type: "INTEGER", nullable: false),
- recipient = table.Column(type: "INTEGER", nullable: false)
+ player1 = table.Column(type: "INTEGER", nullable: false),
+ player2 = table.Column(type: "INTEGER", nullable: false)
},
constraints: table =>
{
- table.PrimaryKey("PK_Chats", x => x.chatId);
+ table.PrimaryKey("PK_Chat", x => x.chatId);
table.ForeignKey(
- name: "FK_Chats_Players_recipient",
- column: x => x.recipient,
- principalTable: "Players",
+ name: "FK_Chat_Player_player1",
+ column: x => x.player1,
+ principalTable: "Player",
principalColumn: "playerId",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
- name: "FK_Chats_Players_sender",
- column: x => x.sender,
- principalTable: "Players",
+ name: "FK_Chat_Player_player2",
+ column: x => x.player2,
+ principalTable: "Player",
principalColumn: "playerId",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
- name: "Games",
+ name: "Game",
columns: table => new
{
gameId = table.Column(type: "INTEGER", nullable: false)
@@ -65,77 +67,105 @@ namespace DataBase.Migrations
},
constraints: table =>
{
- table.PrimaryKey("PK_Games", x => x.gameId);
+ table.PrimaryKey("PK_Game", x => x.gameId);
table.ForeignKey(
- name: "FK_Games_Players_loser",
+ name: "FK_Game_Player_loser",
column: x => x.loser,
- principalTable: "Players",
+ principalTable: "Player",
principalColumn: "playerId",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
- name: "FK_Games_Players_winner",
+ name: "FK_Game_Player_winner",
column: x => x.winner,
- principalTable: "Players",
+ principalTable: "Player",
principalColumn: "playerId",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
- name: "Messages",
+ name: "Message",
columns: table => new
{
messageId = table.Column(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
message = table.Column(type: "TEXT", nullable: false),
- timestamp = table.Column(type: "TEXT", nullable: false),
+ timestamp = table.Column(type: "TEXT", nullable: false),
player = table.Column(type: "INTEGER", nullable: false),
chat = table.Column(type: "INTEGER", nullable: false)
},
constraints: table =>
{
- table.PrimaryKey("PK_Messages", x => x.messageId);
+ table.PrimaryKey("PK_Message", x => x.messageId);
table.ForeignKey(
- name: "FK_Messages_Chats_chat",
+ name: "FK_Message_Chat_chat",
column: x => x.chat,
- principalTable: "Chats",
+ principalTable: "Chat",
principalColumn: "chatId",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
- name: "FK_Messages_Players_player",
+ name: "FK_Message_Player_player",
column: x => x.player,
- principalTable: "Players",
+ principalTable: "Player",
principalColumn: "playerId",
onDelete: ReferentialAction.Cascade);
});
+ migrationBuilder.InsertData(
+ table: "Player",
+ columns: new[] { "playerId", "name", "nbBallTouchTotal", "timePlayed" },
+ values: new object[,]
+ {
+ { 1, "Rami", 20, 120 },
+ { 2, "Hugo", 90, 250 }
+ });
+
+ migrationBuilder.InsertData(
+ table: "Chat",
+ columns: new[] { "chatId", "player1", "player2" },
+ values: new object[] { 1, 1, 2 });
+
+ migrationBuilder.InsertData(
+ table: "Game",
+ columns: new[] { "gameId", "durationGame", "loser", "nbMaxEchanges", "winner" },
+ values: new object[] { 1, 65, 2, 5, 1 });
+
+ migrationBuilder.InsertData(
+ table: "Message",
+ columns: new[] { "messageId", "chat", "message", "player", "timestamp" },
+ values: new object[,]
+ {
+ { 1, 1, "Salut mon gars !", 1, new DateTime(2023, 2, 16, 17, 5, 12, 0, DateTimeKind.Unspecified) },
+ { 2, 1, "Comment tu vas ?", 2, new DateTime(2023, 2, 16, 17, 12, 35, 0, DateTimeKind.Unspecified) }
+ });
+
migrationBuilder.CreateIndex(
- name: "IX_Chats_recipient",
- table: "Chats",
- column: "recipient");
+ name: "IX_Chat_player1",
+ table: "Chat",
+ column: "player1");
migrationBuilder.CreateIndex(
- name: "IX_Chats_sender",
- table: "Chats",
- column: "sender");
+ name: "IX_Chat_player2",
+ table: "Chat",
+ column: "player2");
migrationBuilder.CreateIndex(
- name: "IX_Games_loser",
- table: "Games",
+ name: "IX_Game_loser",
+ table: "Game",
column: "loser");
migrationBuilder.CreateIndex(
- name: "IX_Games_winner",
- table: "Games",
+ name: "IX_Game_winner",
+ table: "Game",
column: "winner");
migrationBuilder.CreateIndex(
- name: "IX_Messages_chat",
- table: "Messages",
+ name: "IX_Message_chat",
+ table: "Message",
column: "chat");
migrationBuilder.CreateIndex(
- name: "IX_Messages_player",
- table: "Messages",
+ name: "IX_Message_player",
+ table: "Message",
column: "player");
}
@@ -143,16 +173,16 @@ namespace DataBase.Migrations
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
- name: "Games");
+ name: "Game");
migrationBuilder.DropTable(
- name: "Messages");
+ name: "Message");
migrationBuilder.DropTable(
- name: "Chats");
+ name: "Chat");
migrationBuilder.DropTable(
- name: "Players");
+ name: "Player");
}
}
}
diff --git a/code/server/DataBase/Migrations/PongDbContextModelSnapshot.cs b/code/server/DataBase/Migrations/PongDbContextModelSnapshot.cs
deleted file mode 100644
index d89b55e..0000000
--- a/code/server/DataBase/Migrations/PongDbContextModelSnapshot.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-using DataBase;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-
-#nullable disable
-
-namespace DataBase.Migrations
-{
- [DbContext(typeof(PongDbContext))]
- partial class PongDbContextModelSnapshot : ModelSnapshot
- {
- protected override void BuildModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder.HasAnnotation("ProductVersion", "7.0.3");
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/code/server/DataBase/Migrations/PongDbContextWithStubModelSnapshot.cs b/code/server/DataBase/Migrations/PongDbContextWithStubModelSnapshot.cs
new file mode 100644
index 0000000..c39de80
--- /dev/null
+++ b/code/server/DataBase/Migrations/PongDbContextWithStubModelSnapshot.cs
@@ -0,0 +1,228 @@
+//
+using System;
+using DataBase;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace DataBase.Migrations
+{
+ [DbContext(typeof(PongDbContextWithStub))]
+ partial class PongDbContextWithStubModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "7.0.3");
+
+ modelBuilder.Entity("DataBase.Entity.Chat", b =>
+ {
+ b.Property("chatId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("player1")
+ .HasColumnType("INTEGER");
+
+ b.Property("player2")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("chatId");
+
+ b.HasIndex("player1");
+
+ b.HasIndex("player2");
+
+ b.ToTable("Chat");
+
+ b.HasData(
+ new
+ {
+ chatId = 1,
+ player1 = 1,
+ player2 = 2
+ });
+ });
+
+ modelBuilder.Entity("DataBase.Entity.Game", b =>
+ {
+ b.Property("gameId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("durationGame")
+ .HasColumnType("INTEGER");
+
+ b.Property("loser")
+ .HasColumnType("INTEGER");
+
+ b.Property("nbMaxEchanges")
+ .HasColumnType("INTEGER");
+
+ b.Property("winner")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("gameId");
+
+ b.HasIndex("loser");
+
+ b.HasIndex("winner");
+
+ b.ToTable("Game");
+
+ b.HasData(
+ new
+ {
+ gameId = 1,
+ durationGame = 65,
+ loser = 2,
+ nbMaxEchanges = 5,
+ winner = 1
+ });
+ });
+
+ modelBuilder.Entity("DataBase.Entity.Message", b =>
+ {
+ b.Property("messageId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("chat")
+ .HasColumnType("INTEGER");
+
+ b.Property("message")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("player")
+ .HasColumnType("INTEGER");
+
+ b.Property("timestamp")
+ .HasColumnType("TEXT");
+
+ b.HasKey("messageId");
+
+ b.HasIndex("chat");
+
+ b.HasIndex("player");
+
+ b.ToTable("Message");
+
+ b.HasData(
+ new
+ {
+ messageId = 1,
+ chat = 1,
+ message = "Salut mon gars !",
+ player = 1,
+ timestamp = new DateTime(2023, 2, 16, 17, 5, 12, 0, DateTimeKind.Unspecified)
+ },
+ new
+ {
+ messageId = 2,
+ chat = 1,
+ message = "Comment tu vas ?",
+ player = 2,
+ timestamp = new DateTime(2023, 2, 16, 17, 12, 35, 0, DateTimeKind.Unspecified)
+ });
+ });
+
+ modelBuilder.Entity("DataBase.Entity.Player", b =>
+ {
+ b.Property("playerId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("name")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("nbBallTouchTotal")
+ .HasColumnType("INTEGER");
+
+ b.Property("timePlayed")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("playerId");
+
+ b.ToTable("Player");
+
+ b.HasData(
+ new
+ {
+ playerId = 1,
+ name = "Rami",
+ nbBallTouchTotal = 20,
+ timePlayed = 120
+ },
+ new
+ {
+ playerId = 2,
+ name = "Hugo",
+ nbBallTouchTotal = 90,
+ timePlayed = 250
+ });
+ });
+
+ modelBuilder.Entity("DataBase.Entity.Chat", b =>
+ {
+ b.HasOne("DataBase.Entity.Player", "PlayerId1")
+ .WithMany()
+ .HasForeignKey("player1")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("DataBase.Entity.Player", "PlayerId2")
+ .WithMany()
+ .HasForeignKey("player2")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("PlayerId1");
+
+ b.Navigation("PlayerId2");
+ });
+
+ modelBuilder.Entity("DataBase.Entity.Game", b =>
+ {
+ b.HasOne("DataBase.Entity.Player", "PlayerLoser")
+ .WithMany()
+ .HasForeignKey("loser")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("DataBase.Entity.Player", "PlayerWinner")
+ .WithMany()
+ .HasForeignKey("winner")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("PlayerLoser");
+
+ b.Navigation("PlayerWinner");
+ });
+
+ modelBuilder.Entity("DataBase.Entity.Message", b =>
+ {
+ b.HasOne("DataBase.Entity.Chat", "ChatId")
+ .WithMany()
+ .HasForeignKey("chat")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("DataBase.Entity.Player", "PlayerId")
+ .WithMany()
+ .HasForeignKey("player")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("ChatId");
+
+ b.Navigation("PlayerId");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/code/server/DataBase/PongDB.db b/code/server/DataBase/PongDB.db
index a920ea8..2ebe421 100644
Binary files a/code/server/DataBase/PongDB.db and b/code/server/DataBase/PongDB.db differ
diff --git a/code/server/DataBase/PongDbContextWithStub.cs b/code/server/DataBase/PongDbContextWithStub.cs
index f902687..0d868fa 100644
--- a/code/server/DataBase/PongDbContextWithStub.cs
+++ b/code/server/DataBase/PongDbContextWithStub.cs
@@ -1,4 +1,7 @@
-using System;
+using DataBase.Entity;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.VisualBasic;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -8,6 +11,23 @@ namespace DataBase
{
public class PongDbContextWithStub : PongDbContext
{
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ base.OnModelCreating(modelBuilder);
+ Player player1 = new() { playerId = 1, name = "Rami", timePlayed = 120, nbBallTouchTotal = 20 };
+ Player player2 = new() { playerId = 2, name = "Hugo", timePlayed = 250, nbBallTouchTotal = 90 };
+ modelBuilder.Entity().HasData(player1, player2);
+
+ Game game = new() { gameId = 1, durationGame = 65, nbMaxEchanges = 5, winner = 1, loser = 2 };
+ modelBuilder.Entity().HasData(game);
+
+ Chat chat = new() { chatId = 1, player1 = 1, player2 = 2 };
+ modelBuilder.Entity().HasData(chat);
+
+ Message message1 = new() { messageId = 1, message = "Salut mon gars !", player = 1, timestamp = new DateTime(2023, 02, 16, 17, 05, 12), chat = 1 };
+ Message message2 = new() { messageId = 2, message = "Comment tu vas ?", player = 2, timestamp = new DateTime(2023, 02, 16, 17, 12, 35), chat = 1 };
+ modelBuilder.Entity().HasData(message1, message2);
+ }
}
}