Skip to content

Commit

Permalink
fix(Postgres Node): Fix for tables containing field named json
Browse files Browse the repository at this point in the history
  • Loading branch information
michael-radency authored Feb 21, 2023
1 parent f58573d commit 5d74a2f
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 13 deletions.
30 changes: 19 additions & 11 deletions packages/nodes-base/nodes/Postgres/Postgres.node.functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,15 @@ export function generateReturning(pgp: pgPromise.IMain<{}, pg.IClient>, returnin
);
}

export function wrapData(data: IDataObject[]): INodeExecutionData[] {
if (!Array.isArray(data)) {
return [{ json: data }];
}
return data.map((item) => ({
json: item,
}));
}

/**
* Executes the given SQL query on the database.
*
Expand Down Expand Up @@ -185,7 +194,7 @@ export async function pgQueryV2(
if (mode === 'multiple') {
return (await db.multi(pgp.helpers.concat(allQueries)))
.map((result, i) => {
return this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(result), {
return this.helpers.constructExecutionMetaData(wrapData(result), {
itemData: { item: i },
});
})
Expand All @@ -197,7 +206,7 @@ export async function pgQueryV2(
try {
const transactionResult = await t.any(allQueries[i].query, allQueries[i].values);
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(transactionResult),
wrapData(transactionResult),
{ itemData: { item: i } },
);
result.push(...executionData);
Expand All @@ -221,7 +230,7 @@ export async function pgQueryV2(
try {
const transactionResult = await t.any(allQueries[i].query, allQueries[i].values);
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(transactionResult),
wrapData(transactionResult),
{ itemData: { item: i } },
);
result.push(...executionData);
Expand Down Expand Up @@ -373,7 +382,7 @@ export async function pgInsertV2(
const queryResult = await db.any(query);
return queryResult
.map((result, i) => {
return this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(result), {
return this.helpers.constructExecutionMetaData(wrapData(result), {
itemData: { item: i },
});
})
Expand All @@ -386,7 +395,7 @@ export async function pgInsertV2(
try {
const insertResult = await t.one(pgp.helpers.insert(itemCopy, cs) + returning);
result.push(
...this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(insertResult), {
...this.helpers.constructExecutionMetaData(wrapData(insertResult), {
itemData: { item: i },
}),
);
Expand All @@ -411,10 +420,9 @@ export async function pgInsertV2(
try {
const insertResult = await t.oneOrNone(pgp.helpers.insert(itemCopy, cs) + returning);
if (insertResult !== null) {
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(insertResult),
{ itemData: { item: i } },
);
const executionData = this.helpers.constructExecutionMetaData(wrapData(insertResult), {
itemData: { item: i },
});
result.push(...executionData);
}
} catch (err) {
Expand Down Expand Up @@ -644,7 +652,7 @@ export async function pgUpdateV2(
returning,
);
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(transactionResult),
wrapData(transactionResult),
{ itemData: { item: i } },
);
result.push(...executionData);
Expand Down Expand Up @@ -672,7 +680,7 @@ export async function pgUpdateV2(
returning,
);
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(independentResult),
wrapData(independentResult),
{ itemData: { item: i } },
);
result.push(...executionData);
Expand Down
4 changes: 2 additions & 2 deletions packages/nodes-base/nodes/Postgres/Postgres.node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { NodeOperationError } from 'n8n-workflow';

import pgPromise from 'pg-promise';

import { pgInsertV2, pgQueryV2, pgUpdate } from './Postgres.node.functions';
import { pgInsertV2, pgQueryV2, pgUpdate, wrapData } from './Postgres.node.functions';

export class Postgres implements INodeType {
description: INodeTypeDescription = {
Expand Down Expand Up @@ -389,7 +389,7 @@ export class Postgres implements INodeType {
this.continueOnFail(),
);

returnItems = this.helpers.returnJsonArray(updateItems);
returnItems = wrapData(updateItems);
} else {
pgp.end();
throw new NodeOperationError(
Expand Down

0 comments on commit 5d74a2f

Please # to comment.