From eefe9f0abd675f0b96aa7d51594c037395d54943 Mon Sep 17 00:00:00 2001 From: Pierre Ferreira Date: Wed, 1 Mar 2023 16:40:09 +0100 Subject: [PATCH] :card_file_box: Mise en BDD de l'attribut skill --- Sources/DTO/ChampionDTO.cs | 3 + Sources/EntityFramework/ChampionEntity.cs | 18 +++- .../20230301152530_SkillMigration.Designer.cs | 85 ++++++++++++++++++ .../20230301152530_SkillMigration.cs | 63 +++++++++++++ .../Migrations/LoLDbContextModelSnapshot.cs | 82 +++++++++++++++++ Sources/EntityFramework/Program.cs | 16 ++++ .../{Skill.cs => SkillEntity.cs} | 8 +- Sources/EntityFramework/champion.db | Bin 0 -> 32768 bytes 8 files changed, 271 insertions(+), 4 deletions(-) create mode 100644 Sources/EntityFramework/Migrations/20230301152530_SkillMigration.Designer.cs create mode 100644 Sources/EntityFramework/Migrations/20230301152530_SkillMigration.cs create mode 100644 Sources/EntityFramework/Migrations/LoLDbContextModelSnapshot.cs rename Sources/EntityFramework/{Skill.cs => SkillEntity.cs} (81%) create mode 100644 Sources/EntityFramework/champion.db diff --git a/Sources/DTO/ChampionDTO.cs b/Sources/DTO/ChampionDTO.cs index 1e359a8..b56e6a1 100644 --- a/Sources/DTO/ChampionDTO.cs +++ b/Sources/DTO/ChampionDTO.cs @@ -25,12 +25,15 @@ namespace DTO //public ChampionClass Class { get; set; } public string Icon { get; set; } +<<<<<<< Updated upstream /// /// pour plus tard ? /// //public ImmutableHashSet Skills { get; set; } //public ICollection Skills { get; set; } +======= +>>>>>>> Stashed changes public bool equals(ChampionDTO other) { diff --git a/Sources/EntityFramework/ChampionEntity.cs b/Sources/EntityFramework/ChampionEntity.cs index f55a7f0..d2a59a0 100644 --- a/Sources/EntityFramework/ChampionEntity.cs +++ b/Sources/EntityFramework/ChampionEntity.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; +using System.Collections.ObjectModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; @@ -31,12 +32,17 @@ namespace EntityFramework //public ImmutableHashSet Skills => skills.ToImmutableHashSet(); //private HashSet skills = new HashSet(); - private ICollection Skills { get; set; } +<<<<<<< Updated upstream + private ICollection Skills { get; set; } +======= + public ICollection Skills { get; set; } +>>>>>>> Stashed changes public ChampionEntity(string name,string bio,string icon) { this.Name = name; this.Bio = bio; this.Icon = icon; + Skills= new List(); } public override string ToString() @@ -46,10 +52,16 @@ namespace EntityFramework - public void AddSkill(Skill skill) + public void AddSkill(SkillEntity skill) +<<<<<<< Updated upstream => this.Skills.Add(skill); - public bool RemoveSkill(Skill skill) + public bool RemoveSkill(SkillEntity skill) +======= + => Skills.Add(skill); + + public void RemoveSkill(Skill skill) +>>>>>>> Stashed changes => Skills.Remove(skill); } } diff --git a/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.Designer.cs b/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.Designer.cs new file mode 100644 index 0000000..94bb55c --- /dev/null +++ b/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.Designer.cs @@ -0,0 +1,85 @@ +// +using System; +using EntityFramework; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace EntityFramework.Migrations +{ + [DbContext(typeof(LoLDbContext))] + [Migration("20230301152530_SkillMigration")] + partial class SkillMigration + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.2"); + + modelBuilder.Entity("EntityFramework.ChampionEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Bio") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("string") + .HasColumnName("Bio"); + + b.Property("Icon") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Champion", (string)null); + }); + + modelBuilder.Entity("EntityFramework.Skill", b => + { + b.Property("Name") + .HasColumnType("TEXT"); + + b.Property("ChampionEntityId") + .HasColumnType("INTEGER"); + + b.Property("Description") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("Name"); + + b.HasIndex("ChampionEntityId"); + + b.ToTable("Skill"); + }); + + modelBuilder.Entity("EntityFramework.Skill", b => + { + b.HasOne("EntityFramework.ChampionEntity", null) + .WithMany("Skills") + .HasForeignKey("ChampionEntityId"); + }); + + modelBuilder.Entity("EntityFramework.ChampionEntity", b => + { + b.Navigation("Skills"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.cs b/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.cs new file mode 100644 index 0000000..ce0154c --- /dev/null +++ b/Sources/EntityFramework/Migrations/20230301152530_SkillMigration.cs @@ -0,0 +1,63 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace EntityFramework.Migrations +{ + /// + public partial class SkillMigration : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Champion", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Name = table.Column(type: "TEXT", maxLength: 50, nullable: false), + Bio = table.Column(type: "string", maxLength: 500, nullable: false), + Icon = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Champion", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Skill", + columns: table => new + { + Name = table.Column(type: "TEXT", nullable: false), + Type = table.Column(type: "INTEGER", nullable: false), + Description = table.Column(type: "TEXT", nullable: false), + ChampionEntityId = table.Column(type: "INTEGER", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Skill", x => x.Name); + table.ForeignKey( + name: "FK_Skill_Champion_ChampionEntityId", + column: x => x.ChampionEntityId, + principalTable: "Champion", + principalColumn: "Id"); + }); + + migrationBuilder.CreateIndex( + name: "IX_Skill_ChampionEntityId", + table: "Skill", + column: "ChampionEntityId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Skill"); + + migrationBuilder.DropTable( + name: "Champion"); + } + } +} diff --git a/Sources/EntityFramework/Migrations/LoLDbContextModelSnapshot.cs b/Sources/EntityFramework/Migrations/LoLDbContextModelSnapshot.cs new file mode 100644 index 0000000..0abeee1 --- /dev/null +++ b/Sources/EntityFramework/Migrations/LoLDbContextModelSnapshot.cs @@ -0,0 +1,82 @@ +// +using System; +using EntityFramework; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace EntityFramework.Migrations +{ + [DbContext(typeof(LoLDbContext))] + partial class LoLDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.2"); + + modelBuilder.Entity("EntityFramework.ChampionEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Bio") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("string") + .HasColumnName("Bio"); + + b.Property("Icon") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Champion", (string)null); + }); + + modelBuilder.Entity("EntityFramework.Skill", b => + { + b.Property("Name") + .HasColumnType("TEXT"); + + b.Property("ChampionEntityId") + .HasColumnType("INTEGER"); + + b.Property("Description") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Type") + .HasColumnType("INTEGER"); + + b.HasKey("Name"); + + b.HasIndex("ChampionEntityId"); + + b.ToTable("Skill"); + }); + + modelBuilder.Entity("EntityFramework.Skill", b => + { + b.HasOne("EntityFramework.ChampionEntity", null) + .WithMany("Skills") + .HasForeignKey("ChampionEntityId"); + }); + + modelBuilder.Entity("EntityFramework.ChampionEntity", b => + { + b.Navigation("Skills"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sources/EntityFramework/Program.cs b/Sources/EntityFramework/Program.cs index d3d785d..65ef614 100644 --- a/Sources/EntityFramework/Program.cs +++ b/Sources/EntityFramework/Program.cs @@ -18,4 +18,20 @@ using( var context = new LoLDbContext()) { Console.WriteLine("Not Found"); } + + //Test BDD Skills + ChampionEntity champSkill = new ChampionEntity("nomSkill", "bioSkill", "iconSkill"); + + SkillEntity s1 = new SkillEntity("Skill1", "desc", SkillType.Unknown); + SkillEntity s2 = new SkillEntity("Skill2", "desc2", SkillType.Ultimate); + SkillEntity s3 = new SkillEntity("Skill3", "desc3", SkillType.Passive); + + champSkill.AddSkill(s1); + champSkill.AddSkill(s2); + champSkill.AddSkill(s3); + + context.Add(champSkill); + + context.SaveChanges(); + } diff --git a/Sources/EntityFramework/Skill.cs b/Sources/EntityFramework/SkillEntity.cs similarity index 81% rename from Sources/EntityFramework/Skill.cs rename to Sources/EntityFramework/SkillEntity.cs index bf9934e..d370410 100644 --- a/Sources/EntityFramework/Skill.cs +++ b/Sources/EntityFramework/SkillEntity.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; namespace EntityFramework { - public class Skill + public class SkillEntity { public SkillType Type { get; private set; } @@ -41,5 +41,11 @@ namespace EntityFramework } } private string description = ""; + + public SkillEntity(string Name, string Description, SkillType Type) { + this.name = Name; + this.Description = Description; + this.Type = Type; + } } } diff --git a/Sources/EntityFramework/champion.db b/Sources/EntityFramework/champion.db new file mode 100644 index 0000000000000000000000000000000000000000..aa8a7ea4fee6e5913bc142265f1e4d4fa520e166 GIT binary patch literal 32768 zcmeI)Z)?*)90%~b%i6AUHB%^|LiGp;mdWTJq>n`FOlxpUXB%aEAf;QQ2Df%L8Mud2 zUy4tC1wQwgPkg3N^tq@YD1uMCT$6U|y5YkOzDJW>E|<&Q=XVT}E^Xdha(#zC>h-tU zJ};3u!Wg;9IU$6JWm+szni82{i4u)6$7~r{XkAFDe@NoYTXOb;`X==|^?Ej++7-J< z5P$##AOHafKmY;|fWZF?c!`8|L!*0Hx7%@^o2#wnQ+IQ-wfLmHwe9x0M%Q=!U9%%g zrxzPW#WuKU-8NRaeq?2x*DbEgQ*?esA8$*~y{N_#nx@fLPyP1#rXy?0RXn_cUAeVn zjG9QzaFKMYz2)fKHdbwJ)x~muX^Ah^t)|_mn3m1;mAix9>wKkQE>{|B{I0QfH9Xng z-4-W{dPdD?49|~_-gdl=zPs&aw4RGnAr4a2Ni zK|d!#@rF?~8iuuKH2KgmFf}`RE;WbDr%u-3@1KH+CQjV+XHvMHH@zGjn@uNC2dGGXjdXQwLhv-}^8k zVhkh0BjOn~b|9p@a^J3-mS}(3u-&0vV)_ZSVsgfBp9|CSR6aCk7#JZL|^ImIy)Qw z1E=pDp3P!tCW~ti%SX+biPvcrCKfB=&y2jcPl*gwKN9glf&c^{009U<00Izz00bZa z0SG|gv5P$##AOHafKmY;|fB*y_009V` zSb_6OEJHOazvM5mj`&5)5KCfPs!u&06m literal 0 HcmV?d00001