Add Tenant initialisation service (#2100)

* Add Tenant initialisation service

* few fixes

* fix constraint

* fix tests

* update metadata json with employees and address

* add V2

* remove metadata.gql
This commit is contained in:
Weiko
2023-10-18 18:01:52 +02:00
committed by GitHub
parent 1cd91e60fa
commit 7fbef6d60d
37 changed files with 513 additions and 177 deletions

View File

@ -8,6 +8,7 @@ import {
JoinColumn,
ManyToOne,
PrimaryGeneratedColumn,
Unique,
UpdateDateColumn,
} from 'typeorm';
import {
@ -38,6 +39,7 @@ export type FieldMetadataTargetColumnMap = {
disableFilter: true,
disableSort: true,
})
@Unique('IndexOnNameAndWorkspaceIdUnique', ['name', 'objectId', 'workspaceId'])
export class FieldMetadata {
@IDField(() => ID)
@PrimaryGeneratedColumn('uuid')

View File

@ -10,13 +10,13 @@ import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm';
import { FieldMetadata } from 'src/metadata/field-metadata/field-metadata.entity';
import {
convertFieldMetadataToColumnChanges,
convertFieldMetadataToColumnActions,
generateTargetColumnMap,
} from 'src/metadata/field-metadata/utils/field-metadata.util';
import { MigrationRunnerService } from 'src/metadata/migration-runner/migration-runner.service';
import { TenantMigrationService } from 'src/metadata/tenant-migration/tenant-migration.service';
import { ObjectMetadataService } from 'src/metadata/object-metadata/services/object-metadata.service';
import { TenantMigrationTableChange } from 'src/metadata/tenant-migration/tenant-migration.entity';
import { TenantMigrationTableAction } from 'src/metadata/tenant-migration/tenant-migration.entity';
@Injectable()
export class FieldMetadataService extends TypeOrmQueryService<FieldMetadata> {
@ -59,13 +59,16 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadata> {
targetColumnMap: generateTargetColumnMap(record.type),
});
await this.tenantMigrationService.createMigration(record.workspaceId, [
{
name: objectMetadata.targetTableName,
change: 'alter',
columns: convertFieldMetadataToColumnChanges(createdFieldMetadata),
} satisfies TenantMigrationTableChange,
]);
await this.tenantMigrationService.createCustomMigration(
record.workspaceId,
[
{
name: objectMetadata.targetTableName,
action: 'alter',
columns: convertFieldMetadataToColumnActions(createdFieldMetadata),
} satisfies TenantMigrationTableAction,
],
);
await this.migrationRunnerService.executeMigrationFromPendingMigrations(
record.workspaceId,

View File

@ -5,7 +5,7 @@ import {
FieldMetadata,
FieldMetadataTargetColumnMap,
} from 'src/metadata/field-metadata/field-metadata.entity';
import { TenantMigrationColumnChange } from 'src/metadata/tenant-migration/tenant-migration.entity';
import { TenantMigrationColumnAction } from 'src/metadata/tenant-migration/tenant-migration.entity';
/**
* Generate a column name from a field name removing unsupported characters.
@ -52,15 +52,15 @@ export function generateTargetColumnMap(
}
}
export function convertFieldMetadataToColumnChanges(
export function convertFieldMetadataToColumnActions(
fieldMetadata: FieldMetadata,
): TenantMigrationColumnChange[] {
): TenantMigrationColumnAction[] {
switch (fieldMetadata.type) {
case 'text':
return [
{
name: fieldMetadata.targetColumnMap.value,
change: 'create',
action: 'create',
type: 'text',
},
];
@ -69,7 +69,7 @@ export function convertFieldMetadataToColumnChanges(
return [
{
name: fieldMetadata.targetColumnMap.value,
change: 'create',
action: 'create',
type: 'varchar',
},
];
@ -77,7 +77,7 @@ export function convertFieldMetadataToColumnChanges(
return [
{
name: fieldMetadata.targetColumnMap.value,
change: 'create',
action: 'create',
type: 'integer',
},
];
@ -85,7 +85,7 @@ export function convertFieldMetadataToColumnChanges(
return [
{
name: fieldMetadata.targetColumnMap.value,
change: 'create',
action: 'create',
type: 'boolean',
},
];
@ -93,7 +93,7 @@ export function convertFieldMetadataToColumnChanges(
return [
{
name: fieldMetadata.targetColumnMap.value,
change: 'create',
action: 'create',
type: 'timestamp',
},
];
@ -101,12 +101,12 @@ export function convertFieldMetadataToColumnChanges(
return [
{
name: fieldMetadata.targetColumnMap.text,
change: 'create',
action: 'create',
type: 'varchar',
},
{
name: fieldMetadata.targetColumnMap.link,
change: 'create',
action: 'create',
type: 'varchar',
},
];
@ -114,12 +114,12 @@ export function convertFieldMetadataToColumnChanges(
return [
{
name: fieldMetadata.targetColumnMap.amount,
change: 'create',
action: 'create',
type: 'integer',
},
{
name: fieldMetadata.targetColumnMap.currency,
change: 'create',
action: 'create',
type: 'varchar',
},
];