From 2178cde4dd92f9fe8acba6ea6772b0bec320e319 Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz Date: Sun, 10 Jan 2021 18:17:40 +0100 Subject: [PATCH] rest --- .../Result/EditionReportSchemaResult.cs | 10 ++ .../InternshipDbContext.cs | 4 +- ...ner.cs => 20210110161858_Init.Designer.cs} | 104 ++++++++++++++++-- ...9193303_init.cs => 20210110161858_Init.cs} | 59 +++++++++- .../InternshipDbContextModelSnapshot.cs | 100 +++++++++++++++-- 5 files changed, 255 insertions(+), 22 deletions(-) create mode 100644 src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs rename src/InternshipSystem.Repository/Migrations/{20210109193303_init.Designer.cs => 20210110161858_Init.Designer.cs} (88%) rename src/InternshipSystem.Repository/Migrations/{20210109193303_init.cs => 20210110161858_Init.cs} (89%) diff --git a/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs b/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs new file mode 100644 index 0000000..9770ad5 --- /dev/null +++ b/src/InternshipSystem.Api/Result/EditionReportSchemaResult.cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using InternshipSystem.Core.Entity; + +namespace InternshipSystem.Api.Result +{ + public class EditionReportSchemaResult + { + public List Fields { get; set; } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Repository/InternshipDbContext.cs b/src/InternshipSystem.Repository/InternshipDbContext.cs index a216e1b..a3a4cd2 100644 --- a/src/InternshipSystem.Repository/InternshipDbContext.cs +++ b/src/InternshipSystem.Repository/InternshipDbContext.cs @@ -113,7 +113,9 @@ namespace InternshipSystem.Repository }); modelBuilder.Entity() - .HasDiscriminator(r => r.FieldType); + .HasDiscriminator("field_discrimnator") + .HasValue("single") + .HasValue("choice"); modelBuilder.Entity() .Property(r => r.Choices) diff --git a/src/InternshipSystem.Repository/Migrations/20210109193303_init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20210110161858_Init.Designer.cs similarity index 88% rename from src/InternshipSystem.Repository/Migrations/20210109193303_init.Designer.cs rename to src/InternshipSystem.Repository/Migrations/20210110161858_Init.Designer.cs index 049b8d1..7ccda94 100644 --- a/src/InternshipSystem.Repository/Migrations/20210109193303_init.Designer.cs +++ b/src/InternshipSystem.Repository/Migrations/20210110161858_Init.Designer.cs @@ -10,8 +10,8 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace InternshipSystem.Repository.Migrations { [DbContext(typeof(InternshipDbContext))] - [Migration("20210109193303_init")] - partial class init + [Migration("20210110161858_Init")] + partial class Init { protected override void BuildTargetModel(ModelBuilder modelBuilder) { @@ -344,6 +344,47 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("internship_types"); }); + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property("DescriptionEng") + .HasColumnName("description_eng") + .HasColumnType("text"); + + b.Property("FieldType") + .HasColumnName("field_type") + .HasColumnType("integer"); + + b.Property("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.Property("field_discrimnator") + .IsRequired() + .HasColumnName("field_discrimnator") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report_fields"); + + b.ToTable("report_fields"); + + b.HasDiscriminator("field_discrimnator").HasValue("single"); + }); + modelBuilder.Entity("InternshipSystem.Core.Report", b => { b.Property("Id") @@ -352,18 +393,14 @@ namespace InternshipSystem.Repository.Migrations .HasColumnType("bigint") .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - b.Property("Range") - .HasColumnName("range") - .HasColumnType("integer"); - - b.Property("SiteAddress") - .HasColumnName("site_address") - .HasColumnType("text"); - b.Property("State") .HasColumnName("state") .HasColumnType("integer"); + b.Property("Value") + .HasColumnName("value") + .HasColumnType("jsonb"); + b.HasKey("Id") .HasName("pk_report"); @@ -499,6 +536,36 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("program_subject"); }); + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.Property("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property("ReportFieldId") + .HasColumnName("report_field_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "ReportFieldId") + .HasName("pk_report_field_edition"); + + b.HasIndex("ReportFieldId") + .HasName("ix_report_field_edition_report_field_id"); + + b.ToTable("report_field_edition"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportChoiceField", b => + { + b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); + + b.Property("Choices") + .HasColumnName("choices") + .HasColumnType("text"); + + b.HasDiscriminator().HasValue("choice"); + }); + modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => { b.HasOne("InternshipSystem.Core.Company", null) @@ -696,6 +763,23 @@ namespace InternshipSystem.Repository.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("ReportSchema") + .HasForeignKey("EditionId") + .HasConstraintName("fk_report_field_edition_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.ReportField", "Field") + .WithMany() + .HasForeignKey("ReportFieldId") + .HasConstraintName("fk_report_field_edition_report_fields_report_field_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); #pragma warning restore 612, 618 } } diff --git a/src/InternshipSystem.Repository/Migrations/20210109193303_init.cs b/src/InternshipSystem.Repository/Migrations/20210110161858_Init.cs similarity index 89% rename from src/InternshipSystem.Repository/Migrations/20210109193303_init.cs rename to src/InternshipSystem.Repository/Migrations/20210110161858_Init.cs index 406b485..b55c366 100644 --- a/src/InternshipSystem.Repository/Migrations/20210109193303_init.cs +++ b/src/InternshipSystem.Repository/Migrations/20210110161858_Init.cs @@ -4,7 +4,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace InternshipSystem.Repository.Migrations { - public partial class init : Migration + public partial class Init : Migration { protected override void Up(MigrationBuilder migrationBuilder) { @@ -74,14 +74,32 @@ namespace InternshipSystem.Repository.Migrations id = table.Column(nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), state = table.Column(nullable: false), - range = table.Column(nullable: false), - site_address = table.Column(nullable: true) + value = table.Column(type: "jsonb", nullable: true) }, constraints: table => { table.PrimaryKey("pk_report", x => x.id); }); + migrationBuilder.CreateTable( + name: "report_fields", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + label = table.Column(nullable: true), + label_eng = table.Column(nullable: true), + description = table.Column(nullable: true), + description_eng = table.Column(nullable: true), + field_type = table.Column(nullable: false), + field_discrimnator = table.Column(nullable: false), + choices = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_report_fields", x => x.id); + }); + migrationBuilder.CreateTable( name: "static_pages", columns: table => new @@ -253,6 +271,30 @@ namespace InternshipSystem.Repository.Migrations onDelete: ReferentialAction.Cascade); }); + migrationBuilder.CreateTable( + name: "report_field_edition", + columns: table => new + { + edition_id = table.Column(nullable: false), + report_field_id = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_report_field_edition", x => new { x.edition_id, x.report_field_id }); + table.ForeignKey( + name: "fk_report_field_edition_editions_edition_id", + column: x => x.edition_id, + principalTable: "editions", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "fk_report_field_edition_report_fields_report_field_id", + column: x => x.report_field_id, + principalTable: "report_fields", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + migrationBuilder.CreateTable( name: "internships", columns: table => new @@ -426,6 +468,11 @@ namespace InternshipSystem.Repository.Migrations name: "ix_program_subject_internship_subject_id", table: "program_subject", column: "internship_subject_id"); + + migrationBuilder.CreateIndex( + name: "ix_report_field_edition_report_field_id", + table: "report_field_edition", + column: "report_field_id"); } protected override void Down(MigrationBuilder migrationBuilder) @@ -442,6 +489,9 @@ namespace InternshipSystem.Repository.Migrations migrationBuilder.DropTable( name: "program_subject"); + migrationBuilder.DropTable( + name: "report_field_edition"); + migrationBuilder.DropTable( name: "static_pages"); @@ -451,6 +501,9 @@ namespace InternshipSystem.Repository.Migrations migrationBuilder.DropTable( name: "internship_subject"); + migrationBuilder.DropTable( + name: "report_fields"); + migrationBuilder.DropTable( name: "internships"); diff --git a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs index 032fcad..ad39bf2 100644 --- a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs +++ b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs @@ -342,6 +342,47 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("internship_types"); }); + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property("DescriptionEng") + .HasColumnName("description_eng") + .HasColumnType("text"); + + b.Property("FieldType") + .HasColumnName("field_type") + .HasColumnType("integer"); + + b.Property("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.Property("field_discrimnator") + .IsRequired() + .HasColumnName("field_discrimnator") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report_fields"); + + b.ToTable("report_fields"); + + b.HasDiscriminator("field_discrimnator").HasValue("single"); + }); + modelBuilder.Entity("InternshipSystem.Core.Report", b => { b.Property("Id") @@ -350,18 +391,14 @@ namespace InternshipSystem.Repository.Migrations .HasColumnType("bigint") .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - b.Property("Range") - .HasColumnName("range") - .HasColumnType("integer"); - - b.Property("SiteAddress") - .HasColumnName("site_address") - .HasColumnType("text"); - b.Property("State") .HasColumnName("state") .HasColumnType("integer"); + b.Property("Value") + .HasColumnName("value") + .HasColumnType("jsonb"); + b.HasKey("Id") .HasName("pk_report"); @@ -497,6 +534,36 @@ namespace InternshipSystem.Repository.Migrations b.ToTable("program_subject"); }); + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.Property("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property("ReportFieldId") + .HasColumnName("report_field_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "ReportFieldId") + .HasName("pk_report_field_edition"); + + b.HasIndex("ReportFieldId") + .HasName("ix_report_field_edition_report_field_id"); + + b.ToTable("report_field_edition"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.ReportChoiceField", b => + { + b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); + + b.Property("Choices") + .HasColumnName("choices") + .HasColumnType("text"); + + b.HasDiscriminator().HasValue("choice"); + }); + modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => { b.HasOne("InternshipSystem.Core.Company", null) @@ -694,6 +761,23 @@ namespace InternshipSystem.Repository.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ReportFieldEdition", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("ReportSchema") + .HasForeignKey("EditionId") + .HasConstraintName("fk_report_field_edition_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.ReportField", "Field") + .WithMany() + .HasForeignKey("ReportFieldId") + .HasConstraintName("fk_report_field_edition_report_fields_report_field_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); #pragma warning restore 612, 618 } }