Fix Tasks/Notes created with null position (#9068)

Fixes https://github.com/twentyhq/twenty/issues/8810
Fixes https://github.com/twentyhq/twenty/issues/5268
Fixes https://github.com/twentyhq/twenty/issues/8971

- Fixing Task/Note creation not sending position during creation
- Adding a command to backfill position being null, using existing
backfill command.
- Removed unused backfill job.
- Updated workspace entities to set position non-nullable and set a
default value to make it non-required on the API
- Updated position factory to set a default position for all objects
having a POSITION field instead of only company/people
- Moved the try/catch in each resolver factory calling
GraphqlQueryRunnerException handler, makes more sense to call it in the
actual graphql-query-runner and removing some duplicate codes
- Adding validations for input in QueryRunnerArgs factories
- Allow sync-metadata to override and sync defaultValues for certain
field types (that can't be updated by users)
- Removing health-check from sync-metadata command during force mode to
improve performances
This commit is contained in:
Weiko
2024-12-16 14:45:54 +01:00
committed by GitHub
parent 2ceb1c87b3
commit 5a27491bb2
55 changed files with 556 additions and 513 deletions

View File

@ -147,9 +147,9 @@ export class CompanyWorkspaceEntity extends BaseWorkspaceEntity {
label: 'Position',
description: 'Company record position',
icon: 'IconHierarchy2',
defaultValue: 0,
})
@WorkspaceIsSystem()
@WorkspaceIsNullable()
position: number;
@WorkspaceField({

View File

@ -37,6 +37,7 @@ export class FavoriteFolderWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconList',
defaultValue: 0,
})
@WorkspaceIsSystem()
position: number;
@WorkspaceField({

View File

@ -48,6 +48,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconList',
defaultValue: 0,
})
@WorkspaceIsSystem()
position: number;
// Relations

View File

@ -55,10 +55,10 @@ export class NoteWorkspaceEntity extends BaseWorkspaceEntity {
label: 'Position',
description: 'Note record position',
icon: 'IconHierarchy2',
defaultValue: 0,
})
@WorkspaceIsSystem()
@WorkspaceIsNullable()
position: number | null;
position: number;
@WorkspaceField({
standardId: NOTE_STANDARD_FIELD_IDS.title,

View File

@ -113,10 +113,10 @@ export class OpportunityWorkspaceEntity extends BaseWorkspaceEntity {
label: 'Position',
description: 'Opportunity record position',
icon: 'IconHierarchy2',
defaultValue: 0,
})
@WorkspaceIsSystem()
@WorkspaceIsNullable()
position: number | null;
position: number;
@WorkspaceField({
standardId: OPPORTUNITY_STANDARD_FIELD_IDS.createdBy,

View File

@ -157,9 +157,9 @@ export class PersonWorkspaceEntity extends BaseWorkspaceEntity {
label: 'Position',
description: 'Person record Position',
icon: 'IconHierarchy2',
defaultValue: 0,
})
@WorkspaceIsSystem()
@WorkspaceIsNullable()
position: number;
@WorkspaceField({

View File

@ -57,10 +57,10 @@ export class TaskWorkspaceEntity extends BaseWorkspaceEntity {
label: 'Position',
description: 'Task record position',
icon: 'IconHierarchy2',
defaultValue: 0,
})
@WorkspaceIsSystem()
@WorkspaceIsNullable()
position: number | null;
position: number;
@WorkspaceField({
standardId: TASK_STANDARD_FIELD_IDS.title,

View File

@ -77,6 +77,7 @@ export class ViewFieldWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconList',
defaultValue: 0,
})
@WorkspaceIsSystem()
position: number;
@WorkspaceRelation({

View File

@ -59,6 +59,7 @@ export class ViewGroupWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconList',
defaultValue: 0,
})
@WorkspaceIsSystem()
position: number;
@WorkspaceRelation({

View File

@ -97,8 +97,9 @@ export class ViewWorkspaceEntity extends BaseWorkspaceEntity {
type: FieldMetadataType.POSITION,
label: 'Position',
description: 'View position',
defaultValue: 0,
})
@WorkspaceIsNullable()
@WorkspaceIsSystem()
position: number;
@WorkspaceField({

View File

@ -155,10 +155,10 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
label: 'Position',
description: 'Workflow run position',
icon: 'IconHierarchy2',
defaultValue: 0,
})
@WorkspaceIsSystem()
@WorkspaceIsNullable()
position: number | null;
position: number;
// Relations
@WorkspaceRelation({

View File

@ -117,10 +117,10 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
label: 'Position',
description: 'Workflow version position',
icon: 'IconHierarchy2',
defaultValue: 0,
})
@WorkspaceIsSystem()
@WorkspaceIsNullable()
position: number | null;
position: number;
// Relations
@WorkspaceRelation({

View File

@ -1,6 +1,10 @@
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import {
ActorMetadata,
FieldActorSource,
} from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import {
RelationMetadataType,
@ -21,10 +25,6 @@ import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-o
import { WorkflowEventListenerWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-event-listener.workspace-entity';
import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity';
import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity';
import {
ActorMetadata,
FieldActorSource,
} from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type';
export enum WorkflowStatus {
DRAFT = 'DRAFT',
@ -103,10 +103,10 @@ export class WorkflowWorkspaceEntity extends BaseWorkspaceEntity {
label: 'Position',
description: 'Workflow record position',
icon: 'IconHierarchy2',
defaultValue: 0,
})
@WorkspaceIsSystem()
@WorkspaceIsNullable()
position: number | null;
position: number;
// Relations
@WorkspaceRelation({