Added all field types on pet custom object (#9248)

- Added all usable composite field types on pet custom object
- Fixed missing createdBy on people and company seeds
- DEFAULT_SUBDOMAIN is now used for login (could be improved for multi
workspace)
- Refactored ObjectMetadataStandardIdToIdMap to disambiguate from
ObjectMetadataMap
- Refactored seedCustomObjects
This commit is contained in:
Lucas Bordeau
2024-12-27 15:01:09 +01:00
committed by GitHub
parent 58c92e036b
commit a8bb3e6bdf
27 changed files with 742 additions and 5428 deletions

View File

@ -89,10 +89,11 @@ export const SETTINGS_COMPOSITE_FIELD_TYPE_CONFIGS = {
label: 'Phones', label: 'Phones',
Icon: IllustrationIconPhone, Icon: IllustrationIconPhone,
exampleValue: { exampleValue: {
primaryPhoneNumber: '234-567-890', primaryPhoneCallingCode: '+33',
primaryPhoneCountryCode: '+1', primaryPhoneCountryCode: 'FR',
primaryPhoneNumber: '789012345',
additionalPhones: [ additionalPhones: [
{ number: '234-567-890', callingCode: '+1', countryCode: 'US' }, { number: '617272323', callingCode: '+33', countryCode: 'FR' },
], ],
}, },
subFields: [ subFields: [

View File

@ -1,18 +1,17 @@
import { Logger } from '@nestjs/common'; import { Logger } from '@nestjs/common';
import { Command, CommandRunner } from 'nest-commander'; import { Command, CommandRunner } from 'nest-commander';
import { EntityManager } from 'typeorm'; import { DataSource, EntityManager } from 'typeorm';
import { seedCoreSchema } from 'src/database/typeorm-seeds/core'; import { seedCoreSchema } from 'src/database/typeorm-seeds/core';
import { import {
SEED_APPLE_WORKSPACE_ID,
SEED_ACME_WORKSPACE_ID, SEED_ACME_WORKSPACE_ID,
SEED_APPLE_WORKSPACE_ID,
} from 'src/database/typeorm-seeds/core/workspaces'; } from 'src/database/typeorm-seeds/core/workspaces';
import { import {
getDevSeedCompanyCustomFields, getDevSeedCompanyCustomFields,
getDevSeedPeopleCustomFields, getDevSeedPeopleCustomFields,
} from 'src/database/typeorm-seeds/metadata/fieldsMetadata'; } from 'src/database/typeorm-seeds/metadata/fieldsMetadata';
import { getDevSeedCustomObjects } from 'src/database/typeorm-seeds/metadata/objectsMetadata';
import { seedCalendarChannels } from 'src/database/typeorm-seeds/workspace/calendar-channel'; import { seedCalendarChannels } from 'src/database/typeorm-seeds/workspace/calendar-channel';
import { seedCalendarChannelEventAssociations } from 'src/database/typeorm-seeds/workspace/calendar-channel-event-association'; import { seedCalendarChannelEventAssociations } from 'src/database/typeorm-seeds/workspace/calendar-channel-event-association';
import { seedCalendarEventParticipants } from 'src/database/typeorm-seeds/workspace/calendar-event-participants'; import { seedCalendarEventParticipants } from 'src/database/typeorm-seeds/workspace/calendar-event-participants';
@ -27,7 +26,7 @@ import { seedMessageThreadSubscribers } from 'src/database/typeorm-seeds/workspa
import { seedMessageThread } from 'src/database/typeorm-seeds/workspace/message-threads'; import { seedMessageThread } from 'src/database/typeorm-seeds/workspace/message-threads';
import { seedMessage } from 'src/database/typeorm-seeds/workspace/messages'; import { seedMessage } from 'src/database/typeorm-seeds/workspace/messages';
import { seedOpportunity } from 'src/database/typeorm-seeds/workspace/opportunities'; import { seedOpportunity } from 'src/database/typeorm-seeds/workspace/opportunities';
import { seedPeople } from 'src/database/typeorm-seeds/workspace/people'; import { seedPeople } from 'src/database/typeorm-seeds/workspace/seedPeople';
import { seedWorkspaceMember } from 'src/database/typeorm-seeds/workspace/workspace-members'; import { seedWorkspaceMember } from 'src/database/typeorm-seeds/workspace/workspace-members';
import { rawDataSource } from 'src/database/typeorm/raw/raw.datasource'; import { rawDataSource } from 'src/database/typeorm/raw/raw.datasource';
import { TypeORMService } from 'src/database/typeorm/typeorm.service'; import { TypeORMService } from 'src/database/typeorm/typeorm.service';
@ -36,10 +35,15 @@ import { CacheStorageService } from 'src/engine/core-modules/cache-storage/servi
import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum'; import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { FieldMetadataService } from 'src/engine/metadata-modules/field-metadata/field-metadata.service'; import { FieldMetadataService } from 'src/engine/metadata-modules/field-metadata/field-metadata.service';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service'; import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { PETS_DATA_SEEDS } from 'src/engine/seeder/data-seeds/pets-data-seeds';
import { SURVEY_RESULTS_DATA_SEEDS } from 'src/engine/seeder/data-seeds/survey-results-data-seeds';
import { PETS_METADATA_SEEDS } from 'src/engine/seeder/metadata-seeds/pets-metadata-seeds';
import { SURVEY_RESULTS_METADATA_SEEDS } from 'src/engine/seeder/metadata-seeds/survey-results-metadata-seeds';
import { SeederService } from 'src/engine/seeder/seeder.service';
import { shouldSeedWorkspaceFavorite } from 'src/engine/utils/should-seed-workspace-favorite'; import { shouldSeedWorkspaceFavorite } from 'src/engine/utils/should-seed-workspace-favorite';
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
import { seedViewWithDemoData } from 'src/engine/workspace-manager/standard-objects-prefill-data/seed-view-with-demo-data'; import { seedViewWithDemoData } from 'src/engine/workspace-manager/standard-objects-prefill-data/seed-view-with-demo-data';
@ -66,6 +70,7 @@ export class DataSeedWorkspaceCommand extends CommandRunner {
@InjectCacheStorage(CacheStorageNamespace.EngineWorkspace) @InjectCacheStorage(CacheStorageNamespace.EngineWorkspace)
private readonly workspaceSchemaCache: CacheStorageService, private readonly workspaceSchemaCache: CacheStorageService,
private readonly featureFlagService: FeatureFlagService, private readonly featureFlagService: FeatureFlagService,
private readonly seederService: SeederService,
) { ) {
super(); super();
} }
@ -73,29 +78,7 @@ export class DataSeedWorkspaceCommand extends CommandRunner {
async run(): Promise<void> { async run(): Promise<void> {
try { try {
for (const workspaceId of this.workspaceIds) { for (const workspaceId of this.workspaceIds) {
await this.workspaceSchemaCache.flush(); await this.createWorkspaceSchema(workspaceId);
await rawDataSource.initialize();
await seedCoreSchema(rawDataSource, workspaceId);
await rawDataSource.destroy();
const schemaName =
await this.workspaceDataSourceService.createWorkspaceDBSchema(
workspaceId,
);
const dataSourceMetadata =
await this.dataSourceService.createDataSourceMetadata(
workspaceId,
schemaName,
);
await this.workspaceSyncMetadataService.synchronize({
workspaceId: workspaceId,
dataSourceId: dataSourceMetadata.id,
});
} }
} catch (error) { } catch (error) {
this.logger.error(error); this.logger.error(error);
@ -104,150 +87,185 @@ export class DataSeedWorkspaceCommand extends CommandRunner {
} }
for (const workspaceId of this.workspaceIds) { for (const workspaceId of this.workspaceIds) {
const dataSourceMetadata = await this.seedWorkspace(workspaceId);
await this.dataSourceService.getLastDataSourceMetadataFromWorkspaceIdOrFail( }
}
async createWorkspaceSchema(workspaceId: string) {
await this.workspaceSchemaCache.flush();
await rawDataSource.initialize();
await seedCoreSchema(rawDataSource, workspaceId);
await rawDataSource.destroy();
const schemaName =
await this.workspaceDataSourceService.createWorkspaceDBSchema(
workspaceId,
);
const dataSourceMetadata =
await this.dataSourceService.createDataSourceMetadata(
workspaceId,
schemaName,
);
await this.workspaceSyncMetadataService.synchronize({
workspaceId: workspaceId,
dataSourceId: dataSourceMetadata.id,
});
}
async seedWorkspace(workspaceId: string) {
const dataSourceMetadata =
await this.dataSourceService.getLastDataSourceMetadataFromWorkspaceIdOrFail(
workspaceId,
);
const workspaceDataSource =
await this.typeORMService.connectToDataSource(dataSourceMetadata);
if (!workspaceDataSource) {
throw new Error('Could not connect to workspace data source');
}
try {
const { objectMetadataStandardIdToIdMap } =
await this.objectMetadataService.getObjectMetadataStandardIdToIdMap(
workspaceId, workspaceId,
); );
const workspaceDataSource = await this.seedCompanyCustomFields(
await this.typeORMService.connectToDataSource(dataSourceMetadata); objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].id,
workspaceId,
);
if (!workspaceDataSource) { await this.seedPeopleCustomFields(
throw new Error('Could not connect to workspace data source'); objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].id,
} workspaceId,
);
try { await this.seedStandardObjectRecords(
const objectMetadata = workspaceDataSource,
await this.objectMetadataService.findManyWithinWorkspace(workspaceId); dataSourceMetadata,
const objectMetadataMap = objectMetadata.reduce((acc, object) => { );
acc[object.standardId ?? ''] = {
id: object.id,
fields: object.fields.reduce((acc, field) => {
acc[field.standardId ?? ''] = field.id;
return acc; await this.seederService.seedCustomObjects(
}, {}), dataSourceMetadata.id,
}; workspaceId,
PETS_METADATA_SEEDS,
PETS_DATA_SEEDS,
);
return acc; await this.seederService.seedCustomObjects(
}, {}); dataSourceMetadata.id,
workspaceId,
SURVEY_RESULTS_METADATA_SEEDS,
SURVEY_RESULTS_DATA_SEEDS,
);
} catch (error) {
this.logger.error(error);
}
await this.typeORMService.disconnectFromDataSource(dataSourceMetadata.id);
}
async seedStandardObjectRecords(
workspaceDataSource: DataSource,
dataSourceMetadata: DataSourceEntity,
) {
await workspaceDataSource.transaction(
async (entityManager: EntityManager) => {
const { objectMetadataStandardIdToIdMap } =
await this.objectMetadataService.getObjectMetadataStandardIdToIdMap(
dataSourceMetadata.workspaceId,
);
const isMessageThreadSubscriberEnabled = const isMessageThreadSubscriberEnabled =
await this.featureFlagService.isFeatureEnabled( await this.featureFlagService.isFeatureEnabled(
FeatureFlagKey.IsMessageThreadSubscriberEnabled, FeatureFlagKey.IsMessageThreadSubscriberEnabled,
workspaceId, dataSourceMetadata.workspaceId,
); );
const isWorkflowEnabled = const isWorkflowEnabled =
await this.featureFlagService.isFeatureEnabled( await this.featureFlagService.isFeatureEnabled(
FeatureFlagKey.IsWorkflowEnabled, FeatureFlagKey.IsWorkflowEnabled,
workspaceId, dataSourceMetadata.workspaceId,
); );
await this.seedCompanyCustomFields( await seedCompanies(entityManager, dataSourceMetadata.schema);
objectMetadataMap[STANDARD_OBJECT_IDS.company], await seedPeople(entityManager, dataSourceMetadata.schema);
workspaceId, await seedOpportunity(entityManager, dataSourceMetadata.schema);
await seedWorkspaceMember(
entityManager,
dataSourceMetadata.schema,
dataSourceMetadata.workspaceId,
); );
await this.seedPeopleCustomFields(
objectMetadataMap[STANDARD_OBJECT_IDS.person],
workspaceId,
);
await this.seedCustomObjects(workspaceId, dataSourceMetadata.id);
await workspaceDataSource.transaction( if (dataSourceMetadata.workspaceId === SEED_APPLE_WORKSPACE_ID) {
async (entityManager: EntityManager) => { await seedMessageThread(entityManager, dataSourceMetadata.schema);
await seedCompanies(entityManager, dataSourceMetadata.schema); await seedConnectedAccount(entityManager, dataSourceMetadata.schema);
await seedPeople(entityManager, dataSourceMetadata.schema);
await seedOpportunity(entityManager, dataSourceMetadata.schema);
await seedWorkspaceMember(
entityManager,
dataSourceMetadata.schema,
workspaceId,
);
if (workspaceId === SEED_APPLE_WORKSPACE_ID) { if (isMessageThreadSubscriberEnabled) {
await seedMessageThread(entityManager, dataSourceMetadata.schema); await seedMessageThreadSubscribers(
await seedConnectedAccount(
entityManager,
dataSourceMetadata.schema,
);
if (isMessageThreadSubscriberEnabled) {
await seedMessageThreadSubscribers(
entityManager,
dataSourceMetadata.schema,
);
}
await seedMessage(entityManager, dataSourceMetadata.schema);
await seedMessageChannel(
entityManager,
dataSourceMetadata.schema,
);
await seedMessageChannelMessageAssociation(
entityManager,
dataSourceMetadata.schema,
);
await seedMessageParticipant(
entityManager,
dataSourceMetadata.schema,
);
await seedCalendarEvents(
entityManager,
dataSourceMetadata.schema,
);
await seedCalendarChannels(
entityManager,
dataSourceMetadata.schema,
);
await seedCalendarChannelEventAssociations(
entityManager,
dataSourceMetadata.schema,
);
await seedCalendarEventParticipants(
entityManager,
dataSourceMetadata.schema,
);
}
const viewDefinitionsWithId = await seedViewWithDemoData(
entityManager,
dataSourceMetadata.schema,
objectMetadataMap,
isWorkflowEnabled,
);
await seedWorkspaceFavorites(
viewDefinitionsWithId
.filter(
(view) =>
view.key === 'INDEX' &&
shouldSeedWorkspaceFavorite(
view.objectMetadataId,
objectMetadataMap,
),
)
.map((view) => view.id),
entityManager, entityManager,
dataSourceMetadata.schema, dataSourceMetadata.schema,
); );
}, }
);
} catch (error) {
this.logger.error(error);
}
await this.typeORMService.disconnectFromDataSource(dataSourceMetadata.id); await seedMessage(entityManager, dataSourceMetadata.schema);
} await seedMessageChannel(entityManager, dataSourceMetadata.schema);
await seedMessageChannelMessageAssociation(
entityManager,
dataSourceMetadata.schema,
);
await seedMessageParticipant(
entityManager,
dataSourceMetadata.schema,
);
await seedCalendarEvents(entityManager, dataSourceMetadata.schema);
await seedCalendarChannels(entityManager, dataSourceMetadata.schema);
await seedCalendarChannelEventAssociations(
entityManager,
dataSourceMetadata.schema,
);
await seedCalendarEventParticipants(
entityManager,
dataSourceMetadata.schema,
);
}
const viewDefinitionsWithId = await seedViewWithDemoData(
entityManager,
dataSourceMetadata.schema,
objectMetadataStandardIdToIdMap,
isWorkflowEnabled,
);
await seedWorkspaceFavorites(
viewDefinitionsWithId
.filter(
(view) =>
view.key === 'INDEX' &&
shouldSeedWorkspaceFavorite(
view.objectMetadataId,
objectMetadataStandardIdToIdMap,
),
)
.map((view) => view.id),
entityManager,
dataSourceMetadata.schema,
);
},
);
} }
async seedCompanyCustomFields( async seedCompanyCustomFields(
companyObjectMetadata: ObjectMetadataEntity, companyObjectMetadataId: string,
workspaceId: string, workspaceId: string,
) { ) {
const companyObjectMetadataId = companyObjectMetadata?.id;
if (!companyObjectMetadataId) { if (!companyObjectMetadataId) {
throw new Error( throw new Error(
`Company object metadata not found for workspace ${workspaceId}, can't seed custom fields`, `Company object metadata not found for workspace ${workspaceId}, can't seed custom fields`,
@ -269,11 +287,9 @@ export class DataSeedWorkspaceCommand extends CommandRunner {
} }
async seedPeopleCustomFields( async seedPeopleCustomFields(
personObjectMetadata: ObjectMetadataEntity, personObjectMetadataId: string,
workspaceId: string, workspaceId: string,
) { ) {
const personObjectMetadataId = personObjectMetadata?.id;
if (!personObjectMetadataId) { if (!personObjectMetadataId) {
throw new Error( throw new Error(
`Person object metadata not found for workspace ${workspaceId}, can't seed custom fields`, `Person object metadata not found for workspace ${workspaceId}, can't seed custom fields`,
@ -292,15 +308,4 @@ export class DataSeedWorkspaceCommand extends CommandRunner {
}); });
} }
} }
async seedCustomObjects(workspaceId: string, dataSourceId: string) {
const devSeedCustomObjects = getDevSeedCustomObjects(
workspaceId,
dataSourceId,
);
for (const customObject of devSeedCustomObjects) {
await this.objectMetadataService.createOne(customObject);
}
}
} }

View File

@ -23,6 +23,7 @@ import { FieldMetadataModule } from 'src/engine/metadata-modules/field-metadata/
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module'; import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module';
import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module';
import { SeederModule } from 'src/engine/seeder/seeder.module';
import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module';
import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module';
import { WorkspaceManagerModule } from 'src/engine/workspace-manager/workspace-manager.module'; import { WorkspaceManagerModule } from 'src/engine/workspace-manager/workspace-manager.module';
@ -30,6 +31,7 @@ import { WorkspaceSyncMetadataModule } from 'src/engine/workspace-manager/worksp
@Module({ @Module({
imports: [ imports: [
SeederModule,
WorkspaceManagerModule, WorkspaceManagerModule,
DataSourceModule, DataSourceModule,
TypeORMModule, TypeORMModule,

View File

@ -1,6 +1,6 @@
import { EntityManager } from 'typeorm'; import { EntityManager } from 'typeorm';
import { DEV_SEED_PERSON_IDS } from 'src/database/typeorm-seeds/workspace/people'; import { DEV_SEED_PERSON_IDS } from 'src/database/typeorm-seeds/workspace/seedPeople';
import { DEV_SEED_WORKSPACE_MEMBER_IDS } from 'src/database/typeorm-seeds/workspace/workspace-members'; import { DEV_SEED_WORKSPACE_MEMBER_IDS } from 'src/database/typeorm-seeds/workspace/workspace-members';
import { CalendarEventParticipantResponseStatus } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity'; import { CalendarEventParticipantResponseStatus } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity';

View File

@ -264,8 +264,8 @@ export const seedCompanies = async (
tagline: "Algolia's tagline", tagline: "Algolia's tagline",
workPolicy: ['ON_SITE'], workPolicy: ['ON_SITE'],
createdBySource: 'MANUAL', createdBySource: 'MANUAL',
createdByWorkspaceMemberId: null, createdByWorkspaceMemberId: DEV_SEED_WORKSPACE_MEMBER_IDS.TIM,
createdByName: '', createdByName: 'Tim Apple',
}, },
]) ])
.execute(); .execute();

View File

@ -1,8 +1,8 @@
import { EntityManager } from 'typeorm'; import { EntityManager } from 'typeorm';
import { DEV_SEED_WORKSPACE_MEMBER_IDS } from 'src/database/typeorm-seeds/workspace/workspace-members';
import { DEV_SEED_PERSON_IDS } from 'src/database/typeorm-seeds/workspace/people';
import { DEV_SEED_MESSAGE_IDS } from 'src/database/typeorm-seeds/workspace/messages'; import { DEV_SEED_MESSAGE_IDS } from 'src/database/typeorm-seeds/workspace/messages';
import { DEV_SEED_PERSON_IDS } from 'src/database/typeorm-seeds/workspace/seedPeople';
import { DEV_SEED_WORKSPACE_MEMBER_IDS } from 'src/database/typeorm-seeds/workspace/workspace-members';
const tableName = 'messageParticipant'; const tableName = 'messageParticipant';

View File

@ -1,7 +1,7 @@
import { EntityManager } from 'typeorm'; import { EntityManager } from 'typeorm';
import { DEV_SEED_COMPANY_IDS } from 'src/database/typeorm-seeds/workspace/companies'; import { DEV_SEED_COMPANY_IDS } from 'src/database/typeorm-seeds/workspace/companies';
import { DEV_SEED_PERSON_IDS } from 'src/database/typeorm-seeds/workspace/people'; import { DEV_SEED_PERSON_IDS } from 'src/database/typeorm-seeds/workspace/seedPeople';
import { DEV_SEED_WORKSPACE_MEMBER_IDS } from 'src/database/typeorm-seeds/workspace/workspace-members'; import { DEV_SEED_WORKSPACE_MEMBER_IDS } from 'src/database/typeorm-seeds/workspace/workspace-members';
const tableName = 'opportunity'; const tableName = 'opportunity';

View File

@ -317,8 +317,8 @@ export const seedPeople = async (
whatsappPrimaryPhoneCallingCode: '+33', whatsappPrimaryPhoneCallingCode: '+33',
whatsappPrimaryPhoneNumber: '788901235', whatsappPrimaryPhoneNumber: '788901235',
createdBySource: 'MANUAL', createdBySource: 'MANUAL',
createdByWorkspaceMemberId: null, createdByWorkspaceMemberId: DEV_SEED_WORKSPACE_MEMBER_IDS.TIM,
createdByName: '', createdByName: 'Tim Apple',
}, },
]) ])
.execute(); .execute();

View File

@ -147,6 +147,21 @@ export class DomainManagerService {
private async getDefaultWorkspace() { private async getDefaultWorkspace() {
if (!this.environmentService.get('IS_MULTIWORKSPACE_ENABLED')) { if (!this.environmentService.get('IS_MULTIWORKSPACE_ENABLED')) {
const defaultWorkspaceSubDomain =
this.environmentService.get('DEFAULT_SUBDOMAIN');
if (isDefined(defaultWorkspaceSubDomain)) {
const foundWorkspaceForDefaultSubDomain =
await this.workspaceRepository.findOne({
where: { subdomain: defaultWorkspaceSubDomain },
relations: ['workspaceSSOIdentityProviders'],
});
if (isDefined(foundWorkspaceForDefaultSubDomain)) {
return foundWorkspaceForDefaultSubDomain;
}
}
const workspaces = await this.workspaceRepository.find({ const workspaces = await this.workspaceRepository.find({
order: { order: {
createdAt: 'DESC', createdAt: 'DESC',

View File

@ -0,0 +1,8 @@
export type ObjectMetadataStandardIdToIdMap = {
[objectMetadataStandardId: string]: {
id: string;
fields: {
[fieldMetadataStandardId: string]: string;
};
};
};

View File

@ -8,6 +8,8 @@ import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm';
import { isDefined } from 'class-validator'; import { isDefined } from 'class-validator';
import { FindManyOptions, FindOneOptions, In, Not, Repository } from 'typeorm'; import { FindManyOptions, FindOneOptions, In, Not, Repository } from 'typeorm';
import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { IndexMetadataService } from 'src/engine/metadata-modules/index-metadata/index-metadata.service'; import { IndexMetadataService } from 'src/engine/metadata-modules/index-metadata/index-metadata.service';
@ -411,6 +413,26 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
); );
} }
public async getObjectMetadataStandardIdToIdMap(workspaceId: string) {
const objectMetadata = await this.findManyWithinWorkspace(workspaceId);
const objectMetadataStandardIdToIdMap =
objectMetadata.reduce<ObjectMetadataStandardIdToIdMap>((acc, object) => {
acc[object.standardId ?? ''] = {
id: object.id,
fields: object.fields.reduce((acc, field) => {
acc[field.standardId ?? ''] = field.id;
return acc;
}, {}),
};
return acc;
}, {});
return { objectMetadataStandardIdToIdMap };
}
private async handleObjectNameAndLabelUpdates( private async handleObjectNameAndLabelUpdates(
existingObjectMetadata: ObjectMetadataEntity, existingObjectMetadata: ObjectMetadataEntity,
objectMetadataForUpdate: ObjectMetadataEntity, objectMetadataForUpdate: ObjectMetadataEntity,

View File

@ -22,6 +22,24 @@ export const PETS_METADATA_SEEDS: ObjectMetadataSeed = {
{ label: 'Hamster', value: 'hamster', position: 5, color: 'orange' }, { label: 'Hamster', value: 'hamster', position: 5, color: 'orange' },
], ],
}, },
{
type: FieldMetadataType.MULTI_SELECT,
label: 'Traits',
name: 'traits',
options: [
{ label: 'Playful', value: 'playful', position: 0, color: 'blue' },
{ label: 'Friendly', value: 'friendly', position: 1, color: 'red' },
{
label: 'Protective',
value: 'protective',
position: 2,
color: 'green',
},
{ label: 'Shy', value: 'shy', position: 3, color: 'yellow' },
{ label: 'Brave', value: 'brave', position: 4, color: 'purple' },
{ label: 'Curious', value: 'curious', position: 5, color: 'orange' },
],
},
{ {
type: FieldMetadataType.TEXT, type: FieldMetadataType.TEXT,
label: 'Comments', label: 'Comments',
@ -37,5 +55,60 @@ export const PETS_METADATA_SEEDS: ObjectMetadataSeed = {
label: 'Location', label: 'Location',
name: 'location', name: 'location',
}, },
{
type: FieldMetadataType.PHONES,
label: 'Vet phone',
name: 'vetPhone',
},
{
type: FieldMetadataType.EMAILS,
label: 'Vet email',
name: 'vetEmail',
},
{
type: FieldMetadataType.DATE,
label: 'Birthday',
name: 'birthday',
},
{
type: FieldMetadataType.BOOLEAN,
label: 'Is good with kids',
name: 'isGoodWithKids',
},
{
type: FieldMetadataType.LINKS,
label: 'Pictures',
name: 'pictures',
},
{
type: FieldMetadataType.CURRENCY,
label: 'Average cost of kibble per month',
name: 'averageCostOfKibblePerMonth',
},
{
type: FieldMetadataType.FULL_NAME,
label: 'Makes its owner think of',
name: 'makesOwnerThinkOf',
},
{
type: FieldMetadataType.RATING,
label: 'Sound swag (bark style, meow style, etc.)',
name: 'soundSwag',
},
{
type: FieldMetadataType.RICH_TEXT,
label: 'Bio',
name: 'bio',
},
{
type: FieldMetadataType.ARRAY,
label: 'Interesting facts',
name: 'interestingFacts',
},
{
type: FieldMetadataType.RAW_JSON,
label: 'Extra data',
name: 'extraData',
},
], ],
}; };

View File

@ -2,11 +2,14 @@ import { Injectable } from '@nestjs/common';
import { ObjectMetadataSeed } from 'src/engine/seeder/interfaces/object-metadata-seed'; import { ObjectMetadataSeed } from 'src/engine/seeder/interfaces/object-metadata-seed';
import { DEV_SEED_WORKSPACE_MEMBER_IDS } from 'src/database/typeorm-seeds/workspace/workspace-members';
import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types';
import { CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { FieldMetadataService } from 'src/engine/metadata-modules/field-metadata/field-metadata.service'; import { FieldMetadataService } from 'src/engine/metadata-modules/field-metadata/field-metadata.service';
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service'; import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { computeTableName } from 'src/engine/utils/compute-table-name.util';
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
import { capitalize } from 'src/utils/capitalize'; import { capitalize } from 'src/utils/capitalize';
import { isDefined } from 'src/utils/is-defined'; import { isDefined } from 'src/utils/is-defined';
@ -22,11 +25,11 @@ export class SeederService {
public async seedCustomObjects( public async seedCustomObjects(
dataSourceId: string, dataSourceId: string,
workspaceId: string, workspaceId: string,
metadataSeeds: ObjectMetadataSeed, objectMetadataSeed: ObjectMetadataSeed,
dataSeeds: Record<string, any>[], objectRecordSeeds: Record<string, any>[],
): Promise<void> { ): Promise<void> {
const createdObjectMetadata = await this.objectMetadataService.createOne({ const createdObjectMetadata = await this.objectMetadataService.createOne({
...metadataSeeds, ...objectMetadataSeed,
dataSourceId, dataSourceId,
workspaceId, workspaceId,
}); });
@ -35,9 +38,9 @@ export class SeederService {
throw new Error("Object metadata couldn't be created"); throw new Error("Object metadata couldn't be created");
} }
for (const customField of metadataSeeds.fields) { for (const fieldMetadataSeed of objectMetadataSeed.fields) {
await this.fieldMetadataService.createOne({ await this.fieldMetadataService.createOne({
...customField, ...fieldMetadataSeed,
objectMetadataId: createdObjectMetadata.id, objectMetadataId: createdObjectMetadata.id,
workspaceId, workspaceId,
}); });
@ -45,7 +48,7 @@ export class SeederService {
const objectMetadataAfterFieldCreation = const objectMetadataAfterFieldCreation =
await this.objectMetadataService.findOneWithinWorkspace(workspaceId, { await this.objectMetadataService.findOneWithinWorkspace(workspaceId, {
where: { nameSingular: metadataSeeds.nameSingular }, where: { nameSingular: objectMetadataSeed.nameSingular },
}); });
if (!objectMetadataAfterFieldCreation) { if (!objectMetadataAfterFieldCreation) {
@ -64,98 +67,163 @@ export class SeederService {
const entityManager = workspaceDataSource.createEntityManager(); const entityManager = workspaceDataSource.createEntityManager();
const filteredFields = metadataSeeds.fields.filter((field) => const filteredFieldMetadataSeeds = objectMetadataSeed.fields.filter(
objectMetadataAfterFieldCreation.fields.some( (field) =>
(f) => f.name === field.name || f.name === `name`, objectMetadataAfterFieldCreation.fields.some(
), (f) => f.name === field.name || f.name === `name`,
),
); );
if (filteredFields.length === 0) { if (filteredFieldMetadataSeeds.length === 0) {
throw new Error('No fields found for seeding, check metadata'); throw new Error('No fields found for seeding, check metadata file');
} }
filteredFields.unshift({ this.addNameFieldToFieldMetadataSeeds(filteredFieldMetadataSeeds);
name: 'name',
type: FieldMetadataType.TEXT,
label: 'Name',
});
const fieldMetadataMap = filteredFields const objectRecordSeedsAsSQLFlattenedSeeds = objectRecordSeeds.map(
.map((field) => { (recordSeed) => {
if (isCompositeFieldMetadataType(field.type)) { const objectRecordSeedsAsSQLFlattenedSeeds = {};
const compositeFieldTypeDefinition = compositeTypeDefinitions.get(
field.type,
);
if (!isDefined(compositeFieldTypeDefinition)) { for (const field of filteredFieldMetadataSeeds) {
throw new Error( if (isCompositeFieldMetadataType(field.type)) {
`Composite field type definition not found for ${field.type}`, const compositeFieldTypeDefinition = compositeTypeDefinitions.get(
field.type,
); );
}
const fieldNames = compositeFieldTypeDefinition.properties?.map( if (!isDefined(compositeFieldTypeDefinition)) {
(property) => property.name, throw new Error(
); `Composite field type definition not found for ${field.type}`,
);
}
return ( const fieldNames = compositeFieldTypeDefinition.properties
fieldNames?.map( ?.map((property) => property.name)
(subFieldName: string) => .filter(isDefined);
`${field.name}${capitalize(subFieldName)}`,
) ?? []
);
} else {
return field.name;
}
})
.flat()
.filter(isDefined);
const flattenedSeeds = dataSeeds.map((seed) => { for (const subFieldName of fieldNames) {
const flattenedSeed = {}; const subFieldValue = recordSeed?.[field.name]?.[subFieldName];
for (const field of filteredFields) { const subFieldValueAsSQLValue =
if (isCompositeFieldMetadataType(field.type)) { this.turnCompositeSubFieldValueAsSQLValue(
const compositeFieldTypeDefinition = compositeTypeDefinitions.get( field.type,
field.type, subFieldName,
); subFieldValue,
);
if (!isDefined(compositeFieldTypeDefinition)) { const subFieldNameAsSQLColumnName = `${field.name}${capitalize(subFieldName)}`;
throw new Error(
`Composite field type definition not found for ${field.type}`, objectRecordSeedsAsSQLFlattenedSeeds[
subFieldNameAsSQLColumnName
] = subFieldValueAsSQLValue;
}
} else {
const fieldValue = recordSeed[field.name];
const fieldValueAsSQLValue = this.turnFieldValueAsSQLValue(
field.type,
fieldValue,
); );
}
const fieldNames = compositeFieldTypeDefinition.properties objectRecordSeedsAsSQLFlattenedSeeds[field.name] =
?.map((property) => property.name) fieldValueAsSQLValue;
.filter(isDefined);
for (const subFieldName of fieldNames) {
flattenedSeed[`${field.name}${capitalize(subFieldName)}`] =
seed?.[field.name]?.[subFieldName];
} }
} else {
flattenedSeed[field.name] = seed[field.name];
} }
}
return flattenedSeed; return objectRecordSeedsAsSQLFlattenedSeeds;
}); },
);
if (!(objectRecordSeedsAsSQLFlattenedSeeds.length > 0)) {
return;
}
const fieldMetadataNamesAsFlattenedSQLColumnNames = Object.keys(
objectRecordSeedsAsSQLFlattenedSeeds[0],
);
const sqlColumnNames = [
...fieldMetadataNamesAsFlattenedSQLColumnNames,
'position',
'createdBySource',
'createdByWorkspaceMemberId',
'createdByName',
];
const sqlValues = objectRecordSeedsAsSQLFlattenedSeeds.map(
(flattenedSeed, index) => ({
...flattenedSeed,
position: index,
createdBySource: 'MANUAL',
createdByWorkspaceMemberId: DEV_SEED_WORKSPACE_MEMBER_IDS.TIM,
createdByName: 'Tim Apple',
}),
);
await entityManager await entityManager
.createQueryBuilder() .createQueryBuilder()
.insert() .insert()
.into(`${schemaName}._${objectMetadataAfterFieldCreation.nameSingular}`, [ .into(
...fieldMetadataMap, `${schemaName}.${computeTableName(objectMetadataAfterFieldCreation.nameSingular, true)}`,
'position', sqlColumnNames,
])
.orIgnore()
.values(
flattenedSeeds.map((flattenedSeed, index) => ({
...flattenedSeed,
position: index,
})),
) )
.orIgnore()
.values(sqlValues)
.returning('*') .returning('*')
.execute(); .execute();
} }
private addNameFieldToFieldMetadataSeeds(
arrayOfMetadataFields: Pick<CreateFieldInput, 'name' | 'type' | 'label'>[],
) {
arrayOfMetadataFields.unshift({
name: 'name',
type: FieldMetadataType.TEXT,
label: 'Name',
});
}
private turnCompositeSubFieldValueAsSQLValue(
fieldType: FieldMetadataType,
subFieldName: string,
subFieldValue: any,
) {
if (!isCompositeFieldMetadataType(fieldType)) {
throw new Error(
`${subFieldName} is not a sub field of a composite field type.`,
);
}
const compositeFieldTypeDefinition =
compositeTypeDefinitions.get(fieldType);
const compositeSubFieldType =
compositeFieldTypeDefinition?.properties.find(
(property) => property.name === subFieldName,
)?.type ?? null;
if (!isDefined(compositeSubFieldType)) {
throw new Error(
`Cannot find ${subFieldName} in properties of composite type ${fieldType}.`,
);
}
return this.turnFieldValueAsSQLValue(compositeSubFieldType, subFieldValue);
}
private turnFieldValueAsSQLValue(
fieldType: FieldMetadataType,
fieldValue: any,
) {
if (fieldType === FieldMetadataType.RAW_JSON) {
try {
return JSON.stringify(fieldValue);
} catch (error) {
throw new Error(
`Error while trying to turn field value as stringified JSON : ${error.message}`,
);
}
}
return fieldValue;
}
} }

View File

@ -1,5 +1,5 @@
export const customNamePrefix = '_'; export const customNamePrefix = '_';
export const computeTableName = (name: string, isCustom: boolean) => { export const computeTableName = (nameSingular: string, isCustom: boolean) => {
return isCustom ? `${customNamePrefix}${name}` : name; return isCustom ? `${customNamePrefix}${nameSingular}` : nameSingular;
}; };

View File

@ -1,8 +1,9 @@
import { EntityManager } from 'typeorm'; import { EntityManager } from 'typeorm';
import { v4 } from 'uuid'; import { v4 } from 'uuid';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { companiesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/companies-all.view';
import { seedCompaniesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/companies-all.view';
import { notesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/notes-all.view'; import { notesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/notes-all.view';
import { opportunitiesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/opportunities-all.view'; import { opportunitiesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/opportunities-all.view';
import { opportunitiesByStageView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/opportunity-by-stage.view'; import { opportunitiesByStageView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/opportunity-by-stage.view';
@ -16,22 +17,22 @@ import { workflowsAllView } from 'src/engine/workspace-manager/standard-objects-
export const seedViewWithDemoData = async ( export const seedViewWithDemoData = async (
entityManager: EntityManager, entityManager: EntityManager,
schemaName: string, schemaName: string,
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
isWorkflowEnabled: boolean, isWorkflowEnabled: boolean,
) => { ) => {
const viewDefinitions = [ const viewDefinitions = [
companiesAllView(objectMetadataMap), seedCompaniesAllView(objectMetadataStandardIdToIdMap),
peopleAllView(objectMetadataMap), peopleAllView(objectMetadataStandardIdToIdMap),
opportunitiesAllView(objectMetadataMap), opportunitiesAllView(objectMetadataStandardIdToIdMap),
opportunitiesByStageView(objectMetadataMap), opportunitiesByStageView(objectMetadataStandardIdToIdMap),
notesAllView(objectMetadataMap), notesAllView(objectMetadataStandardIdToIdMap),
tasksAllView(objectMetadataMap), tasksAllView(objectMetadataStandardIdToIdMap),
tasksByStatusView(objectMetadataMap), tasksByStatusView(objectMetadataStandardIdToIdMap),
...(isWorkflowEnabled ...(isWorkflowEnabled
? [ ? [
workflowsAllView(objectMetadataMap), workflowsAllView(objectMetadataStandardIdToIdMap),
workflowVersionsAllView(objectMetadataMap), workflowVersionsAllView(objectMetadataStandardIdToIdMap),
workflowRunsAllView(objectMetadataMap), workflowRunsAllView(objectMetadataStandardIdToIdMap),
] ]
: []), : []),
]; ];

View File

@ -1,16 +1,18 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { import {
BASE_OBJECT_STANDARD_FIELD_IDS, BASE_OBJECT_STANDARD_FIELD_IDS,
COMPANY_STANDARD_FIELD_IDS, COMPANY_STANDARD_FIELD_IDS,
} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const companiesAllView = ( export const seedCompaniesAllView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'All', name: 'All',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.company].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].id,
type: 'table', type: 'table',
key: 'INDEX', key: 'INDEX',
position: 0, position: 0,
@ -20,7 +22,7 @@ export const companiesAllView = (
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.company].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].fields[
COMPANY_STANDARD_FIELD_IDS.name COMPANY_STANDARD_FIELD_IDS.name
], ],
position: 0, position: 0,
@ -29,7 +31,7 @@ export const companiesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.company].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].fields[
COMPANY_STANDARD_FIELD_IDS.domainName COMPANY_STANDARD_FIELD_IDS.domainName
], ],
position: 1, position: 1,
@ -38,7 +40,7 @@ export const companiesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.company].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].fields[
COMPANY_STANDARD_FIELD_IDS.createdBy COMPANY_STANDARD_FIELD_IDS.createdBy
], ],
position: 2, position: 2,
@ -47,7 +49,7 @@ export const companiesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.company].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].fields[
COMPANY_STANDARD_FIELD_IDS.accountOwner COMPANY_STANDARD_FIELD_IDS.accountOwner
], ],
position: 3, position: 3,
@ -56,7 +58,7 @@ export const companiesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.company].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].fields[
BASE_OBJECT_STANDARD_FIELD_IDS.createdAt BASE_OBJECT_STANDARD_FIELD_IDS.createdAt
], ],
position: 4, position: 4,
@ -65,7 +67,7 @@ export const companiesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.company].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].fields[
COMPANY_STANDARD_FIELD_IDS.employees COMPANY_STANDARD_FIELD_IDS.employees
], ],
position: 5, position: 5,
@ -74,7 +76,7 @@ export const companiesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.company].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].fields[
COMPANY_STANDARD_FIELD_IDS.linkedinLink COMPANY_STANDARD_FIELD_IDS.linkedinLink
], ],
position: 6, position: 6,
@ -83,7 +85,7 @@ export const companiesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.company].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.company].fields[
COMPANY_STANDARD_FIELD_IDS.address COMPANY_STANDARD_FIELD_IDS.address
], ],
position: 7, position: 7,

View File

@ -1,4 +1,5 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { import {
BASE_OBJECT_STANDARD_FIELD_IDS, BASE_OBJECT_STANDARD_FIELD_IDS,
NOTE_STANDARD_FIELD_IDS, NOTE_STANDARD_FIELD_IDS,
@ -6,11 +7,12 @@ import {
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const notesAllView = ( export const notesAllView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'All Notes', name: 'All Notes',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.note].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.note].id,
type: 'table', type: 'table',
key: 'INDEX', key: 'INDEX',
position: 0, position: 0,
@ -20,7 +22,7 @@ export const notesAllView = (
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.note].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.note].fields[
NOTE_STANDARD_FIELD_IDS.title NOTE_STANDARD_FIELD_IDS.title
], ],
position: 0, position: 0,
@ -29,7 +31,7 @@ export const notesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.note].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.note].fields[
NOTE_STANDARD_FIELD_IDS.noteTargets NOTE_STANDARD_FIELD_IDS.noteTargets
], ],
position: 1, position: 1,
@ -38,7 +40,7 @@ export const notesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.note].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.note].fields[
NOTE_STANDARD_FIELD_IDS.body NOTE_STANDARD_FIELD_IDS.body
], ],
position: 2, position: 2,
@ -47,7 +49,7 @@ export const notesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.note].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.note].fields[
NOTE_STANDARD_FIELD_IDS.createdBy NOTE_STANDARD_FIELD_IDS.createdBy
], ],
position: 3, position: 3,
@ -56,7 +58,7 @@ export const notesAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.note].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.note].fields[
BASE_OBJECT_STANDARD_FIELD_IDS.createdAt BASE_OBJECT_STANDARD_FIELD_IDS.createdAt
], ],
position: 4, position: 4,

View File

@ -1,13 +1,15 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { OPPORTUNITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { OPPORTUNITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const opportunitiesAllView = ( export const opportunitiesAllView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'All', name: 'All',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity].id,
type: 'table', type: 'table',
key: 'INDEX', key: 'INDEX',
position: 0, position: 0,
@ -17,54 +19,48 @@ export const opportunitiesAllView = (
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.name .fields[OPPORTUNITY_STANDARD_FIELD_IDS.name],
],
position: 0, position: 0,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.amount .fields[OPPORTUNITY_STANDARD_FIELD_IDS.amount],
],
position: 1, position: 1,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.createdBy .fields[OPPORTUNITY_STANDARD_FIELD_IDS.createdBy],
],
position: 2, position: 2,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.closeDate .fields[OPPORTUNITY_STANDARD_FIELD_IDS.closeDate],
],
position: 3, position: 3,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.company .fields[OPPORTUNITY_STANDARD_FIELD_IDS.company],
],
position: 4, position: 4,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.pointOfContact .fields[OPPORTUNITY_STANDARD_FIELD_IDS.pointOfContact],
],
position: 5, position: 5,
isVisible: true, isVisible: true,
size: 150, size: 150,

View File

@ -1,73 +1,69 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { OPPORTUNITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { OPPORTUNITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const opportunitiesByStageView = ( export const opportunitiesByStageView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'By Stage', name: 'By Stage',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity].id,
type: 'kanban', type: 'kanban',
key: null, key: null,
position: 1, position: 1,
icon: 'IconLayoutKanban', icon: 'IconLayoutKanban',
kanbanFieldMetadataId: kanbanFieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity].fields[
OPPORTUNITY_STANDARD_FIELD_IDS.stage OPPORTUNITY_STANDARD_FIELD_IDS.stage
], ],
filters: [], filters: [],
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.name .fields[OPPORTUNITY_STANDARD_FIELD_IDS.name],
],
position: 0, position: 0,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.amount .fields[OPPORTUNITY_STANDARD_FIELD_IDS.amount],
],
position: 1, position: 1,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.createdBy .fields[OPPORTUNITY_STANDARD_FIELD_IDS.createdBy],
],
position: 2, position: 2,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.closeDate .fields[OPPORTUNITY_STANDARD_FIELD_IDS.closeDate],
],
position: 3, position: 3,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.company .fields[OPPORTUNITY_STANDARD_FIELD_IDS.company],
],
position: 4, position: 4,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.pointOfContact .fields[OPPORTUNITY_STANDARD_FIELD_IDS.pointOfContact],
],
position: 5, position: 5,
isVisible: true, isVisible: true,
size: 150, size: 150,
@ -76,45 +72,40 @@ export const opportunitiesByStageView = (
groups: [ groups: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.stage .fields[OPPORTUNITY_STANDARD_FIELD_IDS.stage],
],
isVisible: true, isVisible: true,
fieldValue: 'NEW', fieldValue: 'NEW',
position: 0, position: 0,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.stage .fields[OPPORTUNITY_STANDARD_FIELD_IDS.stage],
],
isVisible: true, isVisible: true,
fieldValue: 'SCREENING', fieldValue: 'SCREENING',
position: 1, position: 1,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.stage .fields[OPPORTUNITY_STANDARD_FIELD_IDS.stage],
],
isVisible: true, isVisible: true,
fieldValue: 'MEETING', fieldValue: 'MEETING',
position: 2, position: 2,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.stage .fields[OPPORTUNITY_STANDARD_FIELD_IDS.stage],
],
isVisible: true, isVisible: true,
fieldValue: 'PROPOSAL', fieldValue: 'PROPOSAL',
position: 3, position: 3,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.opportunity].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.opportunity]
OPPORTUNITY_STANDARD_FIELD_IDS.stage .fields[OPPORTUNITY_STANDARD_FIELD_IDS.stage],
],
isVisible: true, isVisible: true,
fieldValue: 'CUSTOMER', fieldValue: 'CUSTOMER',
position: 4, position: 4,

View File

@ -1,4 +1,5 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { import {
BASE_OBJECT_STANDARD_FIELD_IDS, BASE_OBJECT_STANDARD_FIELD_IDS,
PERSON_STANDARD_FIELD_IDS, PERSON_STANDARD_FIELD_IDS,
@ -6,11 +7,12 @@ import {
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const peopleAllView = ( export const peopleAllView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'All', name: 'All',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.person].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].id,
type: 'table', type: 'table',
key: 'INDEX', key: 'INDEX',
position: 0, position: 0,
@ -20,7 +22,7 @@ export const peopleAllView = (
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
PERSON_STANDARD_FIELD_IDS.name PERSON_STANDARD_FIELD_IDS.name
], ],
position: 0, position: 0,
@ -29,7 +31,7 @@ export const peopleAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
PERSON_STANDARD_FIELD_IDS.emails PERSON_STANDARD_FIELD_IDS.emails
], ],
position: 1, position: 1,
@ -38,7 +40,7 @@ export const peopleAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
PERSON_STANDARD_FIELD_IDS.createdBy PERSON_STANDARD_FIELD_IDS.createdBy
], ],
position: 2, position: 2,
@ -47,7 +49,7 @@ export const peopleAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
PERSON_STANDARD_FIELD_IDS.company PERSON_STANDARD_FIELD_IDS.company
], ],
position: 3, position: 3,
@ -56,7 +58,7 @@ export const peopleAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
PERSON_STANDARD_FIELD_IDS.phones PERSON_STANDARD_FIELD_IDS.phones
], ],
position: 4, position: 4,
@ -65,7 +67,7 @@ export const peopleAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
BASE_OBJECT_STANDARD_FIELD_IDS.createdAt BASE_OBJECT_STANDARD_FIELD_IDS.createdAt
], ],
position: 5, position: 5,
@ -74,7 +76,7 @@ export const peopleAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
PERSON_STANDARD_FIELD_IDS.city PERSON_STANDARD_FIELD_IDS.city
], ],
position: 6, position: 6,
@ -83,7 +85,7 @@ export const peopleAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
PERSON_STANDARD_FIELD_IDS.jobTitle PERSON_STANDARD_FIELD_IDS.jobTitle
], ],
position: 7, position: 7,
@ -92,7 +94,7 @@ export const peopleAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
PERSON_STANDARD_FIELD_IDS.linkedinLink PERSON_STANDARD_FIELD_IDS.linkedinLink
], ],
position: 8, position: 8,
@ -101,7 +103,7 @@ export const peopleAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.person].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.person].fields[
PERSON_STANDARD_FIELD_IDS.xLink PERSON_STANDARD_FIELD_IDS.xLink
], ],
position: 9, position: 9,

View File

@ -1,4 +1,5 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { import {
BASE_OBJECT_STANDARD_FIELD_IDS, BASE_OBJECT_STANDARD_FIELD_IDS,
TASK_STANDARD_FIELD_IDS, TASK_STANDARD_FIELD_IDS,
@ -6,11 +7,12 @@ import {
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const tasksAllView = ( export const tasksAllView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'All Tasks', name: 'All Tasks',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.task].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].id,
type: 'table', type: 'table',
key: 'INDEX', key: 'INDEX',
position: 0, position: 0,
@ -30,7 +32,7 @@ export const tasksAllView = (
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.title TASK_STANDARD_FIELD_IDS.title
], ],
position: 0, position: 0,
@ -39,7 +41,7 @@ export const tasksAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.status TASK_STANDARD_FIELD_IDS.status
], ],
position: 2, position: 2,
@ -48,7 +50,7 @@ export const tasksAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.taskTargets TASK_STANDARD_FIELD_IDS.taskTargets
], ],
position: 3, position: 3,
@ -57,7 +59,7 @@ export const tasksAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.createdBy TASK_STANDARD_FIELD_IDS.createdBy
], ],
position: 4, position: 4,
@ -66,7 +68,7 @@ export const tasksAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.dueAt TASK_STANDARD_FIELD_IDS.dueAt
], ],
position: 5, position: 5,
@ -75,7 +77,7 @@ export const tasksAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.assignee TASK_STANDARD_FIELD_IDS.assignee
], ],
position: 6, position: 6,
@ -84,7 +86,7 @@ export const tasksAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.body TASK_STANDARD_FIELD_IDS.body
], ],
position: 7, position: 7,
@ -93,7 +95,7 @@ export const tasksAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
BASE_OBJECT_STANDARD_FIELD_IDS.createdAt BASE_OBJECT_STANDARD_FIELD_IDS.createdAt
], ],
position: 8, position: 8,

View File

@ -1,4 +1,5 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { import {
BASE_OBJECT_STANDARD_FIELD_IDS, BASE_OBJECT_STANDARD_FIELD_IDS,
TASK_STANDARD_FIELD_IDS, TASK_STANDARD_FIELD_IDS,
@ -6,17 +7,18 @@ import {
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const tasksByStatusView = ( export const tasksByStatusView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'By status', name: 'By status',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.task].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].id,
type: 'kanban', type: 'kanban',
key: null, key: null,
position: 0, position: 0,
icon: 'IconLayoutKanban', icon: 'IconLayoutKanban',
kanbanFieldMetadataId: kanbanFieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.status TASK_STANDARD_FIELD_IDS.status
], ],
filters: [] /* [ filters: [] /* [
@ -33,7 +35,7 @@ export const tasksByStatusView = (
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.title TASK_STANDARD_FIELD_IDS.title
], ],
position: 0, position: 0,
@ -42,7 +44,7 @@ export const tasksByStatusView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.status TASK_STANDARD_FIELD_IDS.status
], ],
position: 2, position: 2,
@ -51,7 +53,7 @@ export const tasksByStatusView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.dueAt TASK_STANDARD_FIELD_IDS.dueAt
], ],
position: 3, position: 3,
@ -60,7 +62,7 @@ export const tasksByStatusView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.assignee TASK_STANDARD_FIELD_IDS.assignee
], ],
position: 4, position: 4,
@ -69,7 +71,7 @@ export const tasksByStatusView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
BASE_OBJECT_STANDARD_FIELD_IDS.createdAt BASE_OBJECT_STANDARD_FIELD_IDS.createdAt
], ],
position: 6, position: 6,
@ -92,7 +94,7 @@ export const tasksByStatusView = (
groups: [ groups: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.status TASK_STANDARD_FIELD_IDS.status
], ],
isVisible: true, isVisible: true,
@ -101,7 +103,7 @@ export const tasksByStatusView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.status TASK_STANDARD_FIELD_IDS.status
], ],
isVisible: true, isVisible: true,
@ -110,7 +112,7 @@ export const tasksByStatusView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[
TASK_STANDARD_FIELD_IDS.status TASK_STANDARD_FIELD_IDS.status
], ],
isVisible: true, isVisible: true,

View File

@ -1,13 +1,15 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { WORKFLOW_RUN_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { WORKFLOW_RUN_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const workflowRunsAllView = ( export const workflowRunsAllView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'All Workflow Runs', name: 'All Workflow Runs',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.workflowRun].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowRun].id,
type: 'table', type: 'table',
key: 'INDEX', key: 'INDEX',
position: 0, position: 0,
@ -17,54 +19,48 @@ export const workflowRunsAllView = (
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowRun].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowRun]
WORKFLOW_RUN_STANDARD_FIELD_IDS.name .fields[WORKFLOW_RUN_STANDARD_FIELD_IDS.name],
],
position: 0, position: 0,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowRun].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowRun]
WORKFLOW_RUN_STANDARD_FIELD_IDS.workflow .fields[WORKFLOW_RUN_STANDARD_FIELD_IDS.workflow],
],
position: 1, position: 1,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowRun].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowRun]
WORKFLOW_RUN_STANDARD_FIELD_IDS.status .fields[WORKFLOW_RUN_STANDARD_FIELD_IDS.status],
],
position: 2, position: 2,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowRun].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowRun]
WORKFLOW_RUN_STANDARD_FIELD_IDS.startedAt .fields[WORKFLOW_RUN_STANDARD_FIELD_IDS.startedAt],
],
position: 3, position: 3,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowRun].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowRun]
WORKFLOW_RUN_STANDARD_FIELD_IDS.createdBy .fields[WORKFLOW_RUN_STANDARD_FIELD_IDS.createdBy],
],
position: 4, position: 4,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowRun].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowRun]
WORKFLOW_RUN_STANDARD_FIELD_IDS.workflowVersion .fields[WORKFLOW_RUN_STANDARD_FIELD_IDS.workflowVersion],
],
position: 5, position: 5,
isVisible: true, isVisible: true,
size: 150, size: 150,

View File

@ -1,4 +1,5 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { import {
BASE_OBJECT_STANDARD_FIELD_IDS, BASE_OBJECT_STANDARD_FIELD_IDS,
WORKFLOW_VERSION_STANDARD_FIELD_IDS, WORKFLOW_VERSION_STANDARD_FIELD_IDS,
@ -6,11 +7,12 @@ import {
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const workflowVersionsAllView = ( export const workflowVersionsAllView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'All Workflow Versions', name: 'All Workflow Versions',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.workflowVersion].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowVersion].id,
type: 'table', type: 'table',
key: 'INDEX', key: 'INDEX',
position: 0, position: 0,
@ -20,45 +22,40 @@ export const workflowVersionsAllView = (
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowVersion].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowVersion]
WORKFLOW_VERSION_STANDARD_FIELD_IDS.name .fields[WORKFLOW_VERSION_STANDARD_FIELD_IDS.name],
],
position: 0, position: 0,
isVisible: true, isVisible: true,
size: 210, size: 210,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowVersion].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowVersion]
WORKFLOW_VERSION_STANDARD_FIELD_IDS.workflow .fields[WORKFLOW_VERSION_STANDARD_FIELD_IDS.workflow],
],
position: 1, position: 1,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowVersion].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowVersion]
WORKFLOW_VERSION_STANDARD_FIELD_IDS.status .fields[WORKFLOW_VERSION_STANDARD_FIELD_IDS.status],
],
position: 2, position: 2,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowVersion].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowVersion]
BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt .fields[BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt],
],
position: 3, position: 3,
isVisible: true, isVisible: true,
size: 150, size: 150,
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflowVersion].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflowVersion]
WORKFLOW_VERSION_STANDARD_FIELD_IDS.runs .fields[WORKFLOW_VERSION_STANDARD_FIELD_IDS.runs],
],
position: 4, position: 4,
isVisible: true, isVisible: true,
size: 150, size: 150,

View File

@ -1,4 +1,5 @@
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataStandardIdToIdMap } from 'src/engine/metadata-modules/object-metadata/interfaces/object-metadata-standard-id-to-id-map';
import { import {
BASE_OBJECT_STANDARD_FIELD_IDS, BASE_OBJECT_STANDARD_FIELD_IDS,
WORKFLOW_STANDARD_FIELD_IDS, WORKFLOW_STANDARD_FIELD_IDS,
@ -6,11 +7,12 @@ import {
import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids';
export const workflowsAllView = ( export const workflowsAllView = (
objectMetadataMap: Record<string, ObjectMetadataEntity>, objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
) => { ) => {
return { return {
name: 'All Workflows', name: 'All Workflows',
objectMetadataId: objectMetadataMap[STANDARD_OBJECT_IDS.workflow].id, objectMetadataId:
objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflow].id,
type: 'table', type: 'table',
key: 'INDEX', key: 'INDEX',
position: 0, position: 0,
@ -20,7 +22,7 @@ export const workflowsAllView = (
fields: [ fields: [
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflow].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflow].fields[
WORKFLOW_STANDARD_FIELD_IDS.name WORKFLOW_STANDARD_FIELD_IDS.name
], ],
position: 0, position: 0,
@ -29,7 +31,7 @@ export const workflowsAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflow].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflow].fields[
WORKFLOW_STANDARD_FIELD_IDS.statuses WORKFLOW_STANDARD_FIELD_IDS.statuses
], ],
position: 1, position: 1,
@ -38,7 +40,7 @@ export const workflowsAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflow].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflow].fields[
BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt
], ],
position: 2, position: 2,
@ -47,7 +49,7 @@ export const workflowsAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflow].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflow].fields[
WORKFLOW_STANDARD_FIELD_IDS.createdBy WORKFLOW_STANDARD_FIELD_IDS.createdBy
], ],
position: 3, position: 3,
@ -56,7 +58,7 @@ export const workflowsAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflow].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflow].fields[
WORKFLOW_STANDARD_FIELD_IDS.versions WORKFLOW_STANDARD_FIELD_IDS.versions
], ],
position: 4, position: 4,
@ -65,7 +67,7 @@ export const workflowsAllView = (
}, },
{ {
fieldMetadataId: fieldMetadataId:
objectMetadataMap[STANDARD_OBJECT_IDS.workflow].fields[ objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.workflow].fields[
WORKFLOW_STANDARD_FIELD_IDS.runs WORKFLOW_STANDARD_FIELD_IDS.runs
], ],
position: 5, position: 5,