-
Notifications
You must be signed in to change notification settings - Fork 4.6k
Update Name of relation fieldMetadata #15749
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
🚀 Preview Environment Ready! Your preview environment is available at: http://bore.pub:30737 This environment will automatically shut down when the PR is closed or after 5 hours. |
|
Closing for now, let's re-open when ready :) |
…relation-new-runner
…relation-new-runner
...ce-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service.ts
Show resolved
Hide resolved
Greptile OverviewGreptile SummaryThis PR implements migration support for Custom Objects by enabling updates to morph relation field metadata when object names change. Key changes:
Issues found:
The logic appears sound - the validation correctly checks for conflicts before applying changes, and the field renaming properly handles the database column names for relation fields. Confidence Score: 3/5
Important Files ChangedFile Analysis
Sequence DiagramsequenceDiagram
participant Client
participant UpdateObjectAPI
participant HandleSideEffect
participant RenameUtil
participant ValidateConflict
participant UpdateFieldHandler
participant WorkspaceSchema
Client->>UpdateObjectAPI: Update Custom Object (nameSingular/namePlural)
UpdateObjectAPI->>HandleSideEffect: handleFlatObjectMetadataUpdateSideEffect()
alt nameSingular or namePlural changed
HandleSideEffect->>RenameUtil: renameRelatedMorphFieldOnObjectNamesUpdate()
RenameUtil->>RenameUtil: Filter all morph relation fields targeting this object
loop For each morph field
RenameUtil->>RenameUtil: getMorphNameFromMorphFieldMetadataName()
RenameUtil->>RenameUtil: Validate nameSingular/namePlural exist
RenameUtil->>RenameUtil: computeMorphRelationFieldName()
RenameUtil->>RenameUtil: computeMorphOrRelationFieldJoinColumnName()
end
RenameUtil-->>HandleSideEffect: Return updated field metadatas
HandleSideEffect->>ValidateConflict: validateOtherFieldMetadataNamesConflict()
loop For each updated field
ValidateConflict->>ValidateConflict: Get target object from maps
ValidateConflict->>ValidateConflict: Get all fields on target object
ValidateConflict->>ValidateConflict: Check for name conflicts
alt Conflict found
ValidateConflict-->>HandleSideEffect: Throw FIELD_ALREADY_EXISTS
end
end
end
HandleSideEffect-->>UpdateObjectAPI: Return side effects
alt Field name update needed
UpdateObjectAPI->>UpdateFieldHandler: handleFieldNameUpdate()
alt Morph/Relation field
UpdateFieldHandler->>UpdateFieldHandler: Get joinColumnName from settings
UpdateFieldHandler->>UpdateFieldHandler: computeMorphOrRelationFieldJoinColumnName()
end
UpdateFieldHandler->>WorkspaceSchema: renameColumn()
WorkspaceSchema-->>UpdateFieldHandler: Column renamed
end
UpdateObjectAPI-->>Client: Update complete
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
7 files reviewed, 5 comments
...modules/flat-object-metadata/utils/rename-related-morph-field-on-object-names-update.util.ts
Outdated
Show resolved
Hide resolved
...modules/flat-object-metadata/utils/rename-related-morph-field-on-object-names-update.util.ts
Outdated
Show resolved
Hide resolved
...ta-modules/flat-object-metadata/utils/handle-flat-object-metadata-update-side-effect.util.ts
Outdated
Show resolved
Hide resolved
...ce-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service.ts
Outdated
Show resolved
Hide resolved
...modules/flat-object-metadata/utils/rename-related-morph-field-on-object-names-update.util.ts
Outdated
Show resolved
Hide resolved
…relation-new-runner
…relation-new-runner
UpdateOne of a Relation that involves a CustomObject, because the nameSingular needs to be updated in the fieldMetadata
Interesting files to look at:
packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-relation-flat-field-metadatas-for-custom-object.util.ts
UPDATE => packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/rename-related-morph-field-on-object-names-update.util.ts ( also update relation indexes ) needs v2 refactor to handle field relation name update
CREATE => packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/build-default-relation-flat-field-metadatas-for-custom-object.util.ts ( handle morph instead of previous classic relation )
DELETE => DONE