From 0bdc7889bf9d6e666558717d1ff093616eb006d9 Mon Sep 17 00:00:00 2001 From: Paweł Bernaciak Date: Sat, 21 Oct 2023 15:54:10 +0200 Subject: Add rest of models to backend --- .../20231021133049_Add recipes.Designer.cs | 84 ++++++++++++ .../Migrations/20231021133049_Add recipes.cs | 29 ++++ .../20231021135238_Add suggestions.Designer.cs | 152 +++++++++++++++++++++ .../Migrations/20231021135238_Add suggestions.cs | 74 ++++++++++ .../ApplicationDbContextModelSnapshot.cs | 72 ++++++++++ backend/Elements.Data/Models/Element.cs | 1 + backend/Elements.Data/Models/Recipe.cs | 8 ++ backend/Elements.Data/Models/Suggestion.cs | 13 ++ backend/Elements.Data/Models/User.cs | 1 + 9 files changed, 434 insertions(+) create mode 100644 backend/Elements.Data/Migrations/20231021133049_Add recipes.Designer.cs create mode 100644 backend/Elements.Data/Migrations/20231021133049_Add recipes.cs create mode 100644 backend/Elements.Data/Migrations/20231021135238_Add suggestions.Designer.cs create mode 100644 backend/Elements.Data/Migrations/20231021135238_Add suggestions.cs create mode 100644 backend/Elements.Data/Models/Recipe.cs create mode 100644 backend/Elements.Data/Models/Suggestion.cs (limited to 'backend/Elements.Data') diff --git a/backend/Elements.Data/Migrations/20231021133049_Add recipes.Designer.cs b/backend/Elements.Data/Migrations/20231021133049_Add recipes.Designer.cs new file mode 100644 index 0000000..4e3b57f --- /dev/null +++ b/backend/Elements.Data/Migrations/20231021133049_Add recipes.Designer.cs @@ -0,0 +1,84 @@ +// +using Elements.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elements.Data.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20231021133049_Add recipes")] + partial class Addrecipes + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.12"); + + modelBuilder.Entity("Elements.Data.Models.Element", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("IconBitmap") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("State") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Elements"); + }); + + modelBuilder.Entity("Elements.Data.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("GoogleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Elements.Data.Models.Element", b => + { + b.HasOne("Elements.Data.Models.User", null) + .WithMany("Elements") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Elements.Data.Models.User", b => + { + b.Navigation("Elements"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/Elements.Data/Migrations/20231021133049_Add recipes.cs b/backend/Elements.Data/Migrations/20231021133049_Add recipes.cs new file mode 100644 index 0000000..74d1ac6 --- /dev/null +++ b/backend/Elements.Data/Migrations/20231021133049_Add recipes.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elements.Data.Migrations +{ + /// + public partial class Addrecipes : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "IconBitmap", + table: "Elements", + type: "TEXT", + nullable: false, + defaultValue: ""); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "IconBitmap", + table: "Elements"); + } + } +} diff --git a/backend/Elements.Data/Migrations/20231021135238_Add suggestions.Designer.cs b/backend/Elements.Data/Migrations/20231021135238_Add suggestions.Designer.cs new file mode 100644 index 0000000..6283f68 --- /dev/null +++ b/backend/Elements.Data/Migrations/20231021135238_Add suggestions.Designer.cs @@ -0,0 +1,152 @@ +// +using System; +using Elements.Data; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Elements.Data.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20231021135238_Add suggestions")] + partial class Addsuggestions + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.12"); + + modelBuilder.Entity("Elements.Data.Models.Element", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("IconBitmap") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("State") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Elements"); + }); + + modelBuilder.Entity("Elements.Data.Models.Suggestion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("FirstIngredientId") + .HasColumnType("INTEGER"); + + b.Property("Icon") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SecondIngredientId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.Property("Votes") + .HasColumnType("INTEGER"); + + b.Property("VotingEnd") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("FirstIngredientId"); + + b.HasIndex("SecondIngredientId"); + + b.HasIndex("UserId"); + + b.ToTable("Suggestion"); + }); + + modelBuilder.Entity("Elements.Data.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("GoogleId") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Elements.Data.Models.Element", b => + { + b.HasOne("Elements.Data.Models.User", null) + .WithMany("Elements") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Elements.Data.Models.Suggestion", b => + { + b.HasOne("Elements.Data.Models.Element", "FirstIngredient") + .WithMany() + .HasForeignKey("FirstIngredientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Elements.Data.Models.Element", "SecondIngredient") + .WithMany() + .HasForeignKey("SecondIngredientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Elements.Data.Models.User", null) + .WithMany("Suggestions") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FirstIngredient"); + + b.Navigation("SecondIngredient"); + }); + + modelBuilder.Entity("Elements.Data.Models.User", b => + { + b.Navigation("Elements"); + + b.Navigation("Suggestions"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/backend/Elements.Data/Migrations/20231021135238_Add suggestions.cs b/backend/Elements.Data/Migrations/20231021135238_Add suggestions.cs new file mode 100644 index 0000000..b20a47a --- /dev/null +++ b/backend/Elements.Data/Migrations/20231021135238_Add suggestions.cs @@ -0,0 +1,74 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Elements.Data.Migrations +{ + /// + public partial class Addsuggestions : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Suggestion", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + Name = table.Column(type: "TEXT", nullable: false), + Icon = table.Column(type: "TEXT", nullable: false), + FirstIngredientId = table.Column(type: "INTEGER", nullable: false), + SecondIngredientId = table.Column(type: "INTEGER", nullable: false), + VotingEnd = table.Column(type: "TEXT", nullable: false), + Votes = table.Column(type: "INTEGER", nullable: false), + UserId = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Suggestion", x => x.Id); + table.ForeignKey( + name: "FK_Suggestion_Elements_FirstIngredientId", + column: x => x.FirstIngredientId, + principalTable: "Elements", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Suggestion_Elements_SecondIngredientId", + column: x => x.SecondIngredientId, + principalTable: "Elements", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Suggestion_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_Suggestion_FirstIngredientId", + table: "Suggestion", + column: "FirstIngredientId"); + + migrationBuilder.CreateIndex( + name: "IX_Suggestion_SecondIngredientId", + table: "Suggestion", + column: "SecondIngredientId"); + + migrationBuilder.CreateIndex( + name: "IX_Suggestion_UserId", + table: "Suggestion", + column: "UserId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Suggestion"); + } + } +} diff --git a/backend/Elements.Data/Migrations/ApplicationDbContextModelSnapshot.cs b/backend/Elements.Data/Migrations/ApplicationDbContextModelSnapshot.cs index b713511..a43306c 100644 --- a/backend/Elements.Data/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/backend/Elements.Data/Migrations/ApplicationDbContextModelSnapshot.cs @@ -1,4 +1,5 @@ // +using System; using Elements.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; @@ -22,6 +23,10 @@ namespace Elements.Data.Migrations .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); + b.Property("IconBitmap") + .IsRequired() + .HasColumnType("TEXT"); + b.Property("Name") .IsRequired() .HasColumnType("TEXT"); @@ -39,6 +44,46 @@ namespace Elements.Data.Migrations b.ToTable("Elements"); }); + modelBuilder.Entity("Elements.Data.Models.Suggestion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("FirstIngredientId") + .HasColumnType("INTEGER"); + + b.Property("Icon") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SecondIngredientId") + .HasColumnType("INTEGER"); + + b.Property("UserId") + .HasColumnType("INTEGER"); + + b.Property("Votes") + .HasColumnType("INTEGER"); + + b.Property("VotingEnd") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("FirstIngredientId"); + + b.HasIndex("SecondIngredientId"); + + b.HasIndex("UserId"); + + b.ToTable("Suggestion"); + }); + modelBuilder.Entity("Elements.Data.Models.User", b => { b.Property("Id") @@ -67,9 +112,36 @@ namespace Elements.Data.Migrations .IsRequired(); }); + modelBuilder.Entity("Elements.Data.Models.Suggestion", b => + { + b.HasOne("Elements.Data.Models.Element", "FirstIngredient") + .WithMany() + .HasForeignKey("FirstIngredientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Elements.Data.Models.Element", "SecondIngredient") + .WithMany() + .HasForeignKey("SecondIngredientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Elements.Data.Models.User", null) + .WithMany("Suggestions") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("FirstIngredient"); + + b.Navigation("SecondIngredient"); + }); + modelBuilder.Entity("Elements.Data.Models.User", b => { b.Navigation("Elements"); + + b.Navigation("Suggestions"); }); #pragma warning restore 612, 618 } diff --git a/backend/Elements.Data/Models/Element.cs b/backend/Elements.Data/Models/Element.cs index 08f25a8..fc8a560 100644 --- a/backend/Elements.Data/Models/Element.cs +++ b/backend/Elements.Data/Models/Element.cs @@ -13,4 +13,5 @@ public class Element { public required int UserId { get; init; } public required string Name {get; init;} public required ElementState State {get; init;} + public required string IconBitmap { get; init; } } \ No newline at end of file diff --git a/backend/Elements.Data/Models/Recipe.cs b/backend/Elements.Data/Models/Recipe.cs new file mode 100644 index 0000000..3c4a491 --- /dev/null +++ b/backend/Elements.Data/Models/Recipe.cs @@ -0,0 +1,8 @@ +namespace Elements.Data.Models; + +public class Recipe +{ + public required Element FirstIngredient { get; init; } + public required Element SecondIngredient { get; set; } + public required Element Result { get; set; } +} \ No newline at end of file diff --git a/backend/Elements.Data/Models/Suggestion.cs b/backend/Elements.Data/Models/Suggestion.cs new file mode 100644 index 0000000..7753379 --- /dev/null +++ b/backend/Elements.Data/Models/Suggestion.cs @@ -0,0 +1,13 @@ +namespace Elements.Data.Models; + +public class Suggestion +{ + public required int Id { get; set; } + public required string Name { get; init; } + public required string Icon { get; init; } + public required Element FirstIngredient { get; init; } + public required Element SecondIngredient { get; init; } + public required DateTime VotingEnd { get; init; } + public required int Votes { get; set; } = 1; + public required int UserId { get; init; } +} \ No newline at end of file diff --git a/backend/Elements.Data/Models/User.cs b/backend/Elements.Data/Models/User.cs index b44a1e2..94b8316 100644 --- a/backend/Elements.Data/Models/User.cs +++ b/backend/Elements.Data/Models/User.cs @@ -6,4 +6,5 @@ public class User public required string GoogleId { get; init; } public required string Name { get; set; } public required ICollection Elements { get; set; } + public required ICollection Suggestions { get; set; } } \ No newline at end of file -- cgit v1.2.3