Fix 'name' column wrongly added in standard objects (#7428)

## Context
Name shouldn't be added to all tables, especially standard objects
because they already have their own labelIdentifierFieldMetadata
specified in the workspace-entity schema. This PR removes this column
from the "base" list of columns to add when creating a new object/table
and moves it to the object-metadata service that is, as of today, only
used for custom objects. Also had to modify the migration-runner to
handle column creation in a table creation migration (this was available
in the migration definition already but was not doing anything)

This also fixes an issue in standard objects that already have a "name"
field defined with a different field type, this is even more important
when the said field is a composite field. For example people already has
a FULL_NAME name field which clashes with the default TEXT name field
meaning it was only creating 1 field metadata for 'name' but 3 columns
were created: `name, nameFirstName, nameLastName`. This inconsistency
with metadata (which is our source of truth everywhere) brought some
issues (lately, converting back typeorm response to gql (including
composition) was broken).
This commit is contained in:
Weiko
2024-10-04 18:31:19 +02:00
committed by GitHub
parent ebe28def02
commit 2f223f3294
10 changed files with 74 additions and 72 deletions

View File

@ -66,8 +66,7 @@ export class GraphqlQueryUpdateManyResolverService
const data = formatData(args.data, objectMetadataMapItem);
const result = await withFilterQueryBuilder
.update()
.set(data)
.update(data)
.returning('*')
.execute();

View File

@ -61,13 +61,11 @@ export class GraphqlQueryUpdateOneResolverService
objectMetadataMapItem.nameSingular,
);
const withFilterQueryBuilder = queryBuilder.where({ id: args.id });
const data = formatData(args.data, objectMetadataMapItem);
const result = await withFilterQueryBuilder
.update()
.set(data)
const result = await queryBuilder
.update(data)
.where({ id: args.id })
.returning('*')
.execute();