diff --git a/packages/backend/src/apps/twitter/client/endpoints/search-tweets.ts b/packages/backend/src/apps/twitter/client/endpoints/search-tweets.ts index 634c66cf..3802a2a9 100644 --- a/packages/backend/src/apps/twitter/client/endpoints/search-tweets.ts +++ b/packages/backend/src/apps/twitter/client/endpoints/search-tweets.ts @@ -47,6 +47,8 @@ export default class SearchTweets { headers: { ...authHeader }, }); + console.log(response); + if (response.data.meta.result_count > 0) { response.data.data.forEach((tweet: IJSONObject) => { if (!lastInternalId || Number(tweet.id) > Number(lastInternalId)) { @@ -59,15 +61,10 @@ export default class SearchTweets { } while (response.data.meta.next_token && lastInternalId); if (response.data?.errors) { - const errorMessages = response.data.errors - .map((error: IJSONObject) => error.detail) - .join(' '); - - throw new Error( - `Error occured while fetching user data: ${errorMessages}` - ); + const errors = response.data.errors; + return { errors, data: tweets }; } - return tweets; + return { data: tweets }; } } diff --git a/packages/backend/src/helpers/http-client/index.ts b/packages/backend/src/helpers/http-client/index.ts index 505ab46e..38c06236 100644 --- a/packages/backend/src/helpers/http-client/index.ts +++ b/packages/backend/src/helpers/http-client/index.ts @@ -7,6 +7,7 @@ export default class HttpClient { constructor(params: IHttpClientParams) { this.instance = axios.create({ baseURL: params.baseURL, + validateStatus: () => true, }); } diff --git a/packages/backend/src/services/processor.ts b/packages/backend/src/services/processor.ts index da4ddbe2..58b40f24 100644 --- a/packages/backend/src/services/processor.ts +++ b/packages/backend/src/services/processor.ts @@ -33,9 +33,9 @@ class Processor { const triggerStep = steps.find((step) => step.type === 'trigger'); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - let initialTriggerData = await this.getInitialTriggerData(triggerStep!); + const initialTriggerData = await this.getInitialTriggerData(triggerStep!); - if (initialTriggerData.length === 0) { + if (initialTriggerData.data.length === 0) { const lastInternalId = await this.flow.lastInternalId(); const executionData: Partial = { @@ -53,11 +53,11 @@ class Processor { } if (this.testRun) { - initialTriggerData = [initialTriggerData[0]]; + initialTriggerData.data = [initialTriggerData.data[0]]; } - if (initialTriggerData.length > 1) { - initialTriggerData = initialTriggerData.sort( + if (initialTriggerData.data.length > 1) { + initialTriggerData.data = initialTriggerData.data.sort( (item: IJSONObject, nextItem: IJSONObject) => { return (item.id as number) - (nextItem.id as number); } @@ -66,7 +66,7 @@ class Processor { const executions: Execution[] = []; - for await (const data of initialTriggerData) { + for await (const data of initialTriggerData.data) { const execution = await Execution.query().insert({ flowId: this.flow.id, testRun: this.testRun, @@ -118,6 +118,23 @@ class Processor { } } + if (initialTriggerData.errors) { + const execution = await Execution.query().insert({ + flowId: this.flow.id, + testRun: this.testRun, + internalId: null, + }); + + await ExecutionStep.query().insert({ + executionId: execution.id, + stepId: steps[0].id, + status: 'failure', + dataIn: steps[0].parameters, + dataOut: null, + errorDetails: initialTriggerData.errors, + }); + } + if (!this.testRun) return; const lastExecutionStepFromFirstExecution = await executions[0]