diff --git a/Directory.Packages.props b/Directory.Packages.props
index 397d4ae..745bc7b 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -4,6 +4,7 @@
+
@@ -25,4 +26,4 @@
-
+
\ No newline at end of file
diff --git a/src/Fengling.Console.csproj b/src/Fengling.Console.csproj
index ac55440..b8e14d5 100644
--- a/src/Fengling.Console.csproj
+++ b/src/Fengling.Console.csproj
@@ -16,6 +16,7 @@
+
@@ -32,9 +33,5 @@
-
-
-
-
diff --git a/src/Program.cs b/src/Program.cs
index 6645584..6872a71 100644
--- a/src/Program.cs
+++ b/src/Program.cs
@@ -11,7 +11,7 @@ using Microsoft.IdentityModel.Tokens;
using System.Text;
using NetCorePal.Extensions.DependencyInjection;
using OpenIddict.Validation.AspNetCore;
-using YarpGateway.Data;
+
var builder = WebApplication.CreateBuilder(args);
@@ -28,8 +28,6 @@ builder.Services.AddDbContext(options =>
options.EnableDetailedErrors();
});
-builder.Services.AddDbContext(options =>
- options.UseNpgsql(builder.Configuration.GetConnectionString("GatewayConnection")));
// Use Platform's identity
builder.Services.AddIdentity()
diff --git a/src/Services/GatewayService.cs b/src/Services/GatewayService.cs
index 498beee..35cb849 100644
--- a/src/Services/GatewayService.cs
+++ b/src/Services/GatewayService.cs
@@ -1,7 +1,7 @@
+using Fengling.Platform.Infrastructure;
+using Fengling.Platform.Domain.AggregatesModel.GatewayAggregate;
using Microsoft.EntityFrameworkCore;
-using YarpGateway.Data;
-using YarpGateway.Models;
using Fengling.Console.Models.Dtos;
namespace Fengling.Console.Services;
@@ -24,10 +24,10 @@ public interface IGatewayService
public class GatewayService : IGatewayService
{
- private readonly GatewayDbContext _dbContext;
+ private readonly PlatformDbContext _dbContext;
private readonly ILogger _logger;
- public GatewayService(GatewayDbContext dbContext, ILogger logger)
+ public GatewayService(PlatformDbContext dbContext, ILogger logger)
{
_dbContext = dbContext;
_logger = logger;
@@ -35,8 +35,8 @@ public class GatewayService : IGatewayService
public async Task GetStatisticsAsync()
{
- var routes = await _dbContext.TenantRoutes.Where(r => !r.IsDeleted).ToListAsync();
- var instances = await _dbContext.ServiceInstances.Where(i => !i.IsDeleted).ToListAsync();
+ var routes = await _dbContext.GwTenantRoutes.Where(r => !r.IsDeleted).ToListAsync();
+ var instances = await _dbContext.GwServiceInstances.Where(i => !i.IsDeleted).ToListAsync();
return new GatewayStatisticsDto
{
@@ -55,7 +55,7 @@ public class GatewayService : IGatewayService
public async Task> GetServicesAsync(bool globalOnly = false, string? tenantCode = null)
{
- var query = _dbContext.TenantRoutes.Where(r => !r.IsDeleted);
+ var query = _dbContext.GwTenantRoutes.Where(r => !r.IsDeleted);
if (globalOnly)
query = query.Where(r => r.IsGlobal);
@@ -65,7 +65,7 @@ public class GatewayService : IGatewayService
var routes = await query.OrderByDescending(r => r.CreatedTime).ToListAsync();
var clusters = routes.Select(r => r.ClusterId).Distinct().ToList();
- var instances = await _dbContext.ServiceInstances
+ var instances = await _dbContext.GwServiceInstances
.Where(i => clusters.Contains(i.ClusterId) && !i.IsDeleted)
.GroupBy(i => i.ClusterId)
.ToDictionaryAsync(g => g.Key, g => g.Count());
@@ -75,7 +75,7 @@ public class GatewayService : IGatewayService
public async Task GetServiceAsync(string serviceName, string? tenantCode = null)
{
- var route = await _dbContext.TenantRoutes
+ var route = await _dbContext.GwTenantRoutes
.FirstOrDefaultAsync(r =>
r.ServiceName == serviceName &&
r.IsDeleted == false &&
@@ -83,7 +83,7 @@ public class GatewayService : IGatewayService
if (route == null) return null;
- var instances = await _dbContext.ServiceInstances
+ var instances = await _dbContext.GwServiceInstances
.CountAsync(i => i.ClusterId == route.ClusterId && !i.IsDeleted);
return MapToServiceDto(route, instances);
@@ -98,7 +98,7 @@ public class GatewayService : IGatewayService
: dto.DestinationId;
// Check if route already exists
- var existingRoute = await _dbContext.TenantRoutes
+ var existingRoute = await _dbContext.GwTenantRoutes
.FirstOrDefaultAsync(r =>
r.ServiceName == dto.ServicePrefix &&
r.IsGlobal == dto.IsGlobal &&
@@ -122,7 +122,7 @@ public class GatewayService : IGatewayService
Status = 1,
CreatedTime = DateTime.UtcNow
};
- await _dbContext.ServiceInstances.AddAsync(instance);
+ await _dbContext.GwServiceInstances.AddAsync(instance);
// Add route
var routeId = instanceId + 1;
@@ -138,7 +138,7 @@ public class GatewayService : IGatewayService
IsGlobal = dto.IsGlobal,
CreatedTime = DateTime.UtcNow
};
- await _dbContext.TenantRoutes.AddAsync(route);
+ await _dbContext.GwTenantRoutes.AddAsync(route);
await _dbContext.SaveChangesAsync();
@@ -149,7 +149,7 @@ public class GatewayService : IGatewayService
public async Task UnregisterServiceAsync(string serviceName, string? tenantCode = null)
{
- var route = await _dbContext.TenantRoutes
+ var route = await _dbContext.GwTenantRoutes
.FirstOrDefaultAsync(r =>
r.ServiceName == serviceName &&
r.IsDeleted == false &&
@@ -162,7 +162,7 @@ public class GatewayService : IGatewayService
route.UpdatedTime = DateTime.UtcNow;
// Soft delete instances
- var instances = await _dbContext.ServiceInstances
+ var instances = await _dbContext.GwServiceInstances
.Where(i => i.ClusterId == route.ClusterId && !i.IsDeleted)
.ToListAsync();
@@ -181,7 +181,7 @@ public class GatewayService : IGatewayService
public async Task> GetRoutesAsync(bool globalOnly = false)
{
- var query = _dbContext.TenantRoutes.Where(r => !r.IsDeleted);
+ var query = _dbContext.GwTenantRoutes.Where(r => !r.IsDeleted);
if (globalOnly)
query = query.Where(r => r.IsGlobal);
@@ -189,7 +189,7 @@ public class GatewayService : IGatewayService
var routes = await query.OrderByDescending(r => r.Priority).ToListAsync();
var clusters = routes.Select(r => r.ClusterId).Distinct().ToList();
- var instances = await _dbContext.ServiceInstances
+ var instances = await _dbContext.GwServiceInstances
.Where(i => clusters.Contains(i.ClusterId) && !i.IsDeleted)
.GroupBy(i => i.ClusterId)
.ToDictionaryAsync(g => g.Key, g => g.Count());
@@ -210,7 +210,7 @@ public class GatewayService : IGatewayService
public async Task CreateRouteAsync(CreateGatewayRouteDto dto)
{
- var existing = await _dbContext.TenantRoutes
+ var existing = await _dbContext.GwTenantRoutes
.FirstOrDefaultAsync(r =>
r.ServiceName == dto.ServiceName &&
r.IsGlobal == dto.IsGlobal &&
@@ -234,7 +234,7 @@ public class GatewayService : IGatewayService
CreatedTime = DateTime.UtcNow
};
- await _dbContext.TenantRoutes.AddAsync(route);
+ await _dbContext.GwTenantRoutes.AddAsync(route);
await _dbContext.SaveChangesAsync();
return new GatewayRouteDto
@@ -253,7 +253,7 @@ public class GatewayService : IGatewayService
public async Task> GetInstancesAsync(string clusterId)
{
- var instances = await _dbContext.ServiceInstances
+ var instances = await _dbContext.GwServiceInstances
.Where(i => i.ClusterId == clusterId && !i.IsDeleted)
.OrderByDescending(i => i.Weight)
.ToListAsync();
@@ -273,7 +273,7 @@ public class GatewayService : IGatewayService
public async Task AddInstanceAsync(CreateGatewayInstanceDto dto)
{
- var existing = await _dbContext.ServiceInstances
+ var existing = await _dbContext.GwServiceInstances
.FirstOrDefaultAsync(i =>
i.ClusterId == dto.ClusterId &&
i.DestinationId == dto.DestinationId &&
@@ -296,7 +296,7 @@ public class GatewayService : IGatewayService
CreatedTime = DateTime.UtcNow
};
- await _dbContext.ServiceInstances.AddAsync(instance);
+ await _dbContext.GwServiceInstances.AddAsync(instance);
await _dbContext.SaveChangesAsync();
return new GatewayInstanceDto
@@ -314,7 +314,7 @@ public class GatewayService : IGatewayService
public async Task RemoveInstanceAsync(long instanceId)
{
- var instance = await _dbContext.ServiceInstances.FindAsync(instanceId);
+ var instance = await _dbContext.GwServiceInstances.FindAsync(instanceId);
if (instance == null) return false;
instance.IsDeleted = true;
@@ -326,7 +326,7 @@ public class GatewayService : IGatewayService
public async Task UpdateInstanceWeightAsync(long instanceId, int weight)
{
- var instance = await _dbContext.ServiceInstances.FindAsync(instanceId);
+ var instance = await _dbContext.GwServiceInstances.FindAsync(instanceId);
if (instance == null) return false;
instance.Weight = weight;