From 30c7fae3ff483141f78bb00dd22f7eac1f9939af Mon Sep 17 00:00:00 2001 From: loperret3 Date: Thu, 16 Feb 2023 16:37:33 +0100 Subject: [PATCH] :sparkles: creation des tables --- code/server/DataBase/Entity/Chat.cs | 11 ++ code/server/DataBase/Entity/Game.cs | 14 ++ code/server/DataBase/Entity/Message.cs | 14 ++ code/server/DataBase/Entity/Player.cs | 6 + .../20230216153344_initMigration.Designer.cs | 179 ++++++++++++++++++ .../20230216153344_initMigration.cs | 158 ++++++++++++++++ code/server/DataBase/PongDB.db | Bin 12288 -> 57344 bytes code/server/DataBase/PongDbContext.cs | 9 +- code/server/DataBase/PongDbContextWithStub.cs | 13 ++ 9 files changed, 402 insertions(+), 2 deletions(-) create mode 100644 code/server/DataBase/Migrations/20230216153344_initMigration.Designer.cs create mode 100644 code/server/DataBase/Migrations/20230216153344_initMigration.cs create mode 100644 code/server/DataBase/PongDbContextWithStub.cs diff --git a/code/server/DataBase/Entity/Chat.cs b/code/server/DataBase/Entity/Chat.cs index 3661652..23a0921 100644 --- a/code/server/DataBase/Entity/Chat.cs +++ b/code/server/DataBase/Entity/Chat.cs @@ -1,7 +1,18 @@  +using System.ComponentModel.DataAnnotations.Schema; + namespace DataBase.Entity { public class Chat { + public int chatId { get; set; } + public int sender { get; set; } + public int recipient { get; set; } + + [ForeignKey("sender")] + public Player PlayerSender { get; set; } + + [ForeignKey("recipient")] + public Player PlayerRecipient { get; set; } } } diff --git a/code/server/DataBase/Entity/Game.cs b/code/server/DataBase/Entity/Game.cs index 1dcca72..56ed7b0 100644 --- a/code/server/DataBase/Entity/Game.cs +++ b/code/server/DataBase/Entity/Game.cs @@ -1,7 +1,21 @@  +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + namespace DataBase.Entity { public class Game { + public int gameId { get; set; } + public int durationGame { get; set; } + public int nbMaxEchanges { get; set; } + public int winner { get; set; } + public int loser { get; set; } + + [ForeignKey("winner")] + public Player PlayerWinner { get; set; } + + [ForeignKey("loser")] + public Player PlayerLoser { get; set; } } } diff --git a/code/server/DataBase/Entity/Message.cs b/code/server/DataBase/Entity/Message.cs index 4ba6f65..f3e1e09 100644 --- a/code/server/DataBase/Entity/Message.cs +++ b/code/server/DataBase/Entity/Message.cs @@ -1,7 +1,21 @@  +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + namespace DataBase.Entity { public class Message { + public int messageId { get; set; } + public string message { get; set; } + public TimeSpan timestamp { get; set; } + public int player { get; set; } + public int chat { get; set; } + + [ForeignKey("player")] + public Player PlayerId { get; set; } + + [ForeignKey("chat")] + public Chat ChatId { get; set; } } } diff --git a/code/server/DataBase/Entity/Player.cs b/code/server/DataBase/Entity/Player.cs index 37ff6a9..8663ff6 100644 --- a/code/server/DataBase/Entity/Player.cs +++ b/code/server/DataBase/Entity/Player.cs @@ -1,7 +1,13 @@  +using System.ComponentModel.DataAnnotations; + namespace DataBase.Entity { public class Player { + public int playerId { get; set; } + public string name { get; set; } + public int nbBallTouchTotal { get; set; } + public int timePlayed { get; set; } } } diff --git a/code/server/DataBase/Migrations/20230216153344_initMigration.Designer.cs b/code/server/DataBase/Migrations/20230216153344_initMigration.Designer.cs new file mode 100644 index 0000000..0cdd6a2 --- /dev/null +++ b/code/server/DataBase/Migrations/20230216153344_initMigration.Designer.cs @@ -0,0 +1,179 @@ +// +using System; +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("20230216153344_initMigration")] + partial class initMigration + { + /// + protected override void BuildTargetModel(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("recipient") + .HasColumnType("INTEGER"); + + b.Property("sender") + .HasColumnType("INTEGER"); + + b.HasKey("chatId"); + + b.HasIndex("recipient"); + + b.HasIndex("sender"); + + b.ToTable("Chats"); + }); + + 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("Games"); + }); + + 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("Messages"); + }); + + 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("Players"); + }); + + modelBuilder.Entity("DataBase.Entity.Chat", b => + { + b.HasOne("DataBase.Entity.Player", "PlayerRecipient") + .WithMany() + .HasForeignKey("recipient") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("DataBase.Entity.Player", "PlayerSender") + .WithMany() + .HasForeignKey("sender") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PlayerRecipient"); + + b.Navigation("PlayerSender"); + }); + + 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/Migrations/20230216153344_initMigration.cs b/code/server/DataBase/Migrations/20230216153344_initMigration.cs new file mode 100644 index 0000000..4e28989 --- /dev/null +++ b/code/server/DataBase/Migrations/20230216153344_initMigration.cs @@ -0,0 +1,158 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace DataBase.Migrations +{ + /// + public partial class initMigration : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Players", + columns: table => new + { + playerId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + name = table.Column(type: "TEXT", nullable: false), + nbBallTouchTotal = table.Column(type: "INTEGER", nullable: false), + timePlayed = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Players", x => x.playerId); + }); + + migrationBuilder.CreateTable( + name: "Chats", + 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) + }, + constraints: table => + { + table.PrimaryKey("PK_Chats", x => x.chatId); + table.ForeignKey( + name: "FK_Chats_Players_recipient", + column: x => x.recipient, + principalTable: "Players", + principalColumn: "playerId", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Chats_Players_sender", + column: x => x.sender, + principalTable: "Players", + principalColumn: "playerId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Games", + columns: table => new + { + gameId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + durationGame = table.Column(type: "INTEGER", nullable: false), + nbMaxEchanges = table.Column(type: "INTEGER", nullable: false), + winner = table.Column(type: "INTEGER", nullable: false), + loser = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Games", x => x.gameId); + table.ForeignKey( + name: "FK_Games_Players_loser", + column: x => x.loser, + principalTable: "Players", + principalColumn: "playerId", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Games_Players_winner", + column: x => x.winner, + principalTable: "Players", + principalColumn: "playerId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Messages", + 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), + player = table.Column(type: "INTEGER", nullable: false), + chat = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Messages", x => x.messageId); + table.ForeignKey( + name: "FK_Messages_Chats_chat", + column: x => x.chat, + principalTable: "Chats", + principalColumn: "chatId", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Messages_Players_player", + column: x => x.player, + principalTable: "Players", + principalColumn: "playerId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_Chats_recipient", + table: "Chats", + column: "recipient"); + + migrationBuilder.CreateIndex( + name: "IX_Chats_sender", + table: "Chats", + column: "sender"); + + migrationBuilder.CreateIndex( + name: "IX_Games_loser", + table: "Games", + column: "loser"); + + migrationBuilder.CreateIndex( + name: "IX_Games_winner", + table: "Games", + column: "winner"); + + migrationBuilder.CreateIndex( + name: "IX_Messages_chat", + table: "Messages", + column: "chat"); + + migrationBuilder.CreateIndex( + name: "IX_Messages_player", + table: "Messages", + column: "player"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Games"); + + migrationBuilder.DropTable( + name: "Messages"); + + migrationBuilder.DropTable( + name: "Chats"); + + migrationBuilder.DropTable( + name: "Players"); + } + } +} diff --git a/code/server/DataBase/PongDB.db b/code/server/DataBase/PongDB.db index ebf1b1d3e8a50045b7e9944c665390ec5e7cfdbe..a920ea81817482dbf0c627ffb11bc25e2c22c377 100644 GIT binary patch literal 57344 zcmeI)O;6)S7{GBmK*Gxgdh=n0YFRxHEk(Sw9C~Rs7#b}kZ17f4sf|ox!bJ#A8uBqHRI!Oh+%ov)Z>mZa1Z@)zs|Lze;xI7iIC+rJu8ZW`A1v zZSIfEKbiZ?M*6SxkLgu$hz$V*5J2Fm0(Lf|Z7i#|s_UIQ?}{hYL#NfUFPv8Os&3yn z&FJM~pL}}VoaWaGJ^#ik7fYg> zL$hS9#-kd#WuAy&VZi99?}}c1`|@hc@o-uWolw-iCa2rr>4r!9PkOI+($$W8r|Dj~ zVixyH^88l}S(ei)=AKzGO9k^-H)Q1?jlnTtlM9y4u6baJ^;O6p7xKI21Kl0TwHd8Z zLyvbEExcH#VUym%9NlqtK6lqnXEaSy?~5|&a&^dWnRvRRWfNxQLM*+nts((rbMyEdB zXEdC6r_tr>DZK`H-=2|q|6yO|UCvVZEgjFhEEDr6%)77;Ch-vM-~tbuJ(&0K+BOs~ z%6RYcG_K0PB9$F?)795JuGc#dU#*W^IHS`R?>ib=yyNI%{=~E$O^bJy7wV}@TI;$l z?#smc%5~fEYRvgNquD!JyzFi-lhta$V-WOz-Bj&1@{kJD-M%&p@zc0%{ zSF7gUp?lG}1hu|!TYjT?GqNxh2N_wXw_3U}1EJXa*Wh{?6Q~a>8re~^ao(=^Upmc} zxLyu~6+T(@0tg_000IagfB*srAb|DWLGGBgAbKmY**5I_I{1Q0*~0R%z;?*Ewz2q1s}0tg_000IagfB*sr zOuhj3|C66%Mu-3c2q1s}0tg_000IagfB^UZ%mD-tKmY**5I_I{1Q0*~0R$#rAo&0P z{Qtkn&od)L009ILKmY**5I_I{1Q1BJ0QdjN&Of6^009ILKmY**5I_I{1Q1Au0QdjN z$TOov009ILKmY**5I_I{1Q1BJ0QdjN&Of6^009ILKmY**5I_I{1Q1Au0QdjN$TOov t009ILKmY**5I_I{1Q1BJ0QdjN&Of6^009ILKmY**5I_I{1Q1Auz<*=vEldCa delta 199 zcmZoTz}%29L7tbH0Rb2%>ez5F@m*rzyTreCv!Fl{-{wnvMvNRx{973KZ}D#d3a#L` zRAFLv6*n?4GBz+WG&8U?Ff}lb&&-!m1wd0!?E(OzJu=$> diff --git a/code/server/DataBase/PongDbContext.cs b/code/server/DataBase/PongDbContext.cs index 50fbf6a..233b597 100644 --- a/code/server/DataBase/PongDbContext.cs +++ b/code/server/DataBase/PongDbContext.cs @@ -1,13 +1,18 @@ -using Microsoft.EntityFrameworkCore; +using DataBase.Entity; +using Microsoft.EntityFrameworkCore; namespace DataBase { public class PongDbContext : DbContext { + DbSet Players { get; set; } + DbSet Games { get; set; } + DbSet Messages { get; set; } + DbSet Chats { get; set; } + public PongDbContext() { } public PongDbContext(DbContextOptions options) : base(options) { } - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { //base.OnConfiguring(optionsBuilder); diff --git a/code/server/DataBase/PongDbContextWithStub.cs b/code/server/DataBase/PongDbContextWithStub.cs new file mode 100644 index 0000000..f902687 --- /dev/null +++ b/code/server/DataBase/PongDbContextWithStub.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DataBase +{ + public class PongDbContextWithStub : PongDbContext + { + + } +}