using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace HyperBooru.Migrations { /// public partial class Security : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.DropForeignKey( name: "FK_TagDefinitionTagDefinition_TagDefinitions_ImplicitTagsObjec~", table: "TagDefinitionTagDefinition"); migrationBuilder.DropForeignKey( name: "FK_TagDefinitionTagDefinition_TagDefinitions_TagDefinitionObje~", table: "TagDefinitionTagDefinition"); migrationBuilder.DropTable( name: "Users"); migrationBuilder.DropPrimaryKey( name: "PK_TagDefinitionTagDefinition", table: "TagDefinitionTagDefinition"); migrationBuilder.DeleteData( table: "Objects", keyColumn: "ObjectId", keyValue: -3); migrationBuilder.RenameTable( name: "TagDefinitionTagDefinition", newName: "ImplicitTags"); migrationBuilder.RenameIndex( name: "IX_TagDefinitionTagDefinition_TagDefinitionObjectId", table: "ImplicitTags", newName: "IX_ImplicitTags_TagDefinitionObjectId"); migrationBuilder.AddColumn( name: "AclId", table: "Objects", type: "integer", nullable: true); migrationBuilder.AddColumn( name: "Owner", table: "Objects", type: "bytea", nullable: false, defaultValue: new byte[] { 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }); migrationBuilder.AddPrimaryKey( name: "PK_ImplicitTags", table: "ImplicitTags", columns: new[] { "ImplicitTagsObjectId", "TagDefinitionObjectId" }); migrationBuilder.CreateTable( name: "Acls", columns: table => new { AclId = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn) }, constraints: table => { table.PrimaryKey("PK_Acls", x => x.AclId); }); migrationBuilder.CreateTable( name: "SecurityPrincipals", columns: table => new { LocalPrincipalId = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Name = table.Column(type: "text", nullable: false), Sid = table.Column(type: "bytea", nullable: false), Discriminator = table.Column(type: "text", nullable: false), PasswordHash = table.Column(type: "text", nullable: true) }, constraints: table => { table.PrimaryKey("PK_SecurityPrincipals", x => x.LocalPrincipalId); }); migrationBuilder.CreateTable( name: "AclRules", columns: table => new { AclRuleId = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Principal = table.Column(type: "bytea", nullable: false), Action = table.Column(type: "integer", nullable: false), Permissions = table.Column(type: "bigint", nullable: false), AclId = table.Column(type: "integer", nullable: true) }, constraints: table => { table.PrimaryKey("PK_AclRules", x => x.AclRuleId); table.ForeignKey( name: "FK_AclRules_Acls_AclId", column: x => x.AclId, principalTable: "Acls", principalColumn: "AclId"); }); migrationBuilder.CreateTable( name: "SecurityPrincipalMemberships", columns: table => new { LocalPrincipalId = table.Column(type: "integer", nullable: false), MemberOfLocalPrincipalId = table.Column(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_SecurityPrincipalMemberships", x => new { x.LocalPrincipalId, x.MemberOfLocalPrincipalId }); table.ForeignKey( name: "FK_SecurityPrincipalMemberships_SecurityPrincipals_LocalPrinci~", column: x => x.LocalPrincipalId, principalTable: "SecurityPrincipals", principalColumn: "LocalPrincipalId", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_SecurityPrincipalMemberships_SecurityPrincipals_MemberOfLoc~", column: x => x.MemberOfLocalPrincipalId, principalTable: "SecurityPrincipals", principalColumn: "LocalPrincipalId", onDelete: ReferentialAction.Cascade); }); migrationBuilder.UpdateData( table: "Objects", keyColumn: "ObjectId", keyValue: -2, columns: new[] { "AclId", "Owner" }, values: new object[] { null, new byte[] { 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } }); migrationBuilder.UpdateData( table: "Objects", keyColumn: "ObjectId", keyValue: -1, columns: new[] { "AclId", "Owner" }, values: new object[] { null, new byte[] { 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 } }); migrationBuilder.InsertData( table: "SecurityPrincipals", columns: new[] { "LocalPrincipalId", "Discriminator", "Name", "PasswordHash", "Sid" }, values: new object[] { -1, "LocalUser", "admin", "P4geAuE2yX/PDRHuJSq74FF5vO782rWz5c0LAQPR8m45DEYAONhu1wYnAn60PSNyjocqEBdnCeKCJfK3sKyuWw==", new byte[] { 1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0 } }); migrationBuilder.CreateIndex( name: "IX_Objects_AclId", table: "Objects", column: "AclId", unique: true); migrationBuilder.CreateIndex( name: "IX_AclRules_AclId", table: "AclRules", column: "AclId"); migrationBuilder.CreateIndex( name: "IX_SecurityPrincipalMemberships_MemberOfLocalPrincipalId", table: "SecurityPrincipalMemberships", column: "MemberOfLocalPrincipalId"); migrationBuilder.CreateIndex( name: "IX_SecurityPrincipals_Name", table: "SecurityPrincipals", column: "Name"); migrationBuilder.CreateIndex( name: "IX_SecurityPrincipals_Sid", table: "SecurityPrincipals", column: "Sid"); migrationBuilder.AddForeignKey( name: "FK_ImplicitTags_TagDefinitions_ImplicitTagsObjectId", table: "ImplicitTags", column: "ImplicitTagsObjectId", principalTable: "TagDefinitions", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); migrationBuilder.AddForeignKey( name: "FK_ImplicitTags_TagDefinitions_TagDefinitionObjectId", table: "ImplicitTags", column: "TagDefinitionObjectId", principalTable: "TagDefinitions", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); migrationBuilder.AddForeignKey( name: "FK_Objects_Acls_AclId", table: "Objects", column: "AclId", principalTable: "Acls", principalColumn: "AclId"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropForeignKey( name: "FK_ImplicitTags_TagDefinitions_ImplicitTagsObjectId", table: "ImplicitTags"); migrationBuilder.DropForeignKey( name: "FK_ImplicitTags_TagDefinitions_TagDefinitionObjectId", table: "ImplicitTags"); migrationBuilder.DropForeignKey( name: "FK_Objects_Acls_AclId", table: "Objects"); migrationBuilder.DropTable( name: "AclRules"); migrationBuilder.DropTable( name: "SecurityPrincipalMemberships"); migrationBuilder.DropTable( name: "Acls"); migrationBuilder.DropTable( name: "SecurityPrincipals"); migrationBuilder.DropIndex( name: "IX_Objects_AclId", table: "Objects"); migrationBuilder.DropPrimaryKey( name: "PK_ImplicitTags", table: "ImplicitTags"); migrationBuilder.DropColumn( name: "AclId", table: "Objects"); migrationBuilder.DropColumn( name: "Owner", table: "Objects"); migrationBuilder.RenameTable( name: "ImplicitTags", newName: "TagDefinitionTagDefinition"); migrationBuilder.RenameIndex( name: "IX_ImplicitTags_TagDefinitionObjectId", table: "TagDefinitionTagDefinition", newName: "IX_TagDefinitionTagDefinition_TagDefinitionObjectId"); migrationBuilder.AddPrimaryKey( name: "PK_TagDefinitionTagDefinition", table: "TagDefinitionTagDefinition", columns: new[] { "ImplicitTagsObjectId", "TagDefinitionObjectId" }); migrationBuilder.CreateTable( name: "Users", columns: table => new { ObjectId = table.Column(type: "integer", nullable: false), PasswordHash = table.Column(type: "text", nullable: false), Username = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Users", x => x.ObjectId); table.ForeignKey( name: "FK_Users_Objects_ObjectId", column: x => x.ObjectId, principalTable: "Objects", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); }); migrationBuilder.InsertData( table: "Objects", columns: new[] { "ObjectId", "Guid" }, values: new object[] { -3, new Guid("4fa948f4-7c45-4f81-bb6b-e417491e6c96") }); migrationBuilder.InsertData( table: "Users", columns: new[] { "ObjectId", "PasswordHash", "Username" }, values: new object[] { -3, "P4geAuE2yX/PDRHuJSq74FF5vO782rWz5c0LAQPR8m45DEYAONhu1wYnAn60PSNyjocqEBdnCeKCJfK3sKyuWw==", "admin" }); migrationBuilder.CreateIndex( name: "IX_Users_Username", table: "Users", column: "Username"); migrationBuilder.AddForeignKey( name: "FK_TagDefinitionTagDefinition_TagDefinitions_ImplicitTagsObjec~", table: "TagDefinitionTagDefinition", column: "ImplicitTagsObjectId", principalTable: "TagDefinitions", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); migrationBuilder.AddForeignKey( name: "FK_TagDefinitionTagDefinition_TagDefinitions_TagDefinitionObje~", table: "TagDefinitionTagDefinition", column: "TagDefinitionObjectId", principalTable: "TagDefinitions", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); } } }