Files
IM_NEW/FileService.Infrastructure/Migrations/20260909000300_AsyncUploadResult.cs

132 lines
5.2 KiB
C#

using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
namespace FileService.Infrastructure.Migrations
{
[DbContext(typeof(FileDbContext))]
[Migration("20260909000300_AsyncUploadResult")]
public partial class AsyncUploadResult : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
AlterStringColumns(migrationBuilder, narrowing: true);
migrationBuilder.AddColumn<string>(
name: "ChatType",
table: "upload_files",
type: "varchar(16)",
maxLength: 16,
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "IsPublic",
table: "upload_files",
type: "tinyint(1)",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<Guid>(
name: "SourceTaskId",
table: "upload_files",
type: "char(36)",
nullable: true);
migrationBuilder.AddColumn<Guid>(
name: "TargetId",
table: "upload_files",
type: "char(36)",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ChatType",
table: "upload_tasks",
type: "varchar(16)",
maxLength: 16,
nullable: true);
migrationBuilder.AddColumn<string>(
name: "FailureReason",
table: "upload_tasks",
type: "varchar(500)",
maxLength: 500,
nullable: true);
migrationBuilder.AddColumn<Guid>(
name: "ResultFileId",
table: "upload_tasks",
type: "char(36)",
nullable: true);
migrationBuilder.AddColumn<Guid>(
name: "TargetId",
table: "upload_tasks",
type: "char(36)",
nullable: true);
migrationBuilder.CreateIndex(
name: "IX_upload_files_SourceTaskId",
table: "upload_files",
column: "SourceTaskId",
unique: true);
migrationBuilder.CreateIndex(
name: "IX_upload_files_checksum",
table: "upload_files",
columns: new[] { "checksum_algorithm", "checksum_value", "IsDeleted" });
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex("IX_upload_files_checksum", "upload_files");
migrationBuilder.DropIndex("IX_upload_files_SourceTaskId", "upload_files");
migrationBuilder.DropColumn("ChatType", "upload_files");
migrationBuilder.DropColumn("IsPublic", "upload_files");
migrationBuilder.DropColumn("SourceTaskId", "upload_files");
migrationBuilder.DropColumn("TargetId", "upload_files");
migrationBuilder.DropColumn("ChatType", "upload_tasks");
migrationBuilder.DropColumn("FailureReason", "upload_tasks");
migrationBuilder.DropColumn("ResultFileId", "upload_tasks");
migrationBuilder.DropColumn("TargetId", "upload_tasks");
AlterStringColumns(migrationBuilder, narrowing: false);
}
private static void AlterStringColumns(MigrationBuilder migrationBuilder, bool narrowing)
{
var columns = new (string Table, string Column, int Length, bool Nullable)[]
{
("upload_files", "FileName", 255, false),
("upload_files", "ContentType", 255, false),
("upload_files", "checksum_algorithm", 16, false),
("upload_files", "checksum_value", 128, false),
("upload_files", "storage_provider", 64, false),
("upload_files", "storage_bucket", 255, false),
("upload_files", "storage_key", 1024, false),
("upload_files", "storage_region", 128, true),
("upload_tasks", "FileName", 255, false),
("upload_tasks", "ContentType", 255, false),
("upload_tasks", "checksum_algorithm", 16, false),
("upload_tasks", "checksum_value", 128, false),
("upload_tasks", "storage_provider", 64, false),
("upload_tasks", "storage_bucket", 255, false),
("upload_tasks", "storage_key", 1024, false),
("upload_tasks", "storage_region", 128, true)
};
foreach (var (table, column, length, nullable) in columns)
{
migrationBuilder.AlterColumn<string>(
name: column,
table: table,
type: narrowing ? $"varchar({length})" : "longtext",
maxLength: narrowing ? length : null,
nullable: nullable,
oldClrType: typeof(string),
oldType: narrowing ? "longtext" : $"varchar({length})",
oldMaxLength: narrowing ? null : length,
oldNullable: nullable);
}
}
}
}