using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace Infrastructure.Migrations { /// public partial class Initial : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "PlaceOfWork", columns: table => new { Id = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "character varying(200)", unicode: false, maxLength: 200, nullable: false), Address_Country = table.Column(type: "character varying(70)", unicode: false, maxLength: 70, nullable: false), Address_City = table.Column(type: "character varying(70)", unicode: false, maxLength: 70, nullable: false), Address_Street = table.Column(type: "character varying(100)", unicode: false, maxLength: 100, nullable: false), Address_Building = table.Column(type: "character varying(10)", unicode: false, maxLength: 10, nullable: false), PhoneNum = table.Column(type: "character varying(13)", unicode: false, maxLength: 13, nullable: false) }, constraints: table => { table.PrimaryKey("PK_PlaceOfWork", x => x.Id); }); migrationBuilder.CreateTable( name: "User", columns: table => new { Id = table.Column(type: "uuid", nullable: false), Role = table.Column(type: "integer", nullable: false), Email = table.Column(type: "character varying(254)", unicode: false, maxLength: 254, nullable: false), Password = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: false) }, constraints: table => { table.PrimaryKey("PK_User", x => x.Id); }); migrationBuilder.CreateTable( name: "Applicant", columns: table => new { Id = table.Column(type: "uuid", nullable: false), UserId = table.Column(type: "uuid", nullable: false), Name_FirstName = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: false), Name_Surname = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: false), Name_Patronymic = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: true), Passport_Number = table.Column(type: "character varying(20)", unicode: false, maxLength: 20, nullable: false), Passport_Issuer = table.Column(type: "character varying(200)", unicode: false, maxLength: 200, nullable: false), Passport_IssueDate = table.Column(type: "timestamp with time zone", nullable: false), Passport_ExpirationDate = table.Column(type: "timestamp with time zone", nullable: false), BirthDate = table.Column(type: "timestamp with time zone", nullable: false), CountryOfBirth = table.Column(type: "character varying(70)", unicode: false, maxLength: 70, nullable: false), CityOfBirth = table.Column(type: "character varying(70)", unicode: false, maxLength: 70, nullable: false), Citizenship = table.Column(type: "character varying(30)", unicode: false, maxLength: 30, nullable: false), CitizenshipByBirth = table.Column(type: "character varying(30)", unicode: false, maxLength: 30, nullable: false), Gender = table.Column(type: "integer", nullable: false), MaritalStatus = table.Column(type: "integer", nullable: false), FatherName_FirstName = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: false), FatherName_Surname = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: false), FatherName_Patronymic = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: true), MotherName_FirstName = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: false), MotherName_Surname = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: false), MotherName_Patronymic = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: true), JobTitle = table.Column(type: "character varying(50)", unicode: false, maxLength: 50, nullable: false), PlaceOfWorkId = table.Column(type: "uuid", nullable: false), IsNonResident = table.Column(type: "boolean", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Applicant", x => x.Id); table.ForeignKey( name: "FK_Applicant_PlaceOfWork_PlaceOfWorkId", column: x => x.PlaceOfWorkId, principalTable: "PlaceOfWork", principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Applicant_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "VisaApplication", columns: table => new { Id = table.Column(type: "uuid", nullable: false), ApplicantId = table.Column(type: "uuid", nullable: false), Status = table.Column(type: "integer", nullable: false), ReentryPermit_Number = table.Column(type: "character varying(25)", unicode: false, maxLength: 25, nullable: true), ReentryPermit_ExpirationDate = table.Column(type: "timestamp with time zone", nullable: true), DestinationCountry = table.Column(type: "character varying(70)", unicode: false, maxLength: 70, nullable: false), PermissionToDestCountry_ExpirationDate = table.Column(type: "timestamp with time zone", nullable: true), PermissionToDestCountry_Issuer = table.Column(type: "character varying(200)", unicode: false, maxLength: 200, nullable: true), VisaCategory = table.Column(type: "integer", nullable: false), ForGroup = table.Column(type: "boolean", nullable: false), RequestedNumberOfEntries = table.Column(type: "integer", nullable: false), RequestDate = table.Column(type: "timestamp with time zone", nullable: false), ValidDaysRequested = table.Column(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_VisaApplication", x => x.Id); table.ForeignKey( name: "FK_VisaApplication_Applicant_ApplicantId", column: x => x.ApplicantId, principalTable: "Applicant", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "PastVisa", columns: table => new { VisaApplicationId = table.Column(type: "uuid", nullable: false), Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), IssueDate = table.Column(type: "timestamp with time zone", nullable: false), Name = table.Column(type: "character varying(70)", unicode: false, maxLength: 70, nullable: false), ExpirationDate = table.Column(type: "timestamp with time zone", nullable: false) }, constraints: table => { table.PrimaryKey("PK_PastVisa", x => new { x.VisaApplicationId, x.Id }); table.ForeignKey( name: "FK_PastVisa_VisaApplication_VisaApplicationId", column: x => x.VisaApplicationId, principalTable: "VisaApplication", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "PastVisit", columns: table => new { VisaApplicationId = table.Column(type: "uuid", nullable: false), Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), StartDate = table.Column(type: "timestamp with time zone", nullable: false), EndDate = table.Column(type: "timestamp with time zone", nullable: false), DestinationCountry = table.Column(type: "character varying(70)", unicode: false, maxLength: 70, nullable: false) }, constraints: table => { table.PrimaryKey("PK_PastVisit", x => new { x.VisaApplicationId, x.Id }); table.ForeignKey( name: "FK_PastVisit_VisaApplication_VisaApplicationId", column: x => x.VisaApplicationId, principalTable: "VisaApplication", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateIndex( name: "IX_Applicant_PlaceOfWorkId", table: "Applicant", column: "PlaceOfWorkId"); migrationBuilder.CreateIndex( name: "IX_Applicant_UserId", table: "Applicant", column: "UserId", unique: true); migrationBuilder.CreateIndex( name: "IX_User_Email", table: "User", column: "Email", unique: true); migrationBuilder.CreateIndex( name: "IX_VisaApplication_ApplicantId", table: "VisaApplication", column: "ApplicantId"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "PastVisa"); migrationBuilder.DropTable( name: "PastVisit"); migrationBuilder.DropTable( name: "VisaApplication"); migrationBuilder.DropTable( name: "Applicant"); migrationBuilder.DropTable( name: "PlaceOfWork"); migrationBuilder.DropTable( name: "User"); } } }