Files
managing-apps/src/Managing.Infrastructure.Database/Migrations/20250915052125_ChangeRequestIdToGuid.cs
2025-09-15 12:56:59 +07:00

62 lines
2.4 KiB
C#

using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Managing.Infrastructure.Databases.Migrations
{
/// <inheritdoc />
public partial class ChangeRequestIdToGuid : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
// Convert BundleBacktestRequests.RequestId from varchar to uuid
// First, ensure all values are valid UUIDs or convert them
migrationBuilder.Sql(@"
UPDATE ""BundleBacktestRequests""
SET ""RequestId"" = gen_random_uuid()::text
WHERE ""RequestId"" IS NULL OR ""RequestId"" = '' OR
""RequestId"" !~ '^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$';
");
// Now convert the column type using the USING clause
migrationBuilder.Sql(@"
ALTER TABLE ""BundleBacktestRequests""
ALTER COLUMN ""RequestId"" TYPE uuid USING ""RequestId""::uuid;
");
// Convert Backtests.RequestId from varchar to uuid
// First, ensure all values are valid UUIDs or convert them
migrationBuilder.Sql(@"
UPDATE ""Backtests""
SET ""RequestId"" = gen_random_uuid()::text
WHERE ""RequestId"" IS NULL OR ""RequestId"" = '' OR
""RequestId"" !~ '^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$';
");
// Now convert the column type using the USING clause
migrationBuilder.Sql(@"
ALTER TABLE ""Backtests""
ALTER COLUMN ""RequestId"" TYPE uuid USING ""RequestId""::uuid;
");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
// Convert BundleBacktestRequests.RequestId from uuid back to varchar
migrationBuilder.Sql(@"
ALTER TABLE ""BundleBacktestRequests""
ALTER COLUMN ""RequestId"" TYPE character varying(255) USING ""RequestId""::text;
");
// Convert Backtests.RequestId from uuid back to varchar
migrationBuilder.Sql(@"
ALTER TABLE ""Backtests""
ALTER COLUMN ""RequestId"" TYPE character varying(255) USING ""RequestId""::text;
");
}
}
}