Hide workflows + remove feature flag from entities (#9768)
From now on workflow entities and views will be seed for every new workspace. What will prevent user to see those is the feature flag used in frontend. It will prevent workflow objects to be stored in the recoil state. Without feature flag, workflows will: - remain invisible in metadata - not be accessible through views or show page - remain invisible on side menu
This commit is contained in:
@ -2,10 +2,16 @@ import { FIND_MANY_OBJECT_METADATA_ITEMS } from '@/object-metadata/graphql/queri
|
|||||||
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
import { useApolloMetadataClient } from '@/object-metadata/hooks/useApolloMetadataClient';
|
||||||
import { isAppWaitingForFreshObjectMetadataState } from '@/object-metadata/states/isAppWaitingForFreshObjectMetadataState';
|
import { isAppWaitingForFreshObjectMetadataState } from '@/object-metadata/states/isAppWaitingForFreshObjectMetadataState';
|
||||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||||
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||||
|
import { isWorkflowSubObjectMetadata } from '@/object-metadata/utils/isWorkflowSubObjectMetadata';
|
||||||
import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '@/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems';
|
import { mapPaginatedObjectMetadataItemsToObjectMetadataItems } from '@/object-metadata/utils/mapPaginatedObjectMetadataItemsToObjectMetadataItems';
|
||||||
|
import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled';
|
||||||
import { useRecoilCallback } from 'recoil';
|
import { useRecoilCallback } from 'recoil';
|
||||||
import { ObjectMetadataItemsQuery } from '~/generated-metadata/graphql';
|
import {
|
||||||
|
FeatureFlagKey,
|
||||||
|
ObjectMetadataItemsQuery,
|
||||||
|
} from '~/generated-metadata/graphql';
|
||||||
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
import { isDeeplyEqual } from '~/utils/isDeeplyEqual';
|
||||||
|
|
||||||
type FetchPolicy = 'network-only' | 'cache-first';
|
type FetchPolicy = 'network-only' | 'cache-first';
|
||||||
@ -14,6 +20,9 @@ export const useRefreshObjectMetadataItems = (
|
|||||||
fetchPolicy: FetchPolicy = 'cache-first',
|
fetchPolicy: FetchPolicy = 'cache-first',
|
||||||
) => {
|
) => {
|
||||||
const client = useApolloMetadataClient();
|
const client = useApolloMetadataClient();
|
||||||
|
const isWorkflowEnabled = useIsFeatureEnabled(
|
||||||
|
FeatureFlagKey.IsWorkflowEnabled,
|
||||||
|
);
|
||||||
|
|
||||||
const refreshObjectMetadataItems = async () => {
|
const refreshObjectMetadataItems = async () => {
|
||||||
const result = await client.query<ObjectMetadataItemsQuery>({
|
const result = await client.query<ObjectMetadataItemsQuery>({
|
||||||
@ -27,7 +36,15 @@ export const useRefreshObjectMetadataItems = (
|
|||||||
pagedObjectMetadataItems: result.data,
|
pagedObjectMetadataItems: result.data,
|
||||||
});
|
});
|
||||||
|
|
||||||
replaceObjectMetadataItemIfDifferent(objectMetadataItems);
|
const filteredObjectMetadataItems = objectMetadataItems.filter((object) => {
|
||||||
|
return (
|
||||||
|
isWorkflowEnabled ||
|
||||||
|
(object.nameSingular !== CoreObjectNameSingular.Workflow &&
|
||||||
|
!isWorkflowSubObjectMetadata(object.nameSingular))
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
replaceObjectMetadataItemIfDifferent(filteredObjectMetadataItems);
|
||||||
};
|
};
|
||||||
|
|
||||||
const replaceObjectMetadataItemIfDifferent = useRecoilCallback(
|
const replaceObjectMetadataItemIfDifferent = useRecoilCallback(
|
||||||
|
|||||||
@ -32,7 +32,6 @@ import { TypeORMService } from 'src/database/typeorm/typeorm.service';
|
|||||||
import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
|
import { InjectCacheStorage } from 'src/engine/core-modules/cache-storage/decorators/cache-storage.decorator';
|
||||||
import { CacheStorageService } from 'src/engine/core-modules/cache-storage/services/cache-storage.service';
|
import { CacheStorageService } from 'src/engine/core-modules/cache-storage/services/cache-storage.service';
|
||||||
import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
|
import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
|
||||||
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
|
||||||
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
|
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
|
||||||
import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity';
|
import { 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';
|
||||||
@ -183,12 +182,6 @@ export class DataSeedWorkspaceCommand extends CommandRunner {
|
|||||||
dataSourceMetadata.workspaceId,
|
dataSourceMetadata.workspaceId,
|
||||||
);
|
);
|
||||||
|
|
||||||
const isWorkflowEnabled =
|
|
||||||
await this.featureFlagService.isFeatureEnabled(
|
|
||||||
FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
dataSourceMetadata.workspaceId,
|
|
||||||
);
|
|
||||||
|
|
||||||
await seedCompanies(entityManager, dataSourceMetadata.schema);
|
await seedCompanies(entityManager, dataSourceMetadata.schema);
|
||||||
await seedPeople(entityManager, dataSourceMetadata.schema);
|
await seedPeople(entityManager, dataSourceMetadata.schema);
|
||||||
await seedOpportunity(entityManager, dataSourceMetadata.schema);
|
await seedOpportunity(entityManager, dataSourceMetadata.schema);
|
||||||
@ -229,7 +222,6 @@ export class DataSeedWorkspaceCommand extends CommandRunner {
|
|||||||
entityManager,
|
entityManager,
|
||||||
dataSourceMetadata.schema,
|
dataSourceMetadata.schema,
|
||||||
objectMetadataStandardIdToIdMap,
|
objectMetadataStandardIdToIdMap,
|
||||||
isWorkflowEnabled,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const devViewDefinitionsWithId = await createWorkspaceViews(
|
const devViewDefinitionsWithId = await createWorkspaceViews(
|
||||||
|
|||||||
@ -13,7 +13,6 @@ export const seedWorkspaceWithDemoData = async (
|
|||||||
workspaceDataSource: DataSource,
|
workspaceDataSource: DataSource,
|
||||||
schemaName: string,
|
schemaName: string,
|
||||||
objectMetadata: ObjectMetadataEntity[],
|
objectMetadata: ObjectMetadataEntity[],
|
||||||
isWorkflowEnabled: boolean,
|
|
||||||
) => {
|
) => {
|
||||||
const objectMetadataMap = objectMetadata.reduce((acc, object) => {
|
const objectMetadataMap = objectMetadata.reduce((acc, object) => {
|
||||||
acc[object.standardId ?? ''] = {
|
acc[object.standardId ?? ''] = {
|
||||||
@ -38,7 +37,6 @@ export const seedWorkspaceWithDemoData = async (
|
|||||||
entityManager,
|
entityManager,
|
||||||
schemaName,
|
schemaName,
|
||||||
objectMetadataMap,
|
objectMetadataMap,
|
||||||
isWorkflowEnabled,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await seedWorkspaceFavorites(
|
await seedWorkspaceFavorites(
|
||||||
|
|||||||
@ -18,7 +18,6 @@ export const seedViewWithDemoData = async (
|
|||||||
entityManager: EntityManager,
|
entityManager: EntityManager,
|
||||||
schemaName: string,
|
schemaName: string,
|
||||||
objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
|
objectMetadataStandardIdToIdMap: ObjectMetadataStandardIdToIdMap,
|
||||||
isWorkflowEnabled: boolean,
|
|
||||||
) => {
|
) => {
|
||||||
const viewDefinitions = [
|
const viewDefinitions = [
|
||||||
seedCompaniesAllView(objectMetadataStandardIdToIdMap),
|
seedCompaniesAllView(objectMetadataStandardIdToIdMap),
|
||||||
@ -28,13 +27,9 @@ export const seedViewWithDemoData = async (
|
|||||||
notesAllView(objectMetadataStandardIdToIdMap),
|
notesAllView(objectMetadataStandardIdToIdMap),
|
||||||
tasksAllView(objectMetadataStandardIdToIdMap),
|
tasksAllView(objectMetadataStandardIdToIdMap),
|
||||||
tasksByStatusView(objectMetadataStandardIdToIdMap),
|
tasksByStatusView(objectMetadataStandardIdToIdMap),
|
||||||
...(isWorkflowEnabled
|
workflowsAllView(objectMetadataStandardIdToIdMap),
|
||||||
? [
|
workflowVersionsAllView(objectMetadataStandardIdToIdMap),
|
||||||
workflowsAllView(objectMetadataStandardIdToIdMap),
|
workflowRunsAllView(objectMetadataStandardIdToIdMap),
|
||||||
workflowVersionsAllView(objectMetadataStandardIdToIdMap),
|
|
||||||
workflowRunsAllView(objectMetadataStandardIdToIdMap),
|
|
||||||
]
|
|
||||||
: []),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
return createWorkspaceViews(entityManager, schemaName, viewDefinitions);
|
return createWorkspaceViews(entityManager, schemaName, viewDefinitions);
|
||||||
|
|||||||
@ -11,7 +11,6 @@ export const standardObjectsPrefillData = async (
|
|||||||
workspaceDataSource: DataSource,
|
workspaceDataSource: DataSource,
|
||||||
schemaName: string,
|
schemaName: string,
|
||||||
objectMetadata: ObjectMetadataEntity[],
|
objectMetadata: ObjectMetadataEntity[],
|
||||||
isWorkflowEnabled: boolean,
|
|
||||||
) => {
|
) => {
|
||||||
const objectMetadataMap = objectMetadata.reduce((acc, object) => {
|
const objectMetadataMap = objectMetadata.reduce((acc, object) => {
|
||||||
if (!object.standardId) {
|
if (!object.standardId) {
|
||||||
@ -41,7 +40,6 @@ export const standardObjectsPrefillData = async (
|
|||||||
entityManager,
|
entityManager,
|
||||||
schemaName,
|
schemaName,
|
||||||
objectMetadataMap,
|
objectMetadataMap,
|
||||||
isWorkflowEnabled,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await seedWorkspaceFavorites(
|
await seedWorkspaceFavorites(
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
|
|
||||||
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
|
||||||
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
|
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
|
||||||
import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity';
|
import { 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';
|
||||||
@ -104,16 +103,10 @@ export class WorkspaceManagerService {
|
|||||||
const createdObjectMetadata =
|
const createdObjectMetadata =
|
||||||
await this.objectMetadataService.findManyWithinWorkspace(workspaceId);
|
await this.objectMetadataService.findManyWithinWorkspace(workspaceId);
|
||||||
|
|
||||||
const isWorkflowEnabled = await this.featureFlagService.isFeatureEnabled(
|
|
||||||
FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
workspaceId,
|
|
||||||
);
|
|
||||||
|
|
||||||
await standardObjectsPrefillData(
|
await standardObjectsPrefillData(
|
||||||
workspaceDataSource,
|
workspaceDataSource,
|
||||||
dataSourceMetadata.schema,
|
dataSourceMetadata.schema,
|
||||||
createdObjectMetadata,
|
createdObjectMetadata,
|
||||||
isWorkflowEnabled,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,16 +133,10 @@ export class WorkspaceManagerService {
|
|||||||
const createdObjectMetadata =
|
const createdObjectMetadata =
|
||||||
await this.objectMetadataService.findManyWithinWorkspace(workspaceId);
|
await this.objectMetadataService.findManyWithinWorkspace(workspaceId);
|
||||||
|
|
||||||
const isWorkflowEnabled = await this.featureFlagService.isFeatureEnabled(
|
|
||||||
FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
workspaceId,
|
|
||||||
);
|
|
||||||
|
|
||||||
await seedWorkspaceWithDemoData(
|
await seedWorkspaceWithDemoData(
|
||||||
workspaceDataSource,
|
workspaceDataSource,
|
||||||
dataSourceMetadata.schema,
|
dataSourceMetadata.schema,
|
||||||
createdObjectMetadata,
|
createdObjectMetadata,
|
||||||
isWorkflowEnabled,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
await this.seederService.seedCustomObjects(
|
await this.seederService.seedCustomObjects(
|
||||||
|
|||||||
@ -2,14 +2,12 @@ import { FieldMetadataType } from 'twenty-shared';
|
|||||||
|
|
||||||
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 { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
|
||||||
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 { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
|
import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
|
||||||
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
|
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
|
||||||
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 { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.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';
|
||||||
@ -137,16 +135,10 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideTarget: () => WorkflowWorkspaceEntity,
|
inverseSideTarget: () => WorkflowWorkspaceEntity,
|
||||||
inverseSideFieldKey: 'favorites',
|
inverseSideFieldKey: 'favorites',
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflow')
|
@WorkspaceJoinColumn('workflow')
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
workflowId: string;
|
workflowId: string;
|
||||||
|
|
||||||
@WorkspaceRelation({
|
@WorkspaceRelation({
|
||||||
@ -158,16 +150,10 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideTarget: () => WorkflowVersionWorkspaceEntity,
|
inverseSideTarget: () => WorkflowVersionWorkspaceEntity,
|
||||||
inverseSideFieldKey: 'favorites',
|
inverseSideFieldKey: 'favorites',
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workflowVersion: Relation<WorkflowVersionWorkspaceEntity> | null;
|
workflowVersion: Relation<WorkflowVersionWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflowVersion')
|
@WorkspaceJoinColumn('workflowVersion')
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
workflowVersionId: string;
|
workflowVersionId: string;
|
||||||
|
|
||||||
@WorkspaceRelation({
|
@WorkspaceRelation({
|
||||||
@ -179,16 +165,10 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideTarget: () => WorkflowRunWorkspaceEntity,
|
inverseSideTarget: () => WorkflowRunWorkspaceEntity,
|
||||||
inverseSideFieldKey: 'favorites',
|
inverseSideFieldKey: 'favorites',
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workflowRun: Relation<WorkflowRunWorkspaceEntity> | null;
|
workflowRun: Relation<WorkflowRunWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflowRun')
|
@WorkspaceJoinColumn('workflowRun')
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
workflowRunId: string;
|
workflowRunId: string;
|
||||||
|
|
||||||
@WorkspaceRelation({
|
@WorkspaceRelation({
|
||||||
|
|||||||
@ -2,14 +2,12 @@ import { FieldMetadataType } from 'twenty-shared';
|
|||||||
|
|
||||||
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 { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
|
||||||
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 { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
|
import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
|
||||||
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
|
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
|
||||||
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 { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.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';
|
||||||
@ -198,16 +196,10 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideTarget: () => WorkflowWorkspaceEntity,
|
inverseSideTarget: () => WorkflowWorkspaceEntity,
|
||||||
inverseSideFieldKey: 'timelineActivities',
|
inverseSideFieldKey: 'timelineActivities',
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
workflow: Relation<WorkflowWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflow')
|
@WorkspaceJoinColumn('workflow')
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
workflowId: string | null;
|
workflowId: string | null;
|
||||||
|
|
||||||
@WorkspaceRelation({
|
@WorkspaceRelation({
|
||||||
@ -219,16 +211,10 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideTarget: () => WorkflowVersionWorkspaceEntity,
|
inverseSideTarget: () => WorkflowVersionWorkspaceEntity,
|
||||||
inverseSideFieldKey: 'timelineActivities',
|
inverseSideFieldKey: 'timelineActivities',
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workflowVersion: Relation<WorkflowVersionWorkspaceEntity> | null;
|
workflowVersion: Relation<WorkflowVersionWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflowVersion')
|
@WorkspaceJoinColumn('workflowVersion')
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
workflowVersionId: string | null;
|
workflowVersionId: string | null;
|
||||||
|
|
||||||
@WorkspaceRelation({
|
@WorkspaceRelation({
|
||||||
@ -240,16 +226,10 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideTarget: () => WorkflowRunWorkspaceEntity,
|
inverseSideTarget: () => WorkflowRunWorkspaceEntity,
|
||||||
inverseSideFieldKey: 'timelineActivities',
|
inverseSideFieldKey: 'timelineActivities',
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workflowRun: Relation<WorkflowRunWorkspaceEntity> | null;
|
workflowRun: Relation<WorkflowRunWorkspaceEntity> | null;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workflowRun')
|
@WorkspaceJoinColumn('workflowRun')
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
workflowRunId: string | null;
|
workflowRunId: string | null;
|
||||||
|
|
||||||
@WorkspaceDynamicRelation({
|
@WorkspaceDynamicRelation({
|
||||||
|
|||||||
@ -2,12 +2,10 @@ import { FieldMetadataType } from 'twenty-shared';
|
|||||||
|
|
||||||
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 { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
|
||||||
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 { 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 { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.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 { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
@ -27,9 +25,6 @@ import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-ob
|
|||||||
labelIdentifierStandardId:
|
labelIdentifierStandardId:
|
||||||
WORKFLOW_EVENT_LISTENER_STANDARD_FIELD_IDS.eventName,
|
WORKFLOW_EVENT_LISTENER_STANDARD_FIELD_IDS.eventName,
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
export class WorkflowEventListenerWorkspaceEntity extends BaseWorkspaceEntity {
|
export class WorkflowEventListenerWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
@WorkspaceField({
|
@WorkspaceField({
|
||||||
|
|||||||
@ -2,7 +2,6 @@ import { FieldMetadataType } from 'twenty-shared';
|
|||||||
|
|
||||||
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 { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
|
||||||
import {
|
import {
|
||||||
ActorMetadata,
|
ActorMetadata,
|
||||||
FieldActorSource,
|
FieldActorSource,
|
||||||
@ -14,7 +13,6 @@ import {
|
|||||||
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 { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.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 { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
@ -59,9 +57,6 @@ export type WorkflowRunOutput = {
|
|||||||
labelIdentifierStandardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name,
|
||||||
icon: STANDARD_OBJECT_ICONS.workflowRun,
|
icon: STANDARD_OBJECT_ICONS.workflowRun,
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
@WorkspaceField({
|
@WorkspaceField({
|
||||||
standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name,
|
standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name,
|
||||||
|
|||||||
@ -2,7 +2,6 @@ import { FieldMetadataType } from 'twenty-shared';
|
|||||||
|
|
||||||
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 { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
|
||||||
import { FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input';
|
import { FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input';
|
||||||
import {
|
import {
|
||||||
RelationMetadataType,
|
RelationMetadataType,
|
||||||
@ -11,7 +10,6 @@ import {
|
|||||||
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 { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.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 { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
|
||||||
@ -69,9 +67,6 @@ const WorkflowVersionStatusOptions: FieldMetadataComplexOption[] = [
|
|||||||
icon: STANDARD_OBJECT_ICONS.workflowVersion,
|
icon: STANDARD_OBJECT_ICONS.workflowVersion,
|
||||||
labelIdentifierStandardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
@WorkspaceField({
|
@WorkspaceField({
|
||||||
standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
|
||||||
|
|||||||
@ -2,7 +2,6 @@ import { FieldMetadataType } from 'twenty-shared';
|
|||||||
|
|
||||||
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 { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
|
|
||||||
import {
|
import {
|
||||||
ActorMetadata,
|
ActorMetadata,
|
||||||
FieldActorSource,
|
FieldActorSource,
|
||||||
@ -15,7 +14,6 @@ import {
|
|||||||
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 { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.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 { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
|
||||||
@ -65,9 +63,6 @@ const WorkflowStatusOptions: FieldMetadataComplexOption[] = [
|
|||||||
shortcut: 'W',
|
shortcut: 'W',
|
||||||
labelIdentifierStandardId: WORKFLOW_STANDARD_FIELD_IDS.name,
|
labelIdentifierStandardId: WORKFLOW_STANDARD_FIELD_IDS.name,
|
||||||
})
|
})
|
||||||
@WorkspaceGate({
|
|
||||||
featureFlag: FeatureFlagKey.IsWorkflowEnabled,
|
|
||||||
})
|
|
||||||
export class WorkflowWorkspaceEntity extends BaseWorkspaceEntity {
|
export class WorkflowWorkspaceEntity extends BaseWorkspaceEntity {
|
||||||
@WorkspaceField({
|
@WorkspaceField({
|
||||||
standardId: WORKFLOW_STANDARD_FIELD_IDS.name,
|
standardId: WORKFLOW_STANDARD_FIELD_IDS.name,
|
||||||
|
|||||||
Reference in New Issue
Block a user