feat: rename tenant into workspace (#2553)

* feat: rename tenant into workspace

* fix: missing some files and reset not working

* fix: wrong import

* Use link in company seeds

* Use link in company seeds

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Jérémy M
2023-11-17 11:26:33 +01:00
committed by GitHub
parent bc579d64a6
commit b86ada6d2b
239 changed files with 1603 additions and 1618 deletions

View File

@ -10,7 +10,7 @@ import {
UpdateDateColumn,
} from 'typeorm';
import { FieldMetadataInterface } from 'src/tenant/schema-builder/interfaces/field-metadata.interface';
import { FieldMetadataInterface } from 'src/workspace/workspace-schema-builder/interfaces/field-metadata.interface';
import { FieldMetadataTargetColumnMap } from 'src/metadata/field-metadata/interfaces/field-metadata-target-column-map.interface';
import { FieldMetadataDefaultValue } from 'src/metadata/field-metadata/interfaces/field-metadata-default-value.interface';

View File

@ -7,8 +7,8 @@ import {
import { NestjsQueryTypeOrmModule } from '@ptc-org/nestjs-query-typeorm';
import { SortDirection } from '@ptc-org/nestjs-query-core';
import { TenantMigrationRunnerModule } from 'src/tenant-migration-runner/tenant-migration-runner.module';
import { TenantMigrationModule } from 'src/metadata/tenant-migration/tenant-migration.module';
import { WorkspaceMigrationRunnerModule } from 'src/workspace/workspace-migration-runner/workspace-migration-runner.module';
import { WorkspaceMigrationModule } from 'src/metadata/workspace-migration/workspace-migration.module';
import { ObjectMetadataModule } from 'src/metadata/object-metadata/object-metadata.module';
import { JwtAuthGuard } from 'src/guards/jwt.auth.guard';
@ -24,8 +24,8 @@ import { UpdateFieldInput } from './dtos/update-field.input';
NestjsQueryGraphQLModule.forFeature({
imports: [
NestjsQueryTypeOrmModule.forFeature([FieldMetadataEntity], 'metadata'),
TenantMigrationModule,
TenantMigrationRunnerModule,
WorkspaceMigrationModule,
WorkspaceMigrationRunnerModule,
ObjectMetadataModule,
],
services: [FieldMetadataService],

View File

@ -10,12 +10,12 @@ import { Repository } from 'typeorm';
import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm';
import { DeleteOneOptions } from '@ptc-org/nestjs-query-core';
import { TenantMigrationRunnerService } from 'src/tenant-migration-runner/tenant-migration-runner.service';
import { TenantMigrationService } from 'src/metadata/tenant-migration/tenant-migration.service';
import { WorkspaceMigrationRunnerService } from 'src/workspace/workspace-migration-runner/workspace-migration-runner.service';
import { WorkspaceMigrationService } from 'src/metadata/workspace-migration/workspace-migration.service';
import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service';
import { FieldMetadataDTO } from 'src/metadata/field-metadata/dtos/field-metadata.dto';
import { CreateFieldInput } from 'src/metadata/field-metadata/dtos/create-field.input';
import { TenantMigrationTableAction } from 'src/metadata/tenant-migration/tenant-migration.entity';
import { WorkspaceMigrationTableAction } from 'src/metadata/workspace-migration/workspace-migration.entity';
import { generateTargetColumnMap } from 'src/metadata/field-metadata/utils/generate-target-column-map.util';
import { convertFieldMetadataToColumnActions } from 'src/metadata/field-metadata/utils/convert-field-metadata-to-column-action.util';
@ -28,8 +28,8 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
private readonly fieldMetadataRepository: Repository<FieldMetadataEntity>,
private readonly objectMetadataService: ObjectMetadataService,
private readonly tenantMigrationService: TenantMigrationService,
private readonly migrationRunnerService: TenantMigrationRunnerService,
private readonly workspaceMigrationService: WorkspaceMigrationService,
private readonly workspaceMigrationRunnerService: WorkspaceMigrationRunnerService,
) {
super(fieldMetadataRepository);
}
@ -90,18 +90,18 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
isCustom: true,
});
await this.tenantMigrationService.createCustomMigration(
await this.workspaceMigrationService.createCustomMigration(
record.workspaceId,
[
{
name: objectMetadata.targetTableName,
action: 'alter',
columns: convertFieldMetadataToColumnActions(createdFieldMetadata),
} satisfies TenantMigrationTableAction,
} satisfies WorkspaceMigrationTableAction,
],
);
await this.migrationRunnerService.executeMigrationFromPendingMigrations(
await this.workspaceMigrationRunnerService.executeMigrationFromPendingMigrations(
record.workspaceId,
);

View File

@ -5,14 +5,14 @@ import {
FieldMetadataType,
} from 'src/metadata/field-metadata/field-metadata.entity';
import {
TenantMigrationColumnAction,
TenantMigrationColumnActionType,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnAction,
WorkspaceMigrationColumnActionType,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
import { serializeDefaultValue } from 'src/metadata/field-metadata/utils/serialize-default-value';
export function convertFieldMetadataToColumnActions(
fieldMetadata: FieldMetadataEntity,
): TenantMigrationColumnAction[] {
): WorkspaceMigrationColumnAction[] {
switch (fieldMetadata.type) {
case FieldMetadataType.TEXT: {
const defaultValue =
@ -20,7 +20,7 @@ export function convertFieldMetadataToColumnActions(
return [
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: fieldMetadata.targetColumnMap.value,
columnType: 'text',
defaultValue: serializeDefaultValue(defaultValue?.value),
@ -36,7 +36,7 @@ export function convertFieldMetadataToColumnActions(
return [
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: fieldMetadata.targetColumnMap.value,
columnType: 'varchar',
defaultValue: serializeDefaultValue(defaultValue?.value),
@ -52,7 +52,7 @@ export function convertFieldMetadataToColumnActions(
return [
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: fieldMetadata.targetColumnMap.value,
columnType: 'float',
defaultValue: serializeDefaultValue(defaultValue?.value),
@ -65,7 +65,7 @@ export function convertFieldMetadataToColumnActions(
return [
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: fieldMetadata.targetColumnMap.value,
columnType: 'boolean',
defaultValue: serializeDefaultValue(defaultValue?.value),
@ -78,7 +78,7 @@ export function convertFieldMetadataToColumnActions(
return [
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: fieldMetadata.targetColumnMap.value,
columnType: 'timestamp',
defaultValue: serializeDefaultValue(defaultValue?.value),
@ -91,13 +91,13 @@ export function convertFieldMetadataToColumnActions(
return [
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: fieldMetadata.targetColumnMap.label,
columnType: 'varchar',
defaultValue: serializeDefaultValue(defaultValue?.label),
},
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: fieldMetadata.targetColumnMap.url,
columnType: 'varchar',
defaultValue: serializeDefaultValue(defaultValue?.url),
@ -110,13 +110,13 @@ export function convertFieldMetadataToColumnActions(
return [
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: fieldMetadata.targetColumnMap.amountMicros,
columnType: 'integer',
defaultValue: serializeDefaultValue(defaultValue?.amountMicros),
},
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: fieldMetadata.targetColumnMap.currencyCode,
columnType: 'varchar',
defaultValue: serializeDefaultValue(defaultValue?.currencyCode),

View File

@ -4,8 +4,8 @@ import { GraphQLModule } from '@nestjs/graphql';
import { YogaDriverConfig, YogaDriver } from '@graphql-yoga/nestjs';
import GraphQLJSON from 'graphql-type-json';
import { TenantMigrationRunnerModule } from 'src/tenant-migration-runner/tenant-migration-runner.module';
import { TenantMigrationModule } from 'src/metadata/tenant-migration/tenant-migration.module';
import { WorkspaceMigrationRunnerModule } from 'src/workspace/workspace-migration-runner/workspace-migration-runner.module';
import { WorkspaceMigrationModule } from 'src/metadata/workspace-migration/workspace-migration.module';
import { DataSourceModule } from './data-source/data-source.module';
import { FieldMetadataModule } from './field-metadata/field-metadata.module';
@ -25,8 +25,8 @@ import { RelationMetadataModule } from './relation-metadata/relation-metadata.mo
DataSourceModule,
FieldMetadataModule,
ObjectMetadataModule,
TenantMigrationRunnerModule,
TenantMigrationModule,
WorkspaceMigrationRunnerModule,
WorkspaceMigrationModule,
RelationMetadataModule,
],
})

View File

@ -9,7 +9,7 @@ import {
ManyToOne,
} from 'typeorm';
import { ObjectMetadataInterface } from 'src/tenant/schema-builder/interfaces/object-metadata.interface';
import { ObjectMetadataInterface } from 'src/workspace/workspace-schema-builder/interfaces/object-metadata.interface';
import { FieldMetadataEntity } from 'src/metadata/field-metadata/field-metadata.entity';
import { RelationMetadataEntity } from 'src/metadata/relation-metadata/relation-metadata.entity';

View File

@ -8,8 +8,8 @@ import { NestjsQueryTypeOrmModule } from '@ptc-org/nestjs-query-typeorm';
import { SortDirection } from '@ptc-org/nestjs-query-core';
import { DataSourceModule } from 'src/metadata/data-source/data-source.module';
import { TenantMigrationRunnerModule } from 'src/tenant-migration-runner/tenant-migration-runner.module';
import { TenantMigrationModule } from 'src/metadata/tenant-migration/tenant-migration.module';
import { WorkspaceMigrationRunnerModule } from 'src/workspace/workspace-migration-runner/workspace-migration-runner.module';
import { WorkspaceMigrationModule } from 'src/metadata/workspace-migration/workspace-migration.module';
import { JwtAuthGuard } from 'src/guards/jwt.auth.guard';
import { ObjectMetadataService } from './object-metadata.service';
@ -25,8 +25,8 @@ import { ObjectMetadataDTO } from './dtos/object-metadata.dto';
imports: [
NestjsQueryTypeOrmModule.forFeature([ObjectMetadataEntity], 'metadata'),
DataSourceModule,
TenantMigrationModule,
TenantMigrationRunnerModule,
WorkspaceMigrationModule,
WorkspaceMigrationRunnerModule,
],
services: [ObjectMetadataService],
resolvers: [

View File

@ -8,9 +8,9 @@ import { InjectRepository } from '@nestjs/typeorm';
import { Equal, In, Repository } from 'typeorm';
import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm';
import { TenantMigrationService } from 'src/metadata/tenant-migration/tenant-migration.service';
import { TenantMigrationRunnerService } from 'src/tenant-migration-runner/tenant-migration-runner.service';
import { TenantMigrationTableAction } from 'src/metadata/tenant-migration/tenant-migration.entity';
import { WorkspaceMigrationService } from 'src/metadata/workspace-migration/workspace-migration.service';
import { WorkspaceMigrationRunnerService } from 'src/workspace/workspace-migration-runner/workspace-migration-runner.service';
import { WorkspaceMigrationTableAction } from 'src/metadata/workspace-migration/workspace-migration.entity';
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
import { ObjectMetadataEntity } from './object-metadata.entity';
@ -23,8 +23,8 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
@InjectRepository(ObjectMetadataEntity, 'metadata')
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
private readonly tenantMigrationService: TenantMigrationService,
private readonly migrationRunnerService: TenantMigrationRunnerService,
private readonly workspaceMigrationService: WorkspaceMigrationService,
private readonly workspaceMigrationRunnerService: WorkspaceMigrationRunnerService,
) {
super(objectMetadataRepository);
}
@ -61,7 +61,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
fields:
// Creating default fields.
// No need to create a custom migration for this though as the default columns are already
// created with default values which is not supported yet by tenant migrations.
// created with default values which is not supported yet by workspace migrations.
[
{
type: FieldMetadataType.UUID,
@ -109,17 +109,17 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
],
});
await this.tenantMigrationService.createCustomMigration(
await this.workspaceMigrationService.createCustomMigration(
createdObjectMetadata.workspaceId,
[
{
name: createdObjectMetadata.targetTableName,
action: 'create',
} satisfies TenantMigrationTableAction,
} satisfies WorkspaceMigrationTableAction,
],
);
await this.migrationRunnerService.executeMigrationFromPendingMigrations(
await this.workspaceMigrationRunnerService.executeMigrationFromPendingMigrations(
createdObjectMetadata.workspaceId,
);

View File

@ -9,7 +9,7 @@ import {
UpdateDateColumn,
} from 'typeorm';
import { RelationMetadataInterface } from 'src/tenant/schema-builder/interfaces/relation-metadata.interface';
import { RelationMetadataInterface } from 'src/workspace/workspace-schema-builder/interfaces/relation-metadata.interface';
import { FieldMetadataEntity } from 'src/metadata/field-metadata/field-metadata.entity';
import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity';

View File

@ -9,8 +9,8 @@ import { NestjsQueryTypeOrmModule } from '@ptc-org/nestjs-query-typeorm';
import { JwtAuthGuard } from 'src/guards/jwt.auth.guard';
import { FieldMetadataModule } from 'src/metadata/field-metadata/field-metadata.module';
import { ObjectMetadataModule } from 'src/metadata/object-metadata/object-metadata.module';
import { TenantMigrationModule } from 'src/metadata/tenant-migration/tenant-migration.module';
import { TenantMigrationRunnerModule } from 'src/tenant-migration-runner/tenant-migration-runner.module';
import { WorkspaceMigrationModule } from 'src/metadata/workspace-migration/workspace-migration.module';
import { WorkspaceMigrationRunnerModule } from 'src/workspace/workspace-migration-runner/workspace-migration-runner.module';
import { RelationMetadataService } from './relation-metadata.service';
import { RelationMetadataEntity } from './relation-metadata.entity';
@ -28,8 +28,8 @@ import { RelationMetadataDTO } from './dtos/relation-metadata.dto';
),
ObjectMetadataModule,
FieldMetadataModule,
TenantMigrationRunnerModule,
TenantMigrationModule,
WorkspaceMigrationRunnerModule,
WorkspaceMigrationModule,
],
services: [RelationMetadataService],
resolvers: [

View File

@ -12,10 +12,10 @@ import camelCase from 'lodash.camelcase';
import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service';
import { FieldMetadataService } from 'src/metadata/field-metadata/field-metadata.service';
import { CreateRelationInput } from 'src/metadata/relation-metadata/dtos/create-relation.input';
import { TenantMigrationRunnerService } from 'src/tenant-migration-runner/tenant-migration-runner.service';
import { TenantMigrationService } from 'src/metadata/tenant-migration/tenant-migration.service';
import { WorkspaceMigrationRunnerService } from 'src/workspace/workspace-migration-runner/workspace-migration-runner.service';
import { WorkspaceMigrationService } from 'src/metadata/workspace-migration/workspace-migration.service';
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
import { TenantMigrationColumnActionType } from 'src/metadata/tenant-migration/tenant-migration.entity';
import { WorkspaceMigrationColumnActionType } from 'src/metadata/workspace-migration/workspace-migration.entity';
import {
RelationMetadataEntity,
@ -29,8 +29,8 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
private readonly relationMetadataRepository: Repository<RelationMetadataEntity>,
private readonly objectMetadataService: ObjectMetadataService,
private readonly fieldMetadataService: FieldMetadataService,
private readonly tenantMigrationService: TenantMigrationService,
private readonly migrationRunnerService: TenantMigrationRunnerService,
private readonly workspaceMigrationService: WorkspaceMigrationService,
private readonly workspaceMigrationRunnerService: WorkspaceMigrationRunnerService,
) {
super(relationMetadataRepository);
}
@ -136,7 +136,7 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
toFieldMetadataId: createdFieldMap[record.toObjectMetadataId].id,
});
await this.tenantMigrationService.createCustomMigration(
await this.workspaceMigrationService.createCustomMigration(
record.workspaceId,
[
// Create the column
@ -145,7 +145,7 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
action: 'alter',
columns: [
{
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
columnName: foreignKeyColumnName,
columnType: 'uuid',
},
@ -157,7 +157,7 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
action: 'alter',
columns: [
{
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
columnName: foreignKeyColumnName,
referencedTableName:
objectMetadataMap[record.fromObjectMetadataId].targetTableName,
@ -169,7 +169,7 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
],
);
await this.migrationRunnerService.executeMigrationFromPendingMigrations(
await this.workspaceMigrationRunnerService.executeMigrationFromPendingMigrations(
record.workspaceId,
);

View File

@ -1,62 +0,0 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
export const addCompanyTable: TenantMigrationTableAction[] = [
{
name: 'company',
action: 'create',
},
{
name: 'company',
action: 'alter',
columns: [
{
columnName: 'name',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'domainName',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'address',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'employees',
columnType: 'integer',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'linkedinUrl',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'xUrl',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'annualRecurringRevenue',
columnType: 'float',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'idealCustomerProfile',
columnType: 'boolean',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'accountOwnerId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,32 +0,0 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
export const addViewTable: TenantMigrationTableAction[] = [
{
name: 'view',
action: 'create',
},
{
name: 'view',
action: 'alter',
columns: [
{
columnName: 'name',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'objectMetadataId',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'type',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,32 +0,0 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
export const addActivityTargetTable: TenantMigrationTableAction[] = [
{
name: 'activityTarget',
action: 'create',
},
{
name: 'activityTarget',
action: 'alter',
columns: [
{
columnName: 'companyId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'activityId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'personId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,32 +0,0 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
export const addApiKeyTable: TenantMigrationTableAction[] = [
{
name: 'apiKey',
action: 'create',
},
{
name: 'apiKey',
action: 'alter',
columns: [
{
columnName: 'name',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'revokedAt',
columnType: 'timestamp',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'expiresAt',
columnType: 'timestamp',
action: TenantMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,32 +0,0 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
export const addCommentTable: TenantMigrationTableAction[] = [
{
name: 'comment',
action: 'create',
},
{
name: 'comment',
action: 'alter',
columns: [
{
columnName: 'body',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'authorId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'activityId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,32 +0,0 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
export const addPipelineStepTable: TenantMigrationTableAction[] = [
{
name: 'pipelineStep',
action: 'create',
},
{
name: 'pipelineStep',
action: 'alter',
columns: [
{
columnName: 'name',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'color',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'position',
columnType: 'float',
action: TenantMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,27 +0,0 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
export const addWebhookTable: TenantMigrationTableAction[] = [
{
name: 'webhook',
action: 'create',
},
{
name: 'webhook',
action: 'alter',
columns: [
{
columnName: 'targetUrl',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
{
columnName: 'operation',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,19 +0,0 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
export const addCompanyRelations: TenantMigrationTableAction[] = [
{
name: 'company',
action: 'alter',
columns: [
{
columnName: 'accountOwnerId',
referencedTableName: 'workspaceMember',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
},
],
},
];

View File

@ -1,19 +0,0 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
export const addPersonRelations: TenantMigrationTableAction[] = [
{
name: 'person',
action: 'alter',
columns: [
{
columnName: 'companyId',
referencedTableName: 'company',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
},
],
},
];

View File

@ -1,54 +0,0 @@
import { addActivityTargetTable } from 'src/metadata/tenant-migration/migrations/1697618015-addActivityTargetTable';
import { addActivityTable } from 'src/metadata/tenant-migration/migrations/1697618016-addActivityTable';
import { addApiKeyTable } from 'src/metadata/tenant-migration/migrations/1697618017-addApiKeyTable';
import { addAttachmentTable } from 'src/metadata/tenant-migration/migrations/1697618018-addAttachmentTable';
import { addCommentTable } from 'src/metadata/tenant-migration/migrations/1697618019-addCommentTable';
import { addFavoriteTable } from 'src/metadata/tenant-migration/migrations/1697618020-addFavoriteTable';
import { addOpportunityTable } from 'src/metadata/tenant-migration/migrations/1697618021-addOpportunityTable';
import { addPersonTable } from 'src/metadata/tenant-migration/migrations/1697618022-addPersonTable';
import { addPipelineStepTable } from 'src/metadata/tenant-migration/migrations/1697618023-addPipelineStepTable';
import { addWebhookTable } from 'src/metadata/tenant-migration/migrations/1697618024-addWebhookTable';
import { addWorkspaceMemberTable } from 'src/metadata/tenant-migration/migrations/1697618026-addWorspaceMemberTable';
import { addCompanyRelations } from 'src/metadata/tenant-migration/migrations/1697618027-addCompanyRelations';
import { addAttachmentRelations } from 'src/metadata/tenant-migration/migrations/1697618028-addAttachmentRelations';
import { addPersonRelations } from 'src/metadata/tenant-migration/migrations/1697618029-addPersonRelations';
import { addFavoriteRelations } from 'src/metadata/tenant-migration/migrations/1697618030-addFavoriteRelations';
import { addActivityTargetRelations } from 'src/metadata/tenant-migration/migrations/1697618032-addActivityTargetRelations';
import { addActivityRelations } from 'src/metadata/tenant-migration/migrations/1697618033-addActivityRelations';
import { addCommentRelations } from 'src/metadata/tenant-migration/migrations/1697618034-addCommentRelations';
import { addOpportunityRelations } from 'src/metadata/tenant-migration/migrations/1697618031-addOpportunityRelations';
import { addCompanyTable } from './migrations/1697618009-addCompanyTable';
import { addViewTable } from './migrations/1697618011-addViewTable';
import { addViewFieldTable } from './migrations/1697618012-addViewFieldTable';
import { addViewFilterTable } from './migrations/1697618013-addViewFilterTable';
import { addViewSortTable } from './migrations/1697618014-addViewSortTable';
// TODO: read the folder and return all migrations
export const standardMigrations = {
'1697618009-addCompanyTable': addCompanyTable,
'1697618011-addViewTable': addViewTable,
'1697618012-addViewFieldTable': addViewFieldTable,
'1697618013-addViewFilterTable': addViewFilterTable,
'1697618014-addViewSortTable': addViewSortTable,
'1697618015-addActivityTargetTable': addActivityTargetTable,
'1697618016-addActivityTable': addActivityTable,
'1697618017-addApiKeyTable': addApiKeyTable,
'1697618018-addAttachmentTable': addAttachmentTable,
'1697618019-addCommentTable': addCommentTable,
'1697618020-addFavoriteTable': addFavoriteTable,
'1697618021-addOpportunityTable': addOpportunityTable,
'1697618022-addPersonTable': addPersonTable,
'1697618023-addPipelineStepTable': addPipelineStepTable,
'1697618024-addWebhookTable': addWebhookTable,
'1697618026-addWorkspaceMemberTable': addWorkspaceMemberTable,
'1697618027-addCompanyRelations': addCompanyRelations,
'1697618028-addAttachmentRelations': addAttachmentRelations,
'1697618029-addPersonRelations': addPersonRelations,
'1697618030-addFavoriteRelations': addFavoriteRelations,
'1697618031-addOpportunitiesRelations': addOpportunityRelations,
'1697618032-addActivityTargetRelations': addActivityTargetRelations,
'1697618033-addActivityRelations': addActivityRelations,
'1697618034-addCommentRelations': addCommentRelations,
};

View File

@ -1,12 +0,0 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { TenantMigrationService } from './tenant-migration.service';
import { TenantMigrationEntity } from './tenant-migration.entity';
@Module({
imports: [TypeOrmModule.forFeature([TenantMigrationEntity], 'metadata')],
exports: [TenantMigrationService],
providers: [TenantMigrationService],
})
export class TenantMigrationModule {}

View File

@ -0,0 +1,72 @@
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addCompanyTable: WorkspaceMigrationTableAction[] = [
{
name: 'company',
action: 'create',
},
{
name: 'company',
action: 'alter',
columns: [
{
columnName: 'name',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'domainName',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'address',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'employees',
columnType: 'integer',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'linkedinLinklUrl',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'linkedinLinkLabel',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'xLinkUrl',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'xLinkLabel',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'annualRecurringRevenue',
columnType: 'float',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'idealCustomerProfile',
columnType: 'boolean',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'accountOwnerId',
columnType: 'uuid',
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -0,0 +1,32 @@
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addViewTable: WorkspaceMigrationTableAction[] = [
{
name: 'view',
action: 'create',
},
{
name: 'view',
action: 'alter',
columns: [
{
columnName: 'name',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'objectMetadataId',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'type',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addViewFieldTable: TenantMigrationTableAction[] = [
export const addViewFieldTable: WorkspaceMigrationTableAction[] = [
{
name: 'viewField',
action: 'create',
@ -15,33 +15,33 @@ export const addViewFieldTable: TenantMigrationTableAction[] = [
{
columnName: 'fieldMetadataId',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'position',
columnType: 'integer',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'isVisible',
columnType: 'boolean',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'size',
columnType: 'integer',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'viewId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'viewId',
referencedTableName: 'view',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addViewFilterTable: TenantMigrationTableAction[] = [
export const addViewFilterTable: WorkspaceMigrationTableAction[] = [
{
name: 'viewFilter',
action: 'create',
@ -15,33 +15,33 @@ export const addViewFilterTable: TenantMigrationTableAction[] = [
{
columnName: 'fieldMetadataId',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'operand',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'value',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'displayValue',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'viewId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'viewId',
referencedTableName: 'view',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addViewSortTable: TenantMigrationTableAction[] = [
export const addViewSortTable: WorkspaceMigrationTableAction[] = [
{
name: 'viewSort',
action: 'create',
@ -15,23 +15,23 @@ export const addViewSortTable: TenantMigrationTableAction[] = [
{
columnName: 'fieldMetadataId',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'direction',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'viewId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'viewId',
referencedTableName: 'view',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},

View File

@ -0,0 +1,32 @@
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addActivityTargetTable: WorkspaceMigrationTableAction[] = [
{
name: 'activityTarget',
action: 'create',
},
{
name: 'activityTarget',
action: 'alter',
columns: [
{
columnName: 'companyId',
columnType: 'uuid',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'activityId',
columnType: 'uuid',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'personId',
columnType: 'uuid',
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addActivityTable: TenantMigrationTableAction[] = [
export const addActivityTable: WorkspaceMigrationTableAction[] = [
{
name: 'activity',
action: 'create',
@ -15,42 +15,42 @@ export const addActivityTable: TenantMigrationTableAction[] = [
{
columnName: 'title',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'body',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'type',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'reminderAt',
columnType: 'timestamp',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'dueAt',
columnType: 'timestamp',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'completedAt',
columnType: 'timestamp',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'authorId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'assigneeId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},

View File

@ -0,0 +1,32 @@
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addApiKeyTable: WorkspaceMigrationTableAction[] = [
{
name: 'apiKey',
action: 'create',
},
{
name: 'apiKey',
action: 'alter',
columns: [
{
columnName: 'name',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'revokedAt',
columnType: 'timestamp',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'expiresAt',
columnType: 'timestamp',
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addAttachmentTable: TenantMigrationTableAction[] = [
export const addAttachmentTable: WorkspaceMigrationTableAction[] = [
{
name: 'attachment',
action: 'create',
@ -15,37 +15,37 @@ export const addAttachmentTable: TenantMigrationTableAction[] = [
{
columnName: 'name',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'fullPath',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'type',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'companyId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'authorId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'activityId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'personId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},

View File

@ -0,0 +1,32 @@
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addCommentTable: WorkspaceMigrationTableAction[] = [
{
name: 'comment',
action: 'create',
},
{
name: 'comment',
action: 'alter',
columns: [
{
columnName: 'body',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'authorId',
columnType: 'uuid',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'activityId',
columnType: 'uuid',
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addFavoriteTable: TenantMigrationTableAction[] = [
export const addFavoriteTable: WorkspaceMigrationTableAction[] = [
{
name: 'favorite',
action: 'create',
@ -15,22 +15,22 @@ export const addFavoriteTable: TenantMigrationTableAction[] = [
{
columnName: 'position',
columnType: 'float',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'companyId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'personId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'workspaceMemberId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addOpportunityTable: TenantMigrationTableAction[] = [
export const addOpportunityTable: WorkspaceMigrationTableAction[] = [
{
name: 'opportunity',
action: 'create',
@ -15,37 +15,37 @@ export const addOpportunityTable: TenantMigrationTableAction[] = [
{
columnName: 'amount',
columnType: 'float',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'probability',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'closeDate',
columnType: 'timestamp',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'companyId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'personId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'pipelineStepId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'pointOfContactId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addPersonTable: TenantMigrationTableAction[] = [
export const addPersonTable: WorkspaceMigrationTableAction[] = [
{
name: 'person',
action: 'create',
@ -15,52 +15,52 @@ export const addPersonTable: TenantMigrationTableAction[] = [
{
columnName: 'firstName',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'lastName',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'email',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'linkedinUrl',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'xUrl',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'jobTitle',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'phone',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'city',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'avatarUrl',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'companyId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},

View File

@ -0,0 +1,32 @@
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addPipelineStepTable: WorkspaceMigrationTableAction[] = [
{
name: 'pipelineStep',
action: 'create',
},
{
name: 'pipelineStep',
action: 'alter',
columns: [
{
columnName: 'name',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'color',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'position',
columnType: 'float',
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -0,0 +1,27 @@
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addWebhookTable: WorkspaceMigrationTableAction[] = [
{
name: 'webhook',
action: 'create',
},
{
name: 'webhook',
action: 'alter',
columns: [
{
columnName: 'targetUrl',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'operation',
columnType: 'varchar',
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},
];

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addWorkspaceMemberTable: TenantMigrationTableAction[] = [
export const addWorkspaceMemberTable: WorkspaceMigrationTableAction[] = [
{
name: 'workspaceMember',
action: 'create',
@ -15,37 +15,37 @@ export const addWorkspaceMemberTable: TenantMigrationTableAction[] = [
{
columnName: 'firstName',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'lastName',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'avatarUrl',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'colorScheme',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'locale',
columnType: 'varchar',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'allowImpersonation',
columnType: 'boolean',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
{
columnName: 'userId',
columnType: 'uuid',
action: TenantMigrationColumnActionType.CREATE,
action: WorkspaceMigrationColumnActionType.CREATE,
},
],
},

View File

@ -0,0 +1,19 @@
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addCompanyRelations: WorkspaceMigrationTableAction[] = [
{
name: 'company',
action: 'alter',
columns: [
{
columnName: 'accountOwnerId',
referencedTableName: 'workspaceMember',
referencedTableColumnName: 'id',
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},
];

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addAttachmentRelations: TenantMigrationTableAction[] = [
export const addAttachmentRelations: WorkspaceMigrationTableAction[] = [
{
name: 'attachment',
action: 'alter',
@ -12,25 +12,25 @@ export const addAttachmentRelations: TenantMigrationTableAction[] = [
columnName: 'companyId',
referencedTableName: 'company',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'personId',
referencedTableName: 'person',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'activityId',
referencedTableName: 'activity',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'authorId',
referencedTableName: 'workspaceMember',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},

View File

@ -0,0 +1,19 @@
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addPersonRelations: WorkspaceMigrationTableAction[] = [
{
name: 'person',
action: 'alter',
columns: [
{
columnName: 'companyId',
referencedTableName: 'company',
referencedTableColumnName: 'id',
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},
];

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addFavoriteRelations: TenantMigrationTableAction[] = [
export const addFavoriteRelations: WorkspaceMigrationTableAction[] = [
{
name: 'favorite',
action: 'alter',
@ -12,19 +12,19 @@ export const addFavoriteRelations: TenantMigrationTableAction[] = [
columnName: 'companyId',
referencedTableName: 'company',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'personId',
referencedTableName: 'person',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'workspaceMemberId',
referencedTableName: 'workspaceMember',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addOpportunityRelations: TenantMigrationTableAction[] = [
export const addOpportunityRelations: WorkspaceMigrationTableAction[] = [
{
name: 'opportunity',
action: 'alter',
@ -12,25 +12,25 @@ export const addOpportunityRelations: TenantMigrationTableAction[] = [
columnName: 'companyId',
referencedTableName: 'company',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'personId',
referencedTableName: 'person',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'pointOfContactId',
referencedTableName: 'person',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'pipelineStepId',
referencedTableName: 'pipelineStep',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addActivityTargetRelations: TenantMigrationTableAction[] = [
export const addActivityTargetRelations: WorkspaceMigrationTableAction[] = [
{
name: 'activityTarget',
action: 'alter',
@ -12,19 +12,19 @@ export const addActivityTargetRelations: TenantMigrationTableAction[] = [
columnName: 'companyId',
referencedTableName: 'company',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'personId',
referencedTableName: 'person',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'activityId',
referencedTableName: 'activity',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addActivityRelations: TenantMigrationTableAction[] = [
export const addActivityRelations: WorkspaceMigrationTableAction[] = [
{
name: 'activity',
action: 'alter',
@ -12,13 +12,13 @@ export const addActivityRelations: TenantMigrationTableAction[] = [
columnName: 'authorId',
referencedTableName: 'workspaceMember',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'assigneeId',
referencedTableName: 'workspaceMember',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},

View File

@ -1,9 +1,9 @@
import {
TenantMigrationColumnActionType,
TenantMigrationTableAction,
} from 'src/metadata/tenant-migration/tenant-migration.entity';
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableAction,
} from 'src/metadata/workspace-migration/workspace-migration.entity';
export const addCommentRelations: TenantMigrationTableAction[] = [
export const addCommentRelations: WorkspaceMigrationTableAction[] = [
{
name: 'comment',
action: 'alter',
@ -12,13 +12,13 @@ export const addCommentRelations: TenantMigrationTableAction[] = [
columnName: 'authorId',
referencedTableName: 'workspaceMember',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
{
columnName: 'activityId',
referencedTableName: 'activity',
referencedTableColumnName: 'id',
action: TenantMigrationColumnActionType.RELATION,
action: WorkspaceMigrationColumnActionType.RELATION,
},
],
},

View File

@ -0,0 +1,54 @@
import { addActivityTargetTable } from 'src/metadata/workspace-migration/migrations/1697618015-addActivityTargetTable';
import { addActivityTable } from 'src/metadata/workspace-migration/migrations/1697618016-addActivityTable';
import { addApiKeyTable } from 'src/metadata/workspace-migration/migrations/1697618017-addApiKeyTable';
import { addAttachmentTable } from 'src/metadata/workspace-migration/migrations/1697618018-addAttachmentTable';
import { addCommentTable } from 'src/metadata/workspace-migration/migrations/1697618019-addCommentTable';
import { addFavoriteTable } from 'src/metadata/workspace-migration/migrations/1697618020-addFavoriteTable';
import { addOpportunityTable } from 'src/metadata/workspace-migration/migrations/1697618021-addOpportunityTable';
import { addPersonTable } from 'src/metadata/workspace-migration/migrations/1697618022-addPersonTable';
import { addPipelineStepTable } from 'src/metadata/workspace-migration/migrations/1697618023-addPipelineStepTable';
import { addWebhookTable } from 'src/metadata/workspace-migration/migrations/1697618024-addWebhookTable';
import { addWorkspaceMemberTable } from 'src/metadata/workspace-migration/migrations/1697618026-addWorspaceMemberTable';
import { addCompanyRelations } from 'src/metadata/workspace-migration/migrations/1697618027-addCompanyRelations';
import { addAttachmentRelations } from 'src/metadata/workspace-migration/migrations/1697618028-addAttachmentRelations';
import { addPersonRelations } from 'src/metadata/workspace-migration/migrations/1697618029-addPersonRelations';
import { addFavoriteRelations } from 'src/metadata/workspace-migration/migrations/1697618030-addFavoriteRelations';
import { addActivityTargetRelations } from 'src/metadata/workspace-migration/migrations/1697618032-addActivityTargetRelations';
import { addActivityRelations } from 'src/metadata/workspace-migration/migrations/1697618033-addActivityRelations';
import { addCommentRelations } from 'src/metadata/workspace-migration/migrations/1697618034-addCommentRelations';
import { addOpportunityRelations } from 'src/metadata/workspace-migration/migrations/1697618031-addOpportunityRelations';
import { addCompanyTable } from './migrations/1697618009-addCompanyTable';
import { addViewTable } from './migrations/1697618011-addViewTable';
import { addViewFieldTable } from './migrations/1697618012-addViewFieldTable';
import { addViewFilterTable } from './migrations/1697618013-addViewFilterTable';
import { addViewSortTable } from './migrations/1697618014-addViewSortTable';
// TODO: read the folder and return all migrations
export const standardMigrations = {
'1697618009-addCompanyTable': addCompanyTable,
'1697618011-addViewTable': addViewTable,
'1697618012-addViewFieldTable': addViewFieldTable,
'1697618013-addViewFilterTable': addViewFilterTable,
'1697618014-addViewSortTable': addViewSortTable,
'1697618015-addActivityTargetTable': addActivityTargetTable,
'1697618016-addActivityTable': addActivityTable,
'1697618017-addApiKeyTable': addApiKeyTable,
'1697618018-addAttachmentTable': addAttachmentTable,
'1697618019-addCommentTable': addCommentTable,
'1697618020-addFavoriteTable': addFavoriteTable,
'1697618021-addOpportunityTable': addOpportunityTable,
'1697618022-addPersonTable': addPersonTable,
'1697618023-addPipelineStepTable': addPipelineStepTable,
'1697618024-addWebhookTable': addWebhookTable,
'1697618026-addWorkspaceMemberTable': addWorkspaceMemberTable,
'1697618027-addCompanyRelations': addCompanyRelations,
'1697618028-addAttachmentRelations': addAttachmentRelations,
'1697618029-addPersonRelations': addPersonRelations,
'1697618030-addFavoriteRelations': addFavoriteRelations,
'1697618031-addOpportunitiesRelations': addOpportunityRelations,
'1697618032-addActivityTargetRelations': addActivityTargetRelations,
'1697618033-addActivityRelations': addActivityRelations,
'1697618034-addCommentRelations': addCommentRelations,
};

View File

@ -5,42 +5,42 @@ import {
PrimaryGeneratedColumn,
} from 'typeorm';
export enum TenantMigrationColumnActionType {
export enum WorkspaceMigrationColumnActionType {
CREATE = 'CREATE',
RELATION = 'RELATION',
}
export type TenantMigrationColumnCreate = {
action: TenantMigrationColumnActionType.CREATE;
export type WorkspaceMigrationColumnCreate = {
action: WorkspaceMigrationColumnActionType.CREATE;
columnName: string;
columnType: string;
defaultValue?: any;
};
export type TenantMigrationColumnRelation = {
action: TenantMigrationColumnActionType.RELATION;
export type WorkspaceMigrationColumnRelation = {
action: WorkspaceMigrationColumnActionType.RELATION;
columnName: string;
referencedTableName: string;
referencedTableColumnName: string;
isUnique?: boolean;
};
export type TenantMigrationColumnAction = {
action: TenantMigrationColumnActionType;
} & (TenantMigrationColumnCreate | TenantMigrationColumnRelation);
export type WorkspaceMigrationColumnAction = {
action: WorkspaceMigrationColumnActionType;
} & (WorkspaceMigrationColumnCreate | WorkspaceMigrationColumnRelation);
export type TenantMigrationTableAction = {
export type WorkspaceMigrationTableAction = {
name: string;
action: 'create' | 'alter';
columns?: TenantMigrationColumnAction[];
columns?: WorkspaceMigrationColumnAction[];
};
@Entity('tenantMigration')
export class TenantMigrationEntity {
@Entity('workspaceMigration')
export class WorkspaceMigrationEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ nullable: true, type: 'jsonb' })
migrations: TenantMigrationTableAction[];
migrations: WorkspaceMigrationTableAction[];
@Column({ nullable: true })
name: string;

View File

@ -0,0 +1,12 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { WorkspaceMigrationService } from './workspace-migration.service';
import { WorkspaceMigrationEntity } from './workspace-migration.entity';
@Module({
imports: [TypeOrmModule.forFeature([WorkspaceMigrationEntity], 'metadata')],
exports: [WorkspaceMigrationService],
providers: [WorkspaceMigrationService],
})
export class WorkspaceMigrationModule {}

View File

@ -5,15 +5,15 @@ import { IsNull, Repository } from 'typeorm';
import { standardMigrations } from './standard-migrations';
import {
TenantMigrationEntity,
TenantMigrationTableAction,
} from './tenant-migration.entity';
WorkspaceMigrationEntity,
WorkspaceMigrationTableAction,
} from './workspace-migration.entity';
@Injectable()
export class TenantMigrationService {
export class WorkspaceMigrationService {
constructor(
@InjectRepository(TenantMigrationEntity, 'metadata')
private readonly tenantMigrationRepository: Repository<TenantMigrationEntity>,
@InjectRepository(WorkspaceMigrationEntity, 'metadata')
private readonly workspaceMigrationRepository: Repository<WorkspaceMigrationEntity>,
) {}
/**
@ -24,7 +24,7 @@ export class TenantMigrationService {
public async insertStandardMigrations(workspaceId: string): Promise<void> {
// TODO: we actually don't need to fetch all of them, to improve later so it scales well.
const insertedStandardMigrations =
await this.tenantMigrationRepository.find({
await this.workspaceMigrationRepository.find({
where: { workspaceId, isCustom: false },
});
@ -47,7 +47,7 @@ export class TenantMigrationService {
isCustom: false,
}));
await this.tenantMigrationRepository.save(
await this.workspaceMigrationRepository.save(
standardMigrationsThatNeedToBeInserted,
);
}
@ -56,12 +56,12 @@ export class TenantMigrationService {
* Get all pending migrations for a given workspaceId
*
* @param workspaceId: string
* @returns Promise<TenantMigration[]>
* @returns Promise<WorkspaceMigration[]>
*/
public async getPendingMigrations(
workspaceId: string,
): Promise<TenantMigrationEntity[]> {
return await this.tenantMigrationRepository.find({
): Promise<WorkspaceMigrationEntity[]> {
return await this.workspaceMigrationRepository.find({
order: { createdAt: 'ASC', name: 'ASC' },
where: {
appliedAt: IsNull(),
@ -75,13 +75,13 @@ export class TenantMigrationService {
* Should be called once the migration has been applied
*
* @param workspaceId: string
* @param migration: TenantMigration
* @param migration: WorkspaceMigration
*/
public async setAppliedAtForMigration(
workspaceId: string,
migration: TenantMigrationEntity,
migration: WorkspaceMigrationEntity,
) {
await this.tenantMigrationRepository.save({
await this.workspaceMigrationRepository.save({
id: migration.id,
appliedAt: new Date(),
});
@ -95,9 +95,9 @@ export class TenantMigrationService {
*/
public async createCustomMigration(
workspaceId: string,
migrations: TenantMigrationTableAction[],
migrations: WorkspaceMigrationTableAction[],
) {
await this.tenantMigrationRepository.save({
await this.workspaceMigrationRepository.save({
migrations,
workspaceId,
isCustom: true,
@ -105,6 +105,6 @@ export class TenantMigrationService {
}
public async delete(workspaceId: string) {
await this.tenantMigrationRepository.delete({ workspaceId });
await this.workspaceMigrationRepository.delete({ workspaceId });
}
}