protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateHistorySchema(); migrationBuilder.CreateTable( name: "Organization", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Name = table.Column <string>(maxLength: 100, nullable: false) }, constraints: table => { table.PrimaryKey("PK_Organization", x => x.Id); }); migrationBuilder.CreateTable( name: "ReportingPeriod", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Type = table.Column <int>(nullable: false), Period = table.Column <DateTime>(nullable: false), PeriodStart = table.Column <DateTime>(nullable: false), PeriodEnd = table.Column <DateTime>(nullable: false), DueAt = table.Column <DateTime>(nullable: false) }, constraints: table => { table.PrimaryKey("PK_ReportingPeriod", x => x.Id); }); migrationBuilder.CreateTable( name: "User", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), WingedKeysId = table.Column <Guid>(nullable: false), FirstName = table.Column <string>(maxLength: 35, nullable: false), MiddleName = table.Column <string>(maxLength: 35, nullable: true), LastName = table.Column <string>(maxLength: 35, nullable: false), Suffix = table.Column <string>(maxLength: 10, nullable: true) }, constraints: table => { table.PrimaryKey("PK_User", x => x.Id); }); migrationBuilder.CreateTable( name: "FundingSpace", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Capacity = table.Column <int>(nullable: false), OrganizationId = table.Column <int>(nullable: false), Source = table.Column <int>(nullable: false), Time = table.Column <int>(nullable: false), AgeGroup = table.Column <int>(nullable: false) }, constraints: table => { table.PrimaryKey("PK_FundingSpace", x => x.Id); table.ForeignKey( name: "FK_FundingSpace_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Site", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Name = table.Column <string>(maxLength: 100, nullable: false), TitleI = table.Column <bool>(nullable: false), Region = table.Column <int>(nullable: false), OrganizationId = table.Column <int>(nullable: false) }, constraints: table => { table.PrimaryKey("PK_Site", x => x.Id); table.ForeignKey( name: "FK_Site_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Report", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Type = table.Column <int>(nullable: false), ReportingPeriodId = table.Column <int>(nullable: false), SubmittedAt = table.Column <DateTime>(nullable: true), OrganizationId = table.Column <int>(nullable: true), Accredited = table.Column <bool>(nullable: true), C4KRevenue = table.Column <decimal>(type: "decimal(18,2)", nullable: true), RetroactiveC4KRevenue = table.Column <bool>(nullable: true), FamilyFeesRevenue = table.Column <decimal>(type: "decimal(18,2)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Report", x => x.Id); table.ForeignKey( name: "FK_Report_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Report_ReportingPeriod_ReportingPeriodId", column: x => x.ReportingPeriodId, principalTable: "ReportingPeriod", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Family", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), AuthorId = table.Column <int>(nullable: true), AddressLine1 = table.Column <string>(nullable: true), AddressLine2 = table.Column <string>(nullable: true), Town = table.Column <string>(nullable: true), State = table.Column <string>(nullable: true), Zip = table.Column <string>(nullable: true), Homelessness = table.Column <bool>(nullable: false), OrganizationId = table.Column <int>(nullable: false) }, constraints: table => { table.PrimaryKey("PK_Family", x => x.Id); table.ForeignKey( name: "FK_Family_User_AuthorId", column: x => x.AuthorId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Family_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.AddTemporalTableSupport(name: "Family"); migrationBuilder.CreateTable( name: "Permission", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), UserId = table.Column <int>(nullable: false), Type = table.Column <string>(nullable: false), OrganizationId = table.Column <int>(nullable: true), SiteId = table.Column <int>(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Permission", x => x.Id); table.ForeignKey( name: "FK_Permission_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Permission_User_UserId", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Permission_Site_SiteId", column: x => x.SiteId, principalTable: "Site", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Permission_User_UserId1", column: x => x.UserId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( name: "Child", columns: table => new { Id = table.Column <Guid>(nullable: false), AuthorId = table.Column <int>(nullable: true), Sasid = table.Column <string>(nullable: true), FirstName = table.Column <string>(maxLength: 35, nullable: false), MiddleName = table.Column <string>(maxLength: 35, nullable: true), LastName = table.Column <string>(maxLength: 35, nullable: false), Suffix = table.Column <string>(maxLength: 10, nullable: true), Birthdate = table.Column <DateTime>(nullable: true), BirthTown = table.Column <string>(nullable: true), BirthState = table.Column <string>(nullable: true), BirthCertificateId = table.Column <string>(nullable: true), AmericanIndianOrAlaskaNative = table.Column <bool>(nullable: false), Asian = table.Column <bool>(nullable: false), BlackOrAfricanAmerican = table.Column <bool>(nullable: false), NativeHawaiianOrPacificIslander = table.Column <bool>(nullable: false), White = table.Column <bool>(nullable: false), HispanicOrLatinxEthnicity = table.Column <bool>(nullable: true), Gender = table.Column <int>(nullable: false), Foster = table.Column <bool>(nullable: false), FamilyId = table.Column <int>(nullable: true), OrganizationId = table.Column <int>(nullable: false) }, constraints: table => { table.PrimaryKey("PK_Child", x => x.Id); table.ForeignKey( name: "FK_Child_User_AuthorId", column: x => x.AuthorId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Child_Family_FamilyId", column: x => x.FamilyId, principalTable: "Family", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Child_Organization_OrganizationId", column: x => x.OrganizationId, principalTable: "Organization", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.AddTemporalTableSupport(name: "Child"); migrationBuilder.CreateTable( name: "FamilyDetermination", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), AuthorId = table.Column <int>(nullable: true), NotDisclosed = table.Column <bool>(nullable: false), NumberOfPeople = table.Column <int>(nullable: true), Income = table.Column <decimal>(type: "decimal(14,2)", nullable: true), DeterminationDate = table.Column <DateTime>(nullable: true), FamilyId = table.Column <int>(nullable: false) }, constraints: table => { table.PrimaryKey("PK_FamilyDetermination", x => x.Id); table.ForeignKey( name: "FK_FamilyDetermination_User_AuthorId", column: x => x.AuthorId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_FamilyDetermination_Family_FamilyId", column: x => x.FamilyId, principalTable: "Family", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.AddTemporalTableSupport(name: "FamilyDetermination"); migrationBuilder.CreateTable( name: "Enrollment", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), AuthorId = table.Column <int>(nullable: true), ChildId = table.Column <Guid>(nullable: false), SiteId = table.Column <int>(nullable: false), AgeGroup = table.Column <int>(nullable: true), Entry = table.Column <DateTime>(nullable: true), Exit = table.Column <DateTime>(nullable: true), ExitReason = table.Column <string>(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Enrollment", x => x.Id); table.ForeignKey( name: "FK_Enrollment_User_AuthorId", column: x => x.AuthorId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Enrollment_Child_ChildId", column: x => x.ChildId, principalTable: "Child", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Enrollment_Site_SiteId", column: x => x.SiteId, principalTable: "Site", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.AddTemporalTableSupport(name: "Enrollment"); migrationBuilder.CreateTable( name: "Funding", columns: table => new { Id = table.Column <int>(nullable: false) .Annotation("SqlServer:Identity", "1, 1"), AuthorId = table.Column <int>(nullable: true), EnrollmentId = table.Column <int>(nullable: false), Source = table.Column <int>(nullable: false), FamilyId = table.Column <int>(nullable: true), CertificateStartDate = table.Column <DateTime>(nullable: true), CertificateEndDate = table.Column <DateTime>(nullable: true), FirstReportingPeriodId = table.Column <int>(nullable: true), LastReportingPeriodId = table.Column <int>(nullable: true), Time = table.Column <int>(nullable: true) }, constraints: table => { table.PrimaryKey("PK_Funding", x => x.Id); table.ForeignKey( name: "FK_Funding_User_AuthorId", column: x => x.AuthorId, principalTable: "User", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Funding_Enrollment_EnrollmentId", column: x => x.EnrollmentId, principalTable: "Enrollment", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Funding_ReportingPeriod_FirstReportingPeriodId", column: x => x.FirstReportingPeriodId, principalTable: "ReportingPeriod", principalColumn: "Id", onDelete: ReferentialAction.Restrict); table.ForeignKey( name: "FK_Funding_ReportingPeriod_LastReportingPeriodId", column: x => x.LastReportingPeriodId, principalTable: "ReportingPeriod", principalColumn: "Id", onDelete: ReferentialAction.Restrict); }); migrationBuilder.AddTemporalTableSupport(name: "Funding"); migrationBuilder.CreateIndex( name: "IX_Child_AuthorId", table: "Child", column: "AuthorId"); migrationBuilder.CreateIndex( name: "IX_Child_FamilyId", table: "Child", column: "FamilyId"); migrationBuilder.CreateIndex( name: "IX_Child_OrganizationId", table: "Child", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_Enrollment_AuthorId", table: "Enrollment", column: "AuthorId"); migrationBuilder.CreateIndex( name: "IX_Enrollment_ChildId", table: "Enrollment", column: "ChildId"); migrationBuilder.CreateIndex( name: "IX_Enrollment_SiteId", table: "Enrollment", column: "SiteId"); migrationBuilder.CreateIndex( name: "IX_Family_AuthorId", table: "Family", column: "AuthorId"); migrationBuilder.CreateIndex( name: "IX_Family_OrganizationId", table: "Family", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_FamilyDetermination_AuthorId", table: "FamilyDetermination", column: "AuthorId"); migrationBuilder.CreateIndex( name: "IX_FamilyDetermination_FamilyId", table: "FamilyDetermination", column: "FamilyId"); migrationBuilder.CreateIndex( name: "IX_Funding_AuthorId", table: "Funding", column: "AuthorId"); migrationBuilder.CreateIndex( name: "IX_Funding_EnrollmentId", table: "Funding", column: "EnrollmentId"); migrationBuilder.CreateIndex( name: "IX_Funding_FirstReportingPeriodId", table: "Funding", column: "FirstReportingPeriodId"); migrationBuilder.CreateIndex( name: "IX_Funding_LastReportingPeriodId", table: "Funding", column: "LastReportingPeriodId"); migrationBuilder.CreateIndex( name: "IX_FundingSpace_OrganizationId", table: "FundingSpace", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_Permission_OrganizationId", table: "Permission", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_Permission_UserId", table: "Permission", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Permission_SiteId", table: "Permission", column: "SiteId"); migrationBuilder.CreateIndex( name: "IX_Permission_UserId1", table: "Permission", column: "UserId"); migrationBuilder.CreateIndex( name: "IX_Report_OrganizationId", table: "Report", column: "OrganizationId"); migrationBuilder.CreateIndex( name: "IX_Report_ReportingPeriodId", table: "Report", column: "ReportingPeriodId"); migrationBuilder.CreateIndex( name: "IX_Site_OrganizationId", table: "Site", column: "OrganizationId"); }