fengling-platform/.planning/phases/01-gateway-routing/01-gateway-routing-02-SUMMARY.md

3.5 KiB

Summary: Plan 02 - Gateway Infrastructure

Phase: 01-gateway-routing Plan: 02 Status: Completed Date: 2026-03-03


Tasks Completed

Task 1: GatewayDbContext (Integrated into PlatformDbContext)

  • Status: Done
  • Location: Fengling.Platform.Infrastructure/PlatformDbContext.cs
  • Details: Gateway DbSets integrated into PlatformDbContext (not separate file)
    • DbSet<GwTenant> GwTenants
    • DbSet<GwTenantRoute> GwTenantRoutes
    • DbSet<GwServiceInstance> GwServiceInstances
  • Indexes configured:
    • GwTenant: TenantCode unique
    • GwTenantRoute: TenantCode, ServiceName, ClusterId, composite (ServiceName, IsGlobal, Status)
    • GwServiceInstance: composite unique (ClusterId, DestinationId), Health

Task 2: IRouteStore and RouteStore

  • Status: Done
  • Files:
    • Fengling.Platform.Infrastructure/IRouteStore.cs
    • Fengling.Platform.Infrastructure/RouteStore.cs
  • Pattern: Follows TenantStore pattern with generic constraint where TContext : PlatformDbContext
  • Methods: FindByIdAsync, FindByTenantCodeAsync, FindByClusterIdAsync, GetAllAsync, GetPagedAsync, GetCountAsync, CreateAsync, UpdateAsync, DeleteAsync
  • Features: Soft delete support, paged queries with filters

Task 3: IRouteManager and RouteManager

  • Status: Done
  • Files:
    • Fengling.Platform.Infrastructure/IRouteManager.cs
    • Fengling.Platform.Infrastructure/RouteManager.cs
  • Pattern: Delegates to IRouteStore (matches TenantManager pattern)
  • Constructor: public RouteManager(IRouteStore store)
  • Methods: FindByIdAsync, FindByTenantCodeAsync, GetAllAsync, CreateRouteAsync, UpdateRouteAsync, DeleteRouteAsync

Task 4: IInstanceStore and InstanceStore

  • Status: Done
  • Files:
    • Fengling.Platform.Infrastructure/IInstanceStore.cs
    • Fengling.Platform.Infrastructure/InstanceStore.cs
  • Pattern: Similar to RouteStore, generic constraint where TContext : PlatformDbContext
  • Methods: FindByIdAsync, FindByClusterIdAsync, FindByDestinationAsync, GetAllAsync, GetPagedAsync, GetCountAsync, CreateAsync, UpdateAsync, DeleteAsync
  • Features: ClusterId and DestinationId queries, health/status filtering

Verification

  • Build passes with 0 errors
  • Store implementations follow TenantStore pattern
  • Manager implementations delegate to Stores
  • DbContext contains all required DbSets and indexes
  • Soft delete implemented in all Store classes

Key Decisions

  1. DbContext Location: Gateway entities integrated into PlatformDbContext rather than separate GatewayDbContext

    • Rationale: Follows existing project conventions, simplifies DI
  2. ID Type: Using string IDs for Gateway entities (consistent with source fengling-gateway)

    • GwTenant.Id, GwTenantRoute.Id, GwServiceInstance.Id are strings
  3. Soft Delete: All Store implementations support soft delete via IsDeleted property


Artifacts Created

File Purpose
PlatformDbContext.cs Contains GwTenants, GwTenantRoutes, GwServiceInstances DbSets
IRouteStore.cs Route CRUD interface
RouteStore.cs Route data access implementation
IRouteManager.cs Route business operations
RouteManager.cs Route business logic
IInstanceStore.cs Service instance CRUD interface
InstanceStore.cs Service instance data access implementation

Next Steps

Plan 03 will add:

  • Extensions for IoC registration
  • AddGatewayStores<TContext>() extension method
  • DI configuration for Managers and Stores