-
Notifications
You must be signed in to change notification settings - Fork 6.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'node-319-postgres-node-overhaul' into feature/resource-…
…mapping-component * node-319-postgres-node-overhaul: (53 commits) ⚡ credentials test fix, clean up ⚡ singlton for conections feat: Execution custom data saving and filtering (#5496) Minor tweaks to query params decription. ⚡ ui update ⚡ error message update ⚡ clean up ⚡ ui fixes Copy updates. ⚡ hint to query ⚡ runQueries tests setup ⚡ select, update, upsert operations tests ⚡ executeQuery and insert operations tests ⚡ setup for testing operations, tests for deleteTable operation ⚡ refactoring ⚡ utils unit tests ⚡ config files clean up ⚡ unit tests wip ⚡ tests setup ⚡ improved error message ... # Conflicts: # packages/editor-ui/src/Interface.ts # packages/nodes-base/nodes/Postgres/Postgres.node.ts # packages/nodes-base/nodes/Postgres/v2/PostgresV2.node.ts # packages/nodes-base/nodes/Postgres/v2/actions/database/insert.operation.ts # packages/nodes-base/nodes/Postgres/v2/actions/database/update.operation.ts # packages/nodes-base/nodes/Postgres/v2/actions/database/upsert.operation.ts # packages/nodes-base/nodes/Postgres/v2/actions/router.ts # packages/nodes-base/nodes/Postgres/v2/actions/versionDescription.ts # packages/nodes-base/nodes/Postgres/v2/helpers/interfaces.ts # packages/nodes-base/nodes/Postgres/v2/methods/credentialTest.ts # packages/nodes-base/nodes/Postgres/v2/methods/index.ts # packages/nodes-base/nodes/Postgres/v2/methods/listSearch.ts # packages/nodes-base/nodes/Postgres/v2/methods/loadOptions.ts # packages/nodes-base/nodes/Postgres/v2/transport/index.ts
- Loading branch information
Showing
37 changed files
with
1,495 additions
and
296 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'; | ||
import { ExecutionEntity } from './ExecutionEntity'; | ||
|
||
@Entity() | ||
export class ExecutionMetadata { | ||
@PrimaryGeneratedColumn() | ||
id: number; | ||
|
||
@ManyToOne('ExecutionEntity', 'metadata', { | ||
onDelete: 'CASCADE', | ||
}) | ||
execution: ExecutionEntity; | ||
|
||
@RelationId((executionMetadata: ExecutionMetadata) => executionMetadata.execution) | ||
executionId: number; | ||
|
||
@Column('text') | ||
key: string; | ||
|
||
@Column('text') | ||
value: string; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
69 changes: 69 additions & 0 deletions
69
packages/cli/src/databases/migrations/mysqldb/1679416281779-CreateExecutionMetadataTable.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
import { MigrationInterface, QueryRunner, Table } from 'typeorm'; | ||
import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; | ||
|
||
export class CreateExecutionMetadataTable1679416281779 implements MigrationInterface { | ||
name = 'CreateExecutionMetadataTable1679416281779'; | ||
|
||
public async up(queryRunner: QueryRunner): Promise<void> { | ||
logMigrationStart(this.name); | ||
const tablePrefix = getTablePrefix(); | ||
|
||
await queryRunner.query( | ||
`CREATE TABLE ${tablePrefix}execution_metadata ( | ||
id int(11) auto_increment NOT NULL PRIMARY KEY, | ||
executionId int(11) NOT NULL, | ||
\`key\` TEXT NOT NULL, | ||
value TEXT NOT NULL, | ||
CONSTRAINT \`${tablePrefix}execution_metadata_FK\` FOREIGN KEY (\`executionId\`) REFERENCES \`${tablePrefix}execution_entity\` (\`id\`) ON DELETE CASCADE, | ||
INDEX \`IDX_${tablePrefix}6d44376da6c1058b5e81ed8a154e1fee106046eb\` (\`executionId\` ASC) | ||
) | ||
ENGINE=InnoDB`, | ||
); | ||
|
||
// Remove indices that are no longer needed since the addition of the status column | ||
await queryRunner.query( | ||
`DROP INDEX \`IDX_${tablePrefix}06da892aaf92a48e7d3e400003\` ON \`${tablePrefix}execution_entity\``, | ||
); | ||
await queryRunner.query( | ||
`DROP INDEX \`IDX_${tablePrefix}78d62b89dc1433192b86dce18a\` ON \`${tablePrefix}execution_entity\``, | ||
); | ||
await queryRunner.query( | ||
`DROP INDEX \`IDX_${tablePrefix}1688846335d274033e15c846a4\` ON \`${tablePrefix}execution_entity\``, | ||
); | ||
await queryRunner.query( | ||
`DROP INDEX \`IDX_${tablePrefix}cefb067df2402f6aed0638a6c1\` ON \`${tablePrefix}execution_entity\``, | ||
); | ||
|
||
// Add index to the new status column | ||
await queryRunner.query( | ||
`CREATE INDEX \`IDX_${tablePrefix}8b6f3f9ae234f137d707b98f3bf43584\` ON \`${tablePrefix}execution_entity\` (\`status\`, \`workflowId\`)`, | ||
); | ||
|
||
logMigrationEnd(this.name); | ||
} | ||
|
||
public async down(queryRunner: QueryRunner): Promise<void> { | ||
const tablePrefix = getTablePrefix(); | ||
|
||
await queryRunner.query(`DROP TABLE "${tablePrefix}execution_metadata"`); | ||
await queryRunner.query( | ||
`CREATE INDEX \`IDX_${tablePrefix}06da892aaf92a48e7d3e400003\` ON \`${tablePrefix}execution_entity\` (\`workflowId\`, \`waitTill\`, \`id\`)`, | ||
); | ||
await queryRunner.query( | ||
`CREATE INDEX \`IDX_${tablePrefix}78d62b89dc1433192b86dce18a\` ON \`${tablePrefix}execution_entity\` (\`workflowId\`, \`finished\`, \`id\`)`, | ||
); | ||
await queryRunner.query( | ||
`CREATE INDEX \`IDX_${tablePrefix}1688846335d274033e15c846a4\` ON \`${tablePrefix}execution_entity\` (\`finished\`, \`id\`)`, | ||
); | ||
await queryRunner.query( | ||
'CREATE INDEX `IDX_' + | ||
tablePrefix + | ||
'cefb067df2402f6aed0638a6c1` ON `' + | ||
tablePrefix + | ||
'execution_entity` (`stoppedAt`)', | ||
); | ||
await queryRunner.query( | ||
`DROP INDEX \`IDX_${tablePrefix}8b6f3f9ae234f137d707b98f3bf43584\` ON \`${tablePrefix}execution_entity\``, | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
62 changes: 62 additions & 0 deletions
62
...ges/cli/src/databases/migrations/postgresdb/1679416281778-CreateExecutionMetadataTable.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
import { MigrationInterface, QueryRunner, Table } from 'typeorm'; | ||
import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; | ||
|
||
export class CreateExecutionMetadataTable1679416281778 implements MigrationInterface { | ||
name = 'CreateExecutionMetadataTable1679416281778'; | ||
|
||
public async up(queryRunner: QueryRunner): Promise<void> { | ||
logMigrationStart(this.name); | ||
const tablePrefix = getTablePrefix(); | ||
|
||
await queryRunner.query( | ||
`CREATE TABLE ${tablePrefix}execution_metadata ( | ||
"id" serial4 NOT NULL PRIMARY KEY, | ||
"executionId" int4 NOT NULL, | ||
"key" text NOT NULL, | ||
"value" text NOT NULL, | ||
CONSTRAINT ${tablePrefix}execution_metadata_fk FOREIGN KEY ("executionId") REFERENCES ${tablePrefix}execution_entity(id) ON DELETE CASCADE | ||
)`, | ||
); | ||
|
||
await queryRunner.query( | ||
`CREATE INDEX "IDX_${tablePrefix}6d44376da6c1058b5e81ed8a154e1fee106046eb" ON "${tablePrefix}execution_metadata" ("executionId");`, | ||
); | ||
|
||
// Remove indices that are no longer needed since the addition of the status column | ||
await queryRunner.query(`DROP INDEX IF EXISTS "IDX_${tablePrefix}33228da131bb1112247cf52a42"`); | ||
await queryRunner.query(`DROP INDEX IF EXISTS "IDX_${tablePrefix}72ffaaab9f04c2c1f1ea86e662"`); | ||
await queryRunner.query(`DROP INDEX IF EXISTS "IDX_${tablePrefix}58154df94c686818c99fb754ce"`); | ||
await queryRunner.query(`DROP INDEX IF EXISTS "IDX_${tablePrefix}4f474ac92be81610439aaad61e"`); | ||
|
||
// Create new index for status | ||
await queryRunner.query( | ||
`CREATE INDEX "IDX_${tablePrefix}8b6f3f9ae234f137d707b98f3bf43584" ON "${tablePrefix}execution_entity" ("status", "workflowId");`, | ||
); | ||
|
||
logMigrationEnd(this.name); | ||
} | ||
|
||
public async down(queryRunner: QueryRunner): Promise<void> { | ||
const tablePrefix = getTablePrefix(); | ||
|
||
// Re-add removed indices | ||
await queryRunner.query( | ||
`CREATE INDEX IF NOT EXISTS "IDX_${tablePrefix}33228da131bb1112247cf52a42" ON ${tablePrefix}execution_entity ("stoppedAt") `, | ||
); | ||
await queryRunner.query( | ||
`CREATE INDEX IF NOT EXISTS "IDX_${tablePrefix}72ffaaab9f04c2c1f1ea86e662" ON ${tablePrefix}execution_entity ("finished", "id") `, | ||
); | ||
await queryRunner.query( | ||
`CREATE INDEX IF NOT EXISTS "IDX_${tablePrefix}58154df94c686818c99fb754ce" ON ${tablePrefix}execution_entity ("workflowId", "waitTill", "id") `, | ||
); | ||
await queryRunner.query( | ||
`CREATE INDEX IF NOT EXISTS "IDX_${tablePrefix}4f474ac92be81610439aaad61e" ON ${tablePrefix}execution_entity ("workflowId", "finished", "id") `, | ||
); | ||
|
||
await queryRunner.query( | ||
`DROP INDEX IF EXISTS "IDX_${tablePrefix}8b6f3f9ae234f137d707b98f3bf43584"`, | ||
); | ||
|
||
await queryRunner.query(`DROP TABLE "${tablePrefix}execution_metadata"`); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
64 changes: 64 additions & 0 deletions
64
packages/cli/src/databases/migrations/sqlite/1679416281777-CreateExecutionMetadataTable.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
import { MigrationInterface, QueryRunner, Table } from 'typeorm'; | ||
import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; | ||
|
||
export class CreateExecutionMetadataTable1679416281777 implements MigrationInterface { | ||
name = 'CreateExecutionMetadataTable1679416281777'; | ||
|
||
public async up(queryRunner: QueryRunner): Promise<void> { | ||
logMigrationStart(this.name); | ||
const tablePrefix = getTablePrefix(); | ||
|
||
await queryRunner.query( | ||
`CREATE TABLE "${tablePrefix}execution_metadata" ( | ||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, | ||
executionId INTEGER NOT NULL, | ||
"key" TEXT NOT NULL, | ||
value TEXT NOT NULL, | ||
CONSTRAINT ${tablePrefix}execution_metadata_entity_FK FOREIGN KEY (executionId) REFERENCES ${tablePrefix}execution_entity(id) ON DELETE CASCADE | ||
)`, | ||
); | ||
|
||
await queryRunner.query( | ||
`CREATE INDEX IF NOT EXISTS "IDX_${tablePrefix}6d44376da6c1058b5e81ed8a154e1fee106046eb" ON "${tablePrefix}execution_metadata" ("executionId");`, | ||
); | ||
|
||
// Re add some lost indices from migration DeleteExecutionsWithWorkflows.ts | ||
// that were part of AddExecutionEntityIndexes.ts | ||
// not all were needed since we added the `status` column to execution_entity | ||
await queryRunner.query( | ||
`CREATE INDEX IF NOT EXISTS 'IDX_${tablePrefix}b94b45ce2c73ce46c54f20b5f9' ON '${tablePrefix}execution_entity' ('waitTill', 'id') `, | ||
); | ||
await queryRunner.query( | ||
`CREATE INDEX IF NOT EXISTS 'IDX_${tablePrefix}81fc04c8a17de15835713505e4' ON '${tablePrefix}execution_entity' ('workflowId', 'id') `, | ||
); | ||
|
||
// Also add index to the new status column | ||
await queryRunner.query( | ||
`CREATE INDEX IF NOT EXISTS 'IDX_${tablePrefix}8b6f3f9ae234f137d707b98f3bf43584' ON '${tablePrefix}execution_entity' ('status', 'workflowId') `, | ||
); | ||
|
||
// Remove no longer needed index to waitTill since it's already covered by the index b94b45ce2c73ce46c54f20b5f9 above | ||
await queryRunner.query(`DROP INDEX IF EXISTS 'IDX_${tablePrefix}ca4a71b47f28ac6ea88293a8e2'`); | ||
// Remove index for stoppedAt since it's not used anymore | ||
await queryRunner.query(`DROP INDEX IF EXISTS 'IDX_${tablePrefix}cefb067df2402f6aed0638a6c1'`); | ||
|
||
logMigrationEnd(this.name); | ||
} | ||
|
||
public async down(queryRunner: QueryRunner): Promise<void> { | ||
const tablePrefix = getTablePrefix(); | ||
|
||
await queryRunner.query(`DROP TABLE "${tablePrefix}execution_metadata"`); | ||
await queryRunner.query(`DROP INDEX IF EXISTS 'IDX_${tablePrefix}b94b45ce2c73ce46c54f20b5f9'`); | ||
await queryRunner.query(`DROP INDEX IF EXISTS 'IDX_${tablePrefix}81fc04c8a17de15835713505e4'`); | ||
await queryRunner.query( | ||
`DROP INDEX IF EXISTS 'IDX_${tablePrefix}8b6f3f9ae234f137d707b98f3bf43584'`, | ||
); | ||
await queryRunner.query( | ||
`CREATE INDEX "IDX_${tablePrefix}ca4a71b47f28ac6ea88293a8e2" ON "${tablePrefix}execution_entity" ("waitTill")`, | ||
); | ||
await queryRunner.query( | ||
`CREATE INDEX "IDX_${tablePrefix}cefb067df2402f6aed0638a6c1" ON "${tablePrefix}execution_entity" ("stoppedAt")`, | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.