Qassure-frontend/src/services/workflow-service.ts

96 lines
3.8 KiB
TypeScript

import apiClient from './api-client';
import type {
CreateWorkflowDefinitionData,
UpdateWorkflowDefinitionData,
WorkflowDefinitionsResponse,
WorkflowDefinitionResponse,
WorkflowInstanceResponse,
WorkflowDeleteResponse
} from '@/types/workflow';
class WorkflowService {
private readonly baseUrl = '/workflows';
async listDefinitions(params?: {
tenantId?: string;
entity_type?: string;
status?: string;
source_module?: string;
source_module_id?: string;
limit?: number;
offset?: number;
search?: string;
}): Promise<WorkflowDefinitionsResponse> {
const queryParams: any = { ...params };
// if (params?.tenantId) {
// queryParams.tenant_id = params.tenantId;
// }
const response = await apiClient.get<WorkflowDefinitionsResponse>(`${this.baseUrl}/definitions`, { params: queryParams });
return response.data;
}
async getDefinition(id: string, tenantId?: string): Promise<WorkflowDefinitionResponse> {
const params = tenantId ? { tenantId: tenantId } : {};
const response = await apiClient.get<WorkflowDefinitionResponse>(`${this.baseUrl}/definitions/${id}`, { params });
return response.data;
}
async getInstance(id: string, tenantId?: string): Promise<WorkflowInstanceResponse> {
const params = tenantId ? { tenantId: tenantId } : {};
const response = await apiClient.get<WorkflowInstanceResponse>(`${this.baseUrl}/instances/${id}`, { params });
return response.data;
}
async listInstances(params: {
entity_type?: string;
entity_id?: string;
status?: string;
source_module?: string;
source_module_id?: string;
limit?: number;
offset?: number;
}): Promise<{ success: boolean; data: any[]; pagination: { total: number; limit: number; offset: number } }> {
const response = await apiClient.get(`${this.baseUrl}/instances`, { params });
return response.data;
}
async createDefinition(data: CreateWorkflowDefinitionData, tenantId?: string): Promise<WorkflowDefinitionResponse> {
const params = tenantId ? { tenantId: tenantId } : {};
const response = await apiClient.post<WorkflowDefinitionResponse>(`${this.baseUrl}/definitions`, data, { params });
return response.data;
}
async updateDefinition(id: string, data: UpdateWorkflowDefinitionData, tenantId?: string): Promise<WorkflowDefinitionResponse> {
const params = tenantId ? { tenantId: tenantId } : {};
const response = await apiClient.put<WorkflowDefinitionResponse>(`${this.baseUrl}/definitions/${id}`, data, { params });
return response.data;
}
async deleteDefinition(id: string, tenantId?: string): Promise<WorkflowDeleteResponse> {
const params = tenantId ? { tenantId: tenantId } : {};
const response = await apiClient.delete<WorkflowDeleteResponse>(`${this.baseUrl}/definitions/${id}`, { params });
return response.data;
}
async cloneDefinition(id: string, name: string, tenantId?: string): Promise<WorkflowDefinitionResponse> {
const params = tenantId ? { tenantId: tenantId } : {};
const response = await apiClient.post<WorkflowDefinitionResponse>(`${this.baseUrl}/definitions/${id}/clone`, { name }, { params });
return response.data;
}
async activateDefinition(id: string, tenantId?: string): Promise<WorkflowDefinitionResponse> {
const params = tenantId ? { tenantId: tenantId } : {};
const response = await apiClient.post<WorkflowDefinitionResponse>(`${this.baseUrl}/definitions/${id}/activate`, {}, { params });
return response.data;
}
async deprecateDefinition(id: string, tenantId?: string): Promise<WorkflowDefinitionResponse> {
const params = tenantId ? { tenantId: tenantId } : {};
const response = await apiClient.post<WorkflowDefinitionResponse>(`${this.baseUrl}/definitions/${id}/deprecate`, {}, { params });
return response.data;
}
}
export const workflowService = new WorkflowService();