feat: add updatedBy field to track last record modifier (#16807)
<!-- CURSOR_SUMMARY --> > [!NOTE] > Implements last-modifier tracking and unified actor injection. > > - New `ActorFromAuthContextService` replaces createdBy-only logic; pre-query hooks now inject both `createdBy` and `updatedBy` on create and `updatedBy` on update > - Add `updatedBy` standard field to core/custom objects (e.g., `person`, `company`, `task`, `note`, `attachment`, `dashboard`, `workflow`, `workflowRun`) with IDs, metadata builders, and ORM entity fields > - Record CRUD: `create` now sets both `createdBy` and `updatedBy`; `update` sets `updatedBy`; workflow actions use a shared workflow actor builder; REST base handler uses the new actor service > - Seeder data and snapshots updated to include `updatedBy`; GraphQL result formatting adds defaults/handling for empty composite fields (incl. actor) > - Frontend `useUpdateOneRecord` upserts returned record into the local store after mutation > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 1f283778e9cb28a35bf84632a1a2997250bb3131. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Félix Malfait <felix.malfait@gmail.com> Co-authored-by: Félix Malfait <felix@twenty.com>
This commit is contained in:
+9
@@ -15,6 +15,9 @@ type AttachmentDataSeed = {
|
||||
createdBySource: string;
|
||||
createdByWorkspaceMemberId: string;
|
||||
createdByName: string;
|
||||
updatedBySource: string;
|
||||
updatedByWorkspaceMemberId: string;
|
||||
updatedByName: string;
|
||||
personId: string | null;
|
||||
companyId: string | null;
|
||||
noteId: string | null;
|
||||
@@ -30,6 +33,9 @@ export const ATTACHMENT_DATA_SEED_COLUMNS: (keyof AttachmentDataSeed)[] = [
|
||||
'createdBySource',
|
||||
'createdByWorkspaceMemberId',
|
||||
'createdByName',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
'personId',
|
||||
'companyId',
|
||||
'noteId',
|
||||
@@ -251,6 +257,9 @@ const GENERATE_ATTACHMENT_SEEDS = (): AttachmentDataSeed[] => {
|
||||
createdBySource: FieldActorSource.MANUAL,
|
||||
createdByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
createdByName: 'Tim A',
|
||||
updatedBySource: FieldActorSource.MANUAL,
|
||||
updatedByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
updatedByName: 'Tim A',
|
||||
personId,
|
||||
companyId,
|
||||
noteId,
|
||||
|
||||
+9
@@ -11,6 +11,9 @@ type CompanyDataSeed = {
|
||||
createdByWorkspaceMemberId: string;
|
||||
createdByName: string;
|
||||
accountOwnerId: string;
|
||||
updatedBySource: string;
|
||||
updatedByWorkspaceMemberId: string;
|
||||
updatedByName: string;
|
||||
position: number;
|
||||
};
|
||||
|
||||
@@ -25,6 +28,9 @@ export const COMPANY_DATA_SEED_COLUMNS: (keyof CompanyDataSeed)[] = [
|
||||
'createdByWorkspaceMemberId',
|
||||
'createdByName',
|
||||
'accountOwnerId',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
'position',
|
||||
];
|
||||
|
||||
@@ -8524,6 +8530,9 @@ const COMPANY_DATA_SEEDS_RAW = [
|
||||
export const COMPANY_DATA_SEEDS: CompanyDataSeed[] = COMPANY_DATA_SEEDS_RAW.map(
|
||||
(company, index) => ({
|
||||
...company,
|
||||
updatedBySource: company.createdBySource,
|
||||
updatedByWorkspaceMemberId: company.createdByWorkspaceMemberId,
|
||||
updatedByName: company.createdByName,
|
||||
position: index + 1,
|
||||
}),
|
||||
);
|
||||
|
||||
+15
@@ -9,6 +9,9 @@ type DashboardDataSeed = {
|
||||
createdBySource: string;
|
||||
createdByWorkspaceMemberId: string;
|
||||
createdByName: string;
|
||||
updatedBySource: string;
|
||||
updatedByWorkspaceMemberId: string;
|
||||
updatedByName: string;
|
||||
position: number;
|
||||
};
|
||||
|
||||
@@ -19,6 +22,9 @@ export const DASHBOARD_DATA_SEED_COLUMNS: (keyof DashboardDataSeed)[] = [
|
||||
'createdBySource',
|
||||
'createdByWorkspaceMemberId',
|
||||
'createdByName',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
'position',
|
||||
];
|
||||
|
||||
@@ -41,6 +47,9 @@ export const getDashboardDataSeeds = (
|
||||
createdBySource: 'MANUAL',
|
||||
createdByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
createdByName: 'Tim Apple',
|
||||
updatedBySource: 'MANUAL',
|
||||
updatedByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
updatedByName: 'Tim Apple',
|
||||
position: 0,
|
||||
},
|
||||
{
|
||||
@@ -53,6 +62,9 @@ export const getDashboardDataSeeds = (
|
||||
createdBySource: 'MANUAL',
|
||||
createdByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.JONY,
|
||||
createdByName: 'Jony Ive',
|
||||
updatedBySource: 'MANUAL',
|
||||
updatedByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.JONY,
|
||||
updatedByName: 'Jony Ive',
|
||||
position: 1,
|
||||
},
|
||||
{
|
||||
@@ -62,6 +74,9 @@ export const getDashboardDataSeeds = (
|
||||
createdBySource: 'MANUAL',
|
||||
createdByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.PHIL,
|
||||
createdByName: 'Phil Schiller',
|
||||
updatedBySource: 'MANUAL',
|
||||
updatedByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.PHIL,
|
||||
updatedByName: 'Phil Schiller',
|
||||
position: 2,
|
||||
},
|
||||
];
|
||||
|
||||
+12
@@ -10,6 +10,9 @@ type NoteDataSeed = {
|
||||
createdByWorkspaceMemberId: string;
|
||||
createdByName: string;
|
||||
createdByContext: string | null;
|
||||
updatedBySource: string;
|
||||
updatedByWorkspaceMemberId: string;
|
||||
updatedByName: string;
|
||||
};
|
||||
|
||||
export const NOTE_DATA_SEED_COLUMNS: (keyof NoteDataSeed)[] = [
|
||||
@@ -22,6 +25,9 @@ export const NOTE_DATA_SEED_COLUMNS: (keyof NoteDataSeed)[] = [
|
||||
'createdByWorkspaceMemberId',
|
||||
'createdByName',
|
||||
'createdByContext',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
];
|
||||
|
||||
const GENERATE_NOTE_IDS = (): Record<string, string> => {
|
||||
@@ -161,6 +167,9 @@ const GENERATE_NOTE_SEEDS = (): NoteDataSeed[] => {
|
||||
createdByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
createdByName: 'Tim A',
|
||||
createdByContext: null,
|
||||
updatedBySource: 'MANUAL',
|
||||
updatedByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
updatedByName: 'Tim A',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -191,6 +200,9 @@ const GENERATE_NOTE_SEEDS = (): NoteDataSeed[] => {
|
||||
createdByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
createdByName: 'Tim A',
|
||||
createdByContext: null,
|
||||
updatedBySource: 'MANUAL',
|
||||
updatedByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
updatedByName: 'Tim A',
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+9
@@ -15,6 +15,9 @@ type OpportunityDataSeed = {
|
||||
createdBySource: string;
|
||||
createdByWorkspaceMemberId: string;
|
||||
createdByName: string;
|
||||
updatedBySource: string;
|
||||
updatedByWorkspaceMemberId: string;
|
||||
updatedByName: string;
|
||||
};
|
||||
|
||||
export const OPPORTUNITY_DATA_SEED_COLUMNS: (keyof OpportunityDataSeed)[] = [
|
||||
@@ -30,6 +33,9 @@ export const OPPORTUNITY_DATA_SEED_COLUMNS: (keyof OpportunityDataSeed)[] = [
|
||||
'createdBySource',
|
||||
'createdByWorkspaceMemberId',
|
||||
'createdByName',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
];
|
||||
|
||||
const GENERATE_OPPORTUNITY_IDS = (): Record<string, string> => {
|
||||
@@ -188,6 +194,9 @@ const GENERATE_OPPORTUNITY_SEEDS = (): OpportunityDataSeed[] => {
|
||||
createdBySource: 'MANUAL',
|
||||
createdByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
createdByName: 'Tim Cook',
|
||||
updatedBySource: 'MANUAL',
|
||||
updatedByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
updatedByName: 'Tim Cook',
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+9
@@ -17,6 +17,9 @@ type PersonDataSeed = {
|
||||
phonesPrimaryPhoneNumber: string;
|
||||
phonesPrimaryPhoneCountryCode: string;
|
||||
phonesPrimaryPhoneCallingCode: string;
|
||||
updatedBySource: string;
|
||||
updatedByWorkspaceMemberId: string;
|
||||
updatedByName: string;
|
||||
position: number;
|
||||
};
|
||||
|
||||
@@ -36,6 +39,9 @@ export const PERSON_DATA_SEED_COLUMNS: (keyof PersonDataSeed)[] = [
|
||||
'phonesPrimaryPhoneNumber',
|
||||
'phonesPrimaryPhoneCountryCode',
|
||||
'phonesPrimaryPhoneCallingCode',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
'position',
|
||||
];
|
||||
|
||||
@@ -21650,6 +21656,9 @@ const PERSON_DATA_SEEDS_RAW = [
|
||||
export const PERSON_DATA_SEEDS: PersonDataSeed[] = PERSON_DATA_SEEDS_RAW.map(
|
||||
(person, index) => ({
|
||||
...person,
|
||||
updatedBySource: person.createdBySource,
|
||||
updatedByWorkspaceMemberId: person.createdByWorkspaceMemberId,
|
||||
updatedByName: person.createdByName,
|
||||
position: index + 1,
|
||||
}),
|
||||
);
|
||||
|
||||
+12
@@ -12,6 +12,9 @@ type TaskDataSeed = {
|
||||
createdBySource: string;
|
||||
createdByWorkspaceMemberId: string;
|
||||
createdByName: string;
|
||||
updatedBySource: string;
|
||||
updatedByWorkspaceMemberId: string;
|
||||
updatedByName: string;
|
||||
};
|
||||
|
||||
export const TASK_DATA_SEED_COLUMNS: (keyof TaskDataSeed)[] = [
|
||||
@@ -26,6 +29,9 @@ export const TASK_DATA_SEED_COLUMNS: (keyof TaskDataSeed)[] = [
|
||||
'createdBySource',
|
||||
'createdByWorkspaceMemberId',
|
||||
'createdByName',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
];
|
||||
|
||||
// Generate all task IDs
|
||||
@@ -210,6 +216,9 @@ const GENERATE_TASK_SEEDS = (): TaskDataSeed[] => {
|
||||
createdBySource: 'MANUAL',
|
||||
createdByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
createdByName: 'Tim A',
|
||||
updatedBySource: 'MANUAL',
|
||||
updatedByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
updatedByName: 'Tim A',
|
||||
});
|
||||
}
|
||||
|
||||
@@ -242,6 +251,9 @@ const GENERATE_TASK_SEEDS = (): TaskDataSeed[] => {
|
||||
createdBySource: 'MANUAL',
|
||||
createdByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
createdByName: 'Tim A',
|
||||
updatedBySource: 'MANUAL',
|
||||
updatedByWorkspaceMemberId: WORKSPACE_MEMBER_DATA_SEED_IDS.TIM,
|
||||
updatedByName: 'Tim A',
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+18
@@ -29,6 +29,9 @@ export const prefillCompanies = async (
|
||||
'createdBySource',
|
||||
'createdByWorkspaceMemberId',
|
||||
'createdByName',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
])
|
||||
.orIgnore()
|
||||
.values([
|
||||
@@ -47,6 +50,9 @@ export const prefillCompanies = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
},
|
||||
{
|
||||
id: ANTHROPIC_ID,
|
||||
@@ -63,6 +69,9 @@ export const prefillCompanies = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
},
|
||||
{
|
||||
id: STRIPE_ID,
|
||||
@@ -79,6 +88,9 @@ export const prefillCompanies = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
},
|
||||
{
|
||||
id: FIGMA_ID,
|
||||
@@ -95,6 +107,9 @@ export const prefillCompanies = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
},
|
||||
{
|
||||
id: NOTION_ID,
|
||||
@@ -111,6 +126,9 @@ export const prefillCompanies = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
},
|
||||
])
|
||||
.returning('*')
|
||||
|
||||
+18
@@ -26,6 +26,9 @@ export const prefillPeople = async (
|
||||
'createdBySource',
|
||||
'createdByWorkspaceMemberId',
|
||||
'createdByName',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
'phonesPrimaryPhoneNumber',
|
||||
'phonesPrimaryPhoneCallingCode',
|
||||
'companyId',
|
||||
@@ -43,6 +46,9 @@ export const prefillPeople = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
phonesPrimaryPhoneNumber: '123456789',
|
||||
phonesPrimaryPhoneCallingCode: '+1',
|
||||
companyId: AIRBNB_ID,
|
||||
@@ -58,6 +64,9 @@ export const prefillPeople = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
phonesPrimaryPhoneNumber: '555123456',
|
||||
phonesPrimaryPhoneCallingCode: '+1',
|
||||
companyId: ANTHROPIC_ID,
|
||||
@@ -73,6 +82,9 @@ export const prefillPeople = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
phonesPrimaryPhoneNumber: '987625341',
|
||||
phonesPrimaryPhoneCallingCode: '+1',
|
||||
companyId: STRIPE_ID,
|
||||
@@ -88,6 +100,9 @@ export const prefillPeople = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
phonesPrimaryPhoneNumber: '098822619',
|
||||
phonesPrimaryPhoneCallingCode: '+1',
|
||||
companyId: FIGMA_ID,
|
||||
@@ -103,6 +118,9 @@ export const prefillPeople = async (
|
||||
createdBySource: FieldActorSource.SYSTEM,
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
phonesPrimaryPhoneNumber: '882261739',
|
||||
phonesPrimaryPhoneCallingCode: '+1',
|
||||
companyId: NOTION_ID,
|
||||
|
||||
+6
@@ -54,6 +54,9 @@ export const prefillWorkflows = async (
|
||||
'createdByWorkspaceMemberId',
|
||||
'createdByName',
|
||||
'createdByContext',
|
||||
'updatedBySource',
|
||||
'updatedByWorkspaceMemberId',
|
||||
'updatedByName',
|
||||
])
|
||||
.orIgnore()
|
||||
.values([
|
||||
@@ -67,6 +70,9 @@ export const prefillWorkflows = async (
|
||||
createdByWorkspaceMemberId: null,
|
||||
createdByName: 'System',
|
||||
createdByContext: {},
|
||||
updatedBySource: FieldActorSource.SYSTEM,
|
||||
updatedByWorkspaceMemberId: null,
|
||||
updatedByName: 'System',
|
||||
},
|
||||
])
|
||||
.returning('*')
|
||||
|
||||
+17
@@ -54,6 +54,9 @@ export const STANDARD_OBJECTS = {
|
||||
createdBy: {
|
||||
universalIdentifier: ATTACHMENT_STANDARD_FIELD_IDS.createdBy,
|
||||
},
|
||||
updatedBy: {
|
||||
universalIdentifier: ATTACHMENT_STANDARD_FIELD_IDS.updatedBy,
|
||||
},
|
||||
task: { universalIdentifier: ATTACHMENT_STANDARD_FIELD_IDS.task },
|
||||
note: { universalIdentifier: ATTACHMENT_STANDARD_FIELD_IDS.note },
|
||||
person: { universalIdentifier: ATTACHMENT_STANDARD_FIELD_IDS.person },
|
||||
@@ -397,6 +400,7 @@ export const STANDARD_OBJECTS = {
|
||||
},
|
||||
position: { universalIdentifier: COMPANY_STANDARD_FIELD_IDS.position },
|
||||
createdBy: { universalIdentifier: COMPANY_STANDARD_FIELD_IDS.createdBy },
|
||||
updatedBy: { universalIdentifier: COMPANY_STANDARD_FIELD_IDS.updatedBy },
|
||||
people: { universalIdentifier: COMPANY_STANDARD_FIELD_IDS.people },
|
||||
accountOwner: {
|
||||
universalIdentifier: COMPANY_STANDARD_FIELD_IDS.accountOwner,
|
||||
@@ -549,6 +553,9 @@ export const STANDARD_OBJECTS = {
|
||||
createdBy: {
|
||||
universalIdentifier: DASHBOARD_STANDARD_FIELD_IDS.createdBy,
|
||||
},
|
||||
updatedBy: {
|
||||
universalIdentifier: DASHBOARD_STANDARD_FIELD_IDS.updatedBy,
|
||||
},
|
||||
timelineActivities: {
|
||||
universalIdentifier: DASHBOARD_STANDARD_FIELD_IDS.timelineActivities,
|
||||
},
|
||||
@@ -1029,6 +1036,7 @@ export const STANDARD_OBJECTS = {
|
||||
title: { universalIdentifier: NOTE_STANDARD_FIELD_IDS.title },
|
||||
bodyV2: { universalIdentifier: NOTE_STANDARD_FIELD_IDS.bodyV2 },
|
||||
createdBy: { universalIdentifier: NOTE_STANDARD_FIELD_IDS.createdBy },
|
||||
updatedBy: { universalIdentifier: NOTE_STANDARD_FIELD_IDS.updatedBy },
|
||||
noteTargets: { universalIdentifier: NOTE_STANDARD_FIELD_IDS.noteTargets },
|
||||
attachments: { universalIdentifier: NOTE_STANDARD_FIELD_IDS.attachments },
|
||||
timelineActivities: {
|
||||
@@ -1127,6 +1135,9 @@ export const STANDARD_OBJECTS = {
|
||||
createdBy: {
|
||||
universalIdentifier: OPPORTUNITY_STANDARD_FIELD_IDS.createdBy,
|
||||
},
|
||||
updatedBy: {
|
||||
universalIdentifier: OPPORTUNITY_STANDARD_FIELD_IDS.updatedBy,
|
||||
},
|
||||
pointOfContact: {
|
||||
universalIdentifier: OPPORTUNITY_STANDARD_FIELD_IDS.pointOfContact,
|
||||
},
|
||||
@@ -1255,6 +1266,7 @@ export const STANDARD_OBJECTS = {
|
||||
avatarUrl: { universalIdentifier: PERSON_STANDARD_FIELD_IDS.avatarUrl },
|
||||
position: { universalIdentifier: PERSON_STANDARD_FIELD_IDS.position },
|
||||
createdBy: { universalIdentifier: PERSON_STANDARD_FIELD_IDS.createdBy },
|
||||
updatedBy: { universalIdentifier: PERSON_STANDARD_FIELD_IDS.updatedBy },
|
||||
company: { universalIdentifier: PERSON_STANDARD_FIELD_IDS.company },
|
||||
pointOfContactForOpportunities: {
|
||||
universalIdentifier:
|
||||
@@ -1352,6 +1364,7 @@ export const STANDARD_OBJECTS = {
|
||||
dueAt: { universalIdentifier: TASK_STANDARD_FIELD_IDS.dueAt },
|
||||
status: { universalIdentifier: TASK_STANDARD_FIELD_IDS.status },
|
||||
createdBy: { universalIdentifier: TASK_STANDARD_FIELD_IDS.createdBy },
|
||||
updatedBy: { universalIdentifier: TASK_STANDARD_FIELD_IDS.updatedBy },
|
||||
taskTargets: { universalIdentifier: TASK_STANDARD_FIELD_IDS.taskTargets },
|
||||
attachments: { universalIdentifier: TASK_STANDARD_FIELD_IDS.attachments },
|
||||
assignee: { universalIdentifier: TASK_STANDARD_FIELD_IDS.assignee },
|
||||
@@ -1670,6 +1683,7 @@ export const STANDARD_OBJECTS = {
|
||||
universalIdentifier: WORKFLOW_STANDARD_FIELD_IDS.attachments,
|
||||
},
|
||||
createdBy: { universalIdentifier: WORKFLOW_STANDARD_FIELD_IDS.createdBy },
|
||||
updatedBy: { universalIdentifier: WORKFLOW_STANDARD_FIELD_IDS.updatedBy },
|
||||
searchVector: {
|
||||
universalIdentifier: WORKFLOW_STANDARD_FIELD_IDS.searchVector,
|
||||
},
|
||||
@@ -1772,6 +1786,9 @@ export const STANDARD_OBJECTS = {
|
||||
createdBy: {
|
||||
universalIdentifier: WORKFLOW_RUN_STANDARD_FIELD_IDS.createdBy,
|
||||
},
|
||||
updatedBy: {
|
||||
universalIdentifier: WORKFLOW_RUN_STANDARD_FIELD_IDS.updatedBy,
|
||||
},
|
||||
output: { universalIdentifier: WORKFLOW_RUN_STANDARD_FIELD_IDS.output },
|
||||
context: { universalIdentifier: WORKFLOW_RUN_STANDARD_FIELD_IDS.context },
|
||||
state: { universalIdentifier: WORKFLOW_RUN_STANDARD_FIELD_IDS.state },
|
||||
|
||||
+22
@@ -207,6 +207,28 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
updatedBy: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
context: {
|
||||
fieldName: 'updatedBy',
|
||||
type: FieldMetadataType.ACTOR,
|
||||
label: 'Updated by',
|
||||
description: 'The workspace member who last updated the record',
|
||||
icon: 'IconUserCircle',
|
||||
isUIReadOnly: true,
|
||||
isNullable: false,
|
||||
defaultValue: {
|
||||
source: "'MANUAL'",
|
||||
name: "'System'",
|
||||
workspaceMemberId: null,
|
||||
},
|
||||
},
|
||||
standardObjectMetadataRelatedEntityIds,
|
||||
dependencyFlatEntityMaps,
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
|
||||
// Relation fields
|
||||
task: createStandardRelationFieldFlatMetadata({
|
||||
|
||||
+22
@@ -286,6 +286,28 @@ export const buildCompanyStandardFlatFieldMetadatas = ({
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
updatedBy: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
context: {
|
||||
fieldName: 'updatedBy',
|
||||
type: FieldMetadataType.ACTOR,
|
||||
label: 'Updated by',
|
||||
description: 'The workspace member who last updated the record',
|
||||
icon: 'IconUserCircle',
|
||||
isUIReadOnly: true,
|
||||
isNullable: false,
|
||||
defaultValue: {
|
||||
source: "'MANUAL'",
|
||||
name: "'System'",
|
||||
workspaceMemberId: null,
|
||||
},
|
||||
},
|
||||
standardObjectMetadataRelatedEntityIds,
|
||||
dependencyFlatEntityMaps,
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
searchVector: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
|
||||
+22
@@ -176,6 +176,28 @@ export const buildDashboardStandardFlatFieldMetadatas = ({
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
updatedBy: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
context: {
|
||||
fieldName: 'updatedBy',
|
||||
type: FieldMetadataType.ACTOR,
|
||||
label: 'Updated by',
|
||||
description: 'The workspace member who last updated the record',
|
||||
icon: 'IconUserCircle',
|
||||
isUIReadOnly: true,
|
||||
isNullable: false,
|
||||
defaultValue: {
|
||||
source: "'MANUAL'",
|
||||
name: "'System'",
|
||||
workspaceMemberId: null,
|
||||
},
|
||||
},
|
||||
standardObjectMetadataRelatedEntityIds,
|
||||
dependencyFlatEntityMaps,
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
searchVector: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
|
||||
+22
@@ -181,6 +181,28 @@ export const buildNoteStandardFlatFieldMetadatas = ({
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
updatedBy: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
context: {
|
||||
fieldName: 'updatedBy',
|
||||
type: FieldMetadataType.ACTOR,
|
||||
label: 'Updated by',
|
||||
description: 'The workspace member who last updated the record',
|
||||
icon: 'IconUserCircle',
|
||||
isUIReadOnly: true,
|
||||
isNullable: false,
|
||||
defaultValue: {
|
||||
source: "'MANUAL'",
|
||||
name: "'System'",
|
||||
workspaceMemberId: null,
|
||||
},
|
||||
},
|
||||
standardObjectMetadataRelatedEntityIds,
|
||||
dependencyFlatEntityMaps,
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
searchVector: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
|
||||
+22
@@ -232,6 +232,28 @@ export const buildOpportunityStandardFlatFieldMetadatas = ({
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
updatedBy: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
context: {
|
||||
fieldName: 'updatedBy',
|
||||
type: FieldMetadataType.ACTOR,
|
||||
label: 'Updated by',
|
||||
description: 'The workspace member who last updated the record',
|
||||
icon: 'IconUserCircle',
|
||||
isUIReadOnly: true,
|
||||
isNullable: false,
|
||||
defaultValue: {
|
||||
source: "'MANUAL'",
|
||||
name: "'System'",
|
||||
workspaceMemberId: null,
|
||||
},
|
||||
},
|
||||
standardObjectMetadataRelatedEntityIds,
|
||||
dependencyFlatEntityMaps,
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
searchVector: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
|
||||
+22
@@ -286,6 +286,28 @@ export const buildPersonStandardFlatFieldMetadatas = ({
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
updatedBy: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
context: {
|
||||
fieldName: 'updatedBy',
|
||||
type: FieldMetadataType.ACTOR,
|
||||
label: 'Updated by',
|
||||
description: 'The workspace member who last updated the record',
|
||||
icon: 'IconUserCircle',
|
||||
isUIReadOnly: true,
|
||||
isNullable: false,
|
||||
defaultValue: {
|
||||
source: "'MANUAL'",
|
||||
name: "'System'",
|
||||
workspaceMemberId: null,
|
||||
},
|
||||
},
|
||||
standardObjectMetadataRelatedEntityIds,
|
||||
dependencyFlatEntityMaps,
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
|
||||
// Relation fields
|
||||
company: createStandardRelationFieldFlatMetadata({
|
||||
|
||||
+22
@@ -225,6 +225,28 @@ export const buildTaskStandardFlatFieldMetadatas = ({
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
updatedBy: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
context: {
|
||||
fieldName: 'updatedBy',
|
||||
type: FieldMetadataType.ACTOR,
|
||||
label: 'Updated by',
|
||||
description: 'The workspace member who last updated the record',
|
||||
icon: 'IconUserCircle',
|
||||
isUIReadOnly: true,
|
||||
isNullable: false,
|
||||
defaultValue: {
|
||||
source: "'MANUAL'",
|
||||
name: "'System'",
|
||||
workspaceMemberId: null,
|
||||
},
|
||||
},
|
||||
standardObjectMetadataRelatedEntityIds,
|
||||
dependencyFlatEntityMaps,
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
searchVector: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
|
||||
+22
@@ -223,6 +223,28 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
updatedBy: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
context: {
|
||||
fieldName: 'updatedBy',
|
||||
type: FieldMetadataType.ACTOR,
|
||||
label: 'Updated by',
|
||||
description: 'The workspace member who last updated the record',
|
||||
icon: 'IconUserCircle',
|
||||
isUIReadOnly: true,
|
||||
isNullable: false,
|
||||
defaultValue: {
|
||||
source: "'MANUAL'",
|
||||
name: "'System'",
|
||||
workspaceMemberId: null,
|
||||
},
|
||||
},
|
||||
standardObjectMetadataRelatedEntityIds,
|
||||
dependencyFlatEntityMaps,
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
state: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
|
||||
+22
@@ -200,6 +200,28 @@ export const buildWorkflowStandardFlatFieldMetadatas = ({
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
updatedBy: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
context: {
|
||||
fieldName: 'updatedBy',
|
||||
type: FieldMetadataType.ACTOR,
|
||||
label: 'Updated by',
|
||||
description: 'The workspace member who last updated the record',
|
||||
icon: 'IconUserCircle',
|
||||
isUIReadOnly: true,
|
||||
isNullable: false,
|
||||
defaultValue: {
|
||||
source: "'MANUAL'",
|
||||
name: "'System'",
|
||||
workspaceMemberId: null,
|
||||
},
|
||||
},
|
||||
standardObjectMetadataRelatedEntityIds,
|
||||
dependencyFlatEntityMaps,
|
||||
twentyStandardApplicationId,
|
||||
now,
|
||||
}),
|
||||
searchVector: createStandardFieldFlatMetadata({
|
||||
objectName,
|
||||
workspaceId,
|
||||
|
||||
+10
@@ -35,6 +35,7 @@ export const ATTACHMENT_STANDARD_FIELD_IDS = {
|
||||
type: '20202020-a417-49b8-a40b-f6a7874caa0d',
|
||||
fileCategory: '20202020-8c3f-4d9e-9a1b-2e5f7a8c9d0e',
|
||||
createdBy: '395be3bd-a5c9-463d-aafe-9bc3bbec3f15',
|
||||
updatedBy: '376239d1-3e65-4cb6-b5d8-e0917d43cc93',
|
||||
author: '20202020-6501-4ac5-a4ef-b2f8522ef6cd',
|
||||
activity: '20202020-b569-481b-a13f-9b94e47e54fe',
|
||||
task: '20202020-51e5-4621-9cf8-215487951c4b',
|
||||
@@ -128,6 +129,7 @@ export const COMPANY_STANDARD_FIELD_IDS = {
|
||||
idealCustomerProfile: '20202020-ba6b-438a-8213-2c5ba28d76a2',
|
||||
position: '20202020-9b4e-462b-991d-a0ee33326454',
|
||||
createdBy: '20202020-fabc-451d-ab7d-412170916baa',
|
||||
updatedBy: '7444022e-b38f-4d4f-801b-cd664abc4834',
|
||||
people: '20202020-3213-4ddf-9494-6422bcff8d7c',
|
||||
accountOwner: '20202020-95b8-4e10-9881-edb5d4765f9d',
|
||||
// TODO: check if activityTargets field can be deleted
|
||||
@@ -280,6 +282,7 @@ export const NOTE_STANDARD_FIELD_IDS = {
|
||||
body: '20202020-e63d-4e70-95be-a78cd9abe7ef',
|
||||
bodyV2: '20202020-a7bb-4d94-be51-8f25181502c8',
|
||||
createdBy: '20202020-0d79-4e21-ab77-5a394eff97be',
|
||||
updatedBy: '9b446e89-2484-4044-a3b5-420f6b578c0c',
|
||||
noteTargets: '20202020-1f25-43fe-8b00-af212fdde823',
|
||||
attachments: '20202020-4986-4c92-bf19-39934b149b16',
|
||||
timelineActivities: '20202020-7030-42f8-929c-1a57b25d6bce',
|
||||
@@ -303,6 +306,7 @@ export const OPPORTUNITY_STANDARD_FIELD_IDS = {
|
||||
stage: '20202020-6f76-477d-8551-28cd65b2b4b9',
|
||||
position: '20202020-806d-493a-bbc6-6313e62958e2',
|
||||
createdBy: '20202020-a63e-4a62-8e63-42a51828f831',
|
||||
updatedBy: '3c8a6095-3f64-4e81-a59e-66c2bd181e11',
|
||||
pointOfContact: '20202020-8dfb-42fc-92b6-01afb759ed16',
|
||||
company: '20202020-cbac-457e-b565-adece5fc815f',
|
||||
favorites: '20202020-a1c2-4500-aaae-83ba8a0e827a',
|
||||
@@ -328,6 +332,7 @@ export const PERSON_STANDARD_FIELD_IDS = {
|
||||
avatarUrl: '20202020-b8a6-40df-961c-373dc5d2ec21',
|
||||
position: '20202020-fcd5-4231-aff5-fff583eaa0b1',
|
||||
createdBy: '20202020-f6ab-4d98-af24-a3d5b664148a',
|
||||
updatedBy: 'e9e0dd35-184c-4742-84da-afadf45ce59a',
|
||||
company: '20202020-e2f3-448e-b34c-2d625f0025fd',
|
||||
pointOfContactForOpportunities: '20202020-911b-4a7d-b67b-918aa9a5b33a',
|
||||
// TODO: check if activityTargets field can be deleted
|
||||
@@ -350,6 +355,7 @@ export const TASK_STANDARD_FIELD_IDS = {
|
||||
dueAt: '20202020-fd99-40da-951b-4cb9a352fce3',
|
||||
status: '20202020-70bc-48f9-89c5-6aa730b151e0',
|
||||
createdBy: '20202020-1a04-48ab-a567-576965ae5387',
|
||||
updatedBy: '9e8bf518-f4ab-433e-9674-efb75fba2802',
|
||||
taskTargets: '20202020-de9c-4d0e-a452-713d4a3e5fc7',
|
||||
attachments: '20202020-794d-4783-a8ff-cecdb15be139',
|
||||
assignee: '20202020-065a-4f42-a906-e20422c1753f',
|
||||
@@ -449,6 +455,7 @@ export const WORKFLOW_STANDARD_FIELD_IDS = {
|
||||
timelineActivities: '20202020-906e-486a-a798-131a5f081faf',
|
||||
attachments: '20202020-4a8c-4e2d-9b1c-7e5f3a2b4c6d',
|
||||
createdBy: '20202020-6007-401a-8aa5-e6f48581a6f3',
|
||||
updatedBy: '3559831e-caf2-4eb5-9db1-b47bf968c774',
|
||||
searchVector: '20202020-535d-4ffa-b7f3-4fa0d5da1b7a',
|
||||
} as const;
|
||||
|
||||
@@ -462,6 +469,7 @@ export const WORKFLOW_RUN_STANDARD_FIELD_IDS = {
|
||||
status: '20202020-6b3e-4f9c-8c2b-2e5b8e6d6f3b',
|
||||
position: '20202020-7802-4c40-ae89-1f506fe3365c',
|
||||
createdBy: '20202020-6007-401a-8aa5-e6f38581a6f3',
|
||||
updatedBy: '730dc1c9-34f5-4c22-84a6-bcb55b7604e2',
|
||||
output: '20202020-7be4-4db2-8ac6-3ff0d740843d',
|
||||
context: '20202020-189c-478a-b867-d72feaf5926a',
|
||||
state: '20202020-611f-45f3-9cde-d64927e8ec57',
|
||||
@@ -516,6 +524,7 @@ export const CUSTOM_OBJECT_STANDARD_FIELD_IDS = {
|
||||
name: '20202020-ba07-4ffd-ba63-009491f5749c',
|
||||
position: '20202020-c2bd-4e16-bb9a-c8b0411bf49d',
|
||||
createdBy: '20202020-be0e-4971-865b-32ca87cbb315',
|
||||
updatedBy: 'd047ccb4-9469-4514-a982-29c4ae49317d',
|
||||
// TODO: check if activityTargets field can be deleted
|
||||
activityTargets: '20202020-7f42-40ae-b96c-c8a61acc83bf',
|
||||
noteTargets: '20202020-01fd-4f37-99dc-9427a444018a',
|
||||
@@ -531,6 +540,7 @@ export const DASHBOARD_STANDARD_FIELD_IDS = {
|
||||
position: '20202020-38af-409b-95f0-7f08aa5f420f',
|
||||
pageLayoutId: '20202020-bb53-4648-aa36-1d9d54e6f7f2',
|
||||
createdBy: '20202020-ff32-4fa1-b7ad-407cc6aa0734',
|
||||
updatedBy: '53ee42e7-f157-42b5-b278-a5fa9b378307',
|
||||
timelineActivities: '20202020-9b0c-5d6e-7f8a-9b0c1d2e3f4a',
|
||||
favorites: '20202020-f032-478f-88fa-6426ff6f1e4c',
|
||||
attachments: '20202020-bf6f-4220-8c55-2764f1175870',
|
||||
|
||||
Reference in New Issue
Block a user