Data changes to prepare for workspaceMember page (#10439)

Workspace Member will get their own record page in the future.

This PR lays backend changes to prepare for this:
- Settings most fields on WorkspaceMember as system fields
- Renaming workspaceMember/workspaceMemberId to
forWorkspaceMember/forWorkspaceMemberId as it conflicts with the morph
relationship, if we want to be able to add a workspace member as
favorite

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
Félix Malfait
2025-02-24 17:37:08 +01:00
committed by GitHub
parent ccca441ff5
commit cbd4d98c85
23 changed files with 190 additions and 165 deletions

View File

@ -53,7 +53,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
// Relations
@WorkspaceRelation({
standardId: FAVORITE_STANDARD_FIELD_IDS.workspaceMember,
standardId: FAVORITE_STANDARD_FIELD_IDS.forWorkspaceMember,
type: RelationMetadataType.MANY_TO_ONE,
label: msg`Workspace Member`,
description: msg`Favorite workspace member`,
@ -62,10 +62,10 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => WorkspaceMemberWorkspaceEntity,
})
@WorkspaceIsNullable()
workspaceMember: Relation<WorkspaceMemberWorkspaceEntity>;
forWorkspaceMember: Relation<WorkspaceMemberWorkspaceEntity>;
@WorkspaceJoinColumn('workspaceMember')
workspaceMemberId: string;
@WorkspaceJoinColumn('forWorkspaceMember')
forWorkspaceMemberId: string;
@WorkspaceRelation({
standardId: FAVORITE_STANDARD_FIELD_IDS.person,

View File

@ -82,6 +82,17 @@ export const SEARCH_FIELDS_FOR_WORKSPACE_MEMBER: FieldTypeAndNameMetadata[] = [
@WorkspaceIsSystem()
@WorkspaceIsNotAuditLogged()
export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
@WorkspaceField({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.position,
type: FieldMetadataType.POSITION,
label: msg`Position`,
description: msg`Workspace member position`,
icon: 'IconHierarchy2',
defaultValue: 0,
})
@WorkspaceIsSystem()
position: number;
@WorkspaceField({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name,
type: FieldMetadataType.FULL_NAME,
@ -99,6 +110,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconColorSwatch',
defaultValue: "'System'",
})
@WorkspaceIsSystem()
colorScheme: string;
@WorkspaceField({
@ -109,6 +121,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconLanguage',
defaultValue: `'${SOURCE_LOCALE}'`,
})
@WorkspaceIsSystem()
locale: keyof typeof APP_LOCALES;
@WorkspaceField({
@ -118,6 +131,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Workspace member avatar`,
icon: 'IconFileUpload',
})
@WorkspaceIsSystem()
avatarUrl: string;
@WorkspaceField({
@ -127,6 +141,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Related user email address`,
icon: 'IconMail',
})
@WorkspaceIsSystem()
userEmail: string;
@WorkspaceField({
@ -136,8 +151,88 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Associated User Id`,
icon: 'IconCircleUsers',
})
@WorkspaceIsSystem()
userId: string;
@WorkspaceField({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeZone,
type: FieldMetadataType.TEXT,
label: msg`Time zone`,
defaultValue: "'system'",
description: msg`User time zone`,
icon: 'IconTimezone',
})
@WorkspaceIsSystem()
timeZone: string;
@WorkspaceField({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.dateFormat,
type: FieldMetadataType.SELECT,
label: msg`Date format`,
description: msg`User's preferred date format`,
icon: 'IconCalendarEvent',
options: [
{
value: WorkspaceMemberDateFormatEnum.SYSTEM,
label: 'System',
position: 0,
color: 'turquoise',
},
{
value: WorkspaceMemberDateFormatEnum.MONTH_FIRST,
label: 'Month First',
position: 1,
color: 'red',
},
{
value: WorkspaceMemberDateFormatEnum.DAY_FIRST,
label: 'Day First',
position: 2,
color: 'purple',
},
{
value: WorkspaceMemberDateFormatEnum.YEAR_FIRST,
label: 'Year First',
position: 3,
color: 'sky',
},
],
defaultValue: `'${WorkspaceMemberDateFormatEnum.SYSTEM}'`,
})
@WorkspaceIsSystem()
dateFormat: string;
@WorkspaceField({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeFormat,
type: FieldMetadataType.SELECT,
label: msg`Time format`,
description: msg`User's preferred time format`,
icon: 'IconClock2',
options: [
{
value: WorkspaceMemberTimeFormatEnum.SYSTEM,
label: 'System',
position: 0,
color: 'sky',
},
{
value: WorkspaceMemberTimeFormatEnum.HOUR_24,
label: '24HRS',
position: 1,
color: 'red',
},
{
value: WorkspaceMemberTimeFormatEnum.HOUR_12,
label: '12HRS',
position: 2,
color: 'purple',
},
],
defaultValue: `'${WorkspaceMemberTimeFormatEnum.SYSTEM}'`,
})
@WorkspaceIsSystem()
timeFormat: string;
// Relations
@WorkspaceRelation({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.assignedTasks,
@ -158,6 +253,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Favorites linked to the workspace member`,
icon: 'IconHeart',
inverseSideTarget: () => FavoriteWorkspaceEntity,
inverseSideFieldKey: 'forWorkspaceMember',
onDelete: RelationOnDeleteAction.CASCADE,
})
favorites: Relation<FavoriteWorkspaceEntity[]>;
@ -262,82 +358,6 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
@WorkspaceIsSystem()
auditLogs: Relation<AuditLogWorkspaceEntity[]>;
@WorkspaceField({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeZone,
type: FieldMetadataType.TEXT,
label: msg`Time zone`,
defaultValue: "'system'",
description: msg`User time zone`,
icon: 'IconTimezone',
})
timeZone: string;
@WorkspaceField({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.dateFormat,
type: FieldMetadataType.SELECT,
label: msg`Date format`,
description: msg`User's preferred date format`,
icon: 'IconCalendarEvent',
options: [
{
value: WorkspaceMemberDateFormatEnum.SYSTEM,
label: 'System',
position: 0,
color: 'turquoise',
},
{
value: WorkspaceMemberDateFormatEnum.MONTH_FIRST,
label: 'Month First',
position: 1,
color: 'red',
},
{
value: WorkspaceMemberDateFormatEnum.DAY_FIRST,
label: 'Day First',
position: 2,
color: 'purple',
},
{
value: WorkspaceMemberDateFormatEnum.YEAR_FIRST,
label: 'Year First',
position: 3,
color: 'sky',
},
],
defaultValue: `'${WorkspaceMemberDateFormatEnum.SYSTEM}'`,
})
dateFormat: string;
@WorkspaceField({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeFormat,
type: FieldMetadataType.SELECT,
label: msg`Time format`,
description: msg`User's preferred time format`,
icon: 'IconClock2',
options: [
{
value: WorkspaceMemberTimeFormatEnum.SYSTEM,
label: 'System',
position: 0,
color: 'sky',
},
{
value: WorkspaceMemberTimeFormatEnum.HOUR_24,
label: '24HRS',
position: 1,
color: 'red',
},
{
value: WorkspaceMemberTimeFormatEnum.HOUR_12,
label: '12HRS',
position: 2,
color: 'purple',
},
],
defaultValue: `'${WorkspaceMemberTimeFormatEnum.SYSTEM}'`,
})
timeFormat: string;
@WorkspaceField({
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.searchVector,
type: FieldMetadataType.TS_VECTOR,