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;