diff --git a/.github/workflows/staging.yml b/.github/workflows/staging.yml index d3c6fdc..74e277f 100644 --- a/.github/workflows/staging.yml +++ b/.github/workflows/staging.yml @@ -2,7 +2,7 @@ name: Staging Deployment on: push: branches: - - release/2.34.0 + - release/2.35.0 workflow_dispatch: jobs: build: diff --git a/package.json b/package.json index e67b303..8b15cc3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sparrow-proxy", - "version": "2.34.0", + "version": "2.35.0", "description": "", "author": "", "private": true, diff --git a/src/payloads/testflow.payload.ts b/src/payloads/testflow.payload.ts index 9e3e523..f273849 100644 --- a/src/payloads/testflow.payload.ts +++ b/src/payloads/testflow.payload.ts @@ -210,6 +210,10 @@ export class NodeData { requestData?: RequestMetaData; } +export class TestflowDataSetRunDto{ + testflowItems:TestflowRunDto[]; +} + export class TestflowNodes { @IsString() @IsNotEmpty() diff --git a/src/proxy/testflow/testflow.controller.ts b/src/proxy/testflow/testflow.controller.ts index 56918fa..3880f19 100644 --- a/src/proxy/testflow/testflow.controller.ts +++ b/src/proxy/testflow/testflow.controller.ts @@ -9,7 +9,7 @@ import { } from '@nestjs/common'; import { Request, Response } from 'express'; import { TestflowService } from './testflow.service'; -import { TestflowRunDto } from 'src/payloads/testflow.payload'; +import { TestflowDataSetRunDto, TestflowRunDto } from 'src/payloads/testflow.payload'; @Controller('proxy/testflow') export class TestflowController { @@ -33,4 +33,21 @@ export class TestflowController { ); } } + + @Post('/dataset-execute') + async testflowDataSetRun( + @Body() payload: TestflowDataSetRunDto, + @Req() req: Request, + @Res() res: Response, + ) { + try { + const result = await this.testflowService.runTestflowDataset(payload); + return res.status(200).send(result); + } catch (error: any) { + throw new HttpException( + error?.message || 'Failed to run testflow', + HttpStatus.BAD_GATEWAY, + ); + } + } } diff --git a/src/proxy/testflow/testflow.service.ts b/src/proxy/testflow/testflow.service.ts index 950daad..fd2a680 100644 --- a/src/proxy/testflow/testflow.service.ts +++ b/src/proxy/testflow/testflow.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { TestflowNodes, TestflowRunDto, TestFlowSchedularRunHistory } from 'src/payloads/testflow.payload'; +import { TestflowDataSetRunDto, TestflowNodes, TestflowRunDto, TestFlowSchedularRunHistory } from 'src/payloads/testflow.payload'; import { Logger } from '@nestjs/common'; import { success,error } from 'src/enum/httpResponseFormat'; import { DecodeTestflow, RequestData } from 'src/utils/decode-testflow'; @@ -470,8 +470,8 @@ export class TestflowService { const decodeData = this._decodeRequest.init( requestData, environmentVariables.filter( - (env: { key: string; value: string; checked: boolean }) => - env.key?.trim() && env.value?.trim(), + (env: { key: string; value: string | any; checked: boolean }) => + env.key?.trim() && env?.value, ), requestChainResponse, ); @@ -692,5 +692,11 @@ export class TestflowService { nodes: executedNodes, }; } + + async runTestflowDataset(payload: TestflowDataSetRunDto) { + const promises = payload.testflowItems.map(item => this.runTestflow(item)); + const response = await Promise.all(promises); + return response; + } }