Deprecate FieldMetadataInterface (#13264)
# Introduction
From the moment replaced the FieldMetadataInterface definition to:
```ts
import { FieldMetadataType } from 'twenty-shared/types';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
export type FieldMetadataInterface<
T extends FieldMetadataType = FieldMetadataType,
> = FieldMetadataEntity<T>;
```
After this PR merge will create a new one removing the type and
replacing it to `FieldMetadataEntity`.
Did not renamed it here to avoid conflicts on naming + type issues fixs
within the same PR
## Field metadata entity RELATION or MORPH
Relations fields cannot be null for those field metadata entity instance
anymore, but are never for the others see
`packages/twenty-server/src/engine/metadata-modules/field-metadata/types/field-metadata-entity-test.type.ts`
( introduced TypeScript tests )
## Concerns
- TS_VECTOR is the most at risk with the `generatedType` and
`asExpression` removal from interface
## What's next
- `FielMetadataInterface` removal and rename ( see introduction )
- Depcrecating `ObjectMetadataInterface`
- Refactor `FieldMetadataEntity` optional fiels to be nullable only
- TO DIG `never` occurences on settings, defaultValue etc
- Some interfaces will be replaced by the `FlatFieldMetadata` when
deprecating the current sync and comparators tools
This commit is contained in:
@@ -14,6 +14,7 @@ import { FieldMetadataDTO } from 'src/engine/metadata-modules/field-metadata/dto
|
||||
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||
import { FieldMetadataMorphRelationService } from 'src/engine/metadata-modules/field-metadata/services/field-metadata-morph-relation.service';
|
||||
import { FieldMetadataRelationService } from 'src/engine/metadata-modules/field-metadata/services/field-metadata-relation.service';
|
||||
import { fromFieldMetadataEntityToFieldMetadataDto } from 'src/engine/metadata-modules/field-metadata/utils/from-field-metadata-entity-to-fieldMetadata-dto.util';
|
||||
import { resolveFieldMetadataStandardOverride } from 'src/engine/metadata-modules/field-metadata/utils/resolve-field-metadata-standard-override.util';
|
||||
import { IndexFieldMetadataDTO } from 'src/engine/metadata-modules/index-metadata/dtos/index-field-metadata.dto';
|
||||
import { IndexMetadataDTO } from 'src/engine/metadata-modules/index-metadata/dtos/index-metadata.dto';
|
||||
@@ -211,40 +212,41 @@ export class DataloaderService {
|
||||
return [];
|
||||
}
|
||||
|
||||
const fields = Object.values(objectMetadata.fieldsById).map(
|
||||
// TODO: fix this as we should merge FieldMetadataEntity and FieldMetadataInterface
|
||||
(fieldMetadata) => {
|
||||
const overridesFieldToCompute = [
|
||||
'icon',
|
||||
'label',
|
||||
'description',
|
||||
] as const satisfies (keyof FieldMetadataInterface)[];
|
||||
const fields = Object.values(
|
||||
objectMetadata.fieldsById,
|
||||
).map<FieldMetadataDTO>((fieldMetadata) => {
|
||||
const overridesFieldToCompute = [
|
||||
'icon',
|
||||
'label',
|
||||
'description',
|
||||
] as const satisfies (keyof FieldMetadataInterface)[];
|
||||
|
||||
const overrides = overridesFieldToCompute.reduce<
|
||||
Partial<
|
||||
Record<(typeof overridesFieldToCompute)[number], string>
|
||||
>
|
||||
>(
|
||||
(acc, field) => ({
|
||||
...acc,
|
||||
[field]: resolveFieldMetadataStandardOverride(
|
||||
fieldMetadata,
|
||||
field,
|
||||
dataLoaderParams[0].locale,
|
||||
),
|
||||
}),
|
||||
{},
|
||||
);
|
||||
const overrides = overridesFieldToCompute.reduce<
|
||||
Partial<Record<(typeof overridesFieldToCompute)[number], string>>
|
||||
>(
|
||||
(acc, field) => ({
|
||||
...acc,
|
||||
[field]: resolveFieldMetadataStandardOverride(
|
||||
{
|
||||
label: fieldMetadata.label,
|
||||
description: fieldMetadata.description ?? undefined,
|
||||
icon: fieldMetadata.icon ?? undefined,
|
||||
isCustom: fieldMetadata.isCustom,
|
||||
standardOverrides:
|
||||
fieldMetadata.standardOverrides ?? undefined,
|
||||
},
|
||||
field,
|
||||
dataLoaderParams[0].locale,
|
||||
),
|
||||
}),
|
||||
{},
|
||||
);
|
||||
|
||||
return {
|
||||
...fieldMetadata,
|
||||
createdAt: new Date(fieldMetadata.createdAt),
|
||||
updatedAt: new Date(fieldMetadata.updatedAt),
|
||||
workspaceId: workspaceId,
|
||||
...overrides,
|
||||
};
|
||||
},
|
||||
);
|
||||
return fromFieldMetadataEntityToFieldMetadataDto({
|
||||
...fieldMetadata,
|
||||
...overrides,
|
||||
});
|
||||
});
|
||||
|
||||
return filterMorphRelationDuplicateFieldsDTO(fields);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user