2f223f3294
## 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).
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
|
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
|
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
|
import { WorkspaceIsPrimaryField } from 'src/engine/twenty-orm/decorators/workspace-is-primary-field.decorator';
|
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
|
import { BASE_OBJECT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
|
|
|
export abstract class BaseWorkspaceEntity {
|
|
@WorkspaceField({
|
|
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.id,
|
|
type: FieldMetadataType.UUID,
|
|
label: 'Id',
|
|
description: 'Id',
|
|
defaultValue: 'uuid',
|
|
icon: 'Icon123',
|
|
})
|
|
@WorkspaceIsPrimaryField()
|
|
@WorkspaceIsSystem()
|
|
id: string;
|
|
|
|
@WorkspaceField({
|
|
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.createdAt,
|
|
type: FieldMetadataType.DATE_TIME,
|
|
label: 'Creation date',
|
|
description: 'Creation date',
|
|
icon: 'IconCalendar',
|
|
defaultValue: 'now',
|
|
settings: {
|
|
displayAsRelativeDate: true,
|
|
},
|
|
})
|
|
createdAt: string;
|
|
|
|
@WorkspaceField({
|
|
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt,
|
|
type: FieldMetadataType.DATE_TIME,
|
|
label: 'Last update',
|
|
description: 'Last time the record was changed',
|
|
icon: 'IconCalendarClock',
|
|
defaultValue: 'now',
|
|
settings: {
|
|
displayAsRelativeDate: true,
|
|
},
|
|
})
|
|
updatedAt: string;
|
|
|
|
@WorkspaceField({
|
|
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.deletedAt,
|
|
type: FieldMetadataType.DATE_TIME,
|
|
label: 'Deleted at',
|
|
description: 'Date when the record was deleted',
|
|
icon: 'IconCalendarMinus',
|
|
settings: {
|
|
displayAsRelativeDate: true,
|
|
},
|
|
})
|
|
@WorkspaceIsNullable()
|
|
deletedAt: string | null;
|
|
}
|