feat: migration can be applied on a specific schema & some enhancements (#2998)

* fix: remove old metadata seed files

* feat: wip standard to core relation

* fix: lint

* fix: merge

* fix: remove debug files

* feat: add feature flag for core object metadata

* fix: remove debug

* feat: always disable the standard core relation

* fix: missing feature flag

* fix: remove debug

* fix: feature flag doesn't seems to disable relation

* fix: delete .vscode folder, change this in another PR

* Update packages/twenty-server/src/workspace/workspace-sync-metadata/reflective-metadata.factory.ts

Co-authored-by: Weiko <corentin@twenty.com>

* Update packages/twenty-server/src/workspace/workspace-sync-metadata/reflective-metadata.factory.ts

Co-authored-by: Weiko <corentin@twenty.com>

* Update packages/twenty-server/src/workspace/workspace-sync-metadata/workspace-sync.metadata.service.ts

Co-authored-by: Weiko <corentin@twenty.com>

* fix: remove optional fields from metadata entities

* fix: renamed variable

* fix: put back CursorScalarType

* fix: delete test command

* fix: remove unused workspace standard migration command

* fix: drop core object metadata declaration

* fix: rename variable

* fix: drop creation of core datasource

* fix: remove feature flag

* fix: drop support of standard to core relations

* feat: add user email field on workspace-member standard object

* fix: update seed accordingly

* fix: missing remove command file

* fix: datasource label should remain nullable

* fix: better asserts

* Remove unused code

* Remove unused code

---------

Co-authored-by: Weiko <corentin@twenty.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Jérémy M
2023-12-21 19:15:05 +01:00
committed by GitHub
parent 3234134a30
commit d532f22fbb
112 changed files with 714 additions and 6381 deletions

View File

@ -0,0 +1,3 @@
export interface GateDecoratorParams {
featureFlag: string;
}

View File

@ -0,0 +1,19 @@
import { PartialFieldMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/partial-field-metadata.interface';
import { PartialObjectMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/partial-object-metadata.interface';
import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity';
import { FieldMetadataEntity } from 'src/metadata/field-metadata/field-metadata.entity';
export type MappedFieldMetadata = Record<string, PartialFieldMetadata>;
export interface MappedObjectMetadata
extends Omit<PartialObjectMetadata, 'fields'> {
fields: MappedFieldMetadata;
}
export type MappedFieldMetadataEntity = Record<string, FieldMetadataEntity>;
export interface MappedObjectMetadataEntity
extends Omit<ObjectMetadataEntity, 'fields'> {
fields: MappedFieldMetadataEntity;
}

View File

@ -0,0 +1,6 @@
import { ReflectFieldMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/reflect-field-metadata.interface';
export type PartialFieldMetadata = ReflectFieldMetadata[string] & {
workspaceId: string;
objectMetadataId?: string;
};

View File

@ -0,0 +1,8 @@
import { PartialFieldMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/partial-field-metadata.interface';
import { ReflectObjectMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/reflect-object-metadata.interface';
export type PartialObjectMetadata = ReflectObjectMetadata & {
workspaceId: string;
dataSourceId: string;
fields: PartialFieldMetadata[];
};

View File

@ -0,0 +1,32 @@
import { FieldMetadataDefaultValue } from 'src/metadata/field-metadata/interfaces/field-metadata-default-value.interface';
import { GateDecoratorParams } from 'src/workspace/workspace-sync-metadata/interfaces/gate-decorator.interface';
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
export interface FieldMetadataDecoratorParams<
T extends FieldMetadataType | 'default',
> {
type: T;
label: string;
description?: string;
icon?: string;
defaultValue?: FieldMetadataDefaultValue<T>;
joinColumn?: string;
}
export interface ReflectFieldMetadata {
[key: string]: Omit<
FieldMetadataDecoratorParams<'default'>,
'defaultValue' | 'type'
> & {
name: string;
type: FieldMetadataType;
targetColumnMap: string;
isNullable: boolean;
isSystem: boolean;
isCustom: boolean;
description?: string;
defaultValue: string | null;
gate?: GateDecoratorParams;
};
}

View File

@ -0,0 +1,17 @@
import { GateDecoratorParams } from 'src/workspace/workspace-sync-metadata/interfaces/gate-decorator.interface';
export interface ObjectMetadataDecoratorParams {
namePlural: string;
labelSingular: string;
labelPlural: string;
description?: string;
icon?: string;
}
export interface ReflectObjectMetadata extends ObjectMetadataDecoratorParams {
nameSingular: string;
targetTableName: string;
isSystem: boolean;
isCustom: boolean;
gate?: GateDecoratorParams;
}

View File

@ -0,0 +1,18 @@
import { GateDecoratorParams } from 'src/workspace/workspace-sync-metadata/interfaces/gate-decorator.interface';
import { RelationMetadataType } from 'src/metadata/relation-metadata/relation-metadata.entity';
export interface RelationMetadataDecoratorParams {
type: RelationMetadataType;
objectName: string;
inverseSideFieldName?: string;
}
export interface ReflectRelationMetadata {
type: RelationMetadataType;
fromObjectNameSingular: string;
toObjectNameSingular: string;
fromFieldMetadataName: string;
toFieldMetadataName: string;
gate?: GateDecoratorParams;
}