17 changed files with 1029 additions and 78 deletions
@ -0,0 +1,58 @@ |
|||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Options; |
||||
|
using Ocelot.Configuration.Creator; |
||||
|
using Ocelot.Configuration.Repository; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
using Volo.Abp.EventBus.Distributed; |
||||
|
|
||||
|
namespace LINGYUN.ApiGateway.EventBus |
||||
|
{ |
||||
|
public class ApigatewayConfigChangeEventHandler : IDistributedEventHandler<ApigatewayConfigChangeEventData>, ITransientDependency |
||||
|
{ |
||||
|
protected ApiGatewayOptions Options { get; } |
||||
|
private readonly ILogger<ApigatewayConfigChangeEventHandler> _logger; |
||||
|
|
||||
|
private readonly IFileConfigurationRepository _fileConfigRepo; |
||||
|
private readonly IInternalConfigurationRepository _internalConfigRepo; |
||||
|
private readonly IInternalConfigurationCreator _internalConfigCreator; |
||||
|
public ApigatewayConfigChangeEventHandler( |
||||
|
IOptions<ApiGatewayOptions> options, |
||||
|
IFileConfigurationRepository fileConfigRepo, |
||||
|
IInternalConfigurationRepository internalConfigRepo, |
||||
|
IInternalConfigurationCreator internalConfigCreator, |
||||
|
ILogger<ApigatewayConfigChangeEventHandler> logger) |
||||
|
{ |
||||
|
_fileConfigRepo = fileConfigRepo; |
||||
|
_internalConfigRepo = internalConfigRepo; |
||||
|
_internalConfigCreator = internalConfigCreator; |
||||
|
_logger = logger; |
||||
|
|
||||
|
Options = options.Value; |
||||
|
} |
||||
|
|
||||
|
public async Task HandleEventAsync(ApigatewayConfigChangeEventData eventData) |
||||
|
{ |
||||
|
if (Options.AppId.Equals(eventData.AppId)) |
||||
|
{ |
||||
|
var fileConfig = await _fileConfigRepo.Get(); |
||||
|
|
||||
|
if (fileConfig.IsError) |
||||
|
{ |
||||
|
_logger.LogWarning($"error geting file config, errors are {string.Join(",", fileConfig.Errors.Select(x => x.Message))}"); |
||||
|
return; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
var config = await _internalConfigCreator.Create(fileConfig.Data); |
||||
|
if (!config.IsError) |
||||
|
{ |
||||
|
_internalConfigRepo.AddOrReplace(config.Data); |
||||
|
} |
||||
|
} |
||||
|
_logger.LogInformation("ocelot configuration changed on {0}", eventData.DateTime); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,9 +0,0 @@ |
|||||
using System.Threading.Tasks; |
|
||||
|
|
||||
namespace LINGYUN.ApiGateway.EventBus |
|
||||
{ |
|
||||
public interface IOcelotConfigurationChangedEvent |
|
||||
{ |
|
||||
Task OnOcelotConfigurationChanged(ApigatewayConfigChangeEventData changeCommand); |
|
||||
} |
|
||||
} |
|
||||
@ -1,50 +0,0 @@ |
|||||
using Microsoft.Extensions.Logging; |
|
||||
using Ocelot.Configuration.Creator; |
|
||||
using Ocelot.Configuration.Repository; |
|
||||
using System.Linq; |
|
||||
using System.Threading.Tasks; |
|
||||
using Volo.Abp.DependencyInjection; |
|
||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace LINGYUN.ApiGateway.EventBus |
|
||||
{ |
|
||||
public class OcelotConfigurationChangedEvent : IDistributedEventHandler<ApigatewayConfigChangeEventData>, ITransientDependency |
|
||||
{ |
|
||||
private readonly ILogger<OcelotConfigurationChangedEvent> _logger; |
|
||||
|
|
||||
private readonly IFileConfigurationRepository _fileConfigRepo; |
|
||||
private readonly IInternalConfigurationRepository _internalConfigRepo; |
|
||||
private readonly IInternalConfigurationCreator _internalConfigCreator; |
|
||||
public OcelotConfigurationChangedEvent( |
|
||||
IFileConfigurationRepository fileConfigRepo, |
|
||||
IInternalConfigurationRepository internalConfigRepo, |
|
||||
IInternalConfigurationCreator internalConfigCreator, |
|
||||
ILogger<OcelotConfigurationChangedEvent> logger) |
|
||||
{ |
|
||||
_fileConfigRepo = fileConfigRepo; |
|
||||
_internalConfigRepo = internalConfigRepo; |
|
||||
_internalConfigCreator = internalConfigCreator; |
|
||||
_logger = logger; |
|
||||
} |
|
||||
|
|
||||
public async Task HandleEventAsync(ApigatewayConfigChangeEventData eventData) |
|
||||
{ |
|
||||
var fileConfig = await _fileConfigRepo.Get(); |
|
||||
|
|
||||
if (fileConfig.IsError) |
|
||||
{ |
|
||||
_logger.LogWarning($"error geting file config, errors are {string.Join(",", fileConfig.Errors.Select(x => x.Message))}"); |
|
||||
return; |
|
||||
} |
|
||||
else |
|
||||
{ |
|
||||
var config = await _internalConfigCreator.Create(fileConfig.Data); |
|
||||
if (!config.IsError) |
|
||||
{ |
|
||||
_internalConfigRepo.AddOrReplace(config.Data); |
|
||||
} |
|
||||
} |
|
||||
_logger.LogInformation("ocelot configuration changed on {0}", eventData.DateTime); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,881 @@ |
|||||
|
// <auto-generated />
|
||||
|
using System; |
||||
|
using LINGYUN.ApiGateway.EntityFrameworkCore; |
||||
|
using Microsoft.EntityFrameworkCore; |
||||
|
using Microsoft.EntityFrameworkCore.Infrastructure; |
||||
|
using Microsoft.EntityFrameworkCore.Migrations; |
||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion; |
||||
|
using Volo.Abp.EntityFrameworkCore; |
||||
|
|
||||
|
namespace LINGYUN.ApiGateway.HttpApi.Host.Migrations |
||||
|
{ |
||||
|
[DbContext(typeof(HttpApiHostMigrationsDbContext))] |
||||
|
[Migration("20200618090102_Modify-ReRoute-Index-Unique")] |
||||
|
partial class ModifyReRouteIndexUnique |
||||
|
{ |
||||
|
protected override void BuildTargetModel(ModelBuilder modelBuilder) |
||||
|
{ |
||||
|
#pragma warning disable 612, 618
|
||||
|
modelBuilder |
||||
|
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql) |
||||
|
.HasAnnotation("ProductVersion", "3.1.4") |
||||
|
.HasAnnotation("Relational:MaxIdentifierLength", 64); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.AggregateReRoute", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("Aggregator") |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.Property<string>("AppId") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<string>("ConcurrencyStamp") |
||||
|
.IsConcurrencyToken() |
||||
|
.HasColumnName("ConcurrencyStamp") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<string>("ExtraProperties") |
||||
|
.HasColumnName("ExtraProperties") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<string>("Name") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<int?>("Priority") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<long>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<bool>("ReRouteIsCaseSensitive") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("tinyint(1)") |
||||
|
.HasDefaultValue(false); |
||||
|
|
||||
|
b.Property<string>("ReRouteKeys") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("UpstreamHost") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("UpstreamHttpMethod") |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<string>("UpstreamPathTemplate") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayAggregate"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.AggregateReRouteConfig", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<int?>("AggregateReRouteId") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("JsonPath") |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.Property<string>("Parameter") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<long>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("ReRouteKey") |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("AggregateReRouteId"); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayAggregateConfig"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.AuthenticationOptions", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("AllowedScopes") |
||||
|
.HasColumnType("varchar(200) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(200); |
||||
|
|
||||
|
b.Property<string>("AuthenticationProviderKey") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<long>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("ReRouteId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayAuthOptions"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.CacheOptions", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<long>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("Region") |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.Property<int?>("TtlSeconds") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("ReRouteId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayCacheOptions"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.DynamicReRoute", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("AppId") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<string>("ConcurrencyStamp") |
||||
|
.IsConcurrencyToken() |
||||
|
.HasColumnName("ConcurrencyStamp") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<string>("DownstreamHttpVersion") |
||||
|
.HasColumnType("varchar(30) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(30); |
||||
|
|
||||
|
b.Property<long>("DynamicReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("ExtraProperties") |
||||
|
.HasColumnName("ExtraProperties") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<string>("ServiceName") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayDynamicReRoute"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("AppId") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<string>("BaseUrl") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.Property<string>("ConcurrencyStamp") |
||||
|
.IsConcurrencyToken() |
||||
|
.HasColumnName("ConcurrencyStamp") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<string>("DownstreamHttpVersion") |
||||
|
.HasColumnType("varchar(30) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(30); |
||||
|
|
||||
|
b.Property<string>("DownstreamScheme") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<string>("ExtraProperties") |
||||
|
.HasColumnName("ExtraProperties") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<bool>("IsActive") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<bool>("IsDeleted") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnName("IsDeleted") |
||||
|
.HasColumnType("tinyint(1)") |
||||
|
.HasDefaultValue(false); |
||||
|
|
||||
|
b.Property<long>("ItemId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("RequestIdKey") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayGlobalConfiguration"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.Headers", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("Key") |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<long>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("Value") |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayHeaders"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.HostAndPort", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("Host") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<int?>("Port") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int") |
||||
|
.HasDefaultValue(0); |
||||
|
|
||||
|
b.Property<long>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayHostAndPort"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.HttpHandlerOptions", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<bool>("AllowAutoRedirect") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<long?>("ItemId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<int?>("MaxConnectionsPerServer") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<long?>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<bool>("UseCookieContainer") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<bool>("UseProxy") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<bool>("UseTracing") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("ItemId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.HasIndex("ReRouteId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayHttpOptions"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.LoadBalancerOptions", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<int?>("Expiry") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<long?>("ItemId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("Key") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<long?>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("Type") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("ItemId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.HasIndex("ReRouteId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayBalancerOptions"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.QoSOptions", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<int?>("DurationOfBreak") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<int?>("ExceptionsAllowedBeforeBreaking") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<long?>("ItemId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<long?>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<int?>("TimeoutValue") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("ItemId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.HasIndex("ReRouteId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayQoSOptions"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.RateLimitOptions", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("ClientIdHeader") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50) |
||||
|
.HasDefaultValue("ClientId"); |
||||
|
|
||||
|
b.Property<bool>("DisableRateLimitHeaders") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<int?>("HttpStatusCode") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int") |
||||
|
.HasDefaultValue(429); |
||||
|
|
||||
|
b.Property<long>("ItemId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("QuotaExceededMessage") |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.Property<string>("RateLimitCounterPrefix") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50) |
||||
|
.HasDefaultValue("ocelot"); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("ItemId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayRateLimitOptions"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.RateLimitRule", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("ClientWhitelist") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<long?>("DynamicReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<bool>("EnableRateLimiting") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<long?>("Limit") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("Period") |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<double?>("PeriodTimespan") |
||||
|
.HasColumnType("double"); |
||||
|
|
||||
|
b.Property<long?>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("DynamicReRouteId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.HasIndex("ReRouteId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayRateLimitRule"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.ReRoute", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("AddClaimsToRequest") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("AddHeadersToRequest") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("AddQueriesToRequest") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("AppId") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<string>("ChangeDownstreamPathTemplate") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("ConcurrencyStamp") |
||||
|
.IsConcurrencyToken() |
||||
|
.HasColumnName("ConcurrencyStamp") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<bool>("DangerousAcceptAnyServerCertificateValidator") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<string>("DelegatingHandlers") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("DownstreamHeaderTransform") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("DownstreamHostAndPorts") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("DownstreamHttpMethod") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<string>("DownstreamHttpVersion") |
||||
|
.HasColumnType("varchar(30) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(30); |
||||
|
|
||||
|
b.Property<string>("DownstreamPathTemplate") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<string>("DownstreamScheme") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<string>("ExtraProperties") |
||||
|
.HasColumnName("ExtraProperties") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<string>("Key") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<int?>("Priority") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<long>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<bool>("ReRouteIsCaseSensitive") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<string>("ReRouteName") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<string>("RequestIdKey") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<string>("RouteClaimsRequirement") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("ServiceName") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<string>("ServiceNamespace") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<int?>("Timeout") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("UpstreamHeaderTransform") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("UpstreamHost") |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<string>("UpstreamHttpMethod") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<string>("UpstreamPathTemplate") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("AppId", "DownstreamPathTemplate", "UpstreamPathTemplate") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayReRoute"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.RouteGroup", b => |
||||
|
{ |
||||
|
b.Property<Guid>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("char(36)"); |
||||
|
|
||||
|
b.Property<string>("AppId") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<string>("AppIpAddress") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.Property<string>("AppName") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(100) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(100); |
||||
|
|
||||
|
b.Property<string>("ConcurrencyStamp") |
||||
|
.IsConcurrencyToken() |
||||
|
.HasColumnName("ConcurrencyStamp") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<DateTime>("CreationTime") |
||||
|
.HasColumnName("CreationTime") |
||||
|
.HasColumnType("datetime(6)"); |
||||
|
|
||||
|
b.Property<Guid?>("CreatorId") |
||||
|
.HasColumnName("CreatorId") |
||||
|
.HasColumnType("char(36)"); |
||||
|
|
||||
|
b.Property<Guid?>("DeleterId") |
||||
|
.HasColumnType("char(36)"); |
||||
|
|
||||
|
b.Property<DateTime?>("DeletionTime") |
||||
|
.HasColumnType("datetime(6)"); |
||||
|
|
||||
|
b.Property<string>("Description") |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.Property<string>("ExtraProperties") |
||||
|
.HasColumnName("ExtraProperties") |
||||
|
.HasColumnType("longtext CHARACTER SET utf8mb4"); |
||||
|
|
||||
|
b.Property<bool>("IsActive") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<bool>("IsDeleted") |
||||
|
.HasColumnType("tinyint(1)"); |
||||
|
|
||||
|
b.Property<DateTime?>("LastModificationTime") |
||||
|
.HasColumnName("LastModificationTime") |
||||
|
.HasColumnType("datetime(6)"); |
||||
|
|
||||
|
b.Property<Guid?>("LastModifierId") |
||||
|
.HasColumnName("LastModifierId") |
||||
|
.HasColumnType("char(36)"); |
||||
|
|
||||
|
b.Property<string>("Name") |
||||
|
.IsRequired() |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("AppId", "AppName", "AppIpAddress"); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayRouteGroup"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.SecurityOptions", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("IPAllowedList") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<string>("IPBlockedList") |
||||
|
.HasColumnType("varchar(1000) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(1000); |
||||
|
|
||||
|
b.Property<long>("ReRouteId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("ReRouteId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewaySecurityOptions"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.ServiceDiscoveryProvider", b => |
||||
|
{ |
||||
|
b.Property<int>("Id") |
||||
|
.ValueGeneratedOnAdd() |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("ConfigurationKey") |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.Property<string>("Host") |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<long>("ItemId") |
||||
|
.HasColumnType("bigint"); |
||||
|
|
||||
|
b.Property<string>("Namespace") |
||||
|
.HasColumnType("varchar(128) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(128); |
||||
|
|
||||
|
b.Property<int?>("PollingInterval") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<int?>("Port") |
||||
|
.HasColumnType("int"); |
||||
|
|
||||
|
b.Property<string>("Scheme") |
||||
|
.HasColumnType("varchar(50) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(50); |
||||
|
|
||||
|
b.Property<string>("Token") |
||||
|
.HasColumnType("varchar(256) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(256); |
||||
|
|
||||
|
b.Property<string>("Type") |
||||
|
.HasColumnType("varchar(128) CHARACTER SET utf8mb4") |
||||
|
.HasMaxLength(128); |
||||
|
|
||||
|
b.HasKey("Id"); |
||||
|
|
||||
|
b.HasIndex("ItemId") |
||||
|
.IsUnique(); |
||||
|
|
||||
|
b.ToTable("AppApiGatewayDiscovery"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.AggregateReRouteConfig", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.AggregateReRoute", null) |
||||
|
.WithMany("ReRouteKeysConfig") |
||||
|
.HasForeignKey("AggregateReRouteId"); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.AuthenticationOptions", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRoute") |
||||
|
.WithOne("AuthenticationOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.AuthenticationOptions", "ReRouteId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRouteId") |
||||
|
.OnDelete(DeleteBehavior.Cascade) |
||||
|
.IsRequired(); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.CacheOptions", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRoute") |
||||
|
.WithOne("CacheOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.CacheOptions", "ReRouteId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRouteId") |
||||
|
.OnDelete(DeleteBehavior.Cascade) |
||||
|
.IsRequired(); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.HttpHandlerOptions", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "GlobalConfiguration") |
||||
|
.WithOne("HttpHandlerOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.HttpHandlerOptions", "ItemId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "ItemId") |
||||
|
.OnDelete(DeleteBehavior.Cascade); |
||||
|
|
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRoute") |
||||
|
.WithOne("HttpHandlerOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.HttpHandlerOptions", "ReRouteId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRouteId") |
||||
|
.OnDelete(DeleteBehavior.Cascade); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.LoadBalancerOptions", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "GlobalConfiguration") |
||||
|
.WithOne("LoadBalancerOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.LoadBalancerOptions", "ItemId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "ItemId") |
||||
|
.OnDelete(DeleteBehavior.Cascade); |
||||
|
|
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRoute") |
||||
|
.WithOne("LoadBalancerOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.LoadBalancerOptions", "ReRouteId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRouteId") |
||||
|
.OnDelete(DeleteBehavior.Cascade); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.QoSOptions", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "GlobalConfiguration") |
||||
|
.WithOne("QoSOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.QoSOptions", "ItemId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "ItemId") |
||||
|
.OnDelete(DeleteBehavior.Cascade); |
||||
|
|
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRoute") |
||||
|
.WithOne("QoSOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.QoSOptions", "ReRouteId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRouteId") |
||||
|
.OnDelete(DeleteBehavior.Cascade); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.RateLimitOptions", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "GlobalConfiguration") |
||||
|
.WithOne("RateLimitOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.RateLimitOptions", "ItemId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "ItemId") |
||||
|
.OnDelete(DeleteBehavior.Cascade) |
||||
|
.IsRequired(); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.RateLimitRule", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.DynamicReRoute", "DynamicReRoute") |
||||
|
.WithOne("RateLimitRule") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.RateLimitRule", "DynamicReRouteId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.DynamicReRoute", "DynamicReRouteId") |
||||
|
.OnDelete(DeleteBehavior.Cascade); |
||||
|
|
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRoute") |
||||
|
.WithOne("RateLimitOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.RateLimitRule", "ReRouteId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRouteId") |
||||
|
.OnDelete(DeleteBehavior.Cascade); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.SecurityOptions", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRoute") |
||||
|
.WithOne("SecurityOptions") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.SecurityOptions", "ReRouteId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.ReRoute", "ReRouteId") |
||||
|
.OnDelete(DeleteBehavior.Cascade) |
||||
|
.IsRequired(); |
||||
|
}); |
||||
|
|
||||
|
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.ServiceDiscoveryProvider", b => |
||||
|
{ |
||||
|
b.HasOne("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "GlobalConfiguration") |
||||
|
.WithOne("ServiceDiscoveryProvider") |
||||
|
.HasForeignKey("LINGYUN.ApiGateway.Ocelot.ServiceDiscoveryProvider", "ItemId") |
||||
|
.HasPrincipalKey("LINGYUN.ApiGateway.Ocelot.GlobalConfiguration", "ItemId") |
||||
|
.OnDelete(DeleteBehavior.Cascade) |
||||
|
.IsRequired(); |
||||
|
}); |
||||
|
#pragma warning restore 612, 618
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,33 @@ |
|||||
|
using Microsoft.EntityFrameworkCore.Migrations; |
||||
|
|
||||
|
namespace LINGYUN.ApiGateway.HttpApi.Host.Migrations |
||||
|
{ |
||||
|
public partial class ModifyReRouteIndexUnique : Migration |
||||
|
{ |
||||
|
protected override void Up(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.DropIndex( |
||||
|
name: "IX_AppApiGatewayReRoute_DownstreamPathTemplate_UpstreamPathTemp~", |
||||
|
table: "AppApiGatewayReRoute"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AppApiGatewayReRoute_AppId_DownstreamPathTemplate_UpstreamPa~", |
||||
|
table: "AppApiGatewayReRoute", |
||||
|
columns: new[] { "AppId", "DownstreamPathTemplate", "UpstreamPathTemplate" }, |
||||
|
unique: true); |
||||
|
} |
||||
|
|
||||
|
protected override void Down(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.DropIndex( |
||||
|
name: "IX_AppApiGatewayReRoute_AppId_DownstreamPathTemplate_UpstreamPa~", |
||||
|
table: "AppApiGatewayReRoute"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AppApiGatewayReRoute_DownstreamPathTemplate_UpstreamPathTemp~", |
||||
|
table: "AppApiGatewayReRoute", |
||||
|
columns: new[] { "DownstreamPathTemplate", "UpstreamPathTemplate" }, |
||||
|
unique: true); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue