using System; using System.Collections.Generic; using DysonNetwork.Sphere.Storage; using Microsoft.EntityFrameworkCore.Migrations; using NodaTime; #nullable disable namespace DysonNetwork.Sphere.Migrations { /// public partial class RefactorCloudFileReference : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.DropForeignKey( name: "fk_account_profiles_files_background_id", table: "account_profiles"); migrationBuilder.DropForeignKey( name: "fk_account_profiles_files_picture_id", table: "account_profiles"); migrationBuilder.DropForeignKey( name: "fk_chat_rooms_files_background_id", table: "chat_rooms"); migrationBuilder.DropForeignKey( name: "fk_chat_rooms_files_picture_id", table: "chat_rooms"); migrationBuilder.DropForeignKey( name: "fk_files_chat_messages_message_id", table: "files"); migrationBuilder.DropForeignKey( name: "fk_files_posts_post_id", table: "files"); migrationBuilder.DropForeignKey( name: "fk_posts_posts_threaded_post_id", table: "posts"); migrationBuilder.DropForeignKey( name: "fk_publishers_files_background_id", table: "publishers"); migrationBuilder.DropForeignKey( name: "fk_publishers_files_picture_id", table: "publishers"); migrationBuilder.DropForeignKey( name: "fk_realms_files_background_id", table: "realms"); migrationBuilder.DropForeignKey( name: "fk_realms_files_picture_id", table: "realms"); migrationBuilder.DropForeignKey( name: "fk_stickers_files_image_id", table: "stickers"); migrationBuilder.DropIndex( name: "ix_stickers_image_id", table: "stickers"); migrationBuilder.DropIndex( name: "ix_realms_background_id", table: "realms"); migrationBuilder.DropIndex( name: "ix_realms_picture_id", table: "realms"); migrationBuilder.DropIndex( name: "ix_publishers_background_id", table: "publishers"); migrationBuilder.DropIndex( name: "ix_publishers_picture_id", table: "publishers"); migrationBuilder.DropIndex( name: "ix_posts_threaded_post_id", table: "posts"); migrationBuilder.DropIndex( name: "ix_files_message_id", table: "files"); migrationBuilder.DropIndex( name: "ix_files_post_id", table: "files"); migrationBuilder.DropIndex( name: "ix_chat_rooms_background_id", table: "chat_rooms"); migrationBuilder.DropIndex( name: "ix_chat_rooms_picture_id", table: "chat_rooms"); migrationBuilder.DropIndex( name: "ix_account_profiles_background_id", table: "account_profiles"); migrationBuilder.DropIndex( name: "ix_account_profiles_picture_id", table: "account_profiles"); migrationBuilder.DropColumn( name: "background_id", table: "realms"); migrationBuilder.DropColumn( name: "picture_id", table: "realms"); migrationBuilder.DropColumn( name: "background_id", table: "publishers"); migrationBuilder.DropColumn( name: "picture_id", table: "publishers"); migrationBuilder.DropColumn( name: "threaded_post_id", table: "posts"); // TODO Move these following changes to next migrations after migrated all the attachments data // migrationBuilder.DropColumn( // name: "expired_at", // table: "files"); // // migrationBuilder.DropColumn( // name: "message_id", // table: "files"); // // migrationBuilder.DropColumn( // name: "post_id", // table: "files"); // // migrationBuilder.DropColumn( // name: "usage", // table: "files"); // // migrationBuilder.DropColumn( // name: "used_count", // table: "files"); // // migrationBuilder.DropColumn( // name: "background_id", // table: "chat_rooms"); // // migrationBuilder.DropColumn( // name: "picture_id", // table: "chat_rooms"); // // migrationBuilder.DropColumn( // name: "background_id", // table: "account_profiles"); // // migrationBuilder.DropColumn( // name: "picture_id", // table: "account_profiles"); migrationBuilder.AddColumn( name: "image", table: "stickers", type: "jsonb", nullable: false); migrationBuilder.AddColumn( name: "background", table: "realms", type: "jsonb", nullable: true); migrationBuilder.AddColumn( name: "picture", table: "realms", type: "jsonb", nullable: true); migrationBuilder.AddColumn( name: "background", table: "publishers", type: "jsonb", nullable: true); migrationBuilder.AddColumn( name: "picture", table: "publishers", type: "jsonb", nullable: true); migrationBuilder.AddColumn>( name: "attachments", table: "posts", type: "jsonb", nullable: false); migrationBuilder.AddColumn( name: "background", table: "chat_rooms", type: "jsonb", nullable: true); migrationBuilder.AddColumn( name: "picture", table: "chat_rooms", type: "jsonb", nullable: true); migrationBuilder.AddColumn>( name: "attachments", table: "chat_messages", type: "jsonb", nullable: false); migrationBuilder.AddColumn( name: "background", table: "account_profiles", type: "jsonb", nullable: true); migrationBuilder.AddColumn( name: "picture", table: "account_profiles", type: "jsonb", nullable: true); migrationBuilder.CreateTable( name: "file_references", columns: table => new { id = table.Column(type: "uuid", nullable: false), file_id = table.Column(type: "character varying(32)", maxLength: 32, nullable: false), usage = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false), resource_id = table.Column(type: "character varying(1024)", maxLength: 1024, nullable: false), expired_at = table.Column(type: "timestamp with time zone", nullable: true), created_at = table.Column(type: "timestamp with time zone", nullable: false), updated_at = table.Column(type: "timestamp with time zone", nullable: false), deleted_at = table.Column(type: "timestamp with time zone", nullable: true) }, constraints: table => { table.PrimaryKey("pk_file_references", x => x.id); table.ForeignKey( name: "fk_file_references_files_file_id", column: x => x.file_id, principalTable: "files", principalColumn: "id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateIndex( name: "ix_file_references_file_id", table: "file_references", column: "file_id"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "file_references"); migrationBuilder.DropColumn( name: "image", table: "stickers"); migrationBuilder.DropColumn( name: "background", table: "realms"); migrationBuilder.DropColumn( name: "picture", table: "realms"); migrationBuilder.DropColumn( name: "background", table: "publishers"); migrationBuilder.DropColumn( name: "picture", table: "publishers"); migrationBuilder.DropColumn( name: "attachments", table: "posts"); migrationBuilder.DropColumn( name: "background", table: "chat_rooms"); migrationBuilder.DropColumn( name: "picture", table: "chat_rooms"); migrationBuilder.DropColumn( name: "attachments", table: "chat_messages"); migrationBuilder.DropColumn( name: "background", table: "account_profiles"); migrationBuilder.DropColumn( name: "picture", table: "account_profiles"); migrationBuilder.AddColumn( name: "background_id", table: "realms", type: "character varying(32)", maxLength: 32, nullable: true); migrationBuilder.AddColumn( name: "picture_id", table: "realms", type: "character varying(32)", maxLength: 32, nullable: true); migrationBuilder.AddColumn( name: "background_id", table: "publishers", type: "character varying(32)", maxLength: 32, nullable: true); migrationBuilder.AddColumn( name: "picture_id", table: "publishers", type: "character varying(32)", maxLength: 32, nullable: true); migrationBuilder.AddColumn( name: "threaded_post_id", table: "posts", type: "uuid", nullable: true); migrationBuilder.AddColumn( name: "expired_at", table: "files", type: "timestamp with time zone", nullable: true); migrationBuilder.AddColumn( name: "message_id", table: "files", type: "uuid", nullable: true); migrationBuilder.AddColumn( name: "post_id", table: "files", type: "uuid", nullable: true); migrationBuilder.AddColumn( name: "usage", table: "files", type: "character varying(1024)", maxLength: 1024, nullable: true); migrationBuilder.AddColumn( name: "used_count", table: "files", type: "integer", nullable: false, defaultValue: 0); migrationBuilder.AddColumn( name: "background_id", table: "chat_rooms", type: "character varying(32)", maxLength: 32, nullable: true); migrationBuilder.AddColumn( name: "picture_id", table: "chat_rooms", type: "character varying(32)", maxLength: 32, nullable: true); migrationBuilder.AddColumn( name: "background_id", table: "account_profiles", type: "character varying(32)", maxLength: 32, nullable: true); migrationBuilder.AddColumn( name: "picture_id", table: "account_profiles", type: "character varying(32)", maxLength: 32, nullable: true); migrationBuilder.CreateIndex( name: "ix_stickers_image_id", table: "stickers", column: "image_id"); migrationBuilder.CreateIndex( name: "ix_realms_background_id", table: "realms", column: "background_id"); migrationBuilder.CreateIndex( name: "ix_realms_picture_id", table: "realms", column: "picture_id"); migrationBuilder.CreateIndex( name: "ix_publishers_background_id", table: "publishers", column: "background_id"); migrationBuilder.CreateIndex( name: "ix_publishers_picture_id", table: "publishers", column: "picture_id"); migrationBuilder.CreateIndex( name: "ix_posts_threaded_post_id", table: "posts", column: "threaded_post_id", unique: true); migrationBuilder.CreateIndex( name: "ix_files_message_id", table: "files", column: "message_id"); migrationBuilder.CreateIndex( name: "ix_files_post_id", table: "files", column: "post_id"); migrationBuilder.CreateIndex( name: "ix_chat_rooms_background_id", table: "chat_rooms", column: "background_id"); migrationBuilder.CreateIndex( name: "ix_chat_rooms_picture_id", table: "chat_rooms", column: "picture_id"); migrationBuilder.CreateIndex( name: "ix_account_profiles_background_id", table: "account_profiles", column: "background_id"); migrationBuilder.CreateIndex( name: "ix_account_profiles_picture_id", table: "account_profiles", column: "picture_id"); migrationBuilder.AddForeignKey( name: "fk_account_profiles_files_background_id", table: "account_profiles", column: "background_id", principalTable: "files", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_account_profiles_files_picture_id", table: "account_profiles", column: "picture_id", principalTable: "files", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_chat_rooms_files_background_id", table: "chat_rooms", column: "background_id", principalTable: "files", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_chat_rooms_files_picture_id", table: "chat_rooms", column: "picture_id", principalTable: "files", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_files_chat_messages_message_id", table: "files", column: "message_id", principalTable: "chat_messages", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_files_posts_post_id", table: "files", column: "post_id", principalTable: "posts", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_posts_posts_threaded_post_id", table: "posts", column: "threaded_post_id", principalTable: "posts", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_publishers_files_background_id", table: "publishers", column: "background_id", principalTable: "files", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_publishers_files_picture_id", table: "publishers", column: "picture_id", principalTable: "files", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_realms_files_background_id", table: "realms", column: "background_id", principalTable: "files", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_realms_files_picture_id", table: "realms", column: "picture_id", principalTable: "files", principalColumn: "id"); migrationBuilder.AddForeignKey( name: "fk_stickers_files_image_id", table: "stickers", column: "image_id", principalTable: "files", principalColumn: "id", onDelete: ReferentialAction.Cascade); } } }