Browse Source

修复流量控制接口参数类型错误的bug;修复不同AppId下不能出现相同路由名称的bug

pull/7/head
cKey 6 years ago
parent
commit
72f9777767
  1. 7
      aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Application.Contracts/LINGYUN.ApiGateway.Application.Contracts.csproj
  2. 10
      aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Application/LINGYUN/ApiGateway/Ocelot/AggregateReRouteAppService.cs
  3. 4
      aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Application/LINGYUN/ApiGateway/Ocelot/GlobalConfigurationAppService.cs
  4. 12
      aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Application/LINGYUN/ApiGateway/Ocelot/ReRouteAppService.cs
  5. 7
      aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Domain.Shared/LINGYUN.ApiGateway.Domain.Shared.csproj
  6. 4
      aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Domain.Shared/LINGYUN/ApiGateway/EventBus/ApigatewayConfigChangeEventData.cs
  7. 2
      aspnet-core/modules/apigateway/LINGYUN.ApiGateway.EntityFrameworkCore/LINGYUN/ApiGateway/EntityFrameworkCore/ApiGatewayDbContextModelCreatingExtensions.cs
  8. 7
      aspnet-core/modules/apigateway/LINGYUN.ApiGateway.HttpApi.Client/LINGYUN.ApiGateway.HttpApi.Client.csproj
  9. 1
      aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Mapper/MessageServiceDomainAutoMapperProfile.cs
  10. 58
      aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/LINGYUN/ApiGateway/EventBus/ApigatewayConfigChangeEventHandler.cs
  11. 9
      aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/LINGYUN/ApiGateway/EventBus/IOcelotConfigurationChangedEvent.cs
  12. 50
      aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/LINGYUN/ApiGateway/EventBus/OcelotConfigurationChangedEvent.cs
  13. 881
      aspnet-core/services/apigateway/LINGYUN.ApiGateway.HttpApi.Host/Migrations/20200618090102_Modify-ReRoute-Index-Unique.Designer.cs
  14. 33
      aspnet-core/services/apigateway/LINGYUN.ApiGateway.HttpApi.Host/Migrations/20200618090102_Modify-ReRoute-Index-Unique.cs
  15. 6
      aspnet-core/services/apigateway/LINGYUN.ApiGateway.HttpApi.Host/Migrations/HttpApiHostMigrationsDbContextModelSnapshot.cs
  16. 3
      vueJs/src/lang/zh.ts
  17. 13
      vueJs/src/views/admin/apigateway/components/RouteCreateOrEditForm.vue

7
aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Application.Contracts/LINGYUN.ApiGateway.Application.Contracts.csproj

@ -3,6 +3,13 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace />
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>2.9.0</Version>
<Authors>LINGYUN</Authors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>D:\LocalNuget</OutputPath>
</PropertyGroup>
<ItemGroup>

10
aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Application/LINGYUN/ApiGateway/Ocelot/AggregateReRouteAppService.cs

@ -74,7 +74,7 @@ namespace LINGYUN.ApiGateway.Ocelot
}
aggregateRoute = await _aggregateReRouteRepository.InsertAsync(aggregateRoute);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("AggregateRoute", "Create"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(aggregateRoute.AppId, "AggregateRoute", "Create"));
return ObjectMapper.Map<AggregateReRoute, AggregateReRouteDto>(aggregateRoute);
}
@ -104,7 +104,7 @@ namespace LINGYUN.ApiGateway.Ocelot
aggregateRoute = await _aggregateReRouteRepository.UpdateAsync(aggregateRoute, true);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("AggregateRoute", "Update"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(aggregateRoute.AppId, "AggregateRoute", "Update"));
return ObjectMapper.Map<AggregateReRoute, AggregateReRouteDto>(aggregateRoute);
}
@ -116,7 +116,7 @@ namespace LINGYUN.ApiGateway.Ocelot
var aggregateRoute = await _aggregateReRouteRepository.GetByRouteIdAsync(routeId);
await _aggregateReRouteRepository.DeleteAsync(aggregateRoute);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("AggregateRoute", "Delete"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(aggregateRoute.AppId, "AggregateRoute", "Delete"));
}
[Authorize(ApiGatewayPermissions.AggregateRoute.ManageRouteConfig)]
@ -131,7 +131,7 @@ namespace LINGYUN.ApiGateway.Ocelot
await _aggregateReRouteRepository.UpdateAsync(aggregateRoute);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("AggregateRoute", "AddRouteConfig"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(aggregateRoute.AppId, "AggregateRoute", "AddRouteConfig"));
return ObjectMapper.Map<AggregateReRouteConfig, AggregateReRouteConfigDto>(aggregateRouteConfig);
}
@ -145,7 +145,7 @@ namespace LINGYUN.ApiGateway.Ocelot
await _aggregateReRouteRepository.UpdateAsync(aggregateRoute);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("AggregateRoute", "DeleteRouteConfig"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(aggregateRoute.AppId, "AggregateRoute", "DeleteRouteConfig"));
}
}
}

4
aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Application/LINGYUN/ApiGateway/Ocelot/GlobalConfigurationAppService.cs

@ -55,7 +55,7 @@ namespace LINGYUN.ApiGateway.Ocelot
globalConfiguration = await _globalConfigRepository.InsertAsync(globalConfiguration, true);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("Global", "Create"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(globalConfiguration.AppId, "Global", "Create"));
return ObjectMapper.Map<GlobalConfiguration, GlobalConfigurationDto>(globalConfiguration);
}
@ -74,7 +74,7 @@ namespace LINGYUN.ApiGateway.Ocelot
globalConfiguration = await _globalConfigRepository.UpdateAsync(globalConfiguration, true);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("Global", "Modify"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(globalConfiguration.AppId, "Global", "Modify"));
return ObjectMapper.Map<GlobalConfiguration, GlobalConfigurationDto>(globalConfiguration);
}

12
aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Application/LINGYUN/ApiGateway/Ocelot/ReRouteAppService.cs

@ -36,7 +36,7 @@ namespace LINGYUN.ApiGateway.Ocelot
var reRouteDto = ObjectMapper.Map<ReRoute, ReRouteDto>(reRoute);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("ReRoute", "Create"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(reRoute.AppId, "ReRoute", "Create"));
return reRouteDto;
}
@ -73,7 +73,7 @@ namespace LINGYUN.ApiGateway.Ocelot
var reRouteDto = ObjectMapper.Map<ReRoute, ReRouteDto>(reRoute);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("ReRoute", "Modify"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(reRoute.AppId, "ReRoute", "Modify"));
return reRouteDto;
}
@ -115,9 +115,11 @@ namespace LINGYUN.ApiGateway.Ocelot
[Authorize(ApiGatewayPermissions.Route.Delete)]
public async Task DeleteAsync(ReRouteGetByIdInputDto routeGetById)
{
await _reRouteRepository.DeleteAsync(x => x.ReRouteId.Equals(routeGetById.RouteId));
var reRoute = await _reRouteRepository.GetByReRouteIdAsync(routeGetById.RouteId);
await _reRouteRepository.DeleteAsync(reRoute);
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("ReRoute", "Delete"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(reRoute.AppId, "ReRoute", "Delete"));
}
[Authorize(ApiGatewayPermissions.Route.Delete)]
@ -127,7 +129,7 @@ namespace LINGYUN.ApiGateway.Ocelot
await _reRouteRepository.DeleteAsync(x => x.AppId.Equals(routeGetByAppId.AppId));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData("ReRoute", "Clean"));
await DistributedEventBus.PublishAsync(new ApigatewayConfigChangeEventData(routeGetByAppId.AppId, "ReRoute", "Clean"));
}
protected virtual void ApplyReRouteOptions(ReRoute reRoute, ReRouteDtoBase routeDto)

7
aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Domain.Shared/LINGYUN.ApiGateway.Domain.Shared.csproj

@ -3,6 +3,13 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace />
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>2.9.0</Version>
<Authors>LINGYUN</Authors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>D:\LocalNuget</OutputPath>
</PropertyGroup>
<ItemGroup>

4
aspnet-core/modules/apigateway/LINGYUN.ApiGateway.Domain.Shared/LINGYUN/ApiGateway/EventBus/ApigatewayConfigChangeEventData.cs

@ -5,6 +5,7 @@ namespace LINGYUN.ApiGateway.EventBus
public class ApigatewayConfigChangeEventData
{
public DateTime DateTime { get; set; }
public string AppId { get; set; }
public string Method { get; set; }
public string Object { get; set; }
protected ApigatewayConfigChangeEventData()
@ -12,8 +13,9 @@ namespace LINGYUN.ApiGateway.EventBus
}
public ApigatewayConfigChangeEventData(string @object, string @method)
public ApigatewayConfigChangeEventData(string appId, string @object, string @method)
{
AppId = appId;
DateTime = DateTime.Now;
Object = @object;
Method = @method;

2
aspnet-core/modules/apigateway/LINGYUN.ApiGateway.EntityFrameworkCore/LINGYUN/ApiGateway/EntityFrameworkCore/ApiGatewayDbContextModelCreatingExtensions.cs

@ -304,7 +304,7 @@ namespace LINGYUN.ApiGateway.EntityFrameworkCore
e.Property(x => x.DownstreamHostAndPorts).HasMaxLength(1000);
e.Property(x => x.DelegatingHandlers).HasMaxLength(1000);
e.HasIndex(i => new { i.DownstreamPathTemplate, i.UpstreamPathTemplate }).IsUnique();
e.HasIndex(i => new { i.AppId, i.DownstreamPathTemplate, i.UpstreamPathTemplate }).IsUnique();
e.ConfigureConcurrencyStamp();
e.ConfigureExtraProperties();

7
aspnet-core/modules/apigateway/LINGYUN.ApiGateway.HttpApi.Client/LINGYUN.ApiGateway.HttpApi.Client.csproj

@ -3,6 +3,13 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace />
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>2.9.0</Version>
<Authors>LINGYUN</Authors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>D:\LocalNuget</OutputPath>
</PropertyGroup>
<ItemGroup>

1
aspnet-core/modules/message/LINGYUN.Abp.MessageService.Domain/LINGYUN/Abp/MessageService/Mapper/MessageServiceDomainAutoMapperProfile.cs

@ -17,6 +17,7 @@ namespace LINGYUN.Abp.MessageService.Mapper
.ForMember(dto => dto.Id, map => map.MapFrom(src => src.NotificationId))
.ForMember(dto => dto.Name, map => map.MapFrom(src => src.NotificationName))
.ForMember(dto => dto.CateGory, map => map.MapFrom(src => src.NotificationCateGory))
.ForMember(dto => dto.Lifetime, map => map.Ignore())
.ForMember(dto => dto.NotificationType, map => map.MapFrom(src => src.Type))
.ForMember(dto => dto.NotificationSeverity, map => map.MapFrom(src => src.Severity))
.ForMember(dto => dto.Data, map => map.MapFrom((src, nfi) =>

58
aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/LINGYUN/ApiGateway/EventBus/ApigatewayConfigChangeEventHandler.cs

@ -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);
}
}
}
}

9
aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/LINGYUN/ApiGateway/EventBus/IOcelotConfigurationChangedEvent.cs

@ -1,9 +0,0 @@
using System.Threading.Tasks;
namespace LINGYUN.ApiGateway.EventBus
{
public interface IOcelotConfigurationChangedEvent
{
Task OnOcelotConfigurationChanged(ApigatewayConfigChangeEventData changeCommand);
}
}

50
aspnet-core/services/apigateway/LINGYUN.ApiGateway.Host/LINGYUN/ApiGateway/EventBus/OcelotConfigurationChangedEvent.cs

@ -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);
}
}
}

881
aspnet-core/services/apigateway/LINGYUN.ApiGateway.HttpApi.Host/Migrations/20200618090102_Modify-ReRoute-Index-Unique.Designer.cs

@ -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
}
}
}

33
aspnet-core/services/apigateway/LINGYUN.ApiGateway.HttpApi.Host/Migrations/20200618090102_Modify-ReRoute-Index-Unique.cs

@ -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);
}
}
}

6
aspnet-core/services/apigateway/LINGYUN.ApiGateway.HttpApi.Host/Migrations/HttpApiHostMigrationsDbContextModelSnapshot.cs

@ -4,6 +4,7 @@ using LINGYUN.ApiGateway.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Volo.Abp.EntityFrameworkCore;
namespace LINGYUN.ApiGateway.HttpApi.Host.Migrations
{
@ -14,7 +15,8 @@ namespace LINGYUN.ApiGateway.HttpApi.Host.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "3.1.3")
.HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.MySql)
.HasAnnotation("ProductVersion", "3.1.4")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("LINGYUN.ApiGateway.Ocelot.AggregateReRoute", b =>
@ -603,7 +605,7 @@ namespace LINGYUN.ApiGateway.HttpApi.Host.Migrations
b.HasKey("Id");
b.HasIndex("DownstreamPathTemplate", "UpstreamPathTemplate")
b.HasIndex("AppId", "DownstreamPathTemplate", "UpstreamPathTemplate")
.IsUnique();
b.ToTable("AppApiGatewayReRoute");

3
vueJs/src/lang/zh.ts

@ -392,7 +392,8 @@ export default {
enableRateLimiting: '启用流量控制',
rateLimitCount: '最大请求数量',
period: '速率限制时间',
periodTimespan: '允许错开时间重试',
periodTimespan: '允许错开时间重试(s)',
clientWhitelist: '客户端白名单',
ipAllowedList: 'Ip白名单',
ipBlockedList: 'Ip黑名单',
authenticationProviderKey: '身份认证程序',

13
vueJs/src/views/admin/apigateway/components/RouteCreateOrEditForm.vue

@ -442,14 +442,15 @@
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="18">
<el-form-item
:label="$t('apiGateWay.periodTimespan')"
prop="rateLimitOptions.periodTimespan"
label-width="150px"
>
<el-switch
<el-input
v-model="apiGateWayRoute.rateLimitOptions.periodTimespan"
type="number"
/>
</el-form-item>
</el-col>
@ -471,6 +472,14 @@
v-model="apiGateWayRoute.rateLimitOptions.period"
/>
</el-form-item>
<el-form-item
prop="rateLimitOptions.clientWhitelist"
:label="$t('apiGateWay.clientWhitelist')"
>
<el-input-tag
v-model="apiGateWayRoute.rateLimitOptions.clientWhitelist"
/>
</el-form-item>
</el-tab-pane>
<el-tab-pane
:label="$t('apiGateWay.authorization')"

Loading…
Cancel
Save