From 1c5fb72f00c8234f97c7eb7861aa0767bdec1e68 Mon Sep 17 00:00:00 2001 From: Maxence Lanone Date: Wed, 15 Mar 2023 00:17:22 +0100 Subject: [PATCH] add SkillEntity + LargeImageEntity + RuneEntity + relation oneToOne entre image et champion --- Sources/EntityFrameWorkLib/ChampionEntity.cs | 10 +- .../EntityFrameWorkLib.csproj | 8 +- .../EntityFrameWorkLib/LargeImageEntity.cs | 21 ++++ Sources/EntityFrameWorkLib/LolContext.cs | 7 ++ .../20230308120111_MyMigration.Designer.cs | 50 -------- .../Migrations/20230308120111_MyMigration.cs | 37 ------ .../20230314230906_MyMigration.Designer.cs | 108 ++++++++++++++++++ .../Migrations/20230314230906_MyMigration.cs | 82 +++++++++++++ .../Migrations/LolContextModelSnapshot.cs | 66 ++++++++++- Sources/EntityFrameWorkLib/RuneEntity.cs | 20 ++++ Sources/EntityFrameWorkLib/SkillEntity.cs | 20 ++++ Sources/EntityFrameWorkLib/Skin.cs | 12 -- Sources/EntityFrameWorkLib/SkinEntity.cs | 22 ++++ ...hampionClassEntity.cs => ChampionClass.cs} | 2 +- .../{RuneFamilyEntity.cs => RuneFamily.cs} | 4 +- .../{SkillTypeEntity.cs => SkillType.cs} | 4 +- Sources/LolApp/LolApp.csproj | 4 +- Sources/StubLib/StubData.Champions.cs | 1 + Sources/Tests/ConsoleDB/ConsoleDB.csproj | 6 +- Sources/Tests/ConsoleDB/Program.cs | 42 ++++++- Sources/Tests/ConsoleDB/projet.Champions.db | Bin 0 -> 65536 bytes .../Tests/ConsoleDB/projet.Champions.db-shm | Bin 0 -> 32768 bytes .../Tests/ConsoleDB/projet.Champions.db-wal | 0 .../TestUnitaireLOL/TestUnitaireLOL.csproj | 2 +- .../TestUnitaireLOL/UnitTestDbDataManager.cs | 4 +- Sources/ViewModels/ViewModels.csproj | 4 +- .../Controllers/ChampionController.cs | 10 +- Sources/WebApiLol/WebApiLol.csproj | 2 +- 28 files changed, 414 insertions(+), 134 deletions(-) create mode 100644 Sources/EntityFrameWorkLib/LargeImageEntity.cs delete mode 100644 Sources/EntityFrameWorkLib/Migrations/20230308120111_MyMigration.Designer.cs delete mode 100644 Sources/EntityFrameWorkLib/Migrations/20230308120111_MyMigration.cs create mode 100644 Sources/EntityFrameWorkLib/Migrations/20230314230906_MyMigration.Designer.cs create mode 100644 Sources/EntityFrameWorkLib/Migrations/20230314230906_MyMigration.cs create mode 100644 Sources/EntityFrameWorkLib/RuneEntity.cs create mode 100644 Sources/EntityFrameWorkLib/SkillEntity.cs delete mode 100644 Sources/EntityFrameWorkLib/Skin.cs create mode 100644 Sources/EntityFrameWorkLib/SkinEntity.cs rename Sources/EntityFrameWorkLib/enums/{ChampionClassEntity.cs => ChampionClass.cs} (79%) rename Sources/EntityFrameWorkLib/enums/{RuneFamilyEntity.cs => RuneFamily.cs} (55%) rename Sources/EntityFrameWorkLib/enums/{SkillTypeEntity.cs => SkillType.cs} (57%) create mode 100644 Sources/Tests/ConsoleDB/projet.Champions.db-shm create mode 100644 Sources/Tests/ConsoleDB/projet.Champions.db-wal diff --git a/Sources/EntityFrameWorkLib/ChampionEntity.cs b/Sources/EntityFrameWorkLib/ChampionEntity.cs index fde9d2f..0ea1797 100644 --- a/Sources/EntityFrameWorkLib/ChampionEntity.cs +++ b/Sources/EntityFrameWorkLib/ChampionEntity.cs @@ -11,9 +11,17 @@ namespace EntityFrameWorkLib [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int UniqueId { get; set; } public string Name { get; set; } + + [Required] + [MaxLength(256)] public string Bio { get; set; } + public string Icon { get; set; } - public ChampionClassEntity championClass { get; set; } + + [Required] + public ChampionClass Class { get; set; } + + public LargeImageEntity? LargeImageEntity { get; set; } } } diff --git a/Sources/EntityFrameWorkLib/EntityFrameWorkLib.csproj b/Sources/EntityFrameWorkLib/EntityFrameWorkLib.csproj index eb89a7d..1eec4bc 100644 --- a/Sources/EntityFrameWorkLib/EntityFrameWorkLib.csproj +++ b/Sources/EntityFrameWorkLib/EntityFrameWorkLib.csproj @@ -15,13 +15,13 @@ - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/Sources/EntityFrameWorkLib/LargeImageEntity.cs b/Sources/EntityFrameWorkLib/LargeImageEntity.cs new file mode 100644 index 0000000..26d6886 --- /dev/null +++ b/Sources/EntityFrameWorkLib/LargeImageEntity.cs @@ -0,0 +1,21 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace EntityFrameWorkLib +{ + public class LargeImageEntity + { + [Key] + public Guid Id { get; set; } + + [Required] + public string Base64 { get; set; } + + [Required] + public int championId { get; set; } + + [Required] + public ChampionEntity champion { get; set; } + } +} + diff --git a/Sources/EntityFrameWorkLib/LolContext.cs b/Sources/EntityFrameWorkLib/LolContext.cs index 89f6651..fdcacd8 100644 --- a/Sources/EntityFrameWorkLib/LolContext.cs +++ b/Sources/EntityFrameWorkLib/LolContext.cs @@ -7,6 +7,8 @@ namespace EntityFrameWorkLib public class LolContext : DbContext { public DbSet Champions { get; set; } + public DbSet Skill { get; set; } + public DbSet LargeImage { get; set; } public LolContext() { } public LolContext(DbContextOptions options) @@ -28,6 +30,11 @@ namespace EntityFrameWorkLib //Définition du mode de generation de la clé : génération à l'insertion modelBuilder.Entity().Property(n => n.UniqueId).ValueGeneratedOnAdd(); + modelBuilder.Entity() + .HasOne(c => c.LargeImageEntity) + .WithOne(li => li.champion) + .HasForeignKey(li => li.championId); + base.OnModelCreating(modelBuilder); } diff --git a/Sources/EntityFrameWorkLib/Migrations/20230308120111_MyMigration.Designer.cs b/Sources/EntityFrameWorkLib/Migrations/20230308120111_MyMigration.Designer.cs deleted file mode 100644 index 7be9ec3..0000000 --- a/Sources/EntityFrameWorkLib/Migrations/20230308120111_MyMigration.Designer.cs +++ /dev/null @@ -1,50 +0,0 @@ -// -using EntityFrameWorkLib; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace EntityFrameWorkLib.Migrations -{ - [DbContext(typeof(LolContext))] - [Migration("20230308120111_MyMigration")] - partial class MyMigration - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "7.0.3"); - - modelBuilder.Entity("EntityFrameWorkLib.ChampionEntity", b => - { - b.Property("UniqueId") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER"); - - b.Property("Bio") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Icon") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT"); - - b.Property("championClass") - .HasColumnType("INTEGER"); - - b.HasKey("UniqueId"); - - b.ToTable("Champions"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Sources/EntityFrameWorkLib/Migrations/20230308120111_MyMigration.cs b/Sources/EntityFrameWorkLib/Migrations/20230308120111_MyMigration.cs deleted file mode 100644 index f82da3b..0000000 --- a/Sources/EntityFrameWorkLib/Migrations/20230308120111_MyMigration.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace EntityFrameWorkLib.Migrations -{ - /// - public partial class MyMigration : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Champions", - columns: table => new - { - UniqueId = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Name = table.Column(type: "TEXT", nullable: false), - Bio = table.Column(type: "TEXT", nullable: false), - Icon = table.Column(type: "TEXT", nullable: false), - championClass = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Champions", x => x.UniqueId); - }); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Champions"); - } - } -} diff --git a/Sources/EntityFrameWorkLib/Migrations/20230314230906_MyMigration.Designer.cs b/Sources/EntityFrameWorkLib/Migrations/20230314230906_MyMigration.Designer.cs new file mode 100644 index 0000000..fdb23ae --- /dev/null +++ b/Sources/EntityFrameWorkLib/Migrations/20230314230906_MyMigration.Designer.cs @@ -0,0 +1,108 @@ +// +using System; +using EntityFrameWorkLib; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace EntityFrameWorkLib.Migrations +{ + [DbContext(typeof(LolContext))] + [Migration("20230314230906_MyMigration")] + partial class MyMigration + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.4"); + + modelBuilder.Entity("EntityFrameWorkLib.ChampionEntity", b => + { + b.Property("UniqueId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Bio") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Class") + .HasColumnType("INTEGER"); + + b.Property("Icon") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("UniqueId"); + + b.ToTable("Champions"); + }); + + modelBuilder.Entity("EntityFrameWorkLib.LargeImageEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Base64") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("championId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("championId") + .IsUnique(); + + b.ToTable("LargeImage"); + }); + + modelBuilder.Entity("EntityFrameWorkLib.SkillEntity", b => + { + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("SkillType") + .HasColumnType("INTEGER"); + + b.HasKey("Name"); + + b.ToTable("Skill"); + }); + + modelBuilder.Entity("EntityFrameWorkLib.LargeImageEntity", b => + { + b.HasOne("EntityFrameWorkLib.ChampionEntity", "champion") + .WithOne("LargeImageEntity") + .HasForeignKey("EntityFrameWorkLib.LargeImageEntity", "championId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("champion"); + }); + + modelBuilder.Entity("EntityFrameWorkLib.ChampionEntity", b => + { + b.Navigation("LargeImageEntity"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Sources/EntityFrameWorkLib/Migrations/20230314230906_MyMigration.cs b/Sources/EntityFrameWorkLib/Migrations/20230314230906_MyMigration.cs new file mode 100644 index 0000000..0fd9526 --- /dev/null +++ b/Sources/EntityFrameWorkLib/Migrations/20230314230906_MyMigration.cs @@ -0,0 +1,82 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace EntityFrameWorkLib.Migrations +{ + /// + public partial class MyMigration : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Champions", + columns: table => new + { + UniqueId = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Name = table.Column(type: "TEXT", nullable: false), + Bio = table.Column(type: "TEXT", maxLength: 256, nullable: false), + Icon = table.Column(type: "TEXT", nullable: false), + Class = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Champions", x => x.UniqueId); + }); + + migrationBuilder.CreateTable( + name: "Skill", + columns: table => new + { + Name = table.Column(type: "TEXT", maxLength: 256, nullable: false), + Description = table.Column(type: "TEXT", maxLength: 500, nullable: false), + SkillType = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Skill", x => x.Name); + }); + + migrationBuilder.CreateTable( + name: "LargeImage", + columns: table => new + { + Id = table.Column(type: "TEXT", nullable: false), + Base64 = table.Column(type: "TEXT", nullable: false), + championId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_LargeImage", x => x.Id); + table.ForeignKey( + name: "FK_LargeImage_Champions_championId", + column: x => x.championId, + principalTable: "Champions", + principalColumn: "UniqueId", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_LargeImage_championId", + table: "LargeImage", + column: "championId", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "LargeImage"); + + migrationBuilder.DropTable( + name: "Skill"); + + migrationBuilder.DropTable( + name: "Champions"); + } + } +} diff --git a/Sources/EntityFrameWorkLib/Migrations/LolContextModelSnapshot.cs b/Sources/EntityFrameWorkLib/Migrations/LolContextModelSnapshot.cs index 86cbf85..a9a3587 100644 --- a/Sources/EntityFrameWorkLib/Migrations/LolContextModelSnapshot.cs +++ b/Sources/EntityFrameWorkLib/Migrations/LolContextModelSnapshot.cs @@ -1,4 +1,5 @@ // +using System; using EntityFrameWorkLib; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -14,7 +15,7 @@ namespace EntityFrameWorkLib.Migrations protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "7.0.3"); + modelBuilder.HasAnnotation("ProductVersion", "7.0.4"); modelBuilder.Entity("EntityFrameWorkLib.ChampionEntity", b => { @@ -24,8 +25,12 @@ namespace EntityFrameWorkLib.Migrations b.Property("Bio") .IsRequired() + .HasMaxLength(256) .HasColumnType("TEXT"); + b.Property("Class") + .HasColumnType("INTEGER"); + b.Property("Icon") .IsRequired() .HasColumnType("TEXT"); @@ -34,13 +39,66 @@ namespace EntityFrameWorkLib.Migrations .IsRequired() .HasColumnType("TEXT"); - b.Property("championClass") - .HasColumnType("INTEGER"); - b.HasKey("UniqueId"); b.ToTable("Champions"); }); + + modelBuilder.Entity("EntityFrameWorkLib.LargeImageEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT"); + + b.Property("Base64") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("championId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("championId") + .IsUnique(); + + b.ToTable("LargeImage"); + }); + + modelBuilder.Entity("EntityFrameWorkLib.SkillEntity", b => + { + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("TEXT"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("TEXT"); + + b.Property("SkillType") + .HasColumnType("INTEGER"); + + b.HasKey("Name"); + + b.ToTable("Skill"); + }); + + modelBuilder.Entity("EntityFrameWorkLib.LargeImageEntity", b => + { + b.HasOne("EntityFrameWorkLib.ChampionEntity", "champion") + .WithOne("LargeImageEntity") + .HasForeignKey("EntityFrameWorkLib.LargeImageEntity", "championId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("champion"); + }); + + modelBuilder.Entity("EntityFrameWorkLib.ChampionEntity", b => + { + b.Navigation("LargeImageEntity"); + }); #pragma warning restore 612, 618 } } diff --git a/Sources/EntityFrameWorkLib/RuneEntity.cs b/Sources/EntityFrameWorkLib/RuneEntity.cs new file mode 100644 index 0000000..49cd96f --- /dev/null +++ b/Sources/EntityFrameWorkLib/RuneEntity.cs @@ -0,0 +1,20 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace EntityFrameWorkLib +{ + public class RuneEntity + { + [Key] + [MaxLength(256)] + public string Name { get; set; } + + [Required] + [MaxLength(500)] + public string Description { get; set; } + + [Required] + public RuneFamily RuneFamily { get; set; } + } +} + diff --git a/Sources/EntityFrameWorkLib/SkillEntity.cs b/Sources/EntityFrameWorkLib/SkillEntity.cs new file mode 100644 index 0000000..b85d310 --- /dev/null +++ b/Sources/EntityFrameWorkLib/SkillEntity.cs @@ -0,0 +1,20 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace EntityFrameWorkLib +{ + public class SkillEntity + { + [Key] + [MaxLength(256)] + public string Name { get; set; } + + [Required] + [MaxLength(500)] + public string Description { get; set; } + + [Required] + public SkillType SkillType { get; set; } + } +} + diff --git a/Sources/EntityFrameWorkLib/Skin.cs b/Sources/EntityFrameWorkLib/Skin.cs deleted file mode 100644 index 6735e2d..0000000 --- a/Sources/EntityFrameWorkLib/Skin.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -namespace EntityFrameWorkLib -{ - public class Skin - { - public string Name { get; set; } - public string Description { get; set; } - public string Icon { get; set; } - public float Price { get; set; } - } -} - diff --git a/Sources/EntityFrameWorkLib/SkinEntity.cs b/Sources/EntityFrameWorkLib/SkinEntity.cs new file mode 100644 index 0000000..dde19fc --- /dev/null +++ b/Sources/EntityFrameWorkLib/SkinEntity.cs @@ -0,0 +1,22 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace EntityFrameWorkLib +{ + public class SkinEntity + { + [Key] + [MaxLength(256)] + public string Name { get; set; } + + [Required] + [MaxLength(500)] + public string Description { get; set; } + + public string Icon { get; set; } + + [Required] + public float Price { get; set; } + } +} + diff --git a/Sources/EntityFrameWorkLib/enums/ChampionClassEntity.cs b/Sources/EntityFrameWorkLib/enums/ChampionClass.cs similarity index 79% rename from Sources/EntityFrameWorkLib/enums/ChampionClassEntity.cs rename to Sources/EntityFrameWorkLib/enums/ChampionClass.cs index ede8e0e..dd9de0b 100644 --- a/Sources/EntityFrameWorkLib/enums/ChampionClassEntity.cs +++ b/Sources/EntityFrameWorkLib/enums/ChampionClass.cs @@ -1,7 +1,7 @@ using System; namespace EntityFrameWorkLib { - public enum ChampionClassEntity + public enum ChampionClass { Unknown, Assassin, diff --git a/Sources/EntityFrameWorkLib/enums/RuneFamilyEntity.cs b/Sources/EntityFrameWorkLib/enums/RuneFamily.cs similarity index 55% rename from Sources/EntityFrameWorkLib/enums/RuneFamilyEntity.cs rename to Sources/EntityFrameWorkLib/enums/RuneFamily.cs index 6860a99..fdebb4d 100644 --- a/Sources/EntityFrameWorkLib/enums/RuneFamilyEntity.cs +++ b/Sources/EntityFrameWorkLib/enums/RuneFamily.cs @@ -1,7 +1,7 @@ using System; -namespace Model +namespace EntityFrameWorkLib { - public enum RuneFamilyEntity + public enum RuneFamily { Unknown, Precision, diff --git a/Sources/EntityFrameWorkLib/enums/SkillTypeEntity.cs b/Sources/EntityFrameWorkLib/enums/SkillType.cs similarity index 57% rename from Sources/EntityFrameWorkLib/enums/SkillTypeEntity.cs rename to Sources/EntityFrameWorkLib/enums/SkillType.cs index 5c833c2..8cee79f 100644 --- a/Sources/EntityFrameWorkLib/enums/SkillTypeEntity.cs +++ b/Sources/EntityFrameWorkLib/enums/SkillType.cs @@ -1,7 +1,7 @@ using System; -namespace Model +namespace EntityFrameWorkLib { - public enum SkillTypeEntity + public enum SkillType { Unknown, Basic, diff --git a/Sources/LolApp/LolApp.csproj b/Sources/LolApp/LolApp.csproj index cb01fcf..c07fe16 100644 --- a/Sources/LolApp/LolApp.csproj +++ b/Sources/LolApp/LolApp.csproj @@ -91,7 +91,9 @@ - + + + diff --git a/Sources/StubLib/StubData.Champions.cs b/Sources/StubLib/StubData.Champions.cs index ad19275..ec1d9dc 100644 --- a/Sources/StubLib/StubData.Champions.cs +++ b/Sources/StubLib/StubData.Champions.cs @@ -13,6 +13,7 @@ namespace StubLib new Champion("Akshan", ChampionClass.Marksman), new Champion("Bard", ChampionClass.Support), new Champion("Alistar", ChampionClass.Tank), + new Champion("Kindred", ChampionClass.Marksman) }; public class ChampionsManager : IChampionsManager diff --git a/Sources/Tests/ConsoleDB/ConsoleDB.csproj b/Sources/Tests/ConsoleDB/ConsoleDB.csproj index fa2a4bd..f628bc5 100644 --- a/Sources/Tests/ConsoleDB/ConsoleDB.csproj +++ b/Sources/Tests/ConsoleDB/ConsoleDB.csproj @@ -14,9 +14,9 @@ - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/Sources/Tests/ConsoleDB/Program.cs b/Sources/Tests/ConsoleDB/Program.cs index c9fdc38..f38ab12 100644 --- a/Sources/Tests/ConsoleDB/Program.cs +++ b/Sources/Tests/ConsoleDB/Program.cs @@ -3,30 +3,60 @@ using EntityFrameWorkLib; using Microsoft.EntityFrameworkCore; +SkillEntity skill1 = new SkillEntity +{ + Name = "skill1", + Description = "Cette description est celle du skill1", + SkillType = SkillType.Basic, +}; + +LargeImageEntity largeImage = new LargeImageEntity +{ + Base64 = "data:image/png;base64,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" +}; +LargeImageEntity largeImage2 = new LargeImageEntity +{ + Base64 = "data:image/png;base64,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" +}; +LargeImageEntity largeImage3 = new LargeImageEntity +{ + Base64 = "data:image/png;base64,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" +}; + ChampionEntity jax = new ChampionEntity { Name = "jax", Icon = "icon jax", - Bio = "test bio jax" + Bio = "test bio jax", + Class = ChampionClass.Fighter, + LargeImageEntity = largeImage }; ChampionEntity darius = new ChampionEntity { Name = "darius", Icon = "icon darius", - Bio = "test bio darius" + Bio = "test bio darius", + Class = ChampionClass.Assassin, + LargeImageEntity = largeImage2 }; ChampionEntity champions = new ChampionEntity { Name = "toto", Icon = "icon", - Bio = "test bio champion" + Bio = "test bio champion", + Class = ChampionClass.Marksman, + LargeImageEntity = largeImage3 }; + using (var context= new LolContext()) { Console.WriteLine("Create and Insert new Champion"); - context.Add(champions); - context.Add(darius); - context.Add(jax); + context.Skill.AddAsync(skill1); + context.LargeImage.AddAsync(largeImage); + context.Champions.AddAsync(champions); + context.Champions.AddAsync(darius); + context.Champions.AddAsync(jax); + await context.SaveChangesAsync(); } diff --git a/Sources/Tests/ConsoleDB/projet.Champions.db b/Sources/Tests/ConsoleDB/projet.Champions.db index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f4f9281f3cdfd3c95cdbce4716f781bd82a07f30 100644 GIT binary patch literal 65536 zcmeI5$*$yBdf)SAR#&M?DyINLC}<%oI}KYZP$dTEpp6F1c_xEokU`Qg3LGOi1R23G zNO;q-p-1pb7=~fN@JjEXl>sdbFZ=}3!h!&8%$rrJsjHxdp%&B)^4R0Bym+;Keslf&?eL>D@!sD~tmCI|q<<*+ z>ct<%PanVj>lYt>^xt3nlmGepzkK}XAOG=h{O6DV?XSbXF|M<=VI!~+*a&O{HUb-g zjlf1=Bk*?;`1c=v@X1ep{Pfe`%j+b4NZ#ja*q&4A8lKb7<4btGWEObhtN?&T`(Hw?CBc?HfaX^Y-i9Z{Pg>+pkM~`{^H1AAIo1kAM91AGJP=s`Tp> zzfS$ymlYlN(zf1~Z6LtjJv@TZ^s=z~u_`Q+)3$amoFGOwz4U+;e#_q%!P zHhh6f53lKWKz*0>ml=K*Gn;mCo8S6%fBH@lU$TCe^Eltu8orDAqfbA5|NT#X^2rZ1 z@?F-?p?9MX4)4AH2>?9#?;7?ck1kyS)^Yls$sc{IvENzv`}Nw|KUi~q`qSmr2cP`z z?>_wp=3SXz_03m__r6umw>s|&a9{P{&ou43{JtvlTf6ET$~hX6zE-1g`teI(-_sjk zE}`@0`x#5|57B3;uy4?ZD?r$3V3HU9I@IbO@pZTQ@gotSrh)6U;J^X0dp zeD6A6?O9(H`F9@7KTyuk?r?{;Nrt$0)3*EBeeR=ArI+u2^6!Wr+M~X=md~N@o&9Xv z|Jw73_T%;Q^!k6jSpTs}8-ZU!0&kyQQJ=s& z7}+5Zx_*;8{Bv#o>Sqh$4|jivezdmh>Gl74vHowvMqneb5!eW91U3R2fsMdMU?Z>* z*a&O{HUhu21b*ig_2Ccy2=M&;|JCdN^y2mZe*Hhz(Kc)ZHUb-gjlf1=Bd`(J2y6s4 z0vmyiz(!yr@DE1dpS^nj#XtQQzw=atk3Q}CH&NcaS=0F%3h_LC`7d9-|KhiSfBs<- zw)xO~waOQh@7DSv`R3{U7rzDm)>GfCe}7w0{AG~O^Lp=n;s5`aFJAxUKUm|oiZ%ip zfsMdMU?Z>**a&O{HUb-gjlf1=Bd`(pMHBe=>DBK(eWlp&>I?h-&tAO#vtM+@TlpJ- zjlf1=Bd`(J2y6s40vmyiz(!yruo2h@{5=r>pWgfJ(}&%&G$zEP{i^Jre63;m=Gg-v zPOEC2JG}W~r7zs}8-b0$Mqneb5!eW91pbi_ z`0&+lfB7T9^Gp3+eqsFo=Ig)Neg*hP(m_AG8Gp(?{mA)i>IuU32*qOLXDCTgpP_q} z_>4qJ^fP8pvK)h;B+0``*oXfre||3xc&pF3gh3t-6x1MsR0sK@*=EB|3`Nos z&N?(KTlqb28s0x;Wa|=r*bj*7c`1U2dX|7Egn)_Q1OUAfMQK0ufty2ZQsczXHl*G8 z>Ksca>IhLOWt*lfnWZe(@_5KV8nl24>DH#@bPZlr5@d~TCQI~-} zUab?&Q?Vw6loU{BpmIyg7DbAq6vdRHvxAlH*)m0z5zdTYN{5>paL(m1(Z9$#yx?Y2 zRC&%|iL7>%RG;{}6|%GFLcZ(hl*;+*uZ(5S#22k@FR_-LXia!5y3s9lL&C|uTy)A%wsuAWT)U128f+!r{04SQ4moQ?Tlows1^s~ zk{W2>nILl_?fKdeldCp@wQztM9ZJ3=?Hh+cu!=mvY z>_9sYX>4S4lF?Os!?0^$!*g~A7|Eq)Z_*hM)b`D_KS_x=osP*PQ~+PSUIm14Z_>4z z3aeBXqOKr=fe&X$w@xASP$^(dC8E6QM*W}=6C(p z=o)XG{F9Bt_}StcsXaaX_5ofYGTX}*Mab&yM(yOo0S$a4>a$(|JLH@&>#2w#TD@)n zGs-6Ku&9U58*~82Qjg}EG%TaqCrAd9kjj=^R^;2`qpL-W?qvo$GReNo=>swIJu)qA za>Zzv_Nxvshjgrf8zAzWh~7XMf7k~HM;=0OhG_hRAe87mC+@A1+`!Lfs(Z(```cMJgke15qXD##+l_c zXqN0?4t3?GM#RJ;-7uVu2!bQr?T5WAoLuN2o--!1d_T~|J10Z6Faf!S*J5uR`fGep z;G!Ll)T7jU5WMId*yj5aZhH5@k~P#dj=QX4M5vT&y#oTevvJzF(}$iV@xv_l;>>Fe zSz=&IGY24|=Ss)+)q>tTY?s|J5{Ds$pB<}y%pk}IoZAv&sI}E?-#**}%$9gl5L1i%ucs_yYSN#1mdW)J(tI5g=1fuTKlG*ZS`>PXp;5qlX$R49&@F$enGFkyDM z1PIVF4?>ltz19E@Yh==yy8{ShjBPrA8LK+c!w4_%`L@T2aKEm%gCL*FYhV^E_yBUs zfzf9Cj4>RiJ9K`$l(C!_y=oFklcxSDae3?EC_yXEm|&erL0+#AhaRCzNP0M@d2IPz zcyA^>zu_k?d?*itH(3v!QpX(-r*Wr3()2PH4eO$AgaJ zhf~4|nQp0#;H3OVLqZrHt*6z?T;6-H$&D35O+QOWiX+XLwA;osqiZDhIaRf5tiC%zu%vy+qulc4mjSCTRr$QEfBaq&YrqN z)!3GUY{XnS7G+-p7)=UzLNo=vhd4_r*ki35*Jhz~7!ZOz<~7{aJXzuKsP-I0;QZ2q zd#6gEp)l<{X(Oz=o+=Gm@ilj2h+#)h@6bbx%!A^KfpnSN&XAGG^P0OYz&I0wGdK3P z5h$wL1<6v&qm3(fw!xsW%Dlhb<`m_H3)*A*dV%2-Y1qo8q>3!kob<6Vc6TRfs`ZRf z`Q>u4E-{^fth>)~V%;8_K;2-^!x{~p5 z8g-82Sr;YmEM{cGf|BIJmxZ@)*i9@k31a3lkm}(A14g`)y!E&#&doqc^I{B=yyQpA zmjnOWQGJ3aepYfu?6r}rn>4#syYoL{fh{_+ z)Vhj9u~0O~sv=+ypLb z^Lp`Va348kJ$m|VF7VV<)o9+;_)fGaGnU5-&?+bET6Wcvo(IG!%kwBp_txj5dt2a~ zlg5nbaOb?h;3C@<=A_)9alXx`6E_z@*W8Z$*fpwyPgOn|K};Xv2j#=QC&4$dfeVIF z8l=Rp#u>X+h!!mh(Uk!@&mIs~SL;$M=^dxJ>J&Efq<}k*a76h=p-_1ZqGqzGN6oEQ z>8v;klYh5eTqEVWVE3wyA~6CNx!Z8kA>a60|rj)jzjSr78QUn!Bn$uy+k(*u`)dh8%K6w8w<^`2jm0 zZ`=cF4;P147P;umz2JK#i9&scQ#or-d!mf)Jy$j}n9(AB6&U#DA0%Q9uA~}YV@}`A z)cu4H1{BwnIh$~c%8NJ{Dv6MVavW2I0*P5)&oOdLf_Xq+X-3jMq0xZV zCL4l4*ErM_4>jLYZk_*c7~*88)B@eF@H&%E#D7HO@?6 z=cFuLMuX?pi|G#BW69+<1g5!O2iGfsHql&Ql_7Pm+oMgXJ}yD`8>Sr+I-6v{cu3}I zUjCDp>(|Fm&(Hr~z5e4DumAk@e_co0uo2h@Yy>s}8-b0$Mqneb5!eW91U3R2fsMc~ zjKJ@|a-KK_XE1z^f5vn0`cxMsq0eZT$38=Nh=wt2M=~7p>Ul+yB@u{(q0bs}8-b0$KOlkkUVZrV>PN4ho?gCu@72?Xub!)Js6p$7V-RYS z!Cuw27aviWyS)r@oCH883UdzqVnR-;d2Q52wm=&K2{k!0Pm$#i0ub2fI4{TUF8V12 z5qJ3>9+19yP}jOc<$&_XT~xN*`TV%peDc8h^Pw$-)h|oTwE__i6>B)-Je|2^mmBrH z5LnufTAb6O2dN0?c3pHMVJ15>Q4qBMU6B?dQNt#%? zf*jXOkD8(&)Pr;FQmeUp<&ue|I~0Xwz6b4ty}H{f?v1_96`or%7t+@S3a}#a9V&D? z38O?!ZpWsIJ(U~IaFfn}oSPzwBGSc#AzzbGVRihdcEs(hu*sBb$3e#Y46Sw}8JI*KMcw4fHcoGp_)vcn_d*KnKG%5z!TnhxWp{!yz@bv@F=*q{G5Z z2oDT?LBpG1(-n*DfbgEWwZpBw{qQWIJE*mA^fJno`LiYZJs8RW-@`_Mrs|b}kcZmN zb38k?;M|uf*^vW5-fw9ecDE$j({*<-t<`-|AGT^mmxYoh-tZ%~U;0EiU;#cn0FX^3H)0M2m^m^@CUZ{KRTbvkiQ{5Ny?!uO*;|(Di(B9hv z@?a{uSY1%5krb;_>2r~lW=^fEc4{`TG^{SH1(2VtiCObmM*HZIz5{vZY6$H?FY5!l zU{hvgzNPy`YqK+jB z-bf0VV{Z>rOgB0lnirbmIaM_8*h$dtbLdpNAezzDc~(u~L|fe;Nln)6#9m$4g;3m8 z!?C9UNS*Wr#)wPWo>v#M8;dped$p+T^r)|8`BQ#cJ@|x)Q(w$F~(dM zm!S@G;M}PV&J6+qopu=$T(^g0)#z~E-rZCHPMScg*}V=Z1t`2jU9?jqV1*!9LV8WVh=m9*%LU6xEFp>R8!(@0~i?q@tQ zrR-5o1XwJ7fLySK42iwBA7=v-D_BhS#N(QAtXN(!XUgzB>o`%}nrE)NAu$+$tH0R6 z^0pKNoxGWh zn+5UxtDoqVaICKtM;FwrKTyJ~a&1r@=b@Q*R`dxpc9y0umrm)Z3_@%y1A*PW~JE%k>L2VWAjKfUZnNV^e2}CJu2%);vNF|9_F-xZX;b-I<+FhxFGLJxllkT&dKO3 zO;%ft0!4N#k}Wa?oZ_qjR&`@fxk<`8XQz5Mpb4OP`@3lg5(*F{G|8}fP%kLmX8~-p z!MS8s&tBbA2%Ny~nGdOEuoOr1WUj{mIj>;{7dEsMNG{F-hw6nELNjv>PIV*Qu;ZyA zWe7z)INn_!qct0FKP-$qBM@jToLCbX5@Bo9$$H*Cm+|UmD($5Hq6E7IT_d{029u7C zUvi@hVOBL{;;=d|Qyx4&n#fswGFN|oJDD+{Kx0--ZA&kq1+^q;thg~-ujS`sLalc! z+2LN#6(Gme-aOnB&qbiTCR`pSMLV(bzKjh?R+RWW4Tbg~a%2(6_N=SNF$5lcVp(xU zL&(&7G`u9P3e_5lIbovg^^&8T9k~}>aJfb)fZwzA;3|3VQ9-+Qzup?L6)jt1cEIoL zF~Cqu+t)|c38cp1VTIJ0GA$VtC(nN7?0Xh@zr9)t&l1T>FY_2qjbHt1GEo z4q(5xRm0U6d?`94QoF+tlEe~91eTo^&Cz>*gxc}}lVo#_FEz0`xKdVG=45IXbem`e zc-$XxLIo1SyC7H%m!YB7wtmv00|Dl+f)bFBW{LNZqzlJ-OC1%pR>RVI!GS%W<0^MT z3A^pQVz$CLwW)~QrTYW2Oe8WRVKbaYsaWt}cjoj;vPEZ~hf&q(#{~(PbU2{ocqptj z9H;RQWM|oYQ(lH53CLNxSO(Y>@zlDF)|0`NHZM1>C3;4Ja9S77CwxvEBk-$TzC)c^ z2*;(DEdniu)KlGCVLXOLp6{2GK7-!4mujCLaXi!GE`mmB_4d6)xnb}(&$LE-C!y%& zB*k>P-Z?c;W{`(WDP$*F7GGr^x-XQJg;>Y@K@wAiCp~Bu?(i_D2Hpi1SVJFP2;DVj zZm#G6fOsy*gbt@!kqIo3X1in| z(0Hd(<+XZP*>c%~C)CKs!@fqbN3iZ9c5&lm8EpWYygj_k41pL7b%9Qspg(j7f$t@k z2^B-`K)oW4xH?Q)jE}5*pTW4~DnGuuK$0;0P-hiH^Gk5Tv0kqN%$h0MRD3cUJ$eV8 z$>P*Kdd6Wi3pf@GR-Nt+?ntNTR_}Ei_q(04p3_>VQm3+{s1Z%f7-+7@j_TK-uNi1d zf(>wCJo20w_u>#8%V0RU zBCuQER@SOJ+qikB1q~4F0rV$gndL_`-q-jchzbEMGURco$v*ZO5CUQSklyL_&N&9O z8>0KkAP6|_8(dBTS1Nl%xty6>CI-9A54?Va_#PWt&48f_ z!3(wP$hhWrJSn(WwMf}I%9fV3(!j~4t14GGr9~FTT z;-g}ZUC4ov2`sL=AO*b!;ALRVU12-esezzPQ9P~jBp!cdWk6||)NCt)7OCN68fD6L zY4JGFUD)3l-QPuf3qM4W9a*f(8S6a|QUOi6M1Y{c#!eY(0q`X)v|=r#tD;Jcva{Xw zUM{+DR^^Um8w-)EYg4w~A*Kx<4NRuspanB&sm*|roteapxLI`E`yD1H5-=|(M3`Vr zzFEDWTa+rRXZ(CkPWl73d{qzB(lTu2B3e?Vgsn+;QsaowS;13~bQ2<1WK(K@U0U8__II_G>j zCbCsr+0zpc6yH-g$F)*))w7+vXB@F&^K9ae;grt00ZIdkzNSGmTzuLc7Wo3Jt|0VDVi{_aSw zG?UR)iPlI3jaD^3ha^tvf>b9&Juj*2xw>kWT{8U17_a2zYT49rvKOJb*mT~C-tjaq z(v6XQIw&0fMm>_EmD?cT;tQuq!$aXtXMcD=965Ar{BM5MT)$#uQ_Dg;KS3v&m8?aO z)@BHeAdbm{^;_yzNCqLQj|IPm2?ElUF z-|YX*{@?8X&Hmr)|IPm2?ElUF-|YX*{@?8XUw!-k<-7O)J^i;A>;E?VG7#AG|2F-< zP5*Dx|J(HcHvPX%|8LX(+w}i7{l88BZ`1$V^#3;fzn@$G&qwDLvQ~5V*EjqBm%-@& z#y0*b`|_Rs|IecWvFZPB`v3pG?-|KIfgH~s%j|9{i}-}L`C{r^q> z|5rr+|110dH=Zp^YZCz21OPSxfK32k69Cu*05$=DO#omM0N4ZoHUWT50ALdU*aQGJ z0f1j=0e~-_|NqI0r$70|Gv+P%kC?!pGOwN;06zSA-WRbs0BjBbn*)HEE(HtbBpX(K z&yP&WwG?r{EL@h@EGr-eYqB*c<>h2Y}51U~>T28~`>4 WfXxA5a{$;J0DhGm09GUS_5TA0x$n~e literal 0 HcmV?d00001 diff --git a/Sources/Tests/ConsoleDB/projet.Champions.db-shm b/Sources/Tests/ConsoleDB/projet.Champions.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10 GIT binary patch literal 32768 zcmeIuAr62r3runtime; build; native; contentfiles; analyzers; buildtransitive all - + diff --git a/Sources/Tests/TestUnitaireLOL/UnitTestDbDataManager.cs b/Sources/Tests/TestUnitaireLOL/UnitTestDbDataManager.cs index b5b971c..39940c2 100644 --- a/Sources/Tests/TestUnitaireLOL/UnitTestDbDataManager.cs +++ b/Sources/Tests/TestUnitaireLOL/UnitTestDbDataManager.cs @@ -3,9 +3,7 @@ namespace TestUnitaireLOL { public class UnitTestDbDataManager { - public UnitTestDbDataManager() - { - } + } } diff --git a/Sources/ViewModels/ViewModels.csproj b/Sources/ViewModels/ViewModels.csproj index 10f25d0..f7940c3 100644 --- a/Sources/ViewModels/ViewModels.csproj +++ b/Sources/ViewModels/ViewModels.csproj @@ -8,7 +8,9 @@ - + + + diff --git a/Sources/WebApiLol/Controllers/ChampionController.cs b/Sources/WebApiLol/Controllers/ChampionController.cs index b463652..bcfec39 100644 --- a/Sources/WebApiLol/Controllers/ChampionController.cs +++ b/Sources/WebApiLol/Controllers/ChampionController.cs @@ -28,7 +28,7 @@ public class ChampionController : ControllerBase return Ok(list.Select(champion => champion?.toDTO())); } - [HttpGet("name")] + [HttpGet("{name}")] public async Task GetById(string name) { var championSelected = await ChampionsManager.GetItemsByName(name, 0, await ChampionsManager.GetNbItemsByName(name), null); @@ -69,15 +69,15 @@ public class ChampionController : ControllerBase } [HttpDelete("Delete")] - public async Task DeleteChampion(string name) + public async Task DeleteChampion(ChampionDTO champion) { - var championSelected = await ChampionsManager.GetItemsByName(name, 0, await ChampionsManager.GetNbItemsByName(name), null); + var championSelected = await ChampionsManager.GetItemsByName(champion.toModel().Name, 0, await ChampionsManager.GetNbItemsByName(champion.toModel().Name), null); if (!await ChampionsManager.DeleteItem(championSelected.FirstOrDefault())) { - Console.WriteLine("champion { " + name + " } non trouvé !"); + Console.WriteLine("champion { " + champion.toModel().Name + " } non trouvé !"); return NotFound(); } - Console.WriteLine("champion { " + name + " } supprimé"); + Console.WriteLine("champion { " + champion.toModel().Name + " } supprimé"); return Ok(); } diff --git a/Sources/WebApiLol/WebApiLol.csproj b/Sources/WebApiLol/WebApiLol.csproj index 12d51ee..6a32b1f 100644 --- a/Sources/WebApiLol/WebApiLol.csproj +++ b/Sources/WebApiLol/WebApiLol.csproj @@ -11,7 +11,7 @@ - +