3.5 KiB
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> GwTenantsDbSet<GwTenantRoute> GwTenantRoutesDbSet<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.csFengling.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.csFengling.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.csFengling.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
-
DbContext Location: Gateway entities integrated into PlatformDbContext rather than separate GatewayDbContext
- Rationale: Follows existing project conventions, simplifies DI
-
ID Type: Using
stringIDs for Gateway entities (consistent with source fengling-gateway)- GwTenant.Id, GwTenantRoute.Id, GwServiceInstance.Id are strings
-
Soft Delete: All Store implementations support soft delete via
IsDeletedproperty
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