diff --git a/packages/cli/src/databases/entities/credentials-entity.ts b/packages/cli/src/databases/entities/credentials-entity.ts index bbfc137f85..b4f1a10c38 100644 --- a/packages/cli/src/databases/entities/credentials-entity.ts +++ b/packages/cli/src/databases/entities/credentials-entity.ts @@ -29,6 +29,14 @@ export class CredentialsEntity extends WithTimestampsAndStringId implements ICre @OneToMany('SharedCredentials', 'credentials') shared: SharedCredentials[]; + /** + * Whether the credential is managed by n8n. We currently use this flag + * to provide OpenAI free credits on cloud. Managed credentials cannot be + * edited by the user. + */ + @Column({ default: false }) + isManaged: boolean; + toJSON() { const { shared, ...rest } = this; return rest; diff --git a/packages/cli/src/databases/migrations/common/1734479635324-AddManagedColumnToCredentialsTable.ts b/packages/cli/src/databases/migrations/common/1734479635324-AddManagedColumnToCredentialsTable.ts new file mode 100644 index 0000000000..00fc2d16e7 --- /dev/null +++ b/packages/cli/src/databases/migrations/common/1734479635324-AddManagedColumnToCredentialsTable.ts @@ -0,0 +1,21 @@ +import type { MigrationContext, ReversibleMigration } from '@/databases/types'; + +export class AddManagedColumnToCredentialsTable1734479635324 implements ReversibleMigration { + async up({ escape, runQuery, isSqlite }: MigrationContext) { + const tableName = escape.tableName('credentials_entity'); + const columnName = escape.columnName('isManaged'); + + const defaultValue = isSqlite ? 0 : 'FALSE'; + + await runQuery( + `ALTER TABLE ${tableName} ADD COLUMN ${columnName} BOOLEAN NOT NULL DEFAULT ${defaultValue}`, + ); + } + + async down({ escape, runQuery }: MigrationContext) { + const tableName = escape.tableName('credentials_entity'); + const columnName = escape.columnName('isManaged'); + + await runQuery(`ALTER TABLE ${tableName} DROP COLUMN ${columnName}`); + } +} diff --git a/packages/cli/src/databases/migrations/mysqldb/index.ts b/packages/cli/src/databases/migrations/mysqldb/index.ts index b977f6b013..2fc39079d4 100644 --- a/packages/cli/src/databases/migrations/mysqldb/index.ts +++ b/packages/cli/src/databases/migrations/mysqldb/index.ts @@ -74,6 +74,7 @@ import { AddDescriptionToTestDefinition1731404028106 } from '../common/173140402 import { CreateTestMetricTable1732271325258 } from '../common/1732271325258-CreateTestMetricTable'; import { CreateTestRun1732549866705 } from '../common/1732549866705-CreateTestRunTable'; import { AddMockedNodesColumnToTestDefinition1733133775640 } from '../common/1733133775640-AddMockedNodesColumnToTestDefinition'; +import { AddManagedColumnToCredentialsTable1734479635324 } from '../common/1734479635324-AddManagedColumnToCredentialsTable'; export const mysqlMigrations: Migration[] = [ InitialMigration1588157391238, @@ -150,4 +151,5 @@ export const mysqlMigrations: Migration[] = [ CreateTestMetricTable1732271325258, CreateTestRun1732549866705, AddMockedNodesColumnToTestDefinition1733133775640, + AddManagedColumnToCredentialsTable1734479635324, ]; diff --git a/packages/cli/src/databases/migrations/postgresdb/index.ts b/packages/cli/src/databases/migrations/postgresdb/index.ts index 985e6964e1..605c156003 100644 --- a/packages/cli/src/databases/migrations/postgresdb/index.ts +++ b/packages/cli/src/databases/migrations/postgresdb/index.ts @@ -74,6 +74,7 @@ import { AddDescriptionToTestDefinition1731404028106 } from '../common/173140402 import { CreateTestMetricTable1732271325258 } from '../common/1732271325258-CreateTestMetricTable'; import { CreateTestRun1732549866705 } from '../common/1732549866705-CreateTestRunTable'; import { AddMockedNodesColumnToTestDefinition1733133775640 } from '../common/1733133775640-AddMockedNodesColumnToTestDefinition'; +import { AddManagedColumnToCredentialsTable1734479635324 } from '../common/1734479635324-AddManagedColumnToCredentialsTable'; export const postgresMigrations: Migration[] = [ InitialMigration1587669153312, @@ -150,4 +151,5 @@ export const postgresMigrations: Migration[] = [ CreateTestMetricTable1732271325258, CreateTestRun1732549866705, AddMockedNodesColumnToTestDefinition1733133775640, + AddManagedColumnToCredentialsTable1734479635324, ]; diff --git a/packages/cli/src/databases/migrations/sqlite/index.ts b/packages/cli/src/databases/migrations/sqlite/index.ts index 34d548b684..0981ece99b 100644 --- a/packages/cli/src/databases/migrations/sqlite/index.ts +++ b/packages/cli/src/databases/migrations/sqlite/index.ts @@ -71,6 +71,7 @@ import { CreateTestDefinitionTable1730386903556 } from '../common/1730386903556- import { CreateTestMetricTable1732271325258 } from '../common/1732271325258-CreateTestMetricTable'; import { CreateTestRun1732549866705 } from '../common/1732549866705-CreateTestRunTable'; import { AddMockedNodesColumnToTestDefinition1733133775640 } from '../common/1733133775640-AddMockedNodesColumnToTestDefinition'; +import { AddManagedColumnToCredentialsTable1734479635324 } from '../common/1734479635324-AddManagedColumnToCredentialsTable'; const sqliteMigrations: Migration[] = [ InitialMigration1588102412422, @@ -144,6 +145,7 @@ const sqliteMigrations: Migration[] = [ CreateTestMetricTable1732271325258, CreateTestRun1732549866705, AddMockedNodesColumnToTestDefinition1733133775640, + AddManagedColumnToCredentialsTable1734479635324, ]; export { sqliteMigrations };