Add syncable NavigationMenuItem entity to core schema (#17232)

Implements a new syncable `navigationMenuItem` entity in the core schema
to replace the workspace `favorite` entity.

## Next Steps
- Frontend integration ([separate
PR](https://github.com/twentyhq/twenty/pull/17268))
- Data migration (separate PR)
This commit is contained in:
Abdul Rahman
2026-01-22 18:18:51 +05:30
committed by GitHub
parent 2cda1f5f08
commit aff577689f
71 changed files with 4050 additions and 3 deletions
@@ -948,6 +948,16 @@ export type CreateFrontComponentInput = {
name: Scalars['String'];
};
export type CreateNavigationMenuItemInput = {
folderId?: InputMaybe<Scalars['UUID']>;
name?: InputMaybe<Scalars['String']>;
position?: InputMaybe<Scalars['Int']>;
targetObjectMetadataId?: InputMaybe<Scalars['UUID']>;
targetRecordId?: InputMaybe<Scalars['UUID']>;
userWorkspaceId?: InputMaybe<Scalars['UUID']>;
viewId?: InputMaybe<Scalars['UUID']>;
};
export type CreateObjectInput = {
description?: InputMaybe<Scalars['String']>;
icon?: InputMaybe<Scalars['String']>;
@@ -2000,6 +2010,7 @@ export type Mutation = {
createFrontComponent: FrontComponent;
createManyCoreViewFields: Array<CoreViewField>;
createManyCoreViewGroups: Array<CoreViewGroup>;
createNavigationMenuItem: NavigationMenuItem;
createOIDCIdentityProvider: SetupSsoOutput;
createObjectEvent: Analytics;
createOneAgent: Agent;
@@ -2039,6 +2050,7 @@ export type Mutation = {
deleteFile: File;
deleteFrontComponent: FrontComponent;
deleteJobs: DeleteJobsResponse;
deleteNavigationMenuItem: NavigationMenuItem;
deleteOneAgent: Agent;
deleteOneCronTrigger: CronTrigger;
deleteOneDatabaseEventTrigger: DatabaseEventTrigger;
@@ -2127,6 +2139,7 @@ export type Mutation = {
updateDatabaseConfigVariable: Scalars['Boolean'];
updateFrontComponent: FrontComponent;
updateLabPublicFeatureFlag: FeatureFlagDto;
updateNavigationMenuItem: NavigationMenuItem;
updateOneAgent: Agent;
updateOneApplicationVariable: Scalars['Boolean'];
updateOneCronTrigger: CronTrigger;
@@ -2309,6 +2322,11 @@ export type MutationCreateManyCoreViewGroupsArgs = {
};
export type MutationCreateNavigationMenuItemArgs = {
input: CreateNavigationMenuItemInput;
};
export type MutationCreateOidcIdentityProviderArgs = {
input: SetupOidcSsoInput;
};
@@ -2504,6 +2522,11 @@ export type MutationDeleteJobsArgs = {
};
export type MutationDeleteNavigationMenuItemArgs = {
id: Scalars['UUID'];
};
export type MutationDeleteOneAgentArgs = {
input: AgentIdInput;
};
@@ -2932,6 +2955,11 @@ export type MutationUpdateLabPublicFeatureFlagArgs = {
};
export type MutationUpdateNavigationMenuItemArgs = {
input: UpdateOneNavigationMenuItemInput;
};
export type MutationUpdateOneAgentArgs = {
input: UpdateAgentInput;
};
@@ -3158,6 +3186,21 @@ export type NativeModelCapabilities = {
webSearch?: Maybe<Scalars['Boolean']>;
};
export type NavigationMenuItem = {
__typename?: 'NavigationMenuItem';
applicationId?: Maybe<Scalars['UUID']>;
createdAt: Scalars['DateTime'];
folderId?: Maybe<Scalars['UUID']>;
id: Scalars['UUID'];
name?: Maybe<Scalars['String']>;
position: Scalars['Float'];
targetObjectMetadataId?: Maybe<Scalars['UUID']>;
targetRecordId?: Maybe<Scalars['UUID']>;
updatedAt: Scalars['DateTime'];
userWorkspaceId?: Maybe<Scalars['UUID']>;
viewId?: Maybe<Scalars['UUID']>;
};
export type NotesConfiguration = {
__typename?: 'NotesConfiguration';
configurationType: WidgetConfigurationType;
@@ -3621,6 +3664,8 @@ export type Query = {
indexMetadatas: IndexConnection;
lineChartData: LineChartDataOutput;
listPlans: Array<BillingPlanOutput>;
navigationMenuItem?: Maybe<NavigationMenuItem>;
navigationMenuItems: Array<NavigationMenuItem>;
object: Object;
objects: ObjectConnection;
pieChartData: PieChartDataOutput;
@@ -3953,6 +3998,11 @@ export type QueryLineChartDataArgs = {
};
export type QueryNavigationMenuItemArgs = {
id: Scalars['UUID'];
};
export type QueryObjectArgs = {
id: Scalars['UUID'];
};
@@ -4741,6 +4791,12 @@ export type UpdateLabPublicFeatureFlagInput = {
value: Scalars['Boolean'];
};
export type UpdateNavigationMenuItemInput = {
folderId?: InputMaybe<Scalars['UUID']>;
name?: InputMaybe<Scalars['String']>;
position?: InputMaybe<Scalars['Int']>;
};
export type UpdateObjectPayload = {
description?: InputMaybe<Scalars['String']>;
icon?: InputMaybe<Scalars['String']>;
@@ -4762,6 +4818,13 @@ export type UpdateOneFieldMetadataInput = {
update: UpdateFieldInput;
};
export type UpdateOneNavigationMenuItemInput = {
/** The id of the record to update */
id: Scalars['UUID'];
/** The record to update */
update: UpdateNavigationMenuItemInput;
};
export type UpdateOneObjectInput = {
/** The id of the object to update */
id: Scalars['UUID'];