using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable #pragma warning disable CA1814 // Prefer jagged arrays over multidimensional namespace HyperBooru.Migrations { /// public partial class InitialMigration : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "Objects", columns: table => new { ObjectId = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Guid = table.Column(type: "uuid", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Objects", x => x.ObjectId); }); migrationBuilder.CreateTable( name: "TagDefinitions", columns: table => new { ObjectId = table.Column(type: "integer", nullable: false), Source = table.Column(type: "integer", nullable: false), Namespace = table.Column(type: "text", nullable: true), Name = table.Column(type: "text", nullable: false), Alias = table.Column(type: "text", nullable: true) }, constraints: table => { table.PrimaryKey("PK_TagDefinitions", x => x.ObjectId); table.ForeignKey( name: "FK_TagDefinitions_Objects_ObjectId", column: x => x.ObjectId, principalTable: "Objects", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "Users", columns: table => new { ObjectId = table.Column(type: "integer", nullable: false), Username = table.Column(type: "text", nullable: false), PasswordHash = 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.CreateTable( name: "TagDefinitionTagDefinition", columns: table => new { ImplicitTagsObjectId = table.Column(type: "integer", nullable: false), TagDefinitionObjectId = table.Column(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_TagDefinitionTagDefinition", x => new { x.ImplicitTagsObjectId, x.TagDefinitionObjectId }); table.ForeignKey( name: "FK_TagDefinitionTagDefinition_TagDefinitions_ImplicitTagsObjec~", column: x => x.ImplicitTagsObjectId, principalTable: "TagDefinitions", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_TagDefinitionTagDefinition_TagDefinitions_TagDefinitionObje~", column: x => x.TagDefinitionObjectId, principalTable: "TagDefinitions", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "Tags", columns: table => new { ObjectId = table.Column(type: "integer", nullable: false), TagDefinitionId = table.Column(type: "integer", nullable: false), CreateTime = table.Column(type: "timestamp with time zone", nullable: false), TargetObjectId = table.Column(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Tags", x => x.ObjectId); table.ForeignKey( name: "FK_Tags_Objects_ObjectId", column: x => x.ObjectId, principalTable: "Objects", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Tags_Objects_TargetObjectId", column: x => x.TargetObjectId, principalTable: "Objects", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_Tags_TagDefinitions_TagDefinitionId", column: x => x.TagDefinitionId, principalTable: "TagDefinitions", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "Media", columns: table => new { ObjectId = table.Column(type: "integer", nullable: false), ShortDescription = table.Column(type: "text", nullable: true), LongDescription = table.Column(type: "text", nullable: true), CurrentUploadedFileId = table.Column(type: "integer", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Media", x => x.ObjectId); table.ForeignKey( name: "FK_Media_Objects_ObjectId", column: x => x.ObjectId, principalTable: "Objects", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "OcrData", columns: table => new { OcrDataId = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), MediaId = table.Column(type: "integer", nullable: false), Text = table.Column(type: "text", nullable: false), SearchableText = table.Column(type: "text", nullable: false), Timestamp = table.Column(type: "timestamp with time zone", nullable: false) }, constraints: table => { table.PrimaryKey("PK_OcrData", x => x.OcrDataId); table.ForeignKey( name: "FK_OcrData_Media_MediaId", column: x => x.MediaId, principalTable: "Media", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( name: "UploadedFiles", columns: table => new { ObjectId = table.Column(type: "integer", nullable: false), Checksum = table.Column(type: "text", nullable: false), ChecksumVerified = table.Column(type: "boolean", nullable: false), Filename = table.Column(type: "text", nullable: true), Length = table.Column(type: "bigint", nullable: false), MimeType = table.Column(type: "text", nullable: false), Width = table.Column(type: "integer", nullable: true), Height = table.Column(type: "integer", nullable: true), UploadTime = table.Column(type: "timestamp with time zone", nullable: false), LastAccessTime = table.Column(type: "timestamp with time zone", nullable: true), LastWriteTime = table.Column(type: "timestamp with time zone", nullable: true), CreateTime = table.Column(type: "timestamp with time zone", nullable: true), Path = table.Column(type: "text", nullable: true), PathType = table.Column(type: "integer", nullable: true), MediaObjectId = table.Column(type: "integer", nullable: false) }, constraints: table => { table.PrimaryKey("PK_UploadedFiles", x => x.ObjectId); table.ForeignKey( name: "FK_UploadedFiles_Media_MediaObjectId", column: x => x.MediaObjectId, principalTable: "Media", principalColumn: "ObjectId", onDelete: ReferentialAction.Cascade); table.ForeignKey( name: "FK_UploadedFiles_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") }, { -2, new Guid("ea212801-5bcc-4c0e-814f-fb9d30db58bc") }, { -1, new Guid("ebdad4f8-455a-4351-8017-1d4854d6fa38") } }); migrationBuilder.InsertData( table: "TagDefinitions", columns: new[] { "ObjectId", "Alias", "Name", "Namespace", "Source" }, values: new object[,] { { -2, null, "ingest", null, 0 }, { -1, null, "nsfw", null, 0 } }); migrationBuilder.InsertData( table: "Users", columns: new[] { "ObjectId", "PasswordHash", "Username" }, values: new object[] { -3, "P4geAuE2yX/PDRHuJSq74FF5vO782rWz5c0LAQPR8m45DEYAONhu1wYnAn60PSNyjocqEBdnCeKCJfK3sKyuWw==", "admin" }); migrationBuilder.CreateIndex( name: "IX_Media_CurrentUploadedFileId", table: "Media", column: "CurrentUploadedFileId", unique: true); migrationBuilder.CreateIndex( name: "IX_Objects_Guid", table: "Objects", column: "Guid"); migrationBuilder.CreateIndex( name: "IX_OcrData_MediaId", table: "OcrData", column: "MediaId", unique: true); migrationBuilder.CreateIndex( name: "IX_TagDefinitionTagDefinition_TagDefinitionObjectId", table: "TagDefinitionTagDefinition", column: "TagDefinitionObjectId"); migrationBuilder.CreateIndex( name: "IX_Tags_TagDefinitionId", table: "Tags", column: "TagDefinitionId"); migrationBuilder.CreateIndex( name: "IX_Tags_TargetObjectId", table: "Tags", column: "TargetObjectId"); migrationBuilder.CreateIndex( name: "IX_UploadedFiles_MediaObjectId", table: "UploadedFiles", column: "MediaObjectId"); migrationBuilder.CreateIndex( name: "IX_Users_Username", table: "Users", column: "Username"); migrationBuilder.AddForeignKey( name: "FK_Media_UploadedFiles_CurrentUploadedFileId", table: "Media", column: "CurrentUploadedFileId", principalTable: "UploadedFiles", principalColumn: "ObjectId"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropForeignKey( name: "FK_Media_Objects_ObjectId", table: "Media"); migrationBuilder.DropForeignKey( name: "FK_UploadedFiles_Objects_ObjectId", table: "UploadedFiles"); migrationBuilder.DropForeignKey( name: "FK_Media_UploadedFiles_CurrentUploadedFileId", table: "Media"); migrationBuilder.DropTable( name: "OcrData"); migrationBuilder.DropTable( name: "TagDefinitionTagDefinition"); migrationBuilder.DropTable( name: "Tags"); migrationBuilder.DropTable( name: "Users"); migrationBuilder.DropTable( name: "TagDefinitions"); migrationBuilder.DropTable( name: "Objects"); migrationBuilder.DropTable( name: "UploadedFiles"); migrationBuilder.DropTable( name: "Media"); } } }