From d195f65ef3f12944b52128d79f167d1f09e4e73f Mon Sep 17 00:00:00 2001 From: esantangelo <enzo020895@gmail.com> Date: Wed, 28 Oct 2020 18:51:04 -0300 Subject: [PATCH] added migrations --- ...0201028214855_fix-Multi-Tenant.Designer.cs | 456 ++++++++++++++++++ .../20201028214855_fix-Multi-Tenant.cs | 149 ++++++ .../Migrations/Tsi1ContextModelSnapshot.cs | 37 +- 3 files changed, 607 insertions(+), 35 deletions(-) create mode 100644 Tsi1.Api/Tsi1.DataLayer/Migrations/20201028214855_fix-Multi-Tenant.Designer.cs create mode 100644 Tsi1.Api/Tsi1.DataLayer/Migrations/20201028214855_fix-Multi-Tenant.cs diff --git a/Tsi1.Api/Tsi1.DataLayer/Migrations/20201028214855_fix-Multi-Tenant.Designer.cs b/Tsi1.Api/Tsi1.DataLayer/Migrations/20201028214855_fix-Multi-Tenant.Designer.cs new file mode 100644 index 0000000..0b82c08 --- /dev/null +++ b/Tsi1.Api/Tsi1.DataLayer/Migrations/20201028214855_fix-Multi-Tenant.Designer.cs @@ -0,0 +1,456 @@ +// <auto-generated /> +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Tsi1.DataLayer; + +namespace Tsi1.DataLayer.Migrations +{ + [DbContext(typeof(Tsi1Context))] + [Migration("20201028214855_fix-Multi-Tenant")] + partial class fixMultiTenant + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) + .HasAnnotation("ProductVersion", "3.1.4") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Course", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("character varying(50)"); + + b.Property<int>("TenantId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.HasIndex("Name", "TenantId") + .IsUnique(); + + b.ToTable("Courses"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Forum", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<int>("CourseId") + .HasColumnType("integer"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("character varying(50)"); + + b.HasKey("Id"); + + b.HasIndex("CourseId", "Name") + .IsUnique(); + + b.ToTable("Forums"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.ForumUser", b => + { + b.Property<int>("ForumId") + .HasColumnType("integer"); + + b.Property<int>("UserId") + .HasColumnType("integer"); + + b.HasKey("ForumId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ForumUsers"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Post", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<DateTime>("Date") + .HasColumnType("timestamp without time zone"); + + b.Property<int>("ForumId") + .HasColumnType("integer"); + + b.Property<string>("Title") + .IsRequired() + .HasColumnType("character varying(100)"); + + b.Property<int>("UserId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.HasIndex("ForumId", "Title") + .IsUnique(); + + b.ToTable("Posts"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.PostMessage", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Content") + .IsRequired() + .HasColumnType("character varying(10485760)"); + + b.Property<DateTime>("Date") + .HasColumnType("timestamp without time zone"); + + b.Property<int>("PostId") + .HasColumnType("integer"); + + b.Property<int>("UserId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PostId"); + + b.HasIndex("UserId"); + + b.ToTable("PostMessages"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Professor", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("IdentityCard") + .IsRequired() + .HasColumnType("character varying(50)"); + + b.Property<int>("TenantId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.HasIndex("IdentityCard", "TenantId") + .IsUnique(); + + b.ToTable("Professors"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.ProfessorCourse", b => + { + b.Property<int>("ProfessorId") + .HasColumnType("integer"); + + b.Property<int>("CourseId") + .HasColumnType("integer"); + + b.HasKey("ProfessorId", "CourseId"); + + b.HasIndex("CourseId"); + + b.ToTable("ProfessorCourses"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Student", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<int>("Age") + .HasColumnType("integer"); + + b.Property<string>("IdentityCard") + .IsRequired() + .HasColumnType("character varying(50)"); + + b.Property<int>("TenantId") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("TenantId"); + + b.HasIndex("IdentityCard", "TenantId") + .IsUnique(); + + b.ToTable("Students"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.StudentCourse", b => + { + b.Property<int>("StudentId") + .HasColumnType("integer"); + + b.Property<int>("CourseId") + .HasColumnType("integer"); + + b.HasKey("StudentId", "CourseId"); + + b.HasIndex("CourseId"); + + b.ToTable("StudentCourses"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Tenant", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("character varying(50)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("Tenants"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.User", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Email") + .IsRequired() + .HasColumnType("character varying(255)"); + + b.Property<string>("FirstName") + .IsRequired() + .HasColumnType("character varying(255)"); + + b.Property<string>("LastName") + .IsRequired() + .HasColumnType("character varying(255)"); + + b.Property<string>("Password") + .IsRequired() + .HasColumnType("character varying(255)"); + + b.Property<int?>("ProfessorId") + .HasColumnType("integer"); + + b.Property<int?>("StudentId") + .HasColumnType("integer"); + + b.Property<int>("TenantId") + .HasColumnType("integer"); + + b.Property<int>("UserTypeId") + .HasColumnType("integer"); + + b.Property<string>("Username") + .IsRequired() + .HasColumnType("character varying(50)"); + + b.HasKey("Id"); + + b.HasIndex("ProfessorId") + .IsUnique(); + + b.HasIndex("StudentId") + .IsUnique(); + + b.HasIndex("TenantId"); + + b.HasIndex("UserTypeId"); + + b.HasIndex("Username", "TenantId") + .IsUnique(); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.UserType", b => + { + b.Property<int>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("character varying(50)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("UserTypes"); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Course", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Tenant", "Tenant") + .WithMany("Courses") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Forum", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Course", "Course") + .WithMany("Forums") + .HasForeignKey("CourseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.ForumUser", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Forum", "Forum") + .WithMany("ForumUsers") + .HasForeignKey("ForumId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Tsi1.DataLayer.Entities.User", "User") + .WithMany("ForumUsers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Post", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Forum", "Forum") + .WithMany("Posts") + .HasForeignKey("ForumId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Tsi1.DataLayer.Entities.User", "User") + .WithMany("Posts") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.PostMessage", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Post", "Post") + .WithMany("PostMessages") + .HasForeignKey("PostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Tsi1.DataLayer.Entities.User", "User") + .WithMany("PostMessages") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Professor", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Tenant", "Tenant") + .WithMany("Professors") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.ProfessorCourse", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Course", "Course") + .WithMany("ProfessorCourses") + .HasForeignKey("CourseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Tsi1.DataLayer.Entities.Professor", "Professor") + .WithMany("ProfessorCourses") + .HasForeignKey("ProfessorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.Student", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Tenant", "Tenant") + .WithMany("Students") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.StudentCourse", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Course", "Course") + .WithMany("StudentCourses") + .HasForeignKey("CourseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Tsi1.DataLayer.Entities.Student", "Student") + .WithMany("StudentCourses") + .HasForeignKey("StudentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Tsi1.DataLayer.Entities.User", b => + { + b.HasOne("Tsi1.DataLayer.Entities.Professor", "Professor") + .WithOne("User") + .HasForeignKey("Tsi1.DataLayer.Entities.User", "ProfessorId"); + + b.HasOne("Tsi1.DataLayer.Entities.Student", "Student") + .WithOne("User") + .HasForeignKey("Tsi1.DataLayer.Entities.User", "StudentId"); + + b.HasOne("Tsi1.DataLayer.Entities.Tenant", "Tenant") + .WithMany("Users") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Tsi1.DataLayer.Entities.UserType", "UserType") + .WithMany() + .HasForeignKey("UserTypeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Tsi1.Api/Tsi1.DataLayer/Migrations/20201028214855_fix-Multi-Tenant.cs b/Tsi1.Api/Tsi1.DataLayer/Migrations/20201028214855_fix-Multi-Tenant.cs new file mode 100644 index 0000000..e10a386 --- /dev/null +++ b/Tsi1.Api/Tsi1.DataLayer/Migrations/20201028214855_fix-Multi-Tenant.cs @@ -0,0 +1,149 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Tsi1.DataLayer.Migrations +{ + public partial class fixMultiTenant : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Forums_Tenants_TenantId", + table: "Forums"); + + migrationBuilder.DropForeignKey( + name: "FK_PostMessages_Tenants_TenantId", + table: "PostMessages"); + + migrationBuilder.DropForeignKey( + name: "FK_Posts_Tenants_TenantId", + table: "Posts"); + + migrationBuilder.DropIndex( + name: "IX_Posts_TenantId", + table: "Posts"); + + migrationBuilder.DropIndex( + name: "IX_Posts_ForumId_Title_TenantId", + table: "Posts"); + + migrationBuilder.DropIndex( + name: "IX_PostMessages_TenantId", + table: "PostMessages"); + + migrationBuilder.DropIndex( + name: "IX_Forums_TenantId", + table: "Forums"); + + migrationBuilder.DropIndex( + name: "IX_Forums_CourseId_Name_TenantId", + table: "Forums"); + + migrationBuilder.DropColumn( + name: "TenantId", + table: "Posts"); + + migrationBuilder.DropColumn( + name: "TenantId", + table: "PostMessages"); + + migrationBuilder.DropColumn( + name: "TenantId", + table: "Forums"); + + migrationBuilder.CreateIndex( + name: "IX_Posts_ForumId_Title", + table: "Posts", + columns: new[] { "ForumId", "Title" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Forums_CourseId_Name", + table: "Forums", + columns: new[] { "CourseId", "Name" }, + unique: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_Posts_ForumId_Title", + table: "Posts"); + + migrationBuilder.DropIndex( + name: "IX_Forums_CourseId_Name", + table: "Forums"); + + migrationBuilder.AddColumn<int>( + name: "TenantId", + table: "Posts", + type: "integer", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn<int>( + name: "TenantId", + table: "PostMessages", + type: "integer", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn<int>( + name: "TenantId", + table: "Forums", + type: "integer", + nullable: false, + defaultValue: 0); + + migrationBuilder.CreateIndex( + name: "IX_Posts_TenantId", + table: "Posts", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_Posts_ForumId_Title_TenantId", + table: "Posts", + columns: new[] { "ForumId", "Title", "TenantId" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_PostMessages_TenantId", + table: "PostMessages", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_Forums_TenantId", + table: "Forums", + column: "TenantId"); + + migrationBuilder.CreateIndex( + name: "IX_Forums_CourseId_Name_TenantId", + table: "Forums", + columns: new[] { "CourseId", "Name", "TenantId" }, + unique: true); + + migrationBuilder.AddForeignKey( + name: "FK_Forums_Tenants_TenantId", + table: "Forums", + column: "TenantId", + principalTable: "Tenants", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_PostMessages_Tenants_TenantId", + table: "PostMessages", + column: "TenantId", + principalTable: "Tenants", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_Posts_Tenants_TenantId", + table: "Posts", + column: "TenantId", + principalTable: "Tenants", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/Tsi1.Api/Tsi1.DataLayer/Migrations/Tsi1ContextModelSnapshot.cs b/Tsi1.Api/Tsi1.DataLayer/Migrations/Tsi1ContextModelSnapshot.cs index 87302ae..ad82bac 100644 --- a/Tsi1.Api/Tsi1.DataLayer/Migrations/Tsi1ContextModelSnapshot.cs +++ b/Tsi1.Api/Tsi1.DataLayer/Migrations/Tsi1ContextModelSnapshot.cs @@ -57,14 +57,9 @@ namespace Tsi1.DataLayer.Migrations .IsRequired() .HasColumnType("character varying(50)"); - b.Property<int>("TenantId") - .HasColumnType("integer"); - b.HasKey("Id"); - b.HasIndex("TenantId"); - - b.HasIndex("CourseId", "Name", "TenantId") + b.HasIndex("CourseId", "Name") .IsUnique(); b.ToTable("Forums"); @@ -98,9 +93,6 @@ namespace Tsi1.DataLayer.Migrations b.Property<int>("ForumId") .HasColumnType("integer"); - b.Property<int>("TenantId") - .HasColumnType("integer"); - b.Property<string>("Title") .IsRequired() .HasColumnType("character varying(100)"); @@ -110,11 +102,9 @@ namespace Tsi1.DataLayer.Migrations b.HasKey("Id"); - b.HasIndex("TenantId"); - b.HasIndex("UserId"); - b.HasIndex("ForumId", "Title", "TenantId") + b.HasIndex("ForumId", "Title") .IsUnique(); b.ToTable("Posts"); @@ -137,9 +127,6 @@ namespace Tsi1.DataLayer.Migrations b.Property<int>("PostId") .HasColumnType("integer"); - b.Property<int>("TenantId") - .HasColumnType("integer"); - b.Property<int>("UserId") .HasColumnType("integer"); @@ -147,8 +134,6 @@ namespace Tsi1.DataLayer.Migrations b.HasIndex("PostId"); - b.HasIndex("TenantId"); - b.HasIndex("UserId"); b.ToTable("PostMessages"); @@ -346,12 +331,6 @@ namespace Tsi1.DataLayer.Migrations .HasForeignKey("CourseId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - - b.HasOne("Tsi1.DataLayer.Entities.Tenant", "Tenant") - .WithMany("Forums") - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); }); modelBuilder.Entity("Tsi1.DataLayer.Entities.ForumUser", b => @@ -377,12 +356,6 @@ namespace Tsi1.DataLayer.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("Tsi1.DataLayer.Entities.Tenant", "Tenant") - .WithMany("Posts") - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - b.HasOne("Tsi1.DataLayer.Entities.User", "User") .WithMany("Posts") .HasForeignKey("UserId") @@ -398,12 +371,6 @@ namespace Tsi1.DataLayer.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("Tsi1.DataLayer.Entities.Tenant", "Tenant") - .WithMany("PostMessages") - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - b.HasOne("Tsi1.DataLayer.Entities.User", "User") .WithMany("PostMessages") .HasForeignKey("UserId") -- GitLab