diff --git a/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs
new file mode 100644
index 0000000..aabead5
--- /dev/null
+++ b/src/InternshipSystem.Repository/Migrations/InternshipDbContextModelSnapshot.cs
@@ -0,0 +1,696 @@
+//
+using System;
+using InternshipSystem.Repository;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+namespace InternshipSystem.Repository.Migrations
+{
+ [DbContext(typeof(InternshipDbContext))]
+ partial class InternshipDbContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(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
+ }
+ }
+}