Refactor object metadata service (#8123)
## Context ObjectMetadataService became quite large and handles too many responsibilities. I'm trying to refactor a bit this part in preparation of a larger work that will combine object-metadata services and sync-metadata logic - Created a STANDARD_OBJECT_ICONS that can be reused in relation creation to refer to a standard object icon. - Created a STANDARD_OBJECT_FIELD_IDS that can be used with an object name to get its standard field ids. - Moved migration, record and relation creations to dedicated services, refactored to improve performances and readability - Refactored some validation logic --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -10,13 +10,15 @@ import { NestjsQueryTypeOrmModule } from '@ptc-org/nestjs-query-typeorm';
|
|||||||
|
|
||||||
import { TypeORMModule } from 'src/database/typeorm/typeorm.module';
|
import { TypeORMModule } from 'src/database/typeorm/typeorm.module';
|
||||||
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity';
|
||||||
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
|
|
||||||
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
|
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
|
||||||
import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module';
|
import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module';
|
||||||
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 { BeforeUpdateOneObject } from 'src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook';
|
import { BeforeUpdateOneObject } from 'src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook';
|
||||||
import { ObjectMetadataGraphqlApiExceptionInterceptor } from 'src/engine/metadata-modules/object-metadata/interceptors/object-metadata-graphql-api-exception.interceptor';
|
import { ObjectMetadataGraphqlApiExceptionInterceptor } from 'src/engine/metadata-modules/object-metadata/interceptors/object-metadata-graphql-api-exception.interceptor';
|
||||||
import { ObjectMetadataResolver } from 'src/engine/metadata-modules/object-metadata/object-metadata.resolver';
|
import { ObjectMetadataResolver } from 'src/engine/metadata-modules/object-metadata/object-metadata.resolver';
|
||||||
|
import { ObjectMetadataMigrationService } from 'src/engine/metadata-modules/object-metadata/services/object-metadata-migration.service';
|
||||||
|
import { ObjectMetadataRelatedRecordsService } from 'src/engine/metadata-modules/object-metadata/services/object-metadata-related-records.service';
|
||||||
|
import { ObjectMetadataRelationService } from 'src/engine/metadata-modules/object-metadata/services/object-metadata-relation.service';
|
||||||
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
import { RemoteTableRelationsModule } from 'src/engine/metadata-modules/remote-server/remote-table/remote-table-relations/remote-table-relations.module';
|
import { RemoteTableRelationsModule } from 'src/engine/metadata-modules/remote-server/remote-table/remote-table-relations/remote-table-relations.module';
|
||||||
import { SearchModule } from 'src/engine/metadata-modules/search/search.module';
|
import { SearchModule } from 'src/engine/metadata-modules/search/search.module';
|
||||||
@ -46,10 +48,14 @@ import { UpdateObjectPayload } from './dtos/update-object.input';
|
|||||||
WorkspaceMigrationRunnerModule,
|
WorkspaceMigrationRunnerModule,
|
||||||
WorkspaceMetadataVersionModule,
|
WorkspaceMetadataVersionModule,
|
||||||
RemoteTableRelationsModule,
|
RemoteTableRelationsModule,
|
||||||
FeatureFlagModule,
|
|
||||||
SearchModule,
|
SearchModule,
|
||||||
],
|
],
|
||||||
services: [ObjectMetadataService],
|
services: [
|
||||||
|
ObjectMetadataService,
|
||||||
|
ObjectMetadataMigrationService,
|
||||||
|
ObjectMetadataRelationService,
|
||||||
|
ObjectMetadataRelatedRecordsService,
|
||||||
|
],
|
||||||
resolvers: [
|
resolvers: [
|
||||||
{
|
{
|
||||||
EntityClass: ObjectMetadataEntity,
|
EntityClass: ObjectMetadataEntity,
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,305 @@
|
|||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
|
|
||||||
|
import { Repository } from 'typeorm';
|
||||||
|
|
||||||
|
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
|
import { computeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util';
|
||||||
|
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||||
|
import { buildMigrationsForCustomObjectRelations } from 'src/engine/metadata-modules/object-metadata/utils/build-migrations-for-custom-object-relations.util';
|
||||||
|
import { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
|
import { RelationToDelete } from 'src/engine/metadata-modules/relation-metadata/types/relation-to-delete';
|
||||||
|
import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util';
|
||||||
|
import { generateMigrationName } from 'src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util';
|
||||||
|
import {
|
||||||
|
WorkspaceMigrationColumnActionType,
|
||||||
|
WorkspaceMigrationColumnDrop,
|
||||||
|
WorkspaceMigrationTableAction,
|
||||||
|
WorkspaceMigrationTableActionType,
|
||||||
|
} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
|
||||||
|
import { WorkspaceMigrationFactory } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.factory';
|
||||||
|
import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service';
|
||||||
|
import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util';
|
||||||
|
import { computeTableName } from 'src/engine/utils/compute-table-name.util';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class ObjectMetadataMigrationService {
|
||||||
|
constructor(
|
||||||
|
@InjectRepository(ObjectMetadataEntity, 'metadata')
|
||||||
|
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
|
||||||
|
@InjectRepository(FieldMetadataEntity, 'metadata')
|
||||||
|
private readonly fieldMetadataRepository: Repository<FieldMetadataEntity>,
|
||||||
|
@InjectRepository(RelationMetadataEntity, 'metadata')
|
||||||
|
private readonly relationMetadataRepository: Repository<RelationMetadataEntity>,
|
||||||
|
private readonly workspaceMigrationService: WorkspaceMigrationService,
|
||||||
|
private readonly workspaceMigrationFactory: WorkspaceMigrationFactory,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
public async createObjectMigration(
|
||||||
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
|
) {
|
||||||
|
await this.workspaceMigrationService.createCustomMigration(
|
||||||
|
generateMigrationName(`create-${createdObjectMetadata.nameSingular}`),
|
||||||
|
createdObjectMetadata.workspaceId,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
name: computeObjectTargetTable(createdObjectMetadata),
|
||||||
|
action: WorkspaceMigrationTableActionType.CREATE,
|
||||||
|
} satisfies WorkspaceMigrationTableAction,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async createFieldMigrations(
|
||||||
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
|
fieldMetadataCollection: FieldMetadataEntity[],
|
||||||
|
) {
|
||||||
|
await this.workspaceMigrationService.createCustomMigration(
|
||||||
|
generateMigrationName(
|
||||||
|
`create-${createdObjectMetadata.nameSingular}-fields`,
|
||||||
|
),
|
||||||
|
createdObjectMetadata.workspaceId,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
name: computeObjectTargetTable(createdObjectMetadata),
|
||||||
|
action: WorkspaceMigrationTableActionType.ALTER,
|
||||||
|
columns: fieldMetadataCollection.flatMap((fieldMetadata) =>
|
||||||
|
this.workspaceMigrationFactory.createColumnActions(
|
||||||
|
WorkspaceMigrationColumnActionType.CREATE,
|
||||||
|
fieldMetadata,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async createRelationMigrations(
|
||||||
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
|
relatedObjectMetadataCollection: ObjectMetadataEntity[],
|
||||||
|
) {
|
||||||
|
await this.workspaceMigrationService.createCustomMigration(
|
||||||
|
generateMigrationName(
|
||||||
|
`create-${createdObjectMetadata.nameSingular}-relations`,
|
||||||
|
),
|
||||||
|
createdObjectMetadata.workspaceId,
|
||||||
|
buildMigrationsForCustomObjectRelations(
|
||||||
|
createdObjectMetadata,
|
||||||
|
relatedObjectMetadataCollection,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async createRenameTableMigration(
|
||||||
|
existingObjectMetadata: ObjectMetadataEntity,
|
||||||
|
objectMetadataForUpdate: ObjectMetadataEntity,
|
||||||
|
) {
|
||||||
|
const newTargetTableName = computeObjectTargetTable(
|
||||||
|
objectMetadataForUpdate,
|
||||||
|
);
|
||||||
|
const existingTargetTableName = computeObjectTargetTable(
|
||||||
|
existingObjectMetadata,
|
||||||
|
);
|
||||||
|
|
||||||
|
this.workspaceMigrationService.createCustomMigration(
|
||||||
|
generateMigrationName(`rename-${existingObjectMetadata.nameSingular}`),
|
||||||
|
objectMetadataForUpdate.workspaceId,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
name: existingTargetTableName,
|
||||||
|
newName: newTargetTableName,
|
||||||
|
action: WorkspaceMigrationTableActionType.ALTER,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async createRelationsUpdatesMigrations(
|
||||||
|
existingObjectMetadata: ObjectMetadataEntity,
|
||||||
|
updatedObjectMetadata: ObjectMetadataEntity,
|
||||||
|
) {
|
||||||
|
const existingTableName = computeObjectTargetTable(existingObjectMetadata);
|
||||||
|
const newTableName = computeObjectTargetTable(updatedObjectMetadata);
|
||||||
|
|
||||||
|
if (existingTableName !== newTableName) {
|
||||||
|
const searchCriteria = {
|
||||||
|
isCustom: false,
|
||||||
|
settings: {
|
||||||
|
isForeignKey: true,
|
||||||
|
},
|
||||||
|
name: `${existingObjectMetadata.nameSingular}Id`,
|
||||||
|
};
|
||||||
|
|
||||||
|
const fieldsWihStandardRelation = await this.fieldMetadataRepository.find(
|
||||||
|
{
|
||||||
|
where: {
|
||||||
|
isCustom: false,
|
||||||
|
settings: {
|
||||||
|
isForeignKey: true,
|
||||||
|
},
|
||||||
|
name: `${existingObjectMetadata.nameSingular}Id`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.fieldMetadataRepository.update(searchCriteria, {
|
||||||
|
name: `${updatedObjectMetadata.nameSingular}Id`,
|
||||||
|
});
|
||||||
|
|
||||||
|
await Promise.all(
|
||||||
|
fieldsWihStandardRelation.map(async (fieldWihStandardRelation) => {
|
||||||
|
const relatedObject = await this.objectMetadataRepository.findOneBy({
|
||||||
|
id: fieldWihStandardRelation.objectMetadataId,
|
||||||
|
workspaceId: updatedObjectMetadata.workspaceId,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (relatedObject) {
|
||||||
|
await this.fieldMetadataRepository.update(
|
||||||
|
{
|
||||||
|
name: existingObjectMetadata.nameSingular,
|
||||||
|
label: existingObjectMetadata.labelSingular,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: updatedObjectMetadata.nameSingular,
|
||||||
|
label: updatedObjectMetadata.labelSingular,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
const relationTableName = computeObjectTargetTable(relatedObject);
|
||||||
|
const columnName = `${existingObjectMetadata.nameSingular}Id`;
|
||||||
|
const columnType = fieldMetadataTypeToColumnType(
|
||||||
|
fieldWihStandardRelation.type,
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.workspaceMigrationService.createCustomMigration(
|
||||||
|
generateMigrationName(
|
||||||
|
`rename-${existingObjectMetadata.nameSingular}-to-${updatedObjectMetadata.nameSingular}-in-${relatedObject.nameSingular}`,
|
||||||
|
),
|
||||||
|
updatedObjectMetadata.workspaceId,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
name: relationTableName,
|
||||||
|
action: WorkspaceMigrationTableActionType.ALTER,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
action: WorkspaceMigrationColumnActionType.ALTER,
|
||||||
|
currentColumnDefinition: {
|
||||||
|
columnName,
|
||||||
|
columnType,
|
||||||
|
isNullable: true,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
alteredColumnDefinition: {
|
||||||
|
columnName: `${updatedObjectMetadata.nameSingular}Id`,
|
||||||
|
columnType,
|
||||||
|
isNullable: true,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async deleteAllRelationsAndDropTable(
|
||||||
|
objectMetadata: ObjectMetadataEntity,
|
||||||
|
workspaceId: string,
|
||||||
|
) {
|
||||||
|
const relationsToDelete: RelationToDelete[] = [];
|
||||||
|
|
||||||
|
// TODO: Most of this logic should be moved to relation-metadata.service.ts
|
||||||
|
for (const relation of [
|
||||||
|
...objectMetadata.fromRelations,
|
||||||
|
...objectMetadata.toRelations,
|
||||||
|
]) {
|
||||||
|
relationsToDelete.push({
|
||||||
|
id: relation.id,
|
||||||
|
fromFieldMetadataId: relation.fromFieldMetadata.id,
|
||||||
|
toFieldMetadataId: relation.toFieldMetadata.id,
|
||||||
|
fromFieldMetadataName: relation.fromFieldMetadata.name,
|
||||||
|
toFieldMetadataName: relation.toFieldMetadata.name,
|
||||||
|
fromObjectMetadataId: relation.fromObjectMetadata.id,
|
||||||
|
toObjectMetadataId: relation.toObjectMetadata.id,
|
||||||
|
fromObjectName: relation.fromObjectMetadata.nameSingular,
|
||||||
|
toObjectName: relation.toObjectMetadata.nameSingular,
|
||||||
|
toFieldMetadataIsCustom: relation.toFieldMetadata.isCustom,
|
||||||
|
toObjectMetadataIsCustom: relation.toObjectMetadata.isCustom,
|
||||||
|
direction:
|
||||||
|
relation.fromObjectMetadata.nameSingular ===
|
||||||
|
objectMetadata.nameSingular
|
||||||
|
? 'from'
|
||||||
|
: 'to',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (relationsToDelete.length > 0) {
|
||||||
|
await this.relationMetadataRepository.delete(
|
||||||
|
relationsToDelete.map((relation) => relation.id),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const relationToDelete of relationsToDelete) {
|
||||||
|
const foreignKeyFieldsToDelete = await this.fieldMetadataRepository.find({
|
||||||
|
where: {
|
||||||
|
name: `${relationToDelete.toFieldMetadataName}Id`,
|
||||||
|
objectMetadataId: relationToDelete.toObjectMetadataId,
|
||||||
|
workspaceId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const foreignKeyFieldsToDeleteIds = foreignKeyFieldsToDelete.map(
|
||||||
|
(field) => field.id,
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.fieldMetadataRepository.delete([
|
||||||
|
...foreignKeyFieldsToDeleteIds,
|
||||||
|
relationToDelete.fromFieldMetadataId,
|
||||||
|
relationToDelete.toFieldMetadataId,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (relationToDelete.direction === 'from') {
|
||||||
|
await this.workspaceMigrationService.createCustomMigration(
|
||||||
|
generateMigrationName(
|
||||||
|
`delete-${relationToDelete.fromObjectName}-${relationToDelete.toObjectName}`,
|
||||||
|
),
|
||||||
|
workspaceId,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
name: computeTableName(
|
||||||
|
relationToDelete.toObjectName,
|
||||||
|
relationToDelete.toObjectMetadataIsCustom,
|
||||||
|
),
|
||||||
|
action: WorkspaceMigrationTableActionType.ALTER,
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
action: WorkspaceMigrationColumnActionType.DROP,
|
||||||
|
columnName: computeColumnName(
|
||||||
|
relationToDelete.toFieldMetadataName,
|
||||||
|
{ isForeignKey: true },
|
||||||
|
),
|
||||||
|
} satisfies WorkspaceMigrationColumnDrop,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// DROP TABLE
|
||||||
|
await this.workspaceMigrationService.createCustomMigration(
|
||||||
|
generateMigrationName(`delete-${objectMetadata.nameSingular}`),
|
||||||
|
workspaceId,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
name: computeObjectTargetTable(objectMetadata),
|
||||||
|
action: WorkspaceMigrationTableActionType.DROP,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,118 @@
|
|||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
|
||||||
|
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||||
|
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
|
||||||
|
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
||||||
|
import { ViewFieldWorkspaceEntity } from 'src/modules/view/standard-objects/view-field.workspace-entity';
|
||||||
|
import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class ObjectMetadataRelatedRecordsService {
|
||||||
|
constructor(
|
||||||
|
private readonly twentyORMGlobalManager: TwentyORMGlobalManager,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
public async createObjectRelatedRecords(
|
||||||
|
objectMetadata: ObjectMetadataEntity,
|
||||||
|
) {
|
||||||
|
const view = await this.createView(objectMetadata);
|
||||||
|
|
||||||
|
await this.createViewFields(objectMetadata, view.id);
|
||||||
|
await this.createViewWorkspaceFavorite(objectMetadata.workspaceId, view.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async createView(
|
||||||
|
objectMetadata: ObjectMetadataEntity,
|
||||||
|
): Promise<ViewWorkspaceEntity> {
|
||||||
|
const viewRepository =
|
||||||
|
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewWorkspaceEntity>(
|
||||||
|
objectMetadata.workspaceId,
|
||||||
|
'view',
|
||||||
|
);
|
||||||
|
|
||||||
|
return await viewRepository.save({
|
||||||
|
objectMetadataId: objectMetadata.id,
|
||||||
|
type: 'table',
|
||||||
|
name: `All ${objectMetadata.labelPlural}`,
|
||||||
|
key: 'INDEX',
|
||||||
|
icon: objectMetadata.icon,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async createViewFields(
|
||||||
|
objectMetadata: ObjectMetadataEntity,
|
||||||
|
viewId: string,
|
||||||
|
): Promise<void> {
|
||||||
|
const viewFieldRepository =
|
||||||
|
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewFieldWorkspaceEntity>(
|
||||||
|
objectMetadata.workspaceId,
|
||||||
|
'viewField',
|
||||||
|
);
|
||||||
|
|
||||||
|
const viewFields = objectMetadata.fields
|
||||||
|
.filter((field) => field.name !== 'id' && field.name !== 'deletedAt')
|
||||||
|
.map((field, index) => ({
|
||||||
|
fieldMetadataId: field.id,
|
||||||
|
position: index,
|
||||||
|
isVisible: true,
|
||||||
|
size: 180,
|
||||||
|
viewId: viewId,
|
||||||
|
}));
|
||||||
|
|
||||||
|
await viewFieldRepository.insert(viewFields);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async createViewWorkspaceFavorite(
|
||||||
|
workspaceId: string,
|
||||||
|
viewId: string,
|
||||||
|
): Promise<void> {
|
||||||
|
const favoriteRepository =
|
||||||
|
await this.twentyORMGlobalManager.getRepositoryForWorkspace<FavoriteWorkspaceEntity>(
|
||||||
|
workspaceId,
|
||||||
|
'favorite',
|
||||||
|
);
|
||||||
|
|
||||||
|
const favoriteCount = await favoriteRepository.count();
|
||||||
|
|
||||||
|
await favoriteRepository.insert(
|
||||||
|
favoriteRepository.create({
|
||||||
|
viewId: viewId,
|
||||||
|
position: favoriteCount,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async updateObjectViews(
|
||||||
|
updatedObjectMetadata: ObjectMetadataEntity,
|
||||||
|
workspaceId: string,
|
||||||
|
) {
|
||||||
|
const viewRepository =
|
||||||
|
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewWorkspaceEntity>(
|
||||||
|
workspaceId,
|
||||||
|
'view',
|
||||||
|
);
|
||||||
|
|
||||||
|
await viewRepository.update(
|
||||||
|
{ objectMetadataId: updatedObjectMetadata.id, key: 'INDEX' },
|
||||||
|
{
|
||||||
|
name: `All ${updatedObjectMetadata.labelPlural}`,
|
||||||
|
icon: updatedObjectMetadata.icon,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async deleteObjectViews(
|
||||||
|
objectMetadata: ObjectMetadataEntity,
|
||||||
|
workspaceId: string,
|
||||||
|
) {
|
||||||
|
const viewRepository =
|
||||||
|
await this.twentyORMGlobalManager.getRepositoryForWorkspace<ViewWorkspaceEntity>(
|
||||||
|
workspaceId,
|
||||||
|
'view',
|
||||||
|
);
|
||||||
|
|
||||||
|
await viewRepository.delete({
|
||||||
|
objectMetadataId: objectMetadata.id,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,253 @@
|
|||||||
|
import { Injectable } from '@nestjs/common';
|
||||||
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
|
|
||||||
|
import { In, Repository } from 'typeorm';
|
||||||
|
|
||||||
|
import { FieldMetadataSettings } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-settings.interface';
|
||||||
|
|
||||||
|
import {
|
||||||
|
FieldMetadataEntity,
|
||||||
|
FieldMetadataType,
|
||||||
|
} from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
|
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||||
|
import {
|
||||||
|
RelationMetadataEntity,
|
||||||
|
RelationMetadataType,
|
||||||
|
RelationOnDeleteAction,
|
||||||
|
} from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
|
import {
|
||||||
|
CUSTOM_OBJECT_STANDARD_FIELD_IDS,
|
||||||
|
STANDARD_OBJECT_FIELD_IDS,
|
||||||
|
} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
|
import {
|
||||||
|
createForeignKeyDeterministicUuid,
|
||||||
|
createRelationDeterministicUuid,
|
||||||
|
} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util';
|
||||||
|
import { capitalize } from 'src/utils/capitalize';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class ObjectMetadataRelationService {
|
||||||
|
constructor(
|
||||||
|
@InjectRepository(ObjectMetadataEntity, 'metadata')
|
||||||
|
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
|
||||||
|
@InjectRepository(FieldMetadataEntity, 'metadata')
|
||||||
|
private readonly fieldMetadataRepository: Repository<FieldMetadataEntity>,
|
||||||
|
@InjectRepository(RelationMetadataEntity, 'metadata')
|
||||||
|
private readonly relationMetadataRepository: Repository<RelationMetadataEntity>,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
public async createMetadata(
|
||||||
|
workspaceId: string,
|
||||||
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
|
objectPrimaryKeyType: FieldMetadataType,
|
||||||
|
objectPrimaryKeyFieldSettings:
|
||||||
|
| FieldMetadataSettings<FieldMetadataType | 'default'>
|
||||||
|
| undefined,
|
||||||
|
relatedObjectMetadataName: string,
|
||||||
|
) {
|
||||||
|
const relatedObjectMetadata =
|
||||||
|
await this.objectMetadataRepository.findOneByOrFail({
|
||||||
|
nameSingular: relatedObjectMetadataName,
|
||||||
|
workspaceId: workspaceId,
|
||||||
|
});
|
||||||
|
|
||||||
|
await this.createForeignKeyFieldMetadata(
|
||||||
|
workspaceId,
|
||||||
|
createdObjectMetadata,
|
||||||
|
relatedObjectMetadata,
|
||||||
|
objectPrimaryKeyType,
|
||||||
|
objectPrimaryKeyFieldSettings,
|
||||||
|
);
|
||||||
|
|
||||||
|
const relationFieldMetadata = await this.createRelationFields(
|
||||||
|
workspaceId,
|
||||||
|
createdObjectMetadata,
|
||||||
|
relatedObjectMetadata,
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.createRelationMetadata(
|
||||||
|
workspaceId,
|
||||||
|
createdObjectMetadata,
|
||||||
|
relatedObjectMetadata,
|
||||||
|
relationFieldMetadata,
|
||||||
|
);
|
||||||
|
|
||||||
|
return relatedObjectMetadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async createForeignKeyFieldMetadata(
|
||||||
|
workspaceId: string,
|
||||||
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
|
relatedObjectMetadata: ObjectMetadataEntity,
|
||||||
|
objectPrimaryKeyType: FieldMetadataType,
|
||||||
|
objectPrimaryKeyFieldSettings:
|
||||||
|
| FieldMetadataSettings<FieldMetadataType | 'default'>
|
||||||
|
| undefined,
|
||||||
|
) {
|
||||||
|
const customStandardFieldId =
|
||||||
|
STANDARD_OBJECT_FIELD_IDS[relatedObjectMetadata.nameSingular].custom;
|
||||||
|
|
||||||
|
if (!customStandardFieldId) {
|
||||||
|
throw new Error(
|
||||||
|
`Custom standard field ID not found for ${relatedObjectMetadata.nameSingular}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await this.fieldMetadataRepository.save({
|
||||||
|
standardId: createForeignKeyDeterministicUuid({
|
||||||
|
objectId: createdObjectMetadata.id,
|
||||||
|
standardId: customStandardFieldId,
|
||||||
|
}),
|
||||||
|
objectMetadataId: relatedObjectMetadata.id,
|
||||||
|
workspaceId: workspaceId,
|
||||||
|
isCustom: false,
|
||||||
|
isActive: true,
|
||||||
|
type: objectPrimaryKeyType,
|
||||||
|
name: `${createdObjectMetadata.nameSingular}Id`,
|
||||||
|
label: `${createdObjectMetadata.labelSingular} ID (foreign key)`,
|
||||||
|
description: `${relatedObjectMetadata.labelSingular} ${createdObjectMetadata.labelSingular} id foreign key`,
|
||||||
|
icon: undefined,
|
||||||
|
isNullable: true,
|
||||||
|
isSystem: true,
|
||||||
|
defaultValue: undefined,
|
||||||
|
settings: { ...objectPrimaryKeyFieldSettings, isForeignKey: true },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async createRelationFields(
|
||||||
|
workspaceId: string,
|
||||||
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
|
relatedObjectMetadata: ObjectMetadataEntity,
|
||||||
|
) {
|
||||||
|
return await this.fieldMetadataRepository.save([
|
||||||
|
this.createFromField(
|
||||||
|
workspaceId,
|
||||||
|
createdObjectMetadata,
|
||||||
|
relatedObjectMetadata,
|
||||||
|
),
|
||||||
|
this.createToField(
|
||||||
|
workspaceId,
|
||||||
|
createdObjectMetadata,
|
||||||
|
relatedObjectMetadata,
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private createFromField(
|
||||||
|
workspaceId: string,
|
||||||
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
|
relatedObjectMetadata: ObjectMetadataEntity,
|
||||||
|
) {
|
||||||
|
const relationObjectMetadataNamePlural =
|
||||||
|
relatedObjectMetadata.nameSingular + 's';
|
||||||
|
|
||||||
|
return {
|
||||||
|
standardId:
|
||||||
|
CUSTOM_OBJECT_STANDARD_FIELD_IDS[relationObjectMetadataNamePlural],
|
||||||
|
objectMetadataId: createdObjectMetadata.id,
|
||||||
|
workspaceId: workspaceId,
|
||||||
|
isCustom: false,
|
||||||
|
isActive: true,
|
||||||
|
isSystem: true,
|
||||||
|
type: FieldMetadataType.RELATION,
|
||||||
|
name: relationObjectMetadataNamePlural,
|
||||||
|
label: capitalize(relationObjectMetadataNamePlural),
|
||||||
|
description: `${capitalize(relationObjectMetadataNamePlural)} tied to the ${createdObjectMetadata.labelSingular}`,
|
||||||
|
icon:
|
||||||
|
STANDARD_OBJECT_ICONS[relatedObjectMetadata.nameSingular] ||
|
||||||
|
'IconBuildingSkyscraper',
|
||||||
|
isNullable: true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private createToField(
|
||||||
|
workspaceId: string,
|
||||||
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
|
relatedObjectMetadata: ObjectMetadataEntity,
|
||||||
|
) {
|
||||||
|
const customStandardFieldId =
|
||||||
|
STANDARD_OBJECT_FIELD_IDS[relatedObjectMetadata.nameSingular].custom;
|
||||||
|
|
||||||
|
if (!customStandardFieldId) {
|
||||||
|
throw new Error(
|
||||||
|
`Custom standard field ID not found for ${relatedObjectMetadata.nameSingular}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
standardId: createRelationDeterministicUuid({
|
||||||
|
objectId: createdObjectMetadata.id,
|
||||||
|
standardId: customStandardFieldId,
|
||||||
|
}),
|
||||||
|
objectMetadataId: relatedObjectMetadata.id,
|
||||||
|
workspaceId: workspaceId,
|
||||||
|
isCustom: false,
|
||||||
|
isActive: true,
|
||||||
|
isSystem: true,
|
||||||
|
type: FieldMetadataType.RELATION,
|
||||||
|
name: createdObjectMetadata.nameSingular,
|
||||||
|
label: createdObjectMetadata.labelSingular,
|
||||||
|
description: `${capitalize(relatedObjectMetadata.nameSingular)} ${createdObjectMetadata.labelSingular}`,
|
||||||
|
icon: 'IconBuildingSkyscraper',
|
||||||
|
isNullable: true,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private async createRelationMetadata(
|
||||||
|
workspaceId: string,
|
||||||
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
|
relatedObjectMetadata: ObjectMetadataEntity,
|
||||||
|
relationFieldMetadata: FieldMetadataEntity[],
|
||||||
|
) {
|
||||||
|
const relationFieldMetadataMap = relationFieldMetadata.reduce(
|
||||||
|
(acc, fieldMetadata: FieldMetadataEntity) => {
|
||||||
|
if (fieldMetadata.type === FieldMetadataType.RELATION) {
|
||||||
|
acc[fieldMetadata.objectMetadataId] = fieldMetadata;
|
||||||
|
}
|
||||||
|
|
||||||
|
return acc;
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.relationMetadataRepository.save([
|
||||||
|
{
|
||||||
|
workspaceId: workspaceId,
|
||||||
|
relationType: RelationMetadataType.ONE_TO_MANY,
|
||||||
|
fromObjectMetadataId: createdObjectMetadata.id,
|
||||||
|
toObjectMetadataId: relatedObjectMetadata.id,
|
||||||
|
fromFieldMetadataId:
|
||||||
|
relationFieldMetadataMap[createdObjectMetadata.id].id,
|
||||||
|
toFieldMetadataId:
|
||||||
|
relationFieldMetadataMap[relatedObjectMetadata.id].id,
|
||||||
|
onDeleteAction: RelationOnDeleteAction.CASCADE,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
async updateObjectRelationships(objectMetadataId: string, isActive: boolean) {
|
||||||
|
const affectedRelations = await this.relationMetadataRepository.find({
|
||||||
|
where: [
|
||||||
|
{ fromObjectMetadataId: objectMetadataId },
|
||||||
|
{ toObjectMetadataId: objectMetadataId },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
const affectedFieldIds = affectedRelations.reduce(
|
||||||
|
(acc, { fromFieldMetadataId, toFieldMetadataId }) => {
|
||||||
|
acc.push(fromFieldMetadataId, toFieldMetadataId);
|
||||||
|
|
||||||
|
return acc;
|
||||||
|
},
|
||||||
|
[] as string[],
|
||||||
|
);
|
||||||
|
|
||||||
|
if (affectedFieldIds.length > 0) {
|
||||||
|
await this.fieldMetadataRepository.update(
|
||||||
|
{ id: In(affectedFieldIds) },
|
||||||
|
{ isActive: isActive },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,109 @@
|
|||||||
|
import {
|
||||||
|
FieldMetadataEntity,
|
||||||
|
FieldMetadataType,
|
||||||
|
} from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
|
||||||
|
import {
|
||||||
|
BASE_OBJECT_STANDARD_FIELD_IDS,
|
||||||
|
CUSTOM_OBJECT_STANDARD_FIELD_IDS,
|
||||||
|
} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
|
||||||
|
export const buildDefaultFieldsForCustomObject = (
|
||||||
|
workspaceId: string,
|
||||||
|
): Partial<FieldMetadataEntity>[] => [
|
||||||
|
{
|
||||||
|
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.id,
|
||||||
|
type: FieldMetadataType.UUID,
|
||||||
|
name: 'id',
|
||||||
|
label: 'Id',
|
||||||
|
icon: 'Icon123',
|
||||||
|
description: 'Id',
|
||||||
|
isNullable: false,
|
||||||
|
isActive: true,
|
||||||
|
isCustom: false,
|
||||||
|
isSystem: true,
|
||||||
|
workspaceId,
|
||||||
|
defaultValue: 'uuid',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.name,
|
||||||
|
type: FieldMetadataType.TEXT,
|
||||||
|
name: 'name',
|
||||||
|
label: 'Name',
|
||||||
|
icon: 'IconAbc',
|
||||||
|
description: 'Name',
|
||||||
|
isNullable: false,
|
||||||
|
isActive: true,
|
||||||
|
isCustom: false,
|
||||||
|
workspaceId,
|
||||||
|
defaultValue: "'Untitled'",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.createdAt,
|
||||||
|
type: FieldMetadataType.DATE_TIME,
|
||||||
|
name: 'createdAt',
|
||||||
|
label: 'Creation date',
|
||||||
|
icon: 'IconCalendar',
|
||||||
|
description: 'Creation date',
|
||||||
|
isNullable: false,
|
||||||
|
isActive: true,
|
||||||
|
isCustom: false,
|
||||||
|
workspaceId,
|
||||||
|
defaultValue: 'now',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt,
|
||||||
|
type: FieldMetadataType.DATE_TIME,
|
||||||
|
name: 'updatedAt',
|
||||||
|
label: 'Last update',
|
||||||
|
icon: 'IconCalendarClock',
|
||||||
|
description: 'Last time the record was changed',
|
||||||
|
isNullable: false,
|
||||||
|
isActive: true,
|
||||||
|
isCustom: false,
|
||||||
|
isSystem: false,
|
||||||
|
workspaceId,
|
||||||
|
defaultValue: 'now',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
standardId: BASE_OBJECT_STANDARD_FIELD_IDS.deletedAt,
|
||||||
|
type: FieldMetadataType.DATE_TIME,
|
||||||
|
name: 'deletedAt',
|
||||||
|
label: 'Deleted at',
|
||||||
|
icon: 'IconCalendarClock',
|
||||||
|
description: 'Deletion date',
|
||||||
|
isNullable: true,
|
||||||
|
isActive: true,
|
||||||
|
isCustom: false,
|
||||||
|
isSystem: false,
|
||||||
|
workspaceId,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.createdBy,
|
||||||
|
type: FieldMetadataType.ACTOR,
|
||||||
|
name: 'createdBy',
|
||||||
|
label: 'Created by',
|
||||||
|
icon: 'IconCreativeCommonsSa',
|
||||||
|
description: 'The creator of the record',
|
||||||
|
isNullable: false,
|
||||||
|
isActive: true,
|
||||||
|
isCustom: false,
|
||||||
|
isSystem: false,
|
||||||
|
workspaceId,
|
||||||
|
defaultValue: { name: "''", source: "'MANUAL'" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.position,
|
||||||
|
type: FieldMetadataType.POSITION,
|
||||||
|
name: 'position',
|
||||||
|
label: 'Position',
|
||||||
|
icon: 'IconHierarchy2',
|
||||||
|
description: 'Position',
|
||||||
|
isNullable: true,
|
||||||
|
isActive: true,
|
||||||
|
isCustom: false,
|
||||||
|
isSystem: true,
|
||||||
|
workspaceId,
|
||||||
|
defaultValue: null,
|
||||||
|
},
|
||||||
|
];
|
||||||
@ -11,197 +11,46 @@ import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target
|
|||||||
|
|
||||||
export const buildMigrationsForCustomObjectRelations = (
|
export const buildMigrationsForCustomObjectRelations = (
|
||||||
createdObjectMetadata: ObjectMetadataEntity,
|
createdObjectMetadata: ObjectMetadataEntity,
|
||||||
activityTargetObjectMetadata: ObjectMetadataEntity,
|
relatedObjectMetadataCollection: ObjectMetadataEntity[],
|
||||||
attachmentObjectMetadata: ObjectMetadataEntity,
|
): WorkspaceMigrationTableAction[] => {
|
||||||
timelineActivityObjectMetadata: ObjectMetadataEntity,
|
const migrations: WorkspaceMigrationTableAction[] = [];
|
||||||
favoriteObjectMetadata: ObjectMetadataEntity,
|
|
||||||
noteTargetObjectMetadata: ObjectMetadataEntity,
|
for (const relatedObjectMetadata of relatedObjectMetadataCollection) {
|
||||||
taskTargetObjectMetadata: ObjectMetadataEntity,
|
migrations.push(
|
||||||
): WorkspaceMigrationTableAction[] => [
|
|
||||||
// Add activity target relation
|
|
||||||
{
|
|
||||||
name: computeObjectTargetTable(activityTargetObjectMetadata),
|
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
{
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
name: computeObjectTargetTable(relatedObjectMetadata),
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
action: WorkspaceMigrationTableActionType.ALTER,
|
||||||
isForeignKey: true,
|
columns: [
|
||||||
}),
|
{
|
||||||
columnType: 'uuid',
|
action: WorkspaceMigrationColumnActionType.CREATE,
|
||||||
isNullable: true,
|
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
||||||
defaultValue: null,
|
isForeignKey: true,
|
||||||
} satisfies WorkspaceMigrationColumnCreate,
|
}),
|
||||||
],
|
columnType: 'uuid',
|
||||||
},
|
isNullable: true,
|
||||||
{
|
defaultValue: null,
|
||||||
name: computeObjectTargetTable(activityTargetObjectMetadata),
|
} satisfies WorkspaceMigrationColumnCreate,
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
],
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
referencedTableName: computeObjectTargetTable(createdObjectMetadata),
|
|
||||||
referencedTableColumnName: 'id',
|
|
||||||
onDelete: RelationOnDeleteAction.CASCADE,
|
|
||||||
},
|
},
|
||||||
],
|
|
||||||
},
|
|
||||||
// Add note target relation
|
|
||||||
{
|
|
||||||
name: computeObjectTargetTable(noteTargetObjectMetadata),
|
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
{
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
name: computeObjectTargetTable(relatedObjectMetadata),
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
action: WorkspaceMigrationTableActionType.ALTER,
|
||||||
isForeignKey: true,
|
columns: [
|
||||||
}),
|
{
|
||||||
columnType: 'uuid',
|
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
|
||||||
isNullable: true,
|
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
||||||
defaultValue: null,
|
isForeignKey: true,
|
||||||
} satisfies WorkspaceMigrationColumnCreate,
|
}),
|
||||||
],
|
referencedTableName: computeObjectTargetTable(
|
||||||
},
|
createdObjectMetadata,
|
||||||
{
|
),
|
||||||
name: computeObjectTargetTable(noteTargetObjectMetadata),
|
referencedTableColumnName: 'id',
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
onDelete: RelationOnDeleteAction.CASCADE,
|
||||||
columns: [
|
},
|
||||||
{
|
],
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
referencedTableName: computeObjectTargetTable(createdObjectMetadata),
|
|
||||||
referencedTableColumnName: 'id',
|
|
||||||
onDelete: RelationOnDeleteAction.CASCADE,
|
|
||||||
},
|
},
|
||||||
],
|
);
|
||||||
},
|
}
|
||||||
// Add task target relation
|
|
||||||
{
|
return migrations;
|
||||||
name: computeObjectTargetTable(taskTargetObjectMetadata),
|
};
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
columnType: 'uuid',
|
|
||||||
isNullable: true,
|
|
||||||
defaultValue: null,
|
|
||||||
} satisfies WorkspaceMigrationColumnCreate,
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: computeObjectTargetTable(taskTargetObjectMetadata),
|
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
referencedTableName: computeObjectTargetTable(createdObjectMetadata),
|
|
||||||
referencedTableColumnName: 'id',
|
|
||||||
onDelete: RelationOnDeleteAction.CASCADE,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
// Add attachment relation
|
|
||||||
{
|
|
||||||
name: computeObjectTargetTable(attachmentObjectMetadata),
|
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
columnType: 'uuid',
|
|
||||||
isNullable: true,
|
|
||||||
defaultValue: null,
|
|
||||||
} satisfies WorkspaceMigrationColumnCreate,
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: computeObjectTargetTable(attachmentObjectMetadata),
|
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
referencedTableName: computeObjectTargetTable(createdObjectMetadata),
|
|
||||||
referencedTableColumnName: 'id',
|
|
||||||
onDelete: RelationOnDeleteAction.CASCADE,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
// Add timeline activity relation
|
|
||||||
{
|
|
||||||
name: computeObjectTargetTable(timelineActivityObjectMetadata),
|
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
columnType: 'uuid',
|
|
||||||
isNullable: true,
|
|
||||||
defaultValue: null,
|
|
||||||
} satisfies WorkspaceMigrationColumnCreate,
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: computeObjectTargetTable(timelineActivityObjectMetadata),
|
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
referencedTableName: computeObjectTargetTable(createdObjectMetadata),
|
|
||||||
referencedTableColumnName: 'id',
|
|
||||||
onDelete: RelationOnDeleteAction.CASCADE,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
// Add favorite relation
|
|
||||||
{
|
|
||||||
name: computeObjectTargetTable(favoriteObjectMetadata),
|
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
columnType: 'uuid',
|
|
||||||
isNullable: true,
|
|
||||||
defaultValue: null,
|
|
||||||
} satisfies WorkspaceMigrationColumnCreate,
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: computeObjectTargetTable(favoriteObjectMetadata),
|
|
||||||
action: WorkspaceMigrationTableActionType.ALTER,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
|
|
||||||
columnName: computeColumnName(createdObjectMetadata.nameSingular, {
|
|
||||||
isForeignKey: true,
|
|
||||||
}),
|
|
||||||
referencedTableName: computeObjectTargetTable(createdObjectMetadata),
|
|
||||||
referencedTableColumnName: 'id',
|
|
||||||
onDelete: RelationOnDeleteAction.CASCADE,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|||||||
@ -99,24 +99,20 @@ const validateNameIsNotReservedKeywordOrThrow = (name?: string) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const validateNameCamelCasedOrThrow = (name?: string) => {
|
const validateNameCamelCasedOrThrow = (name?: string) => {
|
||||||
if (name) {
|
if (name && name !== camelCase(name)) {
|
||||||
if (name !== camelCase(name)) {
|
throw new ObjectMetadataException(
|
||||||
throw new ObjectMetadataException(
|
`Name should be in camelCase: ${name}`,
|
||||||
`Name should be in camelCase: ${name}`,
|
ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
|
||||||
ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const validateNameIsNotTooLongThrow = (name?: string) => {
|
const validateNameIsNotTooLongThrow = (name?: string) => {
|
||||||
if (name) {
|
if (name && exceedsDatabaseIdentifierMaximumLength(name)) {
|
||||||
if (exceedsDatabaseIdentifierMaximumLength(name)) {
|
throw new ObjectMetadataException(
|
||||||
throw new ObjectMetadataException(
|
`Name exceeds 63 characters: ${name}`,
|
||||||
`Name exceeds 63 characters: ${name}`,
|
ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
|
||||||
ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -142,3 +138,29 @@ export const computeMetadataNameFromLabelOrThrow = (label: string): string => {
|
|||||||
|
|
||||||
return formattedString;
|
return formattedString;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const validateNameAndLabelAreSyncOrThrow = (
|
||||||
|
label: string,
|
||||||
|
name: string,
|
||||||
|
) => {
|
||||||
|
const computedName = computeMetadataNameFromLabelOrThrow(label);
|
||||||
|
|
||||||
|
if (name !== computedName) {
|
||||||
|
throw new ObjectMetadataException(
|
||||||
|
`Name is not synced with label. Expected name: "${computedName}", got ${name}`,
|
||||||
|
ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const validateNameSingularAndNamePluralAreDifferentOrThrow = (
|
||||||
|
nameSingular: string,
|
||||||
|
namePlural: string,
|
||||||
|
) => {
|
||||||
|
if (nameSingular === namePlural) {
|
||||||
|
throw new ObjectMetadataException(
|
||||||
|
'The singular and plural name cannot be the same for an object',
|
||||||
|
ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|||||||
@ -1,19 +0,0 @@
|
|||||||
import {
|
|
||||||
ObjectMetadataException,
|
|
||||||
ObjectMetadataExceptionCode,
|
|
||||||
} from 'src/engine/metadata-modules/object-metadata/object-metadata.exception';
|
|
||||||
import { computeMetadataNameFromLabelOrThrow } from 'src/engine/metadata-modules/object-metadata/utils/validate-object-metadata-input.util';
|
|
||||||
|
|
||||||
export const validateNameAndLabelAreSyncOrThrow = (
|
|
||||||
label: string,
|
|
||||||
name: string,
|
|
||||||
) => {
|
|
||||||
const computedName = computeMetadataNameFromLabelOrThrow(label);
|
|
||||||
|
|
||||||
if (name !== computedName) {
|
|
||||||
throw new ObjectMetadataException(
|
|
||||||
`Name is not synced with label. Expected name: "${computedName}", got ${name}`,
|
|
||||||
ObjectMetadataExceptionCode.INVALID_OBJECT_INPUT,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@ -9,13 +9,13 @@ import {
|
|||||||
import { In, Repository } from 'typeorm';
|
import { In, Repository } from 'typeorm';
|
||||||
|
|
||||||
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
|
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
|
||||||
import { UserService } from 'src/engine/core-modules/user/services/user.service';
|
|
||||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
|
||||||
import { EmailService } from 'src/engine/core-modules/email/email.service';
|
import { EmailService } from 'src/engine/core-modules/email/email.service';
|
||||||
import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
|
import { EnvironmentService } from 'src/engine/core-modules/environment/environment.service';
|
||||||
import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
|
import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
|
||||||
import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
|
import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
|
||||||
import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
|
import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
|
||||||
|
import { UserService } from 'src/engine/core-modules/user/services/user.service';
|
||||||
|
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||||
import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity';
|
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 { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||||
|
|||||||
@ -506,3 +506,47 @@ export const CUSTOM_OBJECT_STANDARD_FIELD_IDS = {
|
|||||||
timelineActivities: '20202020-f1ef-4ba4-8f33-1a4577afa477',
|
timelineActivities: '20202020-f1ef-4ba4-8f33-1a4577afa477',
|
||||||
searchVector: '70e56537-18ef-4811-b1c7-0a444006b815',
|
searchVector: '70e56537-18ef-4811-b1c7-0a444006b815',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const STANDARD_OBJECT_FIELD_IDS = {
|
||||||
|
activityTarget: ACTIVITY_TARGET_STANDARD_FIELD_IDS,
|
||||||
|
activity: ACTIVITY_STANDARD_FIELD_IDS,
|
||||||
|
apiKey: API_KEY_STANDARD_FIELD_IDS,
|
||||||
|
attachment: ATTACHMENT_STANDARD_FIELD_IDS,
|
||||||
|
blocklist: BLOCKLIST_STANDARD_FIELD_IDS,
|
||||||
|
behavioralEvent: BEHAVIORAL_EVENT_STANDARD_FIELD_IDS,
|
||||||
|
calendarChannelEventAssociation:
|
||||||
|
CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS,
|
||||||
|
calendarChannel: CALENDAR_CHANNEL_STANDARD_FIELD_IDS,
|
||||||
|
calendarEventParticipant: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS,
|
||||||
|
calendarEvent: CALENDAR_EVENT_STANDARD_FIELD_IDS,
|
||||||
|
comment: COMMENT_STANDARD_FIELD_IDS,
|
||||||
|
company: COMPANY_STANDARD_FIELD_IDS,
|
||||||
|
connectedAccount: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS,
|
||||||
|
favorite: FAVORITE_STANDARD_FIELD_IDS,
|
||||||
|
auditLog: AUDIT_LOGS_STANDARD_FIELD_IDS,
|
||||||
|
messageChannelMessageAssociation:
|
||||||
|
MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS,
|
||||||
|
messageChannel: MESSAGE_CHANNEL_STANDARD_FIELD_IDS,
|
||||||
|
messageParticipant: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS,
|
||||||
|
messageThread: MESSAGE_THREAD_STANDARD_FIELD_IDS,
|
||||||
|
messageThreadSubscriber: MESSAGE_THREAD_SUBSCRIBER_STANDARD_FIELD_IDS,
|
||||||
|
message: MESSAGE_STANDARD_FIELD_IDS,
|
||||||
|
note: NOTE_STANDARD_FIELD_IDS,
|
||||||
|
noteTarget: NOTE_TARGET_STANDARD_FIELD_IDS,
|
||||||
|
opportunity: OPPORTUNITY_STANDARD_FIELD_IDS,
|
||||||
|
person: PERSON_STANDARD_FIELD_IDS,
|
||||||
|
task: TASK_STANDARD_FIELD_IDS,
|
||||||
|
taskTarget: TASK_TARGET_STANDARD_FIELD_IDS,
|
||||||
|
timelineActivity: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS,
|
||||||
|
viewField: VIEW_FIELD_STANDARD_FIELD_IDS,
|
||||||
|
viewGroup: VIEW_GROUP_STANDARD_FIELD_IDS,
|
||||||
|
viewFilter: VIEW_FILTER_STANDARD_FIELD_IDS,
|
||||||
|
viewSort: VIEW_SORT_STANDARD_FIELD_IDS,
|
||||||
|
view: VIEW_STANDARD_FIELD_IDS,
|
||||||
|
webhook: WEBHOOK_STANDARD_FIELD_IDS,
|
||||||
|
workflow: WORKFLOW_STANDARD_FIELD_IDS,
|
||||||
|
workflowEventListener: WORKFLOW_EVENT_LISTENER_STANDARD_FIELD_IDS,
|
||||||
|
workflowRun: WORKFLOW_RUN_STANDARD_FIELD_IDS,
|
||||||
|
workflowVersion: WORKFLOW_VERSION_STANDARD_FIELD_IDS,
|
||||||
|
workspaceMember: WORKSPACE_MEMBER_STANDARD_FIELD_IDS,
|
||||||
|
};
|
||||||
|
|||||||
@ -0,0 +1,41 @@
|
|||||||
|
export const STANDARD_OBJECT_ICONS = {
|
||||||
|
activityTarget: 'IconCheckbox',
|
||||||
|
activity: 'IconCheckbox',
|
||||||
|
apiKey: 'IconRobot',
|
||||||
|
attachment: 'IconFileImport',
|
||||||
|
blocklist: 'IconForbid2',
|
||||||
|
behavioralEvent: 'IconTimelineEvent',
|
||||||
|
calendarChannelEventAssociation: 'IconCalendar',
|
||||||
|
calendarChannel: 'IconCalendar',
|
||||||
|
calendarEventParticipant: 'IconCalendar',
|
||||||
|
calendarEvent: 'IconCalendar',
|
||||||
|
comment: 'IconMessageCircle',
|
||||||
|
company: 'IconBuildingSkyscraper',
|
||||||
|
connectedAccount: 'IconAt',
|
||||||
|
favorite: 'IconHeart',
|
||||||
|
auditLog: 'IconTimelineEvent',
|
||||||
|
messageChannelMessageAssociation: 'IconMessage',
|
||||||
|
messageChannel: 'IconMessage',
|
||||||
|
messageParticipant: 'IconUserCircle',
|
||||||
|
messageThread: 'IconMessage',
|
||||||
|
messageThreadSubscriber: 'IconPerson',
|
||||||
|
message: 'IconMessage',
|
||||||
|
note: 'IconNotes',
|
||||||
|
noteTarget: 'IconCheckbox',
|
||||||
|
opportunity: 'IconTargetArrow',
|
||||||
|
person: 'IconUser',
|
||||||
|
task: 'IconCheckbox',
|
||||||
|
taskTarget: 'IconCheckbox',
|
||||||
|
timelineActivity: 'IconTimelineEvent',
|
||||||
|
viewField: 'IconTag',
|
||||||
|
viewGroup: 'IconTag',
|
||||||
|
viewFilter: 'IconFilterBolt',
|
||||||
|
viewSort: 'IconArrowsSort',
|
||||||
|
view: 'IconLayoutCollage',
|
||||||
|
webhook: 'IconRobot',
|
||||||
|
workflow: 'IconSettingsAutomation',
|
||||||
|
workflowEventListener: 'IconSettingsAutomation',
|
||||||
|
workflowRun: 'IconSettingsAutomation',
|
||||||
|
workflowVersion: 'IconSettingsAutomation',
|
||||||
|
workspaceMember: 'IconUserCircle',
|
||||||
|
};
|
||||||
@ -10,6 +10,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { ACTIVITY_TARGET_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { ACTIVITY_TARGET_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity';
|
import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity';
|
||||||
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
||||||
@ -22,7 +23,7 @@ import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/perso
|
|||||||
labelSingular: 'Activity Target',
|
labelSingular: 'Activity Target',
|
||||||
labelPlural: 'Activity Targets',
|
labelPlural: 'Activity Targets',
|
||||||
description: 'An activity target',
|
description: 'An activity target',
|
||||||
icon: 'IconCheckbox',
|
icon: STANDARD_OBJECT_ICONS.activityTarget,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
export class ActivityTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
export class ActivityTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { ActivityTargetWorkspaceEntity } from 'src/modules/activity/standard-objects/activity-target.workspace-entity';
|
import { ActivityTargetWorkspaceEntity } from 'src/modules/activity/standard-objects/activity-target.workspace-entity';
|
||||||
import { CommentWorkspaceEntity } from 'src/modules/activity/standard-objects/comment.workspace-entity';
|
import { CommentWorkspaceEntity } from 'src/modules/activity/standard-objects/comment.workspace-entity';
|
||||||
@ -25,7 +26,7 @@ import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/sta
|
|||||||
labelSingular: 'Activity',
|
labelSingular: 'Activity',
|
||||||
labelPlural: 'Activities',
|
labelPlural: 'Activities',
|
||||||
description: 'An activity',
|
description: 'An activity',
|
||||||
icon: 'IconCheckbox',
|
icon: STANDARD_OBJECT_ICONS.activity,
|
||||||
labelIdentifierStandardId: ACTIVITY_STANDARD_FIELD_IDS.title,
|
labelIdentifierStandardId: ACTIVITY_STANDARD_FIELD_IDS.title,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -1,17 +1,18 @@
|
|||||||
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
|
||||||
|
|
||||||
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 { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
|
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||||
|
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||||
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { COMMENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { COMMENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity';
|
import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity';
|
||||||
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
||||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
|
||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
|
||||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
|
||||||
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
|
||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
|
||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
|
||||||
|
|
||||||
@WorkspaceEntity({
|
@WorkspaceEntity({
|
||||||
standardId: STANDARD_OBJECT_IDS.comment,
|
standardId: STANDARD_OBJECT_IDS.comment,
|
||||||
@ -19,7 +20,7 @@ import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-
|
|||||||
labelSingular: 'Comment',
|
labelSingular: 'Comment',
|
||||||
labelPlural: 'Comments',
|
labelPlural: 'Comments',
|
||||||
description: 'A comment',
|
description: 'A comment',
|
||||||
icon: 'IconMessageCircle',
|
icon: STANDARD_OBJECT_ICONS.comment,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
export class CommentWorkspaceEntity extends BaseWorkspaceEntity {
|
export class CommentWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/work
|
|||||||
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { API_KEY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { API_KEY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
|
|
||||||
@WorkspaceEntity({
|
@WorkspaceEntity({
|
||||||
@ -14,7 +15,7 @@ import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync
|
|||||||
labelSingular: 'API Key',
|
labelSingular: 'API Key',
|
||||||
labelPlural: 'API Keys',
|
labelPlural: 'API Keys',
|
||||||
description: 'An API key',
|
description: 'An API key',
|
||||||
icon: 'IconRobot',
|
icon: STANDARD_OBJECT_ICONS.apiKey,
|
||||||
labelIdentifierStandardId: API_KEY_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: API_KEY_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { ATTACHMENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { ATTACHMENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity';
|
import { ActivityWorkspaceEntity } from 'src/modules/activity/standard-objects/activity.workspace-entity';
|
||||||
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
||||||
@ -28,7 +29,7 @@ import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/sta
|
|||||||
labelSingular: 'Attachment',
|
labelSingular: 'Attachment',
|
||||||
labelPlural: 'Attachments',
|
labelPlural: 'Attachments',
|
||||||
description: 'An attachment',
|
description: 'An attachment',
|
||||||
icon: 'IconFileImport',
|
icon: STANDARD_OBJECT_ICONS.attachment,
|
||||||
labelIdentifierStandardId: ATTACHMENT_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: ATTACHMENT_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { BLOCKLIST_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { BLOCKLIST_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
||||||
|
|
||||||
@ -19,7 +20,7 @@ import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/sta
|
|||||||
labelSingular: 'Blocklist',
|
labelSingular: 'Blocklist',
|
||||||
labelPlural: 'Blocklists',
|
labelPlural: 'Blocklists',
|
||||||
description: 'Blocklist',
|
description: 'Blocklist',
|
||||||
icon: 'IconForbid2',
|
icon: STANDARD_OBJECT_ICONS.blocklist,
|
||||||
labelIdentifierStandardId: BLOCKLIST_STANDARD_FIELD_IDS.handle,
|
labelIdentifierStandardId: BLOCKLIST_STANDARD_FIELD_IDS.handle,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity';
|
import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity';
|
||||||
import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event.workspace-entity';
|
import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event.workspace-entity';
|
||||||
@ -20,7 +21,7 @@ import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standa
|
|||||||
labelSingular: 'Calendar Channel Event Association',
|
labelSingular: 'Calendar Channel Event Association',
|
||||||
labelPlural: 'Calendar Channel Event Associations',
|
labelPlural: 'Calendar Channel Event Associations',
|
||||||
description: 'Calendar Channel Event Associations',
|
description: 'Calendar Channel Event Associations',
|
||||||
icon: 'IconCalendar',
|
icon: STANDARD_OBJECT_ICONS.calendarChannelEventAssociation,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { CALENDAR_CHANNEL_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { CALENDAR_CHANNEL_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity';
|
import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity';
|
||||||
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
|
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
|
||||||
@ -71,7 +72,7 @@ registerEnumType(CalendarChannelContactAutoCreationPolicy, {
|
|||||||
labelSingular: 'Calendar Channel',
|
labelSingular: 'Calendar Channel',
|
||||||
labelPlural: 'Calendar Channels',
|
labelPlural: 'Calendar Channels',
|
||||||
description: 'Calendar Channels',
|
description: 'Calendar Channels',
|
||||||
icon: 'IconCalendar',
|
icon: STANDARD_OBJECT_ICONS.calendarChannel,
|
||||||
labelIdentifierStandardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.handle,
|
labelIdentifierStandardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.handle,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event.workspace-entity';
|
import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event.workspace-entity';
|
||||||
import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity';
|
import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity';
|
||||||
@ -29,7 +30,7 @@ export enum CalendarEventParticipantResponseStatus {
|
|||||||
labelSingular: 'Calendar event participant',
|
labelSingular: 'Calendar event participant',
|
||||||
labelPlural: 'Calendar event participants',
|
labelPlural: 'Calendar event participants',
|
||||||
description: 'Calendar event participants',
|
description: 'Calendar event participants',
|
||||||
icon: 'IconCalendar',
|
icon: STANDARD_OBJECT_ICONS.calendarEventParticipant,
|
||||||
labelIdentifierStandardId:
|
labelIdentifierStandardId:
|
||||||
CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.handle,
|
CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.handle,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-
|
|||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { CALENDAR_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { CALENDAR_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity';
|
import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity';
|
||||||
import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity';
|
import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity';
|
||||||
@ -24,7 +25,7 @@ import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/co
|
|||||||
labelSingular: 'Calendar event',
|
labelSingular: 'Calendar event',
|
||||||
labelPlural: 'Calendar events',
|
labelPlural: 'Calendar events',
|
||||||
description: 'Calendar events',
|
description: 'Calendar events',
|
||||||
icon: 'IconCalendar',
|
icon: STANDARD_OBJECT_ICONS.calendarEvent,
|
||||||
labelIdentifierStandardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.title,
|
labelIdentifierStandardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.title,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { COMPANY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { COMPANY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import {
|
import {
|
||||||
FieldTypeAndNameMetadata,
|
FieldTypeAndNameMetadata,
|
||||||
@ -53,7 +54,7 @@ export const SEARCH_FIELDS_FOR_COMPANY: FieldTypeAndNameMetadata[] = [
|
|||||||
labelSingular: 'Company',
|
labelSingular: 'Company',
|
||||||
labelPlural: 'Companies',
|
labelPlural: 'Companies',
|
||||||
description: 'A company',
|
description: 'A company',
|
||||||
icon: 'IconBuildingSkyscraper',
|
icon: STANDARD_OBJECT_ICONS.company,
|
||||||
shortcut: 'C',
|
shortcut: 'C',
|
||||||
labelIdentifierStandardId: COMPANY_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: COMPANY_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { CONNECTED_ACCOUNT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { CONNECTED_ACCOUNT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity';
|
import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity';
|
||||||
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
|
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
|
||||||
@ -29,7 +30,7 @@ export enum ConnectedAccountProvider {
|
|||||||
labelSingular: 'Connected Account',
|
labelSingular: 'Connected Account',
|
||||||
labelPlural: 'Connected Accounts',
|
labelPlural: 'Connected Accounts',
|
||||||
description: 'A connected account',
|
description: 'A connected account',
|
||||||
icon: 'IconAt',
|
icon: STANDARD_OBJECT_ICONS.connectedAccount,
|
||||||
labelIdentifierStandardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.handle,
|
labelIdentifierStandardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.handle,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { FAVORITE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { FAVORITE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
||||||
import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity';
|
import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity';
|
||||||
@ -33,7 +34,7 @@ import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/sta
|
|||||||
labelSingular: 'Favorite',
|
labelSingular: 'Favorite',
|
||||||
labelPlural: 'Favorites',
|
labelPlural: 'Favorites',
|
||||||
description: 'A favorite',
|
description: 'A favorite',
|
||||||
icon: 'IconHeart',
|
icon: STANDARD_OBJECT_ICONS.favorite,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import {
|
|||||||
MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS,
|
MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS,
|
||||||
MESSAGE_STANDARD_FIELD_IDS,
|
MESSAGE_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_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { MessageDirection } from 'src/modules/messaging/common/enums/message-direction.enum';
|
import { MessageDirection } from 'src/modules/messaging/common/enums/message-direction.enum';
|
||||||
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
|
import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity';
|
||||||
@ -25,7 +26,7 @@ import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-ob
|
|||||||
labelSingular: 'Message Channel Message Association',
|
labelSingular: 'Message Channel Message Association',
|
||||||
labelPlural: 'Message Channel Message Associations',
|
labelPlural: 'Message Channel Message Associations',
|
||||||
description: 'Message Synced with a Message Channel',
|
description: 'Message Synced with a Message Channel',
|
||||||
icon: 'IconMessage',
|
icon: STANDARD_OBJECT_ICONS.messageChannelMessageAssociation,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -16,6 +16,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { MESSAGE_CHANNEL_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { MESSAGE_CHANNEL_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
|
import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
|
||||||
import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity';
|
import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity';
|
||||||
@ -80,7 +81,7 @@ registerEnumType(MessageChannelContactAutoCreationPolicy, {
|
|||||||
labelSingular: 'Message Channel',
|
labelSingular: 'Message Channel',
|
||||||
labelPlural: 'Message Channels',
|
labelPlural: 'Message Channels',
|
||||||
description: 'Message Channels',
|
description: 'Message Channels',
|
||||||
icon: 'IconMessage',
|
icon: STANDARD_OBJECT_ICONS.messageChannel,
|
||||||
labelIdentifierStandardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.handle,
|
labelIdentifierStandardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.handle,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity';
|
import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity';
|
||||||
import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity';
|
import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity';
|
||||||
@ -22,7 +23,7 @@ import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/sta
|
|||||||
labelSingular: 'Message Participant',
|
labelSingular: 'Message Participant',
|
||||||
labelPlural: 'Message Participants',
|
labelPlural: 'Message Participants',
|
||||||
description: 'Message Participants',
|
description: 'Message Participants',
|
||||||
icon: 'IconUserCircle',
|
icon: STANDARD_OBJECT_ICONS.messageParticipant,
|
||||||
labelIdentifierStandardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.handle,
|
labelIdentifierStandardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.handle,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { MESSAGE_THREAD_SUBSCRIBER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { MESSAGE_THREAD_SUBSCRIBER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-thread.workspace-entity';
|
import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-thread.workspace-entity';
|
||||||
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
||||||
@ -20,7 +21,7 @@ import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/sta
|
|||||||
labelSingular: 'Message Thread Subscriber',
|
labelSingular: 'Message Thread Subscriber',
|
||||||
labelPlural: 'Message Threads Subscribers',
|
labelPlural: 'Message Threads Subscribers',
|
||||||
description: 'Message Thread Subscribers',
|
description: 'Message Thread Subscribers',
|
||||||
icon: 'IconPerson',
|
icon: STANDARD_OBJECT_ICONS.messageThreadSubscriber,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-
|
|||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { MESSAGE_THREAD_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { MESSAGE_THREAD_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { MessageThreadSubscriberWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-thread-subscriber.workspace-entity';
|
import { MessageThreadSubscriberWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-thread-subscriber.workspace-entity';
|
||||||
import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity';
|
import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity';
|
||||||
@ -23,7 +24,7 @@ import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-ob
|
|||||||
labelSingular: 'Message Thread',
|
labelSingular: 'Message Thread',
|
||||||
labelPlural: 'Message Threads',
|
labelPlural: 'Message Threads',
|
||||||
description: 'Message Thread',
|
description: 'Message Thread',
|
||||||
icon: 'IconMessage',
|
icon: STANDARD_OBJECT_ICONS.messageThread,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { MESSAGE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { MESSAGE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity';
|
import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity';
|
||||||
import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity';
|
import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity';
|
||||||
@ -25,7 +26,7 @@ import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/common/stand
|
|||||||
labelSingular: 'Message',
|
labelSingular: 'Message',
|
||||||
labelPlural: 'Messages',
|
labelPlural: 'Messages',
|
||||||
description: 'Message',
|
description: 'Message',
|
||||||
icon: 'IconMessage',
|
icon: STANDARD_OBJECT_ICONS.message,
|
||||||
labelIdentifierStandardId: MESSAGE_STANDARD_FIELD_IDS.subject,
|
labelIdentifierStandardId: MESSAGE_STANDARD_FIELD_IDS.subject,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { NOTE_TARGET_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { NOTE_TARGET_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
||||||
import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity';
|
import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity';
|
||||||
@ -22,7 +23,7 @@ import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/perso
|
|||||||
labelSingular: 'Note Target',
|
labelSingular: 'Note Target',
|
||||||
labelPlural: 'Note Targets',
|
labelPlural: 'Note Targets',
|
||||||
description: 'A note target',
|
description: 'A note target',
|
||||||
icon: 'IconCheckbox',
|
icon: STANDARD_OBJECT_ICONS.noteTarget,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-
|
|||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { NOTE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { NOTE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import {
|
import {
|
||||||
FieldTypeAndNameMetadata,
|
FieldTypeAndNameMetadata,
|
||||||
@ -43,7 +44,7 @@ export const SEARCH_FIELDS_FOR_NOTES: FieldTypeAndNameMetadata[] = [
|
|||||||
labelSingular: 'Note',
|
labelSingular: 'Note',
|
||||||
labelPlural: 'Notes',
|
labelPlural: 'Notes',
|
||||||
description: 'A note',
|
description: 'A note',
|
||||||
icon: 'IconNotes',
|
icon: STANDARD_OBJECT_ICONS.note,
|
||||||
shortcut: 'N',
|
shortcut: 'N',
|
||||||
labelIdentifierStandardId: NOTE_STANDARD_FIELD_IDS.title,
|
labelIdentifierStandardId: NOTE_STANDARD_FIELD_IDS.title,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -23,6 +23,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
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_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import {
|
import {
|
||||||
FieldTypeAndNameMetadata,
|
FieldTypeAndNameMetadata,
|
||||||
@ -49,7 +50,7 @@ export const SEARCH_FIELDS_FOR_OPPORTUNITY: FieldTypeAndNameMetadata[] = [
|
|||||||
labelSingular: 'Opportunity',
|
labelSingular: 'Opportunity',
|
||||||
labelPlural: 'Opportunities',
|
labelPlural: 'Opportunities',
|
||||||
description: 'An opportunity',
|
description: 'An opportunity',
|
||||||
icon: 'IconTargetArrow',
|
icon: STANDARD_OBJECT_ICONS.opportunity,
|
||||||
shortcut: 'O',
|
shortcut: 'O',
|
||||||
labelIdentifierStandardId: OPPORTUNITY_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: OPPORTUNITY_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -26,6 +26,7 @@ import { WorkspaceIsUnique } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { PERSON_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { PERSON_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import {
|
import {
|
||||||
FieldTypeAndNameMetadata,
|
FieldTypeAndNameMetadata,
|
||||||
@ -58,7 +59,7 @@ export const SEARCH_FIELDS_FOR_PERSON: FieldTypeAndNameMetadata[] = [
|
|||||||
labelSingular: 'Person',
|
labelSingular: 'Person',
|
||||||
labelPlural: 'People',
|
labelPlural: 'People',
|
||||||
description: 'A person',
|
description: 'A person',
|
||||||
icon: 'IconUser',
|
icon: STANDARD_OBJECT_ICONS.person,
|
||||||
shortcut: 'P',
|
shortcut: 'P',
|
||||||
labelIdentifierStandardId: PERSON_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: PERSON_STANDARD_FIELD_IDS.name,
|
||||||
imageIdentifierStandardId: PERSON_STANDARD_FIELD_IDS.avatarUrl,
|
imageIdentifierStandardId: PERSON_STANDARD_FIELD_IDS.avatarUrl,
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { TASK_TARGET_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { TASK_TARGET_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
||||||
import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity';
|
import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity';
|
||||||
@ -22,7 +23,7 @@ import { TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.work
|
|||||||
labelSingular: 'Task Target',
|
labelSingular: 'Task Target',
|
||||||
labelPlural: 'Task Targets',
|
labelPlural: 'Task Targets',
|
||||||
description: 'An task target',
|
description: 'An task target',
|
||||||
icon: 'IconCheckbox',
|
icon: STANDARD_OBJECT_ICONS.taskTarget,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { TASK_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { TASK_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import {
|
import {
|
||||||
FieldTypeAndNameMetadata,
|
FieldTypeAndNameMetadata,
|
||||||
@ -45,7 +46,7 @@ export const SEARCH_FIELDS_FOR_TASK: FieldTypeAndNameMetadata[] = [
|
|||||||
labelSingular: 'Task',
|
labelSingular: 'Task',
|
||||||
labelPlural: 'Tasks',
|
labelPlural: 'Tasks',
|
||||||
description: 'A task',
|
description: 'A task',
|
||||||
icon: 'IconCheckbox',
|
icon: STANDARD_OBJECT_ICONS.task,
|
||||||
shortcut: 'T',
|
shortcut: 'T',
|
||||||
labelIdentifierStandardId: TASK_STANDARD_FIELD_IDS.title,
|
labelIdentifierStandardId: TASK_STANDARD_FIELD_IDS.title,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { AUDIT_LOGS_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { AUDIT_LOGS_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
|
||||||
|
|
||||||
@ -19,7 +20,7 @@ import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/sta
|
|||||||
labelSingular: 'Audit Log',
|
labelSingular: 'Audit Log',
|
||||||
labelPlural: 'Audit Logs',
|
labelPlural: 'Audit Logs',
|
||||||
description: 'An audit log of actions performed in the system',
|
description: 'An audit log of actions performed in the system',
|
||||||
icon: 'IconIconTimelineEvent',
|
icon: STANDARD_OBJECT_ICONS.auditLog,
|
||||||
labelIdentifierStandardId: AUDIT_LOGS_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: AUDIT_LOGS_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.d
|
|||||||
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { BEHAVIORAL_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { BEHAVIORAL_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
|
|
||||||
@WorkspaceEntity({
|
@WorkspaceEntity({
|
||||||
@ -15,7 +16,7 @@ import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync
|
|||||||
labelSingular: 'Behavioral Event',
|
labelSingular: 'Behavioral Event',
|
||||||
labelPlural: 'Behavioral Events',
|
labelPlural: 'Behavioral Events',
|
||||||
description: 'An event related to user behavior',
|
description: 'An event related to user behavior',
|
||||||
icon: 'IconIconTimelineEvent',
|
icon: STANDARD_OBJECT_ICONS.behavioralEvent,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity';
|
||||||
import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity';
|
import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity';
|
||||||
@ -32,7 +33,7 @@ import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/sta
|
|||||||
labelSingular: 'Timeline Activity',
|
labelSingular: 'Timeline Activity',
|
||||||
labelPlural: 'Timeline Activities',
|
labelPlural: 'Timeline Activities',
|
||||||
description: 'Aggregated / filtered event to be displayed on the timeline',
|
description: 'Aggregated / filtered event to be displayed on the timeline',
|
||||||
icon: 'IconIconTimelineEvent',
|
icon: STANDARD_OBJECT_ICONS.timelineActivity,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { VIEW_FIELD_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { VIEW_FIELD_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
|
import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.work
|
|||||||
labelSingular: 'View Field',
|
labelSingular: 'View Field',
|
||||||
labelPlural: 'View Fields',
|
labelPlural: 'View Fields',
|
||||||
description: '(System) View Fields',
|
description: '(System) View Fields',
|
||||||
icon: 'IconTag',
|
icon: STANDARD_OBJECT_ICONS.viewField,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { VIEW_FILTER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { VIEW_FILTER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
|
import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
|
||||||
|
|
||||||
@ -20,7 +21,7 @@ import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.work
|
|||||||
labelSingular: 'View Filter',
|
labelSingular: 'View Filter',
|
||||||
labelPlural: 'View Filters',
|
labelPlural: 'View Filters',
|
||||||
description: '(System) View Filters',
|
description: '(System) View Filters',
|
||||||
icon: 'IconFilterBolt',
|
icon: STANDARD_OBJECT_ICONS.viewFilter,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -1,16 +1,17 @@
|
|||||||
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 { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity';
|
||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
|
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||||
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
|
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
|
||||||
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { VIEW_GROUP_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { VIEW_GROUP_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
|
import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
|
||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
|
||||||
|
|
||||||
@WorkspaceEntity({
|
@WorkspaceEntity({
|
||||||
standardId: STANDARD_OBJECT_IDS.viewGroup,
|
standardId: STANDARD_OBJECT_IDS.viewGroup,
|
||||||
@ -18,7 +19,7 @@ import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-
|
|||||||
labelSingular: 'View Group',
|
labelSingular: 'View Group',
|
||||||
labelPlural: 'View Groups',
|
labelPlural: 'View Groups',
|
||||||
description: '(System) View Groups',
|
description: '(System) View Groups',
|
||||||
icon: 'IconTag',
|
icon: STANDARD_OBJECT_ICONS.viewGroup,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { VIEW_SORT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { VIEW_SORT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
|
import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity';
|
||||||
|
|
||||||
@ -20,7 +21,7 @@ import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.work
|
|||||||
labelSingular: 'View Sort',
|
labelSingular: 'View Sort',
|
||||||
labelPlural: 'View Sorts',
|
labelPlural: 'View Sorts',
|
||||||
description: '(System) View Sorts',
|
description: '(System) View Sorts',
|
||||||
icon: 'IconArrowsSort',
|
icon: STANDARD_OBJECT_ICONS.viewSort,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
@ -13,13 +13,14 @@ import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-
|
|||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { VIEW_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { VIEW_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
||||||
import { ViewFieldWorkspaceEntity } from 'src/modules/view/standard-objects/view-field.workspace-entity';
|
import { ViewFieldWorkspaceEntity } from 'src/modules/view/standard-objects/view-field.workspace-entity';
|
||||||
import { ViewFilterGroupWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter-group.workspace-entity';
|
import { ViewFilterGroupWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter-group.workspace-entity';
|
||||||
import { ViewFilterWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter.workspace-entity';
|
import { ViewFilterWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter.workspace-entity';
|
||||||
import { ViewSortWorkspaceEntity } from 'src/modules/view/standard-objects/view-sort.workspace-entity';
|
|
||||||
import { ViewGroupWorkspaceEntity } from 'src/modules/view/standard-objects/view-group.workspace-entity';
|
import { ViewGroupWorkspaceEntity } from 'src/modules/view/standard-objects/view-group.workspace-entity';
|
||||||
|
import { ViewSortWorkspaceEntity } from 'src/modules/view/standard-objects/view-sort.workspace-entity';
|
||||||
|
|
||||||
@WorkspaceEntity({
|
@WorkspaceEntity({
|
||||||
standardId: STANDARD_OBJECT_IDS.view,
|
standardId: STANDARD_OBJECT_IDS.view,
|
||||||
@ -27,7 +28,7 @@ import { ViewGroupWorkspaceEntity } from 'src/modules/view/standard-objects/view
|
|||||||
labelSingular: 'View',
|
labelSingular: 'View',
|
||||||
labelPlural: 'Views',
|
labelPlural: 'Views',
|
||||||
description: '(System) Views',
|
description: '(System) Views',
|
||||||
icon: 'IconLayoutCollage',
|
icon: STANDARD_OBJECT_ICONS.view,
|
||||||
labelIdentifierStandardId: VIEW_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: VIEW_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
|
|||||||
@ -2,12 +2,13 @@ import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/fi
|
|||||||
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
|
||||||
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
|
||||||
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
|
||||||
|
import { WorkspaceIsDeprecated } from 'src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator';
|
||||||
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
|
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
|
||||||
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
|
||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { WEBHOOK_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { WEBHOOK_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { WorkspaceIsDeprecated } from 'src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator';
|
|
||||||
|
|
||||||
@WorkspaceEntity({
|
@WorkspaceEntity({
|
||||||
standardId: STANDARD_OBJECT_IDS.webhook,
|
standardId: STANDARD_OBJECT_IDS.webhook,
|
||||||
@ -15,7 +16,7 @@ import { WorkspaceIsDeprecated } from 'src/engine/twenty-orm/decorators/workspac
|
|||||||
labelSingular: 'Webhook',
|
labelSingular: 'Webhook',
|
||||||
labelPlural: 'Webhooks',
|
labelPlural: 'Webhooks',
|
||||||
description: 'A webhook',
|
description: 'A webhook',
|
||||||
icon: 'IconRobot',
|
icon: STANDARD_OBJECT_ICONS.webhook,
|
||||||
labelIdentifierStandardId: WEBHOOK_STANDARD_FIELD_IDS.targetUrl,
|
labelIdentifierStandardId: WEBHOOK_STANDARD_FIELD_IDS.targetUrl,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { WORKFLOW_EVENT_LISTENER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { WORKFLOW_EVENT_LISTENER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
|
import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity';
|
||||||
|
|
||||||
@ -21,6 +22,7 @@ import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-ob
|
|||||||
labelSingular: 'WorkflowEventListener',
|
labelSingular: 'WorkflowEventListener',
|
||||||
labelPlural: 'WorkflowEventListeners',
|
labelPlural: 'WorkflowEventListeners',
|
||||||
description: 'A workflow event listener',
|
description: 'A workflow event listener',
|
||||||
|
icon: STANDARD_OBJECT_ICONS.workflowEventListener,
|
||||||
labelIdentifierStandardId:
|
labelIdentifierStandardId:
|
||||||
WORKFLOW_EVENT_LISTENER_STANDARD_FIELD_IDS.eventName,
|
WORKFLOW_EVENT_LISTENER_STANDARD_FIELD_IDS.eventName,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
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_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
||||||
import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
|
import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
|
||||||
@ -54,7 +55,7 @@ export type WorkflowRunOutput = {
|
|||||||
labelPlural: 'Workflow Runs',
|
labelPlural: 'Workflow Runs',
|
||||||
description: 'A workflow run',
|
description: 'A workflow run',
|
||||||
labelIdentifierStandardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name,
|
||||||
icon: 'IconSettingsAutomation',
|
icon: STANDARD_OBJECT_ICONS.workflowRun,
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is
|
|||||||
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { WORKFLOW_VERSION_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { WORKFLOW_VERSION_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
||||||
import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
|
import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
|
||||||
@ -63,7 +64,7 @@ const WorkflowVersionStatusOptions = [
|
|||||||
labelSingular: 'Workflow Version',
|
labelSingular: 'Workflow Version',
|
||||||
labelPlural: 'Workflow Versions',
|
labelPlural: 'Workflow Versions',
|
||||||
description: 'A workflow version',
|
description: 'A workflow version',
|
||||||
icon: 'IconSettingsAutomation',
|
icon: STANDARD_OBJECT_ICONS.workflowVersion,
|
||||||
labelIdentifierStandardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
@WorkspaceGate({
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-
|
|||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { WORKFLOW_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { WORKFLOW_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
|
||||||
import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
|
import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity';
|
||||||
@ -54,7 +55,7 @@ const WorkflowStatusOptions = [
|
|||||||
labelSingular: 'Workflow',
|
labelSingular: 'Workflow',
|
||||||
labelPlural: 'Workflows',
|
labelPlural: 'Workflows',
|
||||||
description: 'A workflow',
|
description: 'A workflow',
|
||||||
icon: 'IconSettingsAutomation',
|
icon: STANDARD_OBJECT_ICONS.workflow,
|
||||||
shortcut: 'W',
|
shortcut: 'W',
|
||||||
labelIdentifierStandardId: WORKFLOW_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: WORKFLOW_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-
|
|||||||
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
|
||||||
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
import { WORKSPACE_MEMBER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
import { WORKSPACE_MEMBER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
|
||||||
|
import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons';
|
||||||
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';
|
||||||
import {
|
import {
|
||||||
FieldTypeAndNameMetadata,
|
FieldTypeAndNameMetadata,
|
||||||
@ -78,7 +79,7 @@ export const SEARCH_FIELDS_FOR_WORKSPACE_MEMBER: FieldTypeAndNameMetadata[] = [
|
|||||||
labelSingular: 'Workspace Member',
|
labelSingular: 'Workspace Member',
|
||||||
labelPlural: 'Workspace Members',
|
labelPlural: 'Workspace Members',
|
||||||
description: 'A workspace member',
|
description: 'A workspace member',
|
||||||
icon: 'IconUserCircle',
|
icon: STANDARD_OBJECT_ICONS.workspaceMember,
|
||||||
labelIdentifierStandardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
|
|||||||
Reference in New Issue
Block a user