followup: centralize widget common properties and add widget bulk update integration tests (#18225)

followup
https://github.com/twentyhq/twenty/pull/18015#pullrequestreview-3818929035
This commit is contained in:
nitin
2026-03-04 17:17:56 +05:30
committed by GitHub
parent 5b544809f7
commit 80d054563e
5 changed files with 637 additions and 77 deletions
@@ -0,0 +1,56 @@
import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type';
import { resolveEntityRelationUniversalIdentifiers } from 'src/engine/metadata-modules/flat-entity/utils/resolve-entity-relation-universal-identifiers.util';
import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type';
import { type CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout-widget/dtos/inputs/create-page-layout-widget.input';
export const buildFlatPageLayoutWidgetCommonProperties = ({
widgetInput,
flatPageLayoutTabMaps,
flatObjectMetadataMaps,
}: {
widgetInput: Pick<
CreatePageLayoutWidgetInput,
| 'pageLayoutTabId'
| 'title'
| 'type'
| 'objectMetadataId'
| 'gridPosition'
| 'position'
>;
} & Pick<
AllFlatEntityMaps,
'flatPageLayoutTabMaps' | 'flatObjectMetadataMaps'
>): Pick<
FlatPageLayoutWidget,
| 'pageLayoutTabId'
| 'pageLayoutTabUniversalIdentifier'
| 'title'
| 'type'
| 'objectMetadataId'
| 'objectMetadataUniversalIdentifier'
| 'gridPosition'
| 'position'
> => {
const {
pageLayoutTabUniversalIdentifier,
objectMetadataUniversalIdentifier,
} = resolveEntityRelationUniversalIdentifiers({
metadataName: 'pageLayoutWidget',
foreignKeyValues: {
pageLayoutTabId: widgetInput.pageLayoutTabId,
objectMetadataId: widgetInput.objectMetadataId,
},
flatEntityMaps: { flatPageLayoutTabMaps, flatObjectMetadataMaps },
});
return {
pageLayoutTabId: widgetInput.pageLayoutTabId,
pageLayoutTabUniversalIdentifier,
title: widgetInput.title,
type: widgetInput.type,
objectMetadataId: widgetInput.objectMetadataId ?? null,
objectMetadataUniversalIdentifier,
gridPosition: widgetInput.gridPosition,
position: widgetInput.position ?? null,
};
};
@@ -3,8 +3,8 @@ import { v4 } from 'uuid';
import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type';
import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type';
import { resolveEntityRelationUniversalIdentifiers } from 'src/engine/metadata-modules/flat-entity/utils/resolve-entity-relation-universal-identifiers.util';
import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type';
import { buildFlatPageLayoutWidgetCommonProperties } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/build-flat-page-layout-widget-common-properties.util';
import { fromPageLayoutWidgetConfigurationToUniversalConfiguration } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-configuration-to-universal-configuration.util';
import { type CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout-widget/dtos/inputs/create-page-layout-widget.input';
import { validateWidgetConfigurationInput } from 'src/engine/metadata-modules/page-layout-widget/utils/validate-widget-configuration-input.util';
@@ -48,33 +48,27 @@ export const fromCreatePageLayoutWidgetInputToFlatPageLayoutWidgetToCreate = ({
const createdAt = new Date().toISOString();
const pageLayoutWidgetId = v4();
const {
pageLayoutTabUniversalIdentifier,
objectMetadataUniversalIdentifier,
} = resolveEntityRelationUniversalIdentifiers({
metadataName: 'pageLayoutWidget',
foreignKeyValues: {
const commonProperties = buildFlatPageLayoutWidgetCommonProperties({
widgetInput: {
pageLayoutTabId,
title: createPageLayoutWidgetInput.title,
type: createPageLayoutWidgetInput.type,
objectMetadataId: createPageLayoutWidgetInput.objectMetadataId,
gridPosition: createPageLayoutWidgetInput.gridPosition,
position: createPageLayoutWidgetInput.position,
},
flatEntityMaps: { flatPageLayoutTabMaps, flatObjectMetadataMaps },
flatPageLayoutTabMaps,
flatObjectMetadataMaps,
});
return {
id: pageLayoutWidgetId,
pageLayoutTabId,
pageLayoutTabUniversalIdentifier,
...commonProperties,
workspaceId,
createdAt,
updatedAt: createdAt,
deletedAt: null,
universalIdentifier: pageLayoutWidgetId,
title: createPageLayoutWidgetInput.title,
type: createPageLayoutWidgetInput.type,
objectMetadataId: createPageLayoutWidgetInput.objectMetadataId ?? null,
objectMetadataUniversalIdentifier,
gridPosition: createPageLayoutWidgetInput.gridPosition,
position: createPageLayoutWidgetInput.position ?? null,
configuration: createPageLayoutWidgetInput.configuration,
applicationId: flatApplication.id,
applicationUniversalIdentifier: flatApplication.universalIdentifier,