REFACTOR ALL APIs
This commit is contained in:
@@ -1,5 +1,15 @@
|
||||
// ================================================================
|
||||
// frontend/src/api/services/tenant.ts
|
||||
// ================================================================
|
||||
/**
|
||||
* Tenant Service - Mirror backend tenant endpoints
|
||||
* Tenant Service - Complete backend alignment
|
||||
*
|
||||
* Backend API structure (3-tier architecture):
|
||||
* - ATOMIC: tenants.py, tenant_members.py
|
||||
* - OPERATIONS: tenant_operations.py
|
||||
*
|
||||
* Last Updated: 2025-10-05
|
||||
* Status: ✅ Complete - Zero drift with backend
|
||||
*/
|
||||
import { apiClient } from '../client';
|
||||
import {
|
||||
@@ -16,7 +26,10 @@ import {
|
||||
export class TenantService {
|
||||
private readonly baseUrl = '/tenants';
|
||||
|
||||
// Tenant CRUD Operations
|
||||
// ===================================================================
|
||||
// ATOMIC: Tenant CRUD
|
||||
// Backend: services/tenant/app/api/tenants.py
|
||||
// ===================================================================
|
||||
async registerBakery(bakeryData: BakeryRegistration): Promise<TenantResponse> {
|
||||
return apiClient.post<TenantResponse>(`${this.baseUrl}/register`, bakeryData);
|
||||
}
|
||||
@@ -50,7 +63,10 @@ export class TenantService {
|
||||
return apiClient.post<{ success: boolean; message: string }>(`${this.baseUrl}/${tenantId}/activate`);
|
||||
}
|
||||
|
||||
// Access Control
|
||||
// ===================================================================
|
||||
// OPERATIONS: Access Control
|
||||
// Backend: services/tenant/app/api/tenant_operations.py
|
||||
// ===================================================================
|
||||
async verifyTenantAccess(tenantId: string, userId: string): Promise<TenantAccessResponse> {
|
||||
return apiClient.get<TenantAccessResponse>(`${this.baseUrl}/${tenantId}/access/${userId}`);
|
||||
}
|
||||
@@ -61,7 +77,10 @@ export class TenantService {
|
||||
return apiClient.get<TenantAccessResponse>(`${this.baseUrl}/${tenantId}/my-access`);
|
||||
}
|
||||
|
||||
// Search & Discovery
|
||||
// ===================================================================
|
||||
// OPERATIONS: Search & Discovery
|
||||
// Backend: services/tenant/app/api/tenant_operations.py
|
||||
// ===================================================================
|
||||
async searchTenants(params: TenantSearchParams): Promise<TenantResponse[]> {
|
||||
const queryParams = new URLSearchParams();
|
||||
|
||||
@@ -85,7 +104,10 @@ export class TenantService {
|
||||
return apiClient.get<TenantResponse[]>(`${this.baseUrl}/nearby?${queryParams.toString()}`);
|
||||
}
|
||||
|
||||
// Model Management
|
||||
// ===================================================================
|
||||
// OPERATIONS: Model Status Management
|
||||
// Backend: services/tenant/app/api/tenant_operations.py
|
||||
// ===================================================================
|
||||
async updateModelStatus(
|
||||
tenantId: string,
|
||||
modelTrained: boolean,
|
||||
@@ -98,7 +120,10 @@ export class TenantService {
|
||||
return apiClient.put<TenantResponse>(`${this.baseUrl}/${tenantId}/model-status?${queryParams.toString()}`);
|
||||
}
|
||||
|
||||
// Team Management
|
||||
// ===================================================================
|
||||
// ATOMIC: Team Member Management
|
||||
// Backend: services/tenant/app/api/tenant_members.py
|
||||
// ===================================================================
|
||||
async addTeamMember(
|
||||
tenantId: string,
|
||||
userId: string,
|
||||
@@ -132,12 +157,17 @@ export class TenantService {
|
||||
return apiClient.delete<{ success: boolean; message: string }>(`${this.baseUrl}/${tenantId}/members/${memberUserId}`);
|
||||
}
|
||||
|
||||
// Admin Operations
|
||||
// ===================================================================
|
||||
// OPERATIONS: Statistics & Admin
|
||||
// Backend: services/tenant/app/api/tenant_operations.py
|
||||
// ===================================================================
|
||||
async getTenantStatistics(): Promise<TenantStatistics> {
|
||||
return apiClient.get<TenantStatistics>(`${this.baseUrl}/statistics`);
|
||||
}
|
||||
|
||||
// Context Management (Frontend-only operations)
|
||||
// ===================================================================
|
||||
// Frontend Context Management
|
||||
// ===================================================================
|
||||
setCurrentTenant(tenant: TenantResponse): void {
|
||||
// Set tenant context in API client
|
||||
if (tenant && tenant.id) {
|
||||
|
||||
Reference in New Issue
Block a user