ToolJet/server/migrations/1652541462886-CreateOrgEnvironmentVariablesTable.ts

80 lines
2 KiB
TypeScript
Raw Normal View History

[Feature] Organisation level environment variables 🚀 (#3068) * Added new page for env vars * Changed a field name * Added some backend files - Entity, Dto, services * Started working with api endpoints - implmented create - added ability * Added fields validation - Added env variables into module * Added update, delete, get apis - Also implemented delete feature in frontend * Implemented update operation on frontend - Solved an api problem * Added encryption * Added encryption to update operation - Exposed env vars to editor - working on viewer * Exposed env vars in viewer also - Resolved a bug * Updated edit & delete icon sizes * Added specs - Resolved issues that occurred while testing * removed logout code * Changed api endpoint * splitted page into 3 different parts, Form & table * Now, non-admin users can see all org env vars * Resolved divider missing issue * Added variable_type field * Now secret server values will be shown as 'SecureValue' * Now you can't update variable_type * Now server will resolve the secret env values * Resolved variable name issue * Added unique constraints * Resolved some frontend bugs * Changed error text * Fixed failing specs * Added group permissions for org env vars * Added permission checking in the backend * Implemented permission checking in the frontend * Edited spec for new changes * Changed some specs and fixed failing specs * Resolved failing case that showed up after merging with the latest develop * Added default admin seed permissions * Refactored some code * Changed value to organization_id * Fixed a bug * Resolved a failing case * Resolved PR changes - Changed permission name - Changed column type to enum - Fixed some errors - Refactored the code * minor code change * added scope * Fixed: hide table when 0 no of vars available * Fixed table dark theme issues * Fixed encryption switch style * Fixed failing cases and updated a spec * Added %% for environment variables * Added code to resolve single variable * Fixed multi-variable usage * resolved an issue * removed extra divider * Suggestions will also show up for %% too * now, suggestions dropdown will only show env variables results * env vars suggestions will not be included in js search results * You can't resolve env variables from js code - Also, we can't resolve js code from env variable enclosures * added an info text * Resolved variables issue * fixed Viewer issue * Resolved a bug - client variable was not working on query preview and run actions * Update error message while using server variable on canvas * Revert "Update error message while using server variable on canvas" This reverts commit 081e1c9e295509a2db1010ddce0841c60e57387a. * Resolved all PR changes - removed prefix 'environmentVariable' - redefined variable evaluation - removed environmentVariable object from inspector - fixed a small bug * Fixed a server side issue Co-authored-by: Sherfin Shamsudeen <sherfin94@gmail.com>
2022-07-01 10:50:37 +00:00
import { MigrationInterface, QueryRunner, Table, TableForeignKey, TableUnique } from 'typeorm';
export class CreateOrgEnvironmentVariablesTable1652541462886 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.createTable(
new Table({
name: 'org_environment_variables',
columns: [
{
name: 'id',
type: 'uuid',
isGenerated: true,
default: 'gen_random_uuid()',
isPrimary: true,
},
{
name: 'organization_id',
type: 'uuid',
isNullable: false,
},
{
name: 'variable_name',
type: 'varchar',
isNullable: false,
},
{
name: 'value',
type: 'varchar',
isNullable: false,
},
{
name: 'variable_type',
type: 'enum',
enumName: 'variable_type',
enum: ['client', 'server'],
isNullable: false,
},
{
name: 'encrypted',
type: 'boolean',
default: false,
},
{
name: 'created_at',
type: 'timestamp',
isNullable: true,
default: 'now()',
},
{
name: 'updated_at',
type: 'timestamp',
isNullable: true,
default: 'now()',
},
],
}),
true
);
await queryRunner.createForeignKey(
'org_environment_variables',
new TableForeignKey({
columnNames: ['organization_id'],
referencedColumnNames: ['id'],
referencedTableName: 'organizations',
onDelete: 'CASCADE',
})
);
await queryRunner.createUniqueConstraint(
'org_environment_variables',
new TableUnique({
columnNames: ['variable_name', 'variable_type', 'organization_id'],
})
);
}
public async down(queryRunner: QueryRunner): Promise<void> {}
}