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:
71
packages/twenty-server/src/utils/typed-reflect.ts
Normal file
71
packages/twenty-server/src/utils/typed-reflect.ts
Normal file
@ -0,0 +1,71 @@
|
||||
import 'reflect-metadata';
|
||||
|
||||
import { GateDecoratorParams } from 'src/workspace/workspace-sync-metadata/interfaces/gate-decorator.interface';
|
||||
import { ReflectFieldMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/reflect-field-metadata.interface';
|
||||
import { ReflectObjectMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/reflect-object-metadata.interface';
|
||||
import { ReflectRelationMetadata } from 'src/workspace/workspace-sync-metadata/interfaces/reflect-relation-metadata.interface';
|
||||
|
||||
export interface ReflectMetadataTypeMap {
|
||||
objectMetadata: ReflectObjectMetadata;
|
||||
fieldMetadata: ReflectFieldMetadata;
|
||||
relationMetadata: ReflectRelationMetadata[];
|
||||
gate: GateDecoratorParams;
|
||||
isNullable: true;
|
||||
isSystem: true;
|
||||
}
|
||||
|
||||
export class TypedReflect {
|
||||
static defineMetadata<T extends keyof ReflectMetadataTypeMap>(
|
||||
metadataKey: T,
|
||||
metadataValue: ReflectMetadataTypeMap[T],
|
||||
target: object,
|
||||
): void;
|
||||
|
||||
static defineMetadata<T extends keyof ReflectMetadataTypeMap>(
|
||||
metadataKey: T,
|
||||
metadataValue: ReflectMetadataTypeMap[T],
|
||||
target: object,
|
||||
propertyKey: string,
|
||||
): void;
|
||||
|
||||
static defineMetadata<T extends keyof ReflectMetadataTypeMap>(
|
||||
metadataKey: T,
|
||||
metadataValue: ReflectMetadataTypeMap[T],
|
||||
target: object,
|
||||
propertyKeyOrUndefined?: string,
|
||||
) {
|
||||
if (propertyKeyOrUndefined === undefined) {
|
||||
Reflect.defineMetadata(metadataKey, metadataValue, target);
|
||||
} else {
|
||||
Reflect.defineMetadata(
|
||||
metadataKey,
|
||||
metadataValue,
|
||||
target,
|
||||
propertyKeyOrUndefined,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
static getMetadata<T extends keyof ReflectMetadataTypeMap>(
|
||||
metadataKey: T,
|
||||
target: object,
|
||||
): ReflectMetadataTypeMap[T] | undefined;
|
||||
|
||||
static getMetadata<T extends keyof ReflectMetadataTypeMap>(
|
||||
metadataKey: T,
|
||||
target: object,
|
||||
propertyKey: string,
|
||||
): ReflectMetadataTypeMap[T] | undefined;
|
||||
|
||||
static getMetadata<T extends keyof ReflectMetadataTypeMap>(
|
||||
metadataKey: T,
|
||||
target: object,
|
||||
propertyKeyOrUndefined?: string,
|
||||
) {
|
||||
if (propertyKeyOrUndefined === undefined) {
|
||||
return Reflect.getMetadata(metadataKey, target);
|
||||
} else {
|
||||
return Reflect.getMetadata(metadataKey, target, propertyKeyOrUndefined);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user