From b2d7fcb34ebcf1567a50a0ce778b8abc53de537a Mon Sep 17 00:00:00 2001 From: Michal Bohdanowicz Date: Sat, 9 Jan 2021 12:37:12 +0100 Subject: [PATCH] XD --- global.json | 5 - .../Controllers/ReportFieldsController.cs | 32 + src/InternshipSystem.Core/Entity/Edition.cs | 1 + .../Entity/ReportField.cs | 29 + .../InternshipDbContext.cs | 31 + .../20201128203805_init.Designer.cs | 699 +--------------- .../Migrations/20201128203805_init.cs | 482 +---------- .../20210107220846_Init.Designer.cs | 778 ++++++++++++++++++ .../Migrations/20210107220846_Init.cs | 533 ++++++++++++ .../InternshipDbContextModelSnapshot.cs | 96 ++- 10 files changed, 1494 insertions(+), 1192 deletions(-) delete mode 100644 global.json create mode 100644 src/InternshipSystem.Api/Controllers/ReportFieldsController.cs create mode 100644 src/InternshipSystem.Core/Entity/ReportField.cs create mode 100644 src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs create mode 100644 src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs diff --git a/global.json b/global.json deleted file mode 100644 index c120c81..0000000 --- a/global.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "sdk": { - "version": "3.1.301" - } -} \ No newline at end of file diff --git a/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs new file mode 100644 index 0000000..88a2877 --- /dev/null +++ b/src/InternshipSystem.Api/Controllers/ReportFieldsController.cs @@ -0,0 +1,32 @@ +using System.Threading; +using System.Threading.Tasks; +using InternshipSystem.Repository; +using Microsoft.AspNetCore.Mvc; + +namespace InternshipSystem.Api.Controllers +{ + public class ReportFieldsController : ControllerBase + { + private readonly InternshipDbContext _context; + + public ReportFieldsController(InternshipDbContext context) + { + _context = context; + } + + public async Task CreateField(FieldCreateRequest request, CancellationToken ct) + { + + + return Ok(); + } + } + + public class FieldCreateRequest + { + public string Label { get; set; } + public string LabelEng { get; set; } + public string Description { get; set; } + public string DescriptionEng { get; set; } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Core/Entity/Edition.cs b/src/InternshipSystem.Core/Entity/Edition.cs index dd00699..705f045 100644 --- a/src/InternshipSystem.Core/Entity/Edition.cs +++ b/src/InternshipSystem.Core/Entity/Edition.cs @@ -17,6 +17,7 @@ namespace InternshipSystem.Core public List Internships { get; set; } public List AvailableSubjects { get; set; } public List AvailableInternshipTypes { get; set; } + public List ReportSchema { get; set; } public bool IsOpen => EditionFinish < DateTime.Today; diff --git a/src/InternshipSystem.Core/Entity/ReportField.cs b/src/InternshipSystem.Core/Entity/ReportField.cs new file mode 100644 index 0000000..9b6b6a8 --- /dev/null +++ b/src/InternshipSystem.Core/Entity/ReportField.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; + +namespace InternshipSystem.Core.Entity +{ + public class ReportField + { + public long Id { get; set; } + public string Label { get; set; } + public string LabelEng { get; set; } + public string Description { get; set; } + public string DescriptionEng { get; set; } + public FieldType FieldType { get; set; } + } + + public enum FieldType + { + LongText, + ShortText, + Select, + Radial, + Checkbox + } + + public class ReportChoiceField : ReportField + { + public string[] Choices { get; set; } + } +} \ No newline at end of file diff --git a/src/InternshipSystem.Repository/InternshipDbContext.cs b/src/InternshipSystem.Repository/InternshipDbContext.cs index 117f5ea..adf2279 100644 --- a/src/InternshipSystem.Repository/InternshipDbContext.cs +++ b/src/InternshipSystem.Repository/InternshipDbContext.cs @@ -1,3 +1,5 @@ +using System; +using System.Linq; using Microsoft.EntityFrameworkCore; using InternshipSystem.Core; using InternshipSystem.Core.Entity; @@ -90,6 +92,35 @@ namespace InternshipSystem.Repository .WithMany() .HasForeignKey(subject => subject.InternshipSubjectId); }); + + modelBuilder.Entity(builder => + { + builder + .HasKey(e => new {e.EditionId, e.ReportFieldId}); + + builder + .HasOne(e => e.Edition) + .WithMany(edition => edition.ReportSchema) + .HasForeignKey(r => r.EditionId); + + builder + .HasOne(e => e.Field) + .WithMany() + .HasForeignKey(r => r.ReportFieldId); + }); + + modelBuilder.Entity() + .HasDiscriminator(r => r.FieldType); + + modelBuilder.Entity() + .Property(r => r.Choices) + .HasConversion( + a => string.Join('#', a), + s => s.Split('#', StringSplitOptions.RemoveEmptyEntries)); + + modelBuilder.Entity() + .Property(r => r.Value) + .HasColumnType("jsonb"); } } } \ No newline at end of file diff --git a/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs index 0f461fa..5f28270 100644 --- a/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs +++ b/src/InternshipSystem.Repository/Migrations/20201128203805_init.Designer.cs @@ -1,698 +1 @@ -// -using System; -using InternshipSystem.Repository; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -namespace InternshipSystem.Repository.Migrations -{ - [DbContext(typeof(InternshipDbContext))] - [Migration("20201128203805_init")] - partial class init - { - 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("InternshipSystem.Core.BranchOffice", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("CompanyId") - .HasColumnName("company_id") - .HasColumnType("bigint"); - - b.Property("Provider") - .HasColumnName("provider") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_branch_office"); - - b.HasIndex("CompanyId") - .HasName("ix_branch_office_company_id"); - - b.ToTable("branch_office"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Company", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("Name") - .HasColumnName("name") - .HasColumnType("text"); - - b.Property("Nip") - .HasColumnName("nip") - .HasColumnType("text"); - - b.Property("Provider") - .HasColumnName("provider") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_companies"); - - b.ToTable("companies"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Document", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("Description") - .HasColumnName("description") - .HasColumnType("text"); - - b.Property("InternshipId") - .HasColumnName("internship_id") - .HasColumnType("bigint"); - - b.Property("RejectionReason") - .HasColumnName("rejection_reason") - .HasColumnType("text"); - - b.Property("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property("Type") - .HasColumnName("type") - .HasColumnType("integer"); - - b.HasKey("Id") - .HasName("pk_document"); - - b.HasIndex("InternshipId") - .HasName("ix_document_internship_id"); - - b.ToTable("document"); - }); - - modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => - { - b.Property("DocumentId") - .HasColumnName("document_id") - .HasColumnType("bigint"); - - b.Property("File") - .HasColumnName("file") - .HasColumnType("bytea"); - - b.Property("Filename") - .HasColumnName("filename") - .HasColumnType("text"); - - b.Property("Mime") - .HasColumnName("mime") - .HasColumnType("text"); - - b.Property("Size") - .HasColumnName("size") - .HasColumnType("bigint"); - - b.HasKey("DocumentId") - .HasName("pk_document_scan"); - - b.ToTable("document_scan"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Edition", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("uuid"); - - b.Property("CourseId") - .HasColumnName("course_id") - .HasColumnType("bigint"); - - b.Property("EditionFinish") - .HasColumnName("edition_finish") - .HasColumnType("timestamp without time zone"); - - b.Property("EditionStart") - .HasColumnName("edition_start") - .HasColumnType("timestamp without time zone"); - - b.Property("ReportingStart") - .HasColumnName("reporting_start") - .HasColumnType("timestamp without time zone"); - - b.HasKey("Id") - .HasName("pk_editions"); - - b.HasIndex("CourseId") - .HasName("ix_editions_course_id"); - - b.ToTable("editions"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Course", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("Name") - .HasColumnName("name") - .HasColumnType("text"); - - b.Property("NameEng") - .HasColumnName("name_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_courses"); - - b.ToTable("courses"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property("Grade") - .HasColumnName("grade") - .HasColumnType("real"); - - b.Property("InternshipRegistrationId") - .HasColumnName("internship_registration_id") - .HasColumnType("bigint"); - - b.Property("ReportId") - .HasColumnName("report_id") - .HasColumnType("bigint"); - - b.Property("StudentId") - .HasColumnName("student_id") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_internship"); - - b.HasIndex("EditionId") - .HasName("ix_internship_edition_id"); - - b.HasIndex("InternshipRegistrationId") - .HasName("ix_internship_internship_registration_id"); - - b.HasIndex("ReportId") - .HasName("ix_internship_report_id"); - - b.HasIndex("StudentId") - .HasName("ix_internship_student_id"); - - b.ToTable("internship"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("BranchAddressId") - .HasColumnName("branch_address_id") - .HasColumnType("bigint"); - - b.Property("CompanyId") - .HasColumnName("company_id") - .HasColumnType("bigint"); - - b.Property("DeclaredHours") - .HasColumnName("declared_hours") - .HasColumnType("integer"); - - b.Property("End") - .HasColumnName("end") - .HasColumnType("timestamp without time zone"); - - b.Property("Start") - .HasColumnName("start") - .HasColumnType("timestamp without time zone"); - - b.Property("State") - .HasColumnName("state") - .HasColumnType("integer"); - - b.Property("TypeId") - .HasColumnName("type_id") - .HasColumnType("bigint"); - - b.HasKey("Id") - .HasName("pk_internship_registration"); - - b.HasIndex("BranchAddressId") - .HasName("ix_internship_registration_branch_address_id"); - - b.HasIndex("CompanyId") - .HasName("ix_internship_registration_company_id"); - - b.HasIndex("TypeId") - .HasName("ix_internship_registration_type_id"); - - b.ToTable("internship_registration"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", 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.HasKey("Id") - .HasName("pk_internship_subject"); - - b.ToTable("internship_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", 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("Label") - .HasColumnName("label") - .HasColumnType("text"); - - b.Property("LabelEng") - .HasColumnName("label_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_internship_types"); - - b.ToTable("internship_types"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Report", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .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.HasKey("Id") - .HasName("pk_report"); - - b.ToTable("report"); - }); - - modelBuilder.Entity("InternshipSystem.Core.StaticPage", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("AccessName") - .HasColumnName("access_name") - .HasColumnType("text"); - - b.Property("Content") - .HasColumnName("content") - .HasColumnType("text"); - - b.Property("ContentEng") - .HasColumnName("content_eng") - .HasColumnType("text"); - - b.Property("Title") - .HasColumnName("title") - .HasColumnType("text"); - - b.Property("TitleEng") - .HasColumnName("title_eng") - .HasColumnType("text"); - - b.HasKey("Id") - .HasName("pk_static_pages"); - - b.ToTable("static_pages"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Student", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("AlbumNumber") - .HasColumnName("album_number") - .HasColumnType("integer"); - - b.Property("Course") - .HasColumnName("course") - .HasColumnType("text"); - - b.Property("Email") - .HasColumnName("email") - .HasColumnType("text"); - - b.Property("FirstName") - .HasColumnName("first_name") - .HasColumnType("text"); - - b.Property("LastName") - .HasColumnName("last_name") - .HasColumnType("text"); - - b.Property("Semester") - .HasColumnName("semester") - .HasColumnType("integer"); - - b.HasKey("Id") - .HasName("pk_students"); - - b.ToTable("students"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => - { - b.Property("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property("InternshipTypeId") - .HasColumnName("internship_type_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "InternshipTypeId") - .HasName("pk_edition_internship_type"); - - b.HasIndex("InternshipTypeId") - .HasName("ix_edition_internship_type_internship_type_id"); - - b.ToTable("edition_internship_type"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => - { - b.Property("EditionId") - .HasColumnName("edition_id") - .HasColumnType("uuid"); - - b.Property("InternshipSubjectId") - .HasColumnName("internship_subject_id") - .HasColumnType("bigint"); - - b.HasKey("EditionId", "InternshipSubjectId") - .HasName("pk_edition_subject"); - - b.HasIndex("InternshipSubjectId") - .HasName("ix_edition_subject_internship_subject_id"); - - b.ToTable("edition_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => - { - b.Property("InternshipRegistrationId") - .HasColumnName("internship_registration_id") - .HasColumnType("bigint"); - - b.Property("InternshipSubjectId") - .HasColumnName("internship_subject_id") - .HasColumnType("bigint"); - - b.HasKey("InternshipRegistrationId", "InternshipSubjectId") - .HasName("pk_program_subject"); - - b.HasIndex("InternshipSubjectId") - .HasName("ix_program_subject_internship_subject_id"); - - b.ToTable("program_subject"); - }); - - modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => - { - b.HasOne("InternshipSystem.Core.Company", null) - .WithMany("Branches") - .HasForeignKey("CompanyId") - .HasConstraintName("fk_branch_office_companies_company_id"); - - b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 => - { - b1.Property("BranchOfficeId") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b1.Property("Building") - .HasColumnName("building") - .HasColumnType("text"); - - b1.Property("City") - .HasColumnName("city") - .HasColumnType("text"); - - b1.Property("Country") - .HasColumnName("country") - .HasColumnType("text"); - - b1.Property("PostalCode") - .HasColumnName("postal_code") - .HasColumnType("text"); - - b1.Property("Street") - .HasColumnName("street") - .HasColumnType("text"); - - b1.HasKey("BranchOfficeId") - .HasName("pk_branch_office"); - - b1.ToTable("branch_office"); - - b1.WithOwner() - .HasForeignKey("BranchOfficeId") - .HasConstraintName("fk_branch_address_branch_office_branch_office_id"); - }); - }); - - modelBuilder.Entity("InternshipSystem.Core.Document", b => - { - b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null) - .WithMany("Documentation") - .HasForeignKey("InternshipId") - .HasConstraintName("fk_document_internship_internship_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => - { - b.HasOne("InternshipSystem.Core.Document", "Document") - .WithOne("Scan") - .HasForeignKey("InternshipSystem.Core.DocumentScan", "DocumentId") - .HasConstraintName("fk_document_scan_document_document_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.Edition", b => - { - b.HasOne("InternshipSystem.Core.Entity.Course", "Course") - .WithMany() - .HasForeignKey("CourseId") - .HasConstraintName("fk_editions_courses_course_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("Internships") - .HasForeignKey("EditionId") - .HasConstraintName("fk_internship_editions_edition_id"); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration") - .WithMany() - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_internship_internship_registration_internship_registration_"); - - b.HasOne("InternshipSystem.Core.Report", "Report") - .WithMany() - .HasForeignKey("ReportId") - .HasConstraintName("fk_internship_report_report_id"); - - b.HasOne("InternshipSystem.Core.Student", "Student") - .WithMany() - .HasForeignKey("StudentId") - .HasConstraintName("fk_internship_students_student_id"); - }); - - modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => - { - b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress") - .WithMany() - .HasForeignKey("BranchAddressId") - .HasConstraintName("fk_internship_registration_branch_office_branch_address_id"); - - b.HasOne("InternshipSystem.Core.Company", "Company") - .WithMany() - .HasForeignKey("CompanyId") - .HasConstraintName("fk_internship_registration_companies_company_id"); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type") - .WithMany() - .HasForeignKey("TypeId") - .HasConstraintName("fk_internship_registration_internship_types_type_id"); - - b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 => - { - b1.Property("InternshipRegistrationId") - .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("bigint") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b1.Property("Email") - .HasColumnName("email") - .HasColumnType("text"); - - b1.Property("FirstName") - .HasColumnName("first_name") - .HasColumnType("text"); - - b1.Property("LastName") - .HasColumnName("last_name") - .HasColumnType("text"); - - b1.Property("PhoneNumber") - .HasColumnName("phone_number") - .HasColumnType("text"); - - b1.HasKey("InternshipRegistrationId") - .HasName("pk_internship_registration"); - - b1.ToTable("internship_registration"); - - b1.WithOwner() - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_mentor_internship_registration_internship_registration_id"); - }); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("AvailableInternshipTypes") - .HasForeignKey("EditionId") - .HasConstraintName("fk_edition_internship_type_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType") - .WithMany() - .HasForeignKey("InternshipTypeId") - .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => - { - b.HasOne("InternshipSystem.Core.Edition", "Edition") - .WithMany("AvailableSubjects") - .HasForeignKey("EditionId") - .HasConstraintName("fk_edition_subject_editions_edition_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") - .WithMany() - .HasForeignKey("InternshipSubjectId") - .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => - { - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration") - .WithMany("Subjects") - .HasForeignKey("InternshipRegistrationId") - .HasConstraintName("fk_program_subject_internship_registration_internship_registrat") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") - .WithMany() - .HasForeignKey("InternshipSubjectId") - .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); -#pragma warning restore 612, 618 - } - } -} + \ No newline at end of file diff --git a/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs b/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs index ac30931..5f28270 100644 --- a/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs +++ b/src/InternshipSystem.Repository/Migrations/20201128203805_init.cs @@ -1,481 +1 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -namespace InternshipSystem.Repository.Migrations -{ - public partial class init : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "companies", - columns: table => new - { - id = table.Column(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - nip = table.Column(nullable: true), - name = table.Column(nullable: true), - provider = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_companies", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "courses", - columns: table => new - { - id = table.Column(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - name = table.Column(nullable: true), - name_eng = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_courses", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "internship_subject", - columns: table => new - { - id = table.Column(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - description = table.Column(nullable: true), - description_eng = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_internship_subject", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "internship_types", - 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) - }, - constraints: table => - { - table.PrimaryKey("pk_internship_types", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "report", - columns: table => new - { - 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) - }, - constraints: table => - { - table.PrimaryKey("pk_report", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "static_pages", - columns: table => new - { - id = table.Column(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - access_name = table.Column(nullable: true), - title = table.Column(nullable: true), - title_eng = table.Column(nullable: true), - content = table.Column(nullable: true), - content_eng = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_static_pages", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "students", - columns: table => new - { - id = table.Column(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - album_number = table.Column(nullable: false), - first_name = table.Column(nullable: true), - last_name = table.Column(nullable: true), - email = table.Column(nullable: true), - course = table.Column(nullable: true), - semester = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_students", x => x.id); - }); - - migrationBuilder.CreateTable( - name: "branch_office", - columns: table => new - { - id = table.Column(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - street = table.Column(nullable: true), - building = table.Column(nullable: true), - city = table.Column(nullable: true), - postal_code = table.Column(nullable: true), - country = table.Column(nullable: true), - provider = table.Column(nullable: false), - company_id = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_branch_office", x => x.id); - table.ForeignKey( - name: "fk_branch_office_companies_company_id", - column: x => x.company_id, - principalTable: "companies", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "editions", - columns: table => new - { - id = table.Column(nullable: false), - edition_start = table.Column(nullable: false), - edition_finish = table.Column(nullable: false), - reporting_start = table.Column(nullable: false), - course_id = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_editions", x => x.id); - table.ForeignKey( - name: "fk_editions_courses_course_id", - column: x => x.course_id, - principalTable: "courses", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "internship_registration", - columns: table => new - { - id = table.Column(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - company_id = table.Column(nullable: true), - branch_address_id = table.Column(nullable: true), - start = table.Column(nullable: false), - end = table.Column(nullable: false), - first_name = table.Column(nullable: true), - last_name = table.Column(nullable: true), - email = table.Column(nullable: true), - phone_number = table.Column(nullable: true), - type_id = table.Column(nullable: true), - declared_hours = table.Column(nullable: false), - state = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_internship_registration", x => x.id); - table.ForeignKey( - name: "fk_internship_registration_branch_office_branch_address_id", - column: x => x.branch_address_id, - principalTable: "branch_office", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_registration_companies_company_id", - column: x => x.company_id, - principalTable: "companies", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_registration_internship_types_type_id", - column: x => x.type_id, - principalTable: "internship_types", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "edition_internship_type", - columns: table => new - { - edition_id = table.Column(nullable: false), - internship_type_id = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_edition_internship_type", x => new { x.edition_id, x.internship_type_id }); - table.ForeignKey( - name: "fk_edition_internship_type_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_edition_internship_type_internship_types_internship_type_id", - column: x => x.internship_type_id, - principalTable: "internship_types", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "edition_subject", - columns: table => new - { - edition_id = table.Column(nullable: false), - internship_subject_id = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_edition_subject", x => new { x.edition_id, x.internship_subject_id }); - table.ForeignKey( - name: "fk_edition_subject_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_edition_subject_internship_subject_internship_subject_id", - column: x => x.internship_subject_id, - principalTable: "internship_subject", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "internship", - columns: table => new - { - id = table.Column(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - student_id = table.Column(nullable: true), - internship_registration_id = table.Column(nullable: true), - report_id = table.Column(nullable: true), - edition_id = table.Column(nullable: true), - grade = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_internship", x => x.id); - table.ForeignKey( - name: "fk_internship_editions_edition_id", - column: x => x.edition_id, - principalTable: "editions", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_internship_registration_internship_registration_", - column: x => x.internship_registration_id, - principalTable: "internship_registration", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_report_report_id", - column: x => x.report_id, - principalTable: "report", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "fk_internship_students_student_id", - column: x => x.student_id, - principalTable: "students", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "program_subject", - columns: table => new - { - internship_registration_id = table.Column(nullable: false), - internship_subject_id = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("pk_program_subject", x => new { x.internship_registration_id, x.internship_subject_id }); - table.ForeignKey( - name: "fk_program_subject_internship_registration_internship_registrat", - column: x => x.internship_registration_id, - principalTable: "internship_registration", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "fk_program_subject_internship_subject_internship_subject_id", - column: x => x.internship_subject_id, - principalTable: "internship_subject", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "document", - columns: table => new - { - id = table.Column(nullable: false) - .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), - description = table.Column(nullable: true), - type = table.Column(nullable: false), - state = table.Column(nullable: false), - rejection_reason = table.Column(nullable: true), - internship_id = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_document", x => x.id); - table.ForeignKey( - name: "fk_document_internship_internship_id", - column: x => x.internship_id, - principalTable: "internship", - principalColumn: "id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "document_scan", - columns: table => new - { - document_id = table.Column(nullable: false), - size = table.Column(nullable: false), - filename = table.Column(nullable: true), - mime = table.Column(nullable: true), - file = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("pk_document_scan", x => x.document_id); - table.ForeignKey( - name: "fk_document_scan_document_document_id", - column: x => x.document_id, - principalTable: "document", - principalColumn: "id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "ix_branch_office_company_id", - table: "branch_office", - column: "company_id"); - - migrationBuilder.CreateIndex( - name: "ix_document_internship_id", - table: "document", - column: "internship_id"); - - migrationBuilder.CreateIndex( - name: "ix_edition_internship_type_internship_type_id", - table: "edition_internship_type", - column: "internship_type_id"); - - migrationBuilder.CreateIndex( - name: "ix_edition_subject_internship_subject_id", - table: "edition_subject", - column: "internship_subject_id"); - - migrationBuilder.CreateIndex( - name: "ix_editions_course_id", - table: "editions", - column: "course_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_edition_id", - table: "internship", - column: "edition_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_internship_registration_id", - table: "internship", - column: "internship_registration_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_report_id", - table: "internship", - column: "report_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_student_id", - table: "internship", - column: "student_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_registration_branch_address_id", - table: "internship_registration", - column: "branch_address_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_registration_company_id", - table: "internship_registration", - column: "company_id"); - - migrationBuilder.CreateIndex( - name: "ix_internship_registration_type_id", - table: "internship_registration", - column: "type_id"); - - migrationBuilder.CreateIndex( - name: "ix_program_subject_internship_subject_id", - table: "program_subject", - column: "internship_subject_id"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "document_scan"); - - migrationBuilder.DropTable( - name: "edition_internship_type"); - - migrationBuilder.DropTable( - name: "edition_subject"); - - migrationBuilder.DropTable( - name: "program_subject"); - - migrationBuilder.DropTable( - name: "static_pages"); - - migrationBuilder.DropTable( - name: "document"); - - migrationBuilder.DropTable( - name: "internship_subject"); - - migrationBuilder.DropTable( - name: "internship"); - - migrationBuilder.DropTable( - name: "editions"); - - migrationBuilder.DropTable( - name: "internship_registration"); - - migrationBuilder.DropTable( - name: "report"); - - migrationBuilder.DropTable( - name: "students"); - - migrationBuilder.DropTable( - name: "courses"); - - migrationBuilder.DropTable( - name: "branch_office"); - - migrationBuilder.DropTable( - name: "internship_types"); - - migrationBuilder.DropTable( - name: "companies"); - } - } -} + \ No newline at end of file diff --git a/src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs new file mode 100644 index 0000000..8e99457 --- /dev/null +++ b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.Designer.cs @@ -0,0 +1,778 @@ +// +using System; +using InternshipSystem.Repository; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace InternshipSystem.Repository.Migrations +{ + [DbContext(typeof(InternshipDbContext))] + [Migration("20210107220846_Init")] + partial class Init + { + 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("InternshipSystem.Core.BranchOffice", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("CompanyId") + .HasColumnName("company_id") + .HasColumnType("bigint"); + + b.Property("Provider") + .HasColumnName("provider") + .HasColumnType("bigint"); + + b.HasKey("Id") + .HasName("pk_branch_office"); + + b.HasIndex("CompanyId") + .HasName("ix_branch_office_company_id"); + + b.ToTable("branch_office"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Company", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Name") + .HasColumnName("name") + .HasColumnType("text"); + + b.Property("Nip") + .HasColumnName("nip") + .HasColumnType("text"); + + b.Property("Provider") + .HasColumnName("provider") + .HasColumnType("bigint"); + + b.HasKey("Id") + .HasName("pk_companies"); + + b.ToTable("companies"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Document", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Description") + .HasColumnName("description") + .HasColumnType("text"); + + b.Property("InternshipId") + .HasColumnName("internship_id") + .HasColumnType("bigint"); + + b.Property("RejectionReason") + .HasColumnName("rejection_reason") + .HasColumnType("text"); + + b.Property("State") + .HasColumnName("state") + .HasColumnType("integer"); + + b.Property("Type") + .HasColumnName("type") + .HasColumnType("integer"); + + b.HasKey("Id") + .HasName("pk_document"); + + b.HasIndex("InternshipId") + .HasName("ix_document_internship_id"); + + b.ToTable("document"); + }); + + modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => + { + b.Property("DocumentId") + .HasColumnName("document_id") + .HasColumnType("bigint"); + + b.Property("File") + .HasColumnName("file") + .HasColumnType("bytea"); + + b.Property("Filename") + .HasColumnName("filename") + .HasColumnType("text"); + + b.Property("Mime") + .HasColumnName("mime") + .HasColumnType("text"); + + b.Property("Size") + .HasColumnName("size") + .HasColumnType("bigint"); + + b.HasKey("DocumentId") + .HasName("pk_document_scan"); + + b.ToTable("document_scan"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Edition", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("uuid"); + + b.Property("CourseId") + .HasColumnName("course_id") + .HasColumnType("bigint"); + + b.Property("EditionFinish") + .HasColumnName("edition_finish") + .HasColumnType("timestamp without time zone"); + + b.Property("EditionStart") + .HasColumnName("edition_start") + .HasColumnType("timestamp without time zone"); + + b.Property("ReportingStart") + .HasColumnName("reporting_start") + .HasColumnType("timestamp without time zone"); + + b.HasKey("Id") + .HasName("pk_editions"); + + b.HasIndex("CourseId") + .HasName("ix_editions_course_id"); + + b.ToTable("editions"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Course", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("Name") + .HasColumnName("name") + .HasColumnType("text"); + + b.Property("NameEng") + .HasColumnName("name_eng") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_courses"); + + b.ToTable("courses"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property("Grade") + .HasColumnName("grade") + .HasColumnType("real"); + + b.Property("InternshipRegistrationId") + .HasColumnName("internship_registration_id") + .HasColumnType("bigint"); + + b.Property("ReportId") + .HasColumnName("report_id") + .HasColumnType("bigint"); + + b.Property("StudentId") + .HasColumnName("student_id") + .HasColumnType("bigint"); + + b.HasKey("Id") + .HasName("pk_internship"); + + b.HasIndex("EditionId") + .HasName("ix_internship_edition_id"); + + b.HasIndex("InternshipRegistrationId") + .HasName("ix_internship_internship_registration_id"); + + b.HasIndex("ReportId") + .HasName("ix_internship_report_id"); + + b.HasIndex("StudentId") + .HasName("ix_internship_student_id"); + + b.ToTable("internship"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("BranchAddressId") + .HasColumnName("branch_address_id") + .HasColumnType("bigint"); + + b.Property("CompanyId") + .HasColumnName("company_id") + .HasColumnType("bigint"); + + b.Property("DeclaredHours") + .HasColumnName("declared_hours") + .HasColumnType("integer"); + + b.Property("End") + .HasColumnName("end") + .HasColumnType("timestamp without time zone"); + + b.Property("Start") + .HasColumnName("start") + .HasColumnType("timestamp without time zone"); + + b.Property("State") + .HasColumnName("state") + .HasColumnType("integer"); + + b.Property("TypeId") + .HasColumnName("type_id") + .HasColumnType("bigint"); + + b.HasKey("Id") + .HasName("pk_internship_registration"); + + b.HasIndex("BranchAddressId") + .HasName("ix_internship_registration_branch_address_id"); + + b.HasIndex("CompanyId") + .HasName("ix_internship_registration_company_id"); + + b.HasIndex("TypeId") + .HasName("ix_internship_registration_type_id"); + + b.ToTable("internship_registration"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipSubject", 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.HasKey("Id") + .HasName("pk_internship_subject"); + + b.ToTable("internship_subject"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipType", 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("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_internship_types"); + + 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("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.Property("field_type") + .IsRequired() + .HasColumnName("field_type") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report_field"); + + b.ToTable("report_field"); + + b.HasDiscriminator("field_type").HasValue("ReportField"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Report", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("State") + .HasColumnName("state") + .HasColumnType("integer"); + + b.Property("Value") + .HasColumnName("value") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report"); + + b.ToTable("report"); + }); + + modelBuilder.Entity("InternshipSystem.Core.StaticPage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("AccessName") + .HasColumnName("access_name") + .HasColumnType("text"); + + b.Property("Content") + .HasColumnName("content") + .HasColumnType("text"); + + b.Property("ContentEng") + .HasColumnName("content_eng") + .HasColumnType("text"); + + b.Property("Title") + .HasColumnName("title") + .HasColumnType("text"); + + b.Property("TitleEng") + .HasColumnName("title_eng") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_static_pages"); + + b.ToTable("static_pages"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Student", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b.Property("AlbumNumber") + .HasColumnName("album_number") + .HasColumnType("integer"); + + b.Property("Course") + .HasColumnName("course") + .HasColumnType("text"); + + b.Property("Email") + .HasColumnName("email") + .HasColumnType("text"); + + b.Property("FirstName") + .HasColumnName("first_name") + .HasColumnType("text"); + + b.Property("LastName") + .HasColumnName("last_name") + .HasColumnType("text"); + + b.Property("Semester") + .HasColumnName("semester") + .HasColumnType("integer"); + + b.HasKey("Id") + .HasName("pk_students"); + + b.ToTable("students"); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => + { + b.Property("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property("InternshipTypeId") + .HasColumnName("internship_type_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "InternshipTypeId") + .HasName("pk_edition_internship_type"); + + b.HasIndex("InternshipTypeId") + .HasName("ix_edition_internship_type_internship_type_id"); + + b.ToTable("edition_internship_type"); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => + { + b.Property("EditionId") + .HasColumnName("edition_id") + .HasColumnType("uuid"); + + b.Property("InternshipSubjectId") + .HasColumnName("internship_subject_id") + .HasColumnType("bigint"); + + b.HasKey("EditionId", "InternshipSubjectId") + .HasName("pk_edition_subject"); + + b.HasIndex("InternshipSubjectId") + .HasName("ix_edition_subject_internship_subject_id"); + + b.ToTable("edition_subject"); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => + { + b.Property("InternshipRegistrationId") + .HasColumnName("internship_registration_id") + .HasColumnType("bigint"); + + b.Property("InternshipSubjectId") + .HasColumnName("internship_subject_id") + .HasColumnType("bigint"); + + b.HasKey("InternshipRegistrationId", "InternshipSubjectId") + .HasName("pk_program_subject"); + + b.HasIndex("InternshipSubjectId") + .HasName("ix_program_subject_internship_subject_id"); + + 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.ReportFieldDict", b => + { + b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); + + b.Property("Values") + .HasColumnName("values") + .HasColumnType("jsonb"); + + b.HasDiscriminator().HasValue("ReportFieldDict"); + }); + + modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => + { + b.HasOne("InternshipSystem.Core.Company", null) + .WithMany("Branches") + .HasForeignKey("CompanyId") + .HasConstraintName("fk_branch_office_companies_company_id"); + + b.OwnsOne("InternshipSystem.Core.BranchAddress", "Address", b1 => + { + b1.Property("BranchOfficeId") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property("Building") + .HasColumnName("building") + .HasColumnType("text"); + + b1.Property("City") + .HasColumnName("city") + .HasColumnType("text"); + + b1.Property("Country") + .HasColumnName("country") + .HasColumnType("text"); + + b1.Property("PostalCode") + .HasColumnName("postal_code") + .HasColumnType("text"); + + b1.Property("Street") + .HasColumnName("street") + .HasColumnType("text"); + + b1.HasKey("BranchOfficeId") + .HasName("pk_branch_office"); + + b1.ToTable("branch_office"); + + b1.WithOwner() + .HasForeignKey("BranchOfficeId") + .HasConstraintName("fk_branch_address_branch_office_branch_office_id"); + }); + }); + + modelBuilder.Entity("InternshipSystem.Core.Document", b => + { + b.HasOne("InternshipSystem.Core.Entity.Internship.Internship", null) + .WithMany("Documentation") + .HasForeignKey("InternshipId") + .HasConstraintName("fk_document_internship_internship_id"); + }); + + modelBuilder.Entity("InternshipSystem.Core.DocumentScan", b => + { + b.HasOne("InternshipSystem.Core.Document", "Document") + .WithOne("Scan") + .HasForeignKey("InternshipSystem.Core.DocumentScan", "DocumentId") + .HasConstraintName("fk_document_scan_document_document_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("InternshipSystem.Core.Edition", b => + { + b.HasOne("InternshipSystem.Core.Entity.Course", "Course") + .WithMany() + .HasForeignKey("CourseId") + .HasConstraintName("fk_editions_courses_course_id"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.Internship", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("Internships") + .HasForeignKey("EditionId") + .HasConstraintName("fk_internship_editions_edition_id"); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "InternshipRegistration") + .WithMany() + .HasForeignKey("InternshipRegistrationId") + .HasConstraintName("fk_internship_internship_registration_internship_registration_"); + + b.HasOne("InternshipSystem.Core.Report", "Report") + .WithMany() + .HasForeignKey("ReportId") + .HasConstraintName("fk_internship_report_report_id"); + + b.HasOne("InternshipSystem.Core.Student", "Student") + .WithMany() + .HasForeignKey("StudentId") + .HasConstraintName("fk_internship_students_student_id"); + }); + + modelBuilder.Entity("InternshipSystem.Core.Entity.Internship.InternshipRegistration", b => + { + b.HasOne("InternshipSystem.Core.BranchOffice", "BranchAddress") + .WithMany() + .HasForeignKey("BranchAddressId") + .HasConstraintName("fk_internship_registration_branch_office_branch_address_id"); + + b.HasOne("InternshipSystem.Core.Company", "Company") + .WithMany() + .HasForeignKey("CompanyId") + .HasConstraintName("fk_internship_registration_companies_company_id"); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "Type") + .WithMany() + .HasForeignKey("TypeId") + .HasConstraintName("fk_internship_registration_internship_types_type_id"); + + b.OwnsOne("InternshipSystem.Core.Mentor", "Mentor", b1 => + { + b1.Property("InternshipRegistrationId") + .ValueGeneratedOnAdd() + .HasColumnName("id") + .HasColumnType("bigint") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property("Email") + .HasColumnName("email") + .HasColumnType("text"); + + b1.Property("FirstName") + .HasColumnName("first_name") + .HasColumnType("text"); + + b1.Property("LastName") + .HasColumnName("last_name") + .HasColumnType("text"); + + b1.Property("PhoneNumber") + .HasColumnName("phone_number") + .HasColumnType("text"); + + b1.HasKey("InternshipRegistrationId") + .HasName("pk_internship_registration"); + + b1.ToTable("internship_registration"); + + b1.WithOwner() + .HasForeignKey("InternshipRegistrationId") + .HasConstraintName("fk_mentor_internship_registration_internship_registration_id"); + }); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionInternshipType", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("AvailableInternshipTypes") + .HasForeignKey("EditionId") + .HasConstraintName("fk_edition_internship_type_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipType", "InternshipType") + .WithMany() + .HasForeignKey("InternshipTypeId") + .HasConstraintName("fk_edition_internship_type_internship_types_internship_type_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.EditionSubject", b => + { + b.HasOne("InternshipSystem.Core.Edition", "Edition") + .WithMany("AvailableSubjects") + .HasForeignKey("EditionId") + .HasConstraintName("fk_edition_subject_editions_edition_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") + .WithMany() + .HasForeignKey("InternshipSubjectId") + .HasConstraintName("fk_edition_subject_internship_subject_internship_subject_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("InternshipSystem.Core.UglyOrmArtifacts.ProgramSubject", b => + { + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipRegistration", "Registration") + .WithMany("Subjects") + .HasForeignKey("InternshipRegistrationId") + .HasConstraintName("fk_program_subject_internship_registration_internship_registrat") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("InternshipSystem.Core.Entity.Internship.InternshipSubject", "Subject") + .WithMany() + .HasForeignKey("InternshipSubjectId") + .HasConstraintName("fk_program_subject_internship_subject_internship_subject_id") + .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_field_report_field_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs new file mode 100644 index 0000000..7460b41 --- /dev/null +++ b/src/InternshipSystem.Repository/Migrations/20210107220846_Init.cs @@ -0,0 +1,533 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +namespace InternshipSystem.Repository.Migrations +{ + public partial class Init : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "companies", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + nip = table.Column(nullable: true), + name = table.Column(nullable: true), + provider = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_companies", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "courses", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + name = table.Column(nullable: true), + name_eng = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_courses", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "internship_subject", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + description = table.Column(nullable: true), + description_eng = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_internship_subject", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "internship_types", + 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) + }, + constraints: table => + { + table.PrimaryKey("pk_internship_types", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "report", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + state = table.Column(nullable: false), + value = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_report", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "report_field", + 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), + values = table.Column(type: "jsonb", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_report_field", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "static_pages", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + access_name = table.Column(nullable: true), + title = table.Column(nullable: true), + title_eng = table.Column(nullable: true), + content = table.Column(nullable: true), + content_eng = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_static_pages", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "students", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + album_number = table.Column(nullable: false), + first_name = table.Column(nullable: true), + last_name = table.Column(nullable: true), + email = table.Column(nullable: true), + course = table.Column(nullable: true), + semester = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_students", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "branch_office", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + street = table.Column(nullable: true), + building = table.Column(nullable: true), + city = table.Column(nullable: true), + postal_code = table.Column(nullable: true), + country = table.Column(nullable: true), + provider = table.Column(nullable: false), + company_id = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_branch_office", x => x.id); + table.ForeignKey( + name: "fk_branch_office_companies_company_id", + column: x => x.company_id, + principalTable: "companies", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "editions", + columns: table => new + { + id = table.Column(nullable: false), + edition_start = table.Column(nullable: false), + edition_finish = table.Column(nullable: false), + reporting_start = table.Column(nullable: false), + course_id = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_editions", x => x.id); + table.ForeignKey( + name: "fk_editions_courses_course_id", + column: x => x.course_id, + principalTable: "courses", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "internship_registration", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + company_id = table.Column(nullable: true), + branch_address_id = table.Column(nullable: true), + start = table.Column(nullable: false), + end = table.Column(nullable: false), + first_name = table.Column(nullable: true), + last_name = table.Column(nullable: true), + email = table.Column(nullable: true), + phone_number = table.Column(nullable: true), + type_id = table.Column(nullable: true), + declared_hours = table.Column(nullable: false), + state = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_internship_registration", x => x.id); + table.ForeignKey( + name: "fk_internship_registration_branch_office_branch_address_id", + column: x => x.branch_address_id, + principalTable: "branch_office", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_registration_companies_company_id", + column: x => x.company_id, + principalTable: "companies", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_registration_internship_types_type_id", + column: x => x.type_id, + principalTable: "internship_types", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "edition_internship_type", + columns: table => new + { + edition_id = table.Column(nullable: false), + internship_type_id = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_edition_internship_type", x => new { x.edition_id, x.internship_type_id }); + table.ForeignKey( + name: "fk_edition_internship_type_editions_edition_id", + column: x => x.edition_id, + principalTable: "editions", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "fk_edition_internship_type_internship_types_internship_type_id", + column: x => x.internship_type_id, + principalTable: "internship_types", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "edition_subject", + columns: table => new + { + edition_id = table.Column(nullable: false), + internship_subject_id = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_edition_subject", x => new { x.edition_id, x.internship_subject_id }); + table.ForeignKey( + name: "fk_edition_subject_editions_edition_id", + column: x => x.edition_id, + principalTable: "editions", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "fk_edition_subject_internship_subject_internship_subject_id", + column: x => x.internship_subject_id, + principalTable: "internship_subject", + principalColumn: "id", + 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_field_report_field_id", + column: x => x.report_field_id, + principalTable: "report_field", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "internship", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + student_id = table.Column(nullable: true), + internship_registration_id = table.Column(nullable: true), + report_id = table.Column(nullable: true), + edition_id = table.Column(nullable: true), + grade = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_internship", x => x.id); + table.ForeignKey( + name: "fk_internship_editions_edition_id", + column: x => x.edition_id, + principalTable: "editions", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_internship_registration_internship_registration_", + column: x => x.internship_registration_id, + principalTable: "internship_registration", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_report_report_id", + column: x => x.report_id, + principalTable: "report", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "fk_internship_students_student_id", + column: x => x.student_id, + principalTable: "students", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "program_subject", + columns: table => new + { + internship_registration_id = table.Column(nullable: false), + internship_subject_id = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("pk_program_subject", x => new { x.internship_registration_id, x.internship_subject_id }); + table.ForeignKey( + name: "fk_program_subject_internship_registration_internship_registrat", + column: x => x.internship_registration_id, + principalTable: "internship_registration", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "fk_program_subject_internship_subject_internship_subject_id", + column: x => x.internship_subject_id, + principalTable: "internship_subject", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "document", + columns: table => new + { + id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + description = table.Column(nullable: true), + type = table.Column(nullable: false), + state = table.Column(nullable: false), + rejection_reason = table.Column(nullable: true), + internship_id = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_document", x => x.id); + table.ForeignKey( + name: "fk_document_internship_internship_id", + column: x => x.internship_id, + principalTable: "internship", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "document_scan", + columns: table => new + { + document_id = table.Column(nullable: false), + size = table.Column(nullable: false), + filename = table.Column(nullable: true), + mime = table.Column(nullable: true), + file = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("pk_document_scan", x => x.document_id); + table.ForeignKey( + name: "fk_document_scan_document_document_id", + column: x => x.document_id, + principalTable: "document", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "ix_branch_office_company_id", + table: "branch_office", + column: "company_id"); + + migrationBuilder.CreateIndex( + name: "ix_document_internship_id", + table: "document", + column: "internship_id"); + + migrationBuilder.CreateIndex( + name: "ix_edition_internship_type_internship_type_id", + table: "edition_internship_type", + column: "internship_type_id"); + + migrationBuilder.CreateIndex( + name: "ix_edition_subject_internship_subject_id", + table: "edition_subject", + column: "internship_subject_id"); + + migrationBuilder.CreateIndex( + name: "ix_editions_course_id", + table: "editions", + column: "course_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_edition_id", + table: "internship", + column: "edition_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_internship_registration_id", + table: "internship", + column: "internship_registration_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_report_id", + table: "internship", + column: "report_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_student_id", + table: "internship", + column: "student_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_registration_branch_address_id", + table: "internship_registration", + column: "branch_address_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_registration_company_id", + table: "internship_registration", + column: "company_id"); + + migrationBuilder.CreateIndex( + name: "ix_internship_registration_type_id", + table: "internship_registration", + column: "type_id"); + + migrationBuilder.CreateIndex( + 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) + { + migrationBuilder.DropTable( + name: "document_scan"); + + migrationBuilder.DropTable( + name: "edition_internship_type"); + + migrationBuilder.DropTable( + name: "edition_subject"); + + migrationBuilder.DropTable( + name: "program_subject"); + + migrationBuilder.DropTable( + name: "report_field_edition"); + + migrationBuilder.DropTable( + name: "static_pages"); + + migrationBuilder.DropTable( + name: "document"); + + migrationBuilder.DropTable( + name: "internship_subject"); + + migrationBuilder.DropTable( + name: "report_field"); + + migrationBuilder.DropTable( + name: "internship"); + + migrationBuilder.DropTable( + name: "editions"); + + migrationBuilder.DropTable( + name: "internship_registration"); + + migrationBuilder.DropTable( + name: "report"); + + migrationBuilder.DropTable( + name: "students"); + + migrationBuilder.DropTable( + name: "courses"); + + migrationBuilder.DropTable( + name: "branch_office"); + + migrationBuilder.DropTable( + name: "internship_types"); + + migrationBuilder.DropTable( + name: "companies"); + } + } +} diff --git a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs index aabead5..e291852 100644 --- a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs +++ b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs @@ -338,6 +338,43 @@ 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("Label") + .HasColumnName("label") + .HasColumnType("text"); + + b.Property("LabelEng") + .HasColumnName("label_eng") + .HasColumnType("text"); + + b.Property("field_type") + .IsRequired() + .HasColumnName("field_type") + .HasColumnType("text"); + + b.HasKey("Id") + .HasName("pk_report_field"); + + b.ToTable("report_field"); + + b.HasDiscriminator("field_type").HasValue("ReportField"); + }); + modelBuilder.Entity("InternshipSystem.Core.Report", b => { b.Property("Id") @@ -346,18 +383,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"); @@ -493,6 +526,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.ReportFieldDict", b => + { + b.HasBaseType("InternshipSystem.Core.Entity.ReportField"); + + b.Property("Values") + .HasColumnName("values") + .HasColumnType("jsonb"); + + b.HasDiscriminator().HasValue("ReportFieldDict"); + }); + modelBuilder.Entity("InternshipSystem.Core.BranchOffice", b => { b.HasOne("InternshipSystem.Core.Company", null) @@ -690,6 +753,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_field_report_field_id") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); #pragma warning restore 612, 618 } }