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:
+38
-21
@@ -1,4 +1,6 @@
|
||||
import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity';
|
||||
import { FieldMetadataDefaultValue } from 'src/metadata/field-metadata/interfaces/field-metadata-default-value.interface';
|
||||
import { FieldMetadataOptions } from 'src/metadata/field-metadata/interfaces/field-metadata-options.interface';
|
||||
import { FieldMetadataTargetColumnMap } from 'src/metadata/field-metadata/interfaces/field-metadata-target-column-map.interface';
|
||||
|
||||
/**
|
||||
* This utility function filters out properties from an object based on a list of properties to ignore.
|
||||
@@ -28,9 +30,12 @@ export const filterIgnoredProperties = (
|
||||
* @param arr - The array of ObjectMetadataEntity objects to convert.
|
||||
* @returns A map of object metadata, with nameSingular as the key and the object as the value.
|
||||
*/
|
||||
export const mapObjectMetadataByUniqueIdentifier = (
|
||||
arr: ObjectMetadataEntity[],
|
||||
) => {
|
||||
export const mapObjectMetadataByUniqueIdentifier = <
|
||||
T extends { nameSingular: string; fields: U[] },
|
||||
U extends { name: string },
|
||||
>(
|
||||
arr: T[],
|
||||
): Record<string, Omit<T, 'fields'> & { fields: Record<string, U> }> => {
|
||||
return arr.reduce((acc, curr) => {
|
||||
acc[curr.nameSingular] = {
|
||||
...curr,
|
||||
@@ -38,29 +43,41 @@ export const mapObjectMetadataByUniqueIdentifier = (
|
||||
acc[curr.name] = curr;
|
||||
|
||||
return acc;
|
||||
}, {}),
|
||||
}, {} as Record<string, U>),
|
||||
};
|
||||
|
||||
return acc;
|
||||
}, {});
|
||||
}, {} as Record<string, Omit<T, 'fields'> & { fields: Record<string, U> }>);
|
||||
};
|
||||
|
||||
export const convertStringifiedFieldsToJSON = (fieldMetadata) => {
|
||||
export const convertStringifiedFieldsToJSON = <
|
||||
T extends {
|
||||
targetColumnMap?: string | null;
|
||||
defaultValue?: string | null;
|
||||
options?: string | null;
|
||||
},
|
||||
>(
|
||||
fieldMetadata: T,
|
||||
): T & {
|
||||
targetColumnMap?: FieldMetadataTargetColumnMap;
|
||||
defaultValue?: FieldMetadataDefaultValue;
|
||||
options?: FieldMetadataOptions;
|
||||
} => {
|
||||
if (fieldMetadata.targetColumnMap) {
|
||||
fieldMetadata.targetColumnMap = JSON.parse(
|
||||
fieldMetadata.targetColumnMap as unknown as string,
|
||||
);
|
||||
}
|
||||
if (fieldMetadata.defaultValue) {
|
||||
fieldMetadata.defaultValue = JSON.parse(
|
||||
fieldMetadata.defaultValue as unknown as string,
|
||||
);
|
||||
}
|
||||
if (fieldMetadata.options) {
|
||||
fieldMetadata.options = JSON.parse(
|
||||
fieldMetadata.options as unknown as string,
|
||||
);
|
||||
fieldMetadata.targetColumnMap = JSON.parse(fieldMetadata.targetColumnMap);
|
||||
}
|
||||
|
||||
return fieldMetadata;
|
||||
if (fieldMetadata.defaultValue) {
|
||||
fieldMetadata.defaultValue = JSON.parse(fieldMetadata.defaultValue);
|
||||
}
|
||||
|
||||
if (fieldMetadata.options) {
|
||||
fieldMetadata.options = JSON.parse(fieldMetadata.options);
|
||||
}
|
||||
|
||||
return fieldMetadata as T & {
|
||||
targetColumnMap?: FieldMetadataTargetColumnMap;
|
||||
defaultValue?: FieldMetadataDefaultValue;
|
||||
options?: FieldMetadataOptions;
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user