Refactor workspace migration and validation error types and centralize runner optimistic rendering (#16920)
# Introduction In this PR we're: - Refactoring the workspace migration action type introducing grain over metadata and operation type ( for example operation `create` and metadata `field` ) - Thanks to above point we can now factorize the runner optimistic rendering out of each runner actions-handler file using the existing into the generic one ( -3200 lines of code here ) - Still thanks to action type refactor we're able to dynamically compose the response error type only send data when there's here. No more static counter and static summary error message. This way we won't have to re run snapshot every time we add a new entity to the engine ( huge snapshot diff here ) ## Noticeable points: - We introduce an index update action to avoid any complex typing for not having one or a tuple of actions instead. Now the drop and insert logic is directly inferred from the update action handler instead of being two action ( delete index and create index ) ## TODO - [x] Define base actions types - [x] Migrate all actions to action type and metadata name pattern ( base actions ) - [x] Refactor flat entity validation type to embed metadata name - [x] Refactor optimistic rendering within runner - [x] Refactor legacy cache invalidation switch - [x] Refactor response error format ( dynamic counter again + no empty entries ) - [x] Try factorizing and removing redundant nor unused type declaration in metadata actions type intermediary files - [x] Adapt front to new response error format ## Remarks - ~~Should create an issue for generic replace flat entity in related flat entity maps~~ overkill - Should create an issue for oneToMany foreignKey being nullable not always cascade delete optimistic rendering edge case to either docs or fix it in delete flat entity and related entity ( re-code the pg cascading behavior ) - We could also factorize the builder to only implement validators and not the intermediary file
This commit is contained in:
+1
-1
@@ -62,7 +62,7 @@ export const useMetadataErrorHandler = () => {
|
||||
relatedFailingMetadataNames,
|
||||
} = classification;
|
||||
|
||||
const targetErrors = extensions.errors[primaryMetadataName] || [];
|
||||
const targetErrors = extensions.errors[primaryMetadataName] ?? [];
|
||||
if (targetErrors.length > 0) {
|
||||
targetErrors.forEach((entityError) => {
|
||||
entityError.errors.forEach((validationError) =>
|
||||
|
||||
+1
@@ -58,6 +58,7 @@ export const classifyMetadataError = ({
|
||||
];
|
||||
const relatedFailingMetadataNames = failingMetadataNames.filter(
|
||||
(metadataName) =>
|
||||
isDefined(extensions.errors[metadataName]) &&
|
||||
extensions.errors[metadataName].length > 0 &&
|
||||
metadataName !== primaryMetadataName,
|
||||
);
|
||||
|
||||
+5
-2
@@ -192,8 +192,11 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
|
||||
fieldMetadata: [
|
||||
{
|
||||
errors: inputTranspilationResult.errors,
|
||||
type: 'update_field',
|
||||
flatEntityMinimalInformation: {},
|
||||
type: 'update',
|
||||
metadataName: 'fieldMetadata',
|
||||
flatEntityMinimalInformation: {
|
||||
id: '',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
+4
-3
@@ -3,13 +3,14 @@ import { type Expect } from 'twenty-shared/testing';
|
||||
|
||||
import { type AllFlatEntityTypesByMetadataName } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name';
|
||||
import { type SyncableFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type';
|
||||
import { type WorkspaceMigrationActionType } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
|
||||
import { type WorkspaceMigrationActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2';
|
||||
|
||||
type ExpectedGenericFlatEntityInformation = {
|
||||
actions: {
|
||||
created: WorkspaceMigrationActionV2 | WorkspaceMigrationActionV2[];
|
||||
deleted: WorkspaceMigrationActionV2 | WorkspaceMigrationActionV2[];
|
||||
updated: WorkspaceMigrationActionV2 | WorkspaceMigrationActionV2[];
|
||||
[P in WorkspaceMigrationActionType]:
|
||||
| WorkspaceMigrationActionV2
|
||||
| WorkspaceMigrationActionV2[];
|
||||
};
|
||||
flatEntity: SyncableFlatEntity;
|
||||
};
|
||||
|
||||
+64
-66
@@ -63,6 +63,7 @@ import {
|
||||
import {
|
||||
type CreateIndexAction,
|
||||
type DeleteIndexAction,
|
||||
type UpdateIndexAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/types/workspace-migration-index-action-v2';
|
||||
import {
|
||||
type CreateObjectAction,
|
||||
@@ -107,7 +108,6 @@ import {
|
||||
import {
|
||||
type CreateRowLevelPermissionPredicateAction,
|
||||
type DeleteRowLevelPermissionPredicateAction,
|
||||
type DestroyRowLevelPermissionPredicateAction,
|
||||
type UpdateRowLevelPermissionPredicateAction,
|
||||
} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action-v2.type';
|
||||
import {
|
||||
@@ -149,191 +149,189 @@ import {
|
||||
export type AllFlatEntityTypesByMetadataName = {
|
||||
fieldMetadata: {
|
||||
actions: {
|
||||
created: CreateFieldAction;
|
||||
updated: UpdateFieldAction;
|
||||
deleted: DeleteFieldAction;
|
||||
create: CreateFieldAction;
|
||||
update: UpdateFieldAction;
|
||||
delete: DeleteFieldAction;
|
||||
};
|
||||
flatEntity: FlatFieldMetadata;
|
||||
entity: FieldMetadataEntity;
|
||||
};
|
||||
objectMetadata: {
|
||||
actions: {
|
||||
created: CreateObjectAction;
|
||||
updated: UpdateObjectAction;
|
||||
deleted: DeleteObjectAction;
|
||||
create: CreateObjectAction;
|
||||
update: UpdateObjectAction;
|
||||
delete: DeleteObjectAction;
|
||||
};
|
||||
flatEntity: FlatObjectMetadata;
|
||||
entity: ObjectMetadataEntity;
|
||||
};
|
||||
view: {
|
||||
actions: {
|
||||
created: CreateViewAction;
|
||||
updated: UpdateViewAction;
|
||||
deleted: DeleteViewAction;
|
||||
create: CreateViewAction;
|
||||
update: UpdateViewAction;
|
||||
delete: DeleteViewAction;
|
||||
};
|
||||
flatEntity: FlatView;
|
||||
entity: ViewEntity;
|
||||
};
|
||||
viewField: {
|
||||
actions: {
|
||||
created: CreateViewFieldAction;
|
||||
updated: UpdateViewFieldAction;
|
||||
deleted: DeleteViewFieldAction;
|
||||
create: CreateViewFieldAction;
|
||||
update: UpdateViewFieldAction;
|
||||
delete: DeleteViewFieldAction;
|
||||
};
|
||||
flatEntity: FlatViewField;
|
||||
entity: ViewFieldEntity;
|
||||
};
|
||||
viewGroup: {
|
||||
actions: {
|
||||
created: CreateViewGroupAction;
|
||||
updated: UpdateViewGroupAction;
|
||||
deleted: DeleteViewGroupAction;
|
||||
create: CreateViewGroupAction;
|
||||
update: UpdateViewGroupAction;
|
||||
delete: DeleteViewGroupAction;
|
||||
};
|
||||
flatEntity: FlatViewGroup;
|
||||
entity: ViewGroupEntity;
|
||||
};
|
||||
rowLevelPermissionPredicate: {
|
||||
actions: {
|
||||
created: CreateRowLevelPermissionPredicateAction;
|
||||
updated: UpdateRowLevelPermissionPredicateAction;
|
||||
deleted:
|
||||
| DeleteRowLevelPermissionPredicateAction
|
||||
| DestroyRowLevelPermissionPredicateAction;
|
||||
create: CreateRowLevelPermissionPredicateAction;
|
||||
update: UpdateRowLevelPermissionPredicateAction;
|
||||
delete: DeleteRowLevelPermissionPredicateAction;
|
||||
};
|
||||
flatEntity: FlatRowLevelPermissionPredicate;
|
||||
entity: RowLevelPermissionPredicateEntity;
|
||||
};
|
||||
rowLevelPermissionPredicateGroup: {
|
||||
actions: {
|
||||
created: CreateRowLevelPermissionPredicateGroupAction;
|
||||
updated: UpdateRowLevelPermissionPredicateGroupAction;
|
||||
deleted: DeleteRowLevelPermissionPredicateGroupAction;
|
||||
create: CreateRowLevelPermissionPredicateGroupAction;
|
||||
update: UpdateRowLevelPermissionPredicateGroupAction;
|
||||
delete: DeleteRowLevelPermissionPredicateGroupAction;
|
||||
};
|
||||
flatEntity: FlatRowLevelPermissionPredicateGroup;
|
||||
entity: RowLevelPermissionPredicateGroupEntity;
|
||||
};
|
||||
viewFilterGroup: {
|
||||
actions: {
|
||||
created: CreateViewFilterGroupAction;
|
||||
updated: UpdateViewFilterGroupAction;
|
||||
deleted: DeleteViewFilterGroupAction;
|
||||
create: CreateViewFilterGroupAction;
|
||||
update: UpdateViewFilterGroupAction;
|
||||
delete: DeleteViewFilterGroupAction;
|
||||
};
|
||||
flatEntity: FlatViewFilterGroup;
|
||||
entity: ViewFilterGroupEntity;
|
||||
};
|
||||
index: {
|
||||
actions: {
|
||||
created: CreateIndexAction;
|
||||
updated: [DeleteIndexAction, CreateIndexAction];
|
||||
deleted: DeleteIndexAction;
|
||||
create: CreateIndexAction;
|
||||
update: UpdateIndexAction;
|
||||
delete: DeleteIndexAction;
|
||||
};
|
||||
flatEntity: FlatIndexMetadata;
|
||||
entity: IndexMetadataEntity;
|
||||
};
|
||||
serverlessFunction: {
|
||||
actions: {
|
||||
created: CreateServerlessFunctionAction;
|
||||
updated: UpdateServerlessFunctionAction;
|
||||
deleted: DeleteServerlessFunctionAction;
|
||||
create: CreateServerlessFunctionAction;
|
||||
update: UpdateServerlessFunctionAction;
|
||||
delete: DeleteServerlessFunctionAction;
|
||||
};
|
||||
flatEntity: FlatServerlessFunction;
|
||||
entity: ServerlessFunctionEntity;
|
||||
};
|
||||
cronTrigger: {
|
||||
actions: {
|
||||
created: CreateCronTriggerAction;
|
||||
updated: UpdateCronTriggerAction;
|
||||
deleted: DeleteCronTriggerAction;
|
||||
create: CreateCronTriggerAction;
|
||||
update: UpdateCronTriggerAction;
|
||||
delete: DeleteCronTriggerAction;
|
||||
};
|
||||
flatEntity: FlatCronTrigger;
|
||||
entity: CronTriggerEntity;
|
||||
};
|
||||
databaseEventTrigger: {
|
||||
actions: {
|
||||
created: CreateDatabaseEventTriggerAction;
|
||||
updated: UpdateDatabaseEventTriggerAction;
|
||||
deleted: DeleteDatabaseEventTriggerAction;
|
||||
create: CreateDatabaseEventTriggerAction;
|
||||
update: UpdateDatabaseEventTriggerAction;
|
||||
delete: DeleteDatabaseEventTriggerAction;
|
||||
};
|
||||
flatEntity: FlatDatabaseEventTrigger;
|
||||
entity: DatabaseEventTriggerEntity;
|
||||
};
|
||||
routeTrigger: {
|
||||
actions: {
|
||||
created: CreateRouteTriggerAction;
|
||||
updated: UpdateRouteTriggerAction;
|
||||
deleted: DeleteRouteTriggerAction;
|
||||
create: CreateRouteTriggerAction;
|
||||
update: UpdateRouteTriggerAction;
|
||||
delete: DeleteRouteTriggerAction;
|
||||
};
|
||||
flatEntity: FlatRouteTrigger;
|
||||
entity: RouteTriggerEntity;
|
||||
};
|
||||
viewFilter: {
|
||||
actions: {
|
||||
created: CreateViewFilterAction;
|
||||
updated: UpdateViewFilterAction;
|
||||
deleted: DeleteViewFilterAction;
|
||||
create: CreateViewFilterAction;
|
||||
update: UpdateViewFilterAction;
|
||||
delete: DeleteViewFilterAction;
|
||||
};
|
||||
flatEntity: FlatViewFilter;
|
||||
entity: ViewFilterEntity;
|
||||
};
|
||||
role: {
|
||||
actions: {
|
||||
created: CreateRoleAction;
|
||||
updated: UpdateRoleAction;
|
||||
deleted: DeleteRoleAction;
|
||||
create: CreateRoleAction;
|
||||
update: UpdateRoleAction;
|
||||
delete: DeleteRoleAction;
|
||||
};
|
||||
flatEntity: FlatRole;
|
||||
entity: RoleEntity;
|
||||
};
|
||||
roleTarget: {
|
||||
actions: {
|
||||
created: CreateRoleTargetAction;
|
||||
updated: UpdateRoleTargetAction;
|
||||
deleted: DeleteRoleTargetAction;
|
||||
create: CreateRoleTargetAction;
|
||||
update: UpdateRoleTargetAction;
|
||||
delete: DeleteRoleTargetAction;
|
||||
};
|
||||
flatEntity: FlatRoleTarget;
|
||||
entity: RoleTargetEntity;
|
||||
};
|
||||
agent: {
|
||||
actions: {
|
||||
created: CreateAgentAction;
|
||||
updated: UpdateAgentAction;
|
||||
deleted: DeleteAgentAction;
|
||||
create: CreateAgentAction;
|
||||
update: UpdateAgentAction;
|
||||
delete: DeleteAgentAction;
|
||||
};
|
||||
flatEntity: FlatAgent;
|
||||
entity: AgentEntity;
|
||||
};
|
||||
skill: {
|
||||
actions: {
|
||||
created: CreateSkillAction;
|
||||
updated: UpdateSkillAction;
|
||||
deleted: DeleteSkillAction;
|
||||
create: CreateSkillAction;
|
||||
update: UpdateSkillAction;
|
||||
delete: DeleteSkillAction;
|
||||
};
|
||||
flatEntity: FlatSkill;
|
||||
entity: SkillEntity;
|
||||
};
|
||||
pageLayout: {
|
||||
actions: {
|
||||
created: CreatePageLayoutAction;
|
||||
updated: UpdatePageLayoutAction;
|
||||
deleted: DeletePageLayoutAction;
|
||||
create: CreatePageLayoutAction;
|
||||
update: UpdatePageLayoutAction;
|
||||
delete: DeletePageLayoutAction;
|
||||
};
|
||||
flatEntity: FlatPageLayout;
|
||||
entity: PageLayoutEntity;
|
||||
};
|
||||
pageLayoutWidget: {
|
||||
actions: {
|
||||
created: CreatePageLayoutWidgetAction;
|
||||
updated: UpdatePageLayoutWidgetAction;
|
||||
deleted: DeletePageLayoutWidgetAction;
|
||||
create: CreatePageLayoutWidgetAction;
|
||||
update: UpdatePageLayoutWidgetAction;
|
||||
delete: DeletePageLayoutWidgetAction;
|
||||
};
|
||||
flatEntity: FlatPageLayoutWidget;
|
||||
entity: PageLayoutWidgetEntity;
|
||||
};
|
||||
pageLayoutTab: {
|
||||
actions: {
|
||||
created: CreatePageLayoutTabAction;
|
||||
updated: UpdatePageLayoutTabAction;
|
||||
deleted: DeletePageLayoutTabAction;
|
||||
create: CreatePageLayoutTabAction;
|
||||
update: UpdatePageLayoutTabAction;
|
||||
delete: DeletePageLayoutTabAction;
|
||||
};
|
||||
flatEntity: FlatPageLayoutTab;
|
||||
entity: PageLayoutTabEntity;
|
||||
|
||||
+12
-16
@@ -1,32 +1,28 @@
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
import { type AllFlatEntityTypesByMetadataName } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type WorkspaceMigrationActionType =
|
||||
| BaseCreateWorkspaceMigrationAction<AllMetadataName>['type']
|
||||
| BaseUpdateWorkspaceMigrationAction<AllMetadataName>['type']
|
||||
| BaseDeleteWorkspaceMigrationAction<AllMetadataName>['type'];
|
||||
|
||||
export type MetadataWorkspaceMigrationActionsRecord<T extends AllMetadataName> =
|
||||
{
|
||||
[K in 'created' | 'updated' | 'deleted']: MetadataWorkspaceMigrationAction<
|
||||
[K in WorkspaceMigrationActionType]: MetadataWorkspaceMigrationAction<
|
||||
T,
|
||||
K
|
||||
>[];
|
||||
};
|
||||
|
||||
export type MetadataWorkspaceMigrationAction<
|
||||
T extends AllMetadataName,
|
||||
TOperation extends 'created' | 'deleted' | 'updated' =
|
||||
| 'created'
|
||||
| 'deleted'
|
||||
| 'updated',
|
||||
> = AllFlatEntityTypesByMetadataName[T]['actions'][TOperation] extends infer Action
|
||||
TMetadataName extends AllMetadataName,
|
||||
TActionType extends WorkspaceMigrationActionType,
|
||||
> = AllFlatEntityTypesByMetadataName[TMetadataName]['actions'][TActionType] extends infer Action
|
||||
? Action extends Array<unknown>
|
||||
? Action[number]
|
||||
: Action
|
||||
: never;
|
||||
|
||||
export type FromWorkspaceMigrationActionToMetadataName<TAction> = {
|
||||
[K in AllMetadataName]: TAction extends AllFlatEntityTypesByMetadataName[K]['actions'][
|
||||
| 'created'
|
||||
| 'deleted'
|
||||
| 'updated']
|
||||
? K
|
||||
: never;
|
||||
}[AllMetadataName];
|
||||
|
||||
+6
-3
@@ -26,11 +26,14 @@ export const throwOnFieldInputTranspilationsError: ThrowOnFieldInputTranspilatio
|
||||
{
|
||||
report: {
|
||||
...EMPTY_ORCHESTRATOR_FAILURE_REPORT(),
|
||||
objectMetadata: [
|
||||
fieldMetadata: [
|
||||
{
|
||||
errors: failedInputTranspilationErrors,
|
||||
type: 'create_field',
|
||||
flatEntityMinimalInformation: {},
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
flatEntityMinimalInformation: {
|
||||
id: '',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
import { type SyncableFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type';
|
||||
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
|
||||
import {
|
||||
WORKSPACE_MIGRATION_OBJECT_ACTION_TYPES,
|
||||
type WorkspaceMigrationObjectActionTypeV2,
|
||||
} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
export const isFailedFlatObjectMetadataValidation = (
|
||||
failedValidation: FailedFlatEntityValidation<SyncableFlatEntity>,
|
||||
): failedValidation is FailedFlatEntityValidation<FlatObjectMetadata> => {
|
||||
return WORKSPACE_MIGRATION_OBJECT_ACTION_TYPES.includes(
|
||||
failedValidation.type as WorkspaceMigrationObjectActionTypeV2,
|
||||
);
|
||||
};
|
||||
+1
-4
@@ -4,7 +4,4 @@ import { type FlatEntityFrom } from 'src/engine/metadata-modules/flat-entity/typ
|
||||
import { type RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity';
|
||||
|
||||
export type FlatRowLevelPermissionPredicateGroup =
|
||||
FlatEntityFrom<RowLevelPermissionPredicateGroupEntity> & {
|
||||
childRowLevelPermissionPredicateGroupIds: string[];
|
||||
rowLevelPermissionPredicateIds: string[];
|
||||
};
|
||||
FlatEntityFrom<RowLevelPermissionPredicateGroupEntity>;
|
||||
|
||||
+25
-23
@@ -15,31 +15,33 @@ export const fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseE
|
||||
i18n,
|
||||
);
|
||||
|
||||
return {
|
||||
const initialAccumulator: MetadataValidationErrorResponse = {
|
||||
errors: {},
|
||||
summary: {
|
||||
invalidAgent: 0,
|
||||
invalidSkill: 0,
|
||||
invalidViewFilter: 0,
|
||||
invalidViewFilterGroup: 0,
|
||||
invalidObjectMetadata: 0,
|
||||
invalidView: 0,
|
||||
invalidViewField: 0,
|
||||
invalidIndex: 0,
|
||||
invalidServerlessFunction: 0,
|
||||
invalidDatabaseEventTrigger: 0,
|
||||
invalidCronTrigger: 0,
|
||||
invalidRouteTrigger: 0,
|
||||
invalidFieldMetadata: 0,
|
||||
invalidViewGroup: 0,
|
||||
invalidRole: 0,
|
||||
invalidRoleTarget: 0,
|
||||
invalidPageLayout: 0,
|
||||
invalidPageLayoutWidget: 0,
|
||||
totalErrors: 0,
|
||||
invalidPageLayoutTab: 0,
|
||||
invalidRowLevelPermissionPredicate: 0,
|
||||
invalidRowLevelPermissionPredicateGroup: 0,
|
||||
},
|
||||
errors: translatedReport,
|
||||
};
|
||||
|
||||
return (
|
||||
Object.keys(translatedReport) as (keyof typeof translatedReport)[]
|
||||
).reduce((acc, metadataName) => {
|
||||
const failedMetadataValidation = translatedReport[metadataName];
|
||||
|
||||
if (failedMetadataValidation.length === 0) {
|
||||
return acc;
|
||||
}
|
||||
|
||||
return {
|
||||
errors: {
|
||||
...acc.errors,
|
||||
[metadataName]: failedMetadataValidation,
|
||||
},
|
||||
summary: {
|
||||
...acc.summary,
|
||||
totalErrors:
|
||||
acc.summary.totalErrors + failedMetadataValidation.length,
|
||||
[metadataName]: failedMetadataValidation.length,
|
||||
},
|
||||
} satisfies MetadataValidationErrorResponse;
|
||||
}, initialAccumulator);
|
||||
};
|
||||
|
||||
+1
-5
@@ -1,5 +1,4 @@
|
||||
import { type I18n, type MessageDescriptor } from '@lingui/core';
|
||||
import { type MetadataValidationErrorResponse } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type OrchestratorFailureReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type';
|
||||
@@ -54,8 +53,5 @@ export const translateOrchestratorFailureReportErrors = (
|
||||
report: OrchestratorFailureReport,
|
||||
i18n: I18n,
|
||||
) => {
|
||||
return translateUserFriendlyMessageInFlatEntityValidationError(
|
||||
report,
|
||||
i18n,
|
||||
) as MetadataValidationErrorResponse['errors'];
|
||||
return translateUserFriendlyMessageInFlatEntityValidationError(report, i18n);
|
||||
};
|
||||
|
||||
+16
-2
@@ -1,5 +1,7 @@
|
||||
import { type I18n } from '@lingui/core';
|
||||
import { msg } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
|
||||
import {
|
||||
BaseGraphQLError,
|
||||
@@ -18,6 +20,18 @@ export const workspaceMigrationBuilderExceptionV2Formatter = (
|
||||
i18n,
|
||||
);
|
||||
|
||||
const message = `Validation failed for ${Object.values(ALL_METADATA_NAME)
|
||||
.flatMap((metadataName) => {
|
||||
const count = summary[metadataName];
|
||||
|
||||
if (!isDefined(count) || count === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return [`${count} ${metadataName}${count > 1 ? 's' : ''}`];
|
||||
})
|
||||
.join(', ')}`;
|
||||
|
||||
throw new BaseGraphQLError(
|
||||
error.message,
|
||||
ErrorCode.METADATA_VALIDATION_FAILED,
|
||||
@@ -25,8 +39,8 @@ export const workspaceMigrationBuilderExceptionV2Formatter = (
|
||||
code: 'METADATA_VALIDATION_ERROR',
|
||||
errors,
|
||||
summary,
|
||||
message: `Validation failed for 0 object(s) and 0 field(s)`,
|
||||
userFriendlyMessage: msg`Validation failed for 0 object(s) and 0 field(s)`,
|
||||
message,
|
||||
userFriendlyMessage: msg`Metadata validation failed`,
|
||||
},
|
||||
);
|
||||
};
|
||||
|
||||
+63
-63
@@ -953,117 +953,117 @@ export class WorkspaceMigrationBuildOrchestratorService {
|
||||
relatedFlatEntityMapsKeys,
|
||||
actions: [
|
||||
// Object and fields and indexes
|
||||
...aggregatedOrchestratorActionsReport.index.deleted,
|
||||
...aggregatedOrchestratorActionsReport.fieldMetadata.deleted,
|
||||
...aggregatedOrchestratorActionsReport.objectMetadata.deleted,
|
||||
...aggregatedOrchestratorActionsReport.objectMetadata.created,
|
||||
...aggregatedOrchestratorActionsReport.objectMetadata.updated,
|
||||
...aggregatedOrchestratorActionsReport.fieldMetadata.created,
|
||||
...aggregatedOrchestratorActionsReport.fieldMetadata.updated,
|
||||
...aggregatedOrchestratorActionsReport.index.created,
|
||||
...aggregatedOrchestratorActionsReport.index.updated.flat(),
|
||||
...aggregatedOrchestratorActionsReport.index.delete,
|
||||
...aggregatedOrchestratorActionsReport.fieldMetadata.delete,
|
||||
...aggregatedOrchestratorActionsReport.objectMetadata.delete,
|
||||
...aggregatedOrchestratorActionsReport.objectMetadata.create,
|
||||
...aggregatedOrchestratorActionsReport.objectMetadata.update,
|
||||
...aggregatedOrchestratorActionsReport.fieldMetadata.create,
|
||||
...aggregatedOrchestratorActionsReport.fieldMetadata.update,
|
||||
...aggregatedOrchestratorActionsReport.index.create,
|
||||
...aggregatedOrchestratorActionsReport.index.update.flat(),
|
||||
///
|
||||
|
||||
// Views
|
||||
...aggregatedOrchestratorActionsReport.view.deleted,
|
||||
...aggregatedOrchestratorActionsReport.view.created,
|
||||
...aggregatedOrchestratorActionsReport.view.updated,
|
||||
...aggregatedOrchestratorActionsReport.viewField.deleted,
|
||||
...aggregatedOrchestratorActionsReport.viewField.created,
|
||||
...aggregatedOrchestratorActionsReport.viewField.updated,
|
||||
...aggregatedOrchestratorActionsReport.viewFilterGroup.deleted,
|
||||
...aggregatedOrchestratorActionsReport.viewFilterGroup.created,
|
||||
...aggregatedOrchestratorActionsReport.viewFilterGroup.updated,
|
||||
...aggregatedOrchestratorActionsReport.viewFilter.deleted,
|
||||
...aggregatedOrchestratorActionsReport.viewFilter.created,
|
||||
...aggregatedOrchestratorActionsReport.viewFilter.updated,
|
||||
...aggregatedOrchestratorActionsReport.viewGroup.deleted,
|
||||
...aggregatedOrchestratorActionsReport.viewGroup.created,
|
||||
...aggregatedOrchestratorActionsReport.viewGroup.updated,
|
||||
...aggregatedOrchestratorActionsReport.view.delete,
|
||||
...aggregatedOrchestratorActionsReport.view.create,
|
||||
...aggregatedOrchestratorActionsReport.view.update,
|
||||
...aggregatedOrchestratorActionsReport.viewField.delete,
|
||||
...aggregatedOrchestratorActionsReport.viewField.create,
|
||||
...aggregatedOrchestratorActionsReport.viewField.update,
|
||||
...aggregatedOrchestratorActionsReport.viewFilterGroup.delete,
|
||||
...aggregatedOrchestratorActionsReport.viewFilterGroup.create,
|
||||
...aggregatedOrchestratorActionsReport.viewFilterGroup.update,
|
||||
...aggregatedOrchestratorActionsReport.viewFilter.delete,
|
||||
...aggregatedOrchestratorActionsReport.viewFilter.create,
|
||||
...aggregatedOrchestratorActionsReport.viewFilter.update,
|
||||
...aggregatedOrchestratorActionsReport.viewGroup.delete,
|
||||
...aggregatedOrchestratorActionsReport.viewGroup.create,
|
||||
...aggregatedOrchestratorActionsReport.viewGroup.update,
|
||||
///
|
||||
|
||||
// Serverless functions
|
||||
...aggregatedOrchestratorActionsReport.serverlessFunction.deleted,
|
||||
...aggregatedOrchestratorActionsReport.serverlessFunction.created,
|
||||
...aggregatedOrchestratorActionsReport.serverlessFunction.updated,
|
||||
...aggregatedOrchestratorActionsReport.serverlessFunction.delete,
|
||||
...aggregatedOrchestratorActionsReport.serverlessFunction.create,
|
||||
...aggregatedOrchestratorActionsReport.serverlessFunction.update,
|
||||
///
|
||||
|
||||
// Database event triggers
|
||||
...aggregatedOrchestratorActionsReport.databaseEventTrigger.deleted,
|
||||
...aggregatedOrchestratorActionsReport.databaseEventTrigger.created,
|
||||
...aggregatedOrchestratorActionsReport.databaseEventTrigger.updated,
|
||||
...aggregatedOrchestratorActionsReport.databaseEventTrigger.delete,
|
||||
...aggregatedOrchestratorActionsReport.databaseEventTrigger.create,
|
||||
...aggregatedOrchestratorActionsReport.databaseEventTrigger.update,
|
||||
///
|
||||
|
||||
// Cron triggers
|
||||
...aggregatedOrchestratorActionsReport.cronTrigger.deleted,
|
||||
...aggregatedOrchestratorActionsReport.cronTrigger.created,
|
||||
...aggregatedOrchestratorActionsReport.cronTrigger.updated,
|
||||
...aggregatedOrchestratorActionsReport.cronTrigger.delete,
|
||||
...aggregatedOrchestratorActionsReport.cronTrigger.create,
|
||||
...aggregatedOrchestratorActionsReport.cronTrigger.update,
|
||||
///
|
||||
|
||||
// Route triggers
|
||||
...aggregatedOrchestratorActionsReport.routeTrigger.deleted,
|
||||
...aggregatedOrchestratorActionsReport.routeTrigger.created,
|
||||
...aggregatedOrchestratorActionsReport.routeTrigger.updated,
|
||||
...aggregatedOrchestratorActionsReport.routeTrigger.delete,
|
||||
...aggregatedOrchestratorActionsReport.routeTrigger.create,
|
||||
...aggregatedOrchestratorActionsReport.routeTrigger.update,
|
||||
///
|
||||
|
||||
// Roles
|
||||
...aggregatedOrchestratorActionsReport.role.deleted,
|
||||
...aggregatedOrchestratorActionsReport.role.created,
|
||||
...aggregatedOrchestratorActionsReport.role.updated,
|
||||
...aggregatedOrchestratorActionsReport.role.delete,
|
||||
...aggregatedOrchestratorActionsReport.role.create,
|
||||
...aggregatedOrchestratorActionsReport.role.update,
|
||||
///
|
||||
|
||||
// Role targets
|
||||
...aggregatedOrchestratorActionsReport.roleTarget.deleted,
|
||||
...aggregatedOrchestratorActionsReport.roleTarget.created,
|
||||
...aggregatedOrchestratorActionsReport.roleTarget.updated,
|
||||
...aggregatedOrchestratorActionsReport.roleTarget.delete,
|
||||
...aggregatedOrchestratorActionsReport.roleTarget.create,
|
||||
...aggregatedOrchestratorActionsReport.roleTarget.update,
|
||||
///
|
||||
|
||||
// Agents
|
||||
...aggregatedOrchestratorActionsReport.agent.deleted,
|
||||
...aggregatedOrchestratorActionsReport.agent.created,
|
||||
...aggregatedOrchestratorActionsReport.agent.updated,
|
||||
...aggregatedOrchestratorActionsReport.agent.delete,
|
||||
...aggregatedOrchestratorActionsReport.agent.create,
|
||||
...aggregatedOrchestratorActionsReport.agent.update,
|
||||
///
|
||||
|
||||
// Skills
|
||||
...aggregatedOrchestratorActionsReport.skill.deleted,
|
||||
...aggregatedOrchestratorActionsReport.skill.created,
|
||||
...aggregatedOrchestratorActionsReport.skill.updated,
|
||||
...aggregatedOrchestratorActionsReport.skill.delete,
|
||||
...aggregatedOrchestratorActionsReport.skill.create,
|
||||
...aggregatedOrchestratorActionsReport.skill.update,
|
||||
///
|
||||
|
||||
// Page layouts
|
||||
...aggregatedOrchestratorActionsReport.pageLayout.deleted,
|
||||
...aggregatedOrchestratorActionsReport.pageLayout.created,
|
||||
...aggregatedOrchestratorActionsReport.pageLayout.updated,
|
||||
...aggregatedOrchestratorActionsReport.pageLayout.delete,
|
||||
...aggregatedOrchestratorActionsReport.pageLayout.create,
|
||||
...aggregatedOrchestratorActionsReport.pageLayout.update,
|
||||
///
|
||||
|
||||
// Page layout tabs
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutTab.deleted,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutTab.created,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutTab.updated,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutTab.delete,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutTab.create,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutTab.update,
|
||||
///
|
||||
|
||||
// Page layout widgets
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutWidget.deleted,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutWidget.created,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutWidget.updated,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutWidget.delete,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutWidget.create,
|
||||
...aggregatedOrchestratorActionsReport.pageLayoutWidget.update,
|
||||
///
|
||||
|
||||
// Row level permission predicates
|
||||
...aggregatedOrchestratorActionsReport.rowLevelPermissionPredicate
|
||||
.deleted,
|
||||
.delete,
|
||||
...aggregatedOrchestratorActionsReport.rowLevelPermissionPredicate
|
||||
.created,
|
||||
.create,
|
||||
...aggregatedOrchestratorActionsReport.rowLevelPermissionPredicate
|
||||
.updated,
|
||||
.update,
|
||||
///
|
||||
|
||||
// Row level permission predicate groups
|
||||
...aggregatedOrchestratorActionsReport
|
||||
.rowLevelPermissionPredicateGroup.deleted,
|
||||
.rowLevelPermissionPredicateGroup.delete,
|
||||
...aggregatedOrchestratorActionsReport
|
||||
.rowLevelPermissionPredicateGroup.created,
|
||||
.rowLevelPermissionPredicateGroup.create,
|
||||
...aggregatedOrchestratorActionsReport
|
||||
.rowLevelPermissionPredicateGroup.updated,
|
||||
.rowLevelPermissionPredicateGroup.update,
|
||||
///
|
||||
],
|
||||
workspaceId,
|
||||
|
||||
+8
-3
@@ -2,8 +2,10 @@ import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
import { type FromTo } from 'twenty-shared/types';
|
||||
|
||||
import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type';
|
||||
import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type';
|
||||
import { type MetadataWorkspaceMigrationActionsRecord } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
|
||||
import {
|
||||
type WorkspaceMigrationActionType,
|
||||
type MetadataWorkspaceMigrationActionsRecord,
|
||||
} from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
|
||||
import { type WorkspaceMigrationBuilderAdditionalCacheDataMaps } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-builder-additional-cache-data-maps.type';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type';
|
||||
@@ -22,7 +24,10 @@ export type WorkspaceMigrationOrchestratorBuildArgs = {
|
||||
};
|
||||
|
||||
export type OrchestratorFailureReport = {
|
||||
[P in AllMetadataName]: FailedFlatEntityValidation<MetadataFlatEntity<P>>[];
|
||||
[P in AllMetadataName]: FailedFlatEntityValidation<
|
||||
P,
|
||||
WorkspaceMigrationActionType
|
||||
>[];
|
||||
};
|
||||
|
||||
export type OrchestratorActionsReport = {
|
||||
|
||||
+78
-62
@@ -28,10 +28,11 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_object',
|
||||
flatObjectMetadata: getFlatObjectMetadataMock({
|
||||
type: 'create',
|
||||
metadataName: 'objectMetadata',
|
||||
flatEntity: getFlatObjectMetadataMock({
|
||||
universalIdentifier: 'object-1',
|
||||
id: 'object-1',
|
||||
nameSingular: 'user',
|
||||
@@ -40,13 +41,14 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
flatFieldMetadatas: [],
|
||||
} satisfies CreateObjectAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -66,8 +68,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
} satisfies OrchestratorActionsReport,
|
||||
expected: {
|
||||
@@ -85,14 +87,15 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -105,7 +108,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -118,7 +122,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -131,8 +136,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
} satisfies OrchestratorActionsReport,
|
||||
expected: {
|
||||
@@ -149,10 +154,11 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_object',
|
||||
flatObjectMetadata: getFlatObjectMetadataMock({
|
||||
type: 'create',
|
||||
metadataName: 'objectMetadata',
|
||||
flatEntity: getFlatObjectMetadataMock({
|
||||
universalIdentifier: 'object-1',
|
||||
id: 'object-1',
|
||||
nameSingular: 'user',
|
||||
@@ -161,8 +167,9 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
flatFieldMetadatas: [],
|
||||
} satisfies CreateObjectAction,
|
||||
{
|
||||
type: 'create_object',
|
||||
flatObjectMetadata: getFlatObjectMetadataMock({
|
||||
type: 'create',
|
||||
metadataName: 'objectMetadata',
|
||||
flatEntity: getFlatObjectMetadataMock({
|
||||
universalIdentifier: 'object-2',
|
||||
id: 'object-2',
|
||||
nameSingular: 'company',
|
||||
@@ -171,13 +178,14 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
flatFieldMetadatas: [],
|
||||
} satisfies CreateObjectAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -190,7 +198,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-2',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -210,8 +219,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
} satisfies OrchestratorActionsReport,
|
||||
expected: {
|
||||
@@ -230,10 +239,11 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_object',
|
||||
flatObjectMetadata: getFlatObjectMetadataMock({
|
||||
type: 'create',
|
||||
metadataName: 'objectMetadata',
|
||||
flatEntity: getFlatObjectMetadataMock({
|
||||
universalIdentifier: 'object-1',
|
||||
id: 'object-1',
|
||||
nameSingular: 'user',
|
||||
@@ -242,13 +252,14 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
flatFieldMetadatas: [],
|
||||
} satisfies CreateObjectAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -261,7 +272,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-2',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -274,8 +286,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
} satisfies OrchestratorActionsReport,
|
||||
expected: {
|
||||
@@ -295,14 +307,15 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -315,7 +328,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -328,7 +342,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -341,8 +356,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
} satisfies OrchestratorActionsReport,
|
||||
expected: {
|
||||
@@ -370,10 +385,11 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_object',
|
||||
flatObjectMetadata: getFlatObjectMetadataMock({
|
||||
type: 'create',
|
||||
metadataName: 'objectMetadata',
|
||||
flatEntity: getFlatObjectMetadataMock({
|
||||
universalIdentifier: 'object-1',
|
||||
id: 'object-1',
|
||||
nameSingular: 'attachment',
|
||||
@@ -382,13 +398,14 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
flatFieldMetadatas: [],
|
||||
} satisfies CreateObjectAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [
|
||||
create: [
|
||||
{
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: 'object-1',
|
||||
flatFieldMetadatas: [
|
||||
getFlatFieldMetadataMock({
|
||||
@@ -401,8 +418,8 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
],
|
||||
} satisfies CreateFieldAction,
|
||||
],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
} satisfies OrchestratorActionsReport,
|
||||
expected: {
|
||||
@@ -425,7 +442,7 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
orchestratorActionsReport: input,
|
||||
});
|
||||
|
||||
const fieldActions = result.fieldMetadata.created as CreateFieldAction[];
|
||||
const fieldActions = result.fieldMetadata.create as CreateFieldAction[];
|
||||
const fieldActionCounts = fieldActions.reduce(
|
||||
(acc, action) => {
|
||||
acc[action.objectMetadataId] =
|
||||
@@ -437,11 +454,10 @@ describe('aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions',
|
||||
);
|
||||
|
||||
const objectActions = result.objectMetadata
|
||||
.created as CreateObjectAction[];
|
||||
.create as CreateObjectAction[];
|
||||
const objectActionCounts = objectActions.reduce(
|
||||
(acc, action) => {
|
||||
acc[action.flatObjectMetadata.id] =
|
||||
(acc[action.flatObjectMetadata.id] || 0) + 1;
|
||||
acc[action.flatEntity.id] = (acc[action.flatEntity.id] || 0) + 1;
|
||||
|
||||
return acc;
|
||||
},
|
||||
|
||||
+63
-52
@@ -25,27 +25,30 @@ describe('aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [
|
||||
{
|
||||
type: 'delete_object',
|
||||
objectMetadataId: 'object-1',
|
||||
type: 'delete',
|
||||
metadataName: 'objectMetadata',
|
||||
entityId: 'object-1',
|
||||
} satisfies DeleteObjectAction,
|
||||
],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [
|
||||
{
|
||||
type: 'delete_field',
|
||||
fieldMetadataId: 'field-1',
|
||||
type: 'delete',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: 'field-1',
|
||||
objectMetadataId: 'object-1',
|
||||
} satisfies DeleteFieldAction,
|
||||
{
|
||||
type: 'delete_field',
|
||||
fieldMetadataId: 'field-2',
|
||||
type: 'delete',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: 'field-2',
|
||||
objectMetadataId: 'object-1',
|
||||
} satisfies DeleteFieldAction,
|
||||
],
|
||||
@@ -65,17 +68,18 @@ describe('aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [],
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [
|
||||
{
|
||||
type: 'delete_field',
|
||||
fieldMetadataId: 'field-1',
|
||||
type: 'delete',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: 'field-1',
|
||||
objectMetadataId: 'object-1',
|
||||
} satisfies DeleteFieldAction,
|
||||
],
|
||||
@@ -96,27 +100,30 @@ describe('aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [
|
||||
{
|
||||
type: 'delete_object',
|
||||
objectMetadataId: 'object-1',
|
||||
type: 'delete',
|
||||
metadataName: 'objectMetadata',
|
||||
entityId: 'object-1',
|
||||
} satisfies DeleteObjectAction,
|
||||
],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [
|
||||
{
|
||||
type: 'delete_field',
|
||||
fieldMetadataId: 'field-1',
|
||||
type: 'delete',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: 'field-1',
|
||||
objectMetadataId: 'object-1',
|
||||
} satisfies DeleteFieldAction,
|
||||
{
|
||||
type: 'delete_field',
|
||||
fieldMetadataId: 'field-2',
|
||||
type: 'delete',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: 'field-2',
|
||||
objectMetadataId: 'object-2',
|
||||
} satisfies DeleteFieldAction,
|
||||
],
|
||||
@@ -138,36 +145,41 @@ describe('aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions',
|
||||
input: {
|
||||
...createEmptyOrchestratorActionsReport(),
|
||||
objectMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [
|
||||
{
|
||||
type: 'delete_object',
|
||||
objectMetadataId: 'object-1',
|
||||
type: 'delete',
|
||||
metadataName: 'objectMetadata',
|
||||
entityId: 'object-1',
|
||||
} satisfies DeleteObjectAction,
|
||||
{
|
||||
type: 'delete_object',
|
||||
objectMetadataId: 'object-2',
|
||||
type: 'delete',
|
||||
metadataName: 'objectMetadata',
|
||||
entityId: 'object-2',
|
||||
} satisfies DeleteObjectAction,
|
||||
],
|
||||
},
|
||||
fieldMetadata: {
|
||||
created: [],
|
||||
updated: [],
|
||||
deleted: [
|
||||
create: [],
|
||||
update: [],
|
||||
delete: [
|
||||
{
|
||||
type: 'delete_field',
|
||||
fieldMetadataId: 'field-1',
|
||||
type: 'delete',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: 'field-1',
|
||||
objectMetadataId: 'object-1',
|
||||
} satisfies DeleteFieldAction,
|
||||
{
|
||||
type: 'delete_field',
|
||||
fieldMetadataId: 'field-2',
|
||||
type: 'delete',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: 'field-2',
|
||||
objectMetadataId: 'object-2',
|
||||
} satisfies DeleteFieldAction,
|
||||
{
|
||||
type: 'delete_field',
|
||||
fieldMetadataId: 'field-3',
|
||||
type: 'delete',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: 'field-3',
|
||||
objectMetadataId: 'object-3',
|
||||
} satisfies DeleteFieldAction,
|
||||
],
|
||||
@@ -204,7 +216,7 @@ describe('aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions',
|
||||
orchestratorActionsReport: input,
|
||||
});
|
||||
|
||||
const fieldActions = result.fieldMetadata.deleted as DeleteFieldAction[];
|
||||
const fieldActions = result.fieldMetadata.delete as DeleteFieldAction[];
|
||||
const fieldActionCounts = fieldActions.reduce(
|
||||
(acc, action) => {
|
||||
acc[action.objectMetadataId] =
|
||||
@@ -216,11 +228,10 @@ describe('aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions',
|
||||
);
|
||||
|
||||
const objectActions = result.objectMetadata
|
||||
.deleted as DeleteObjectAction[];
|
||||
.delete as DeleteObjectAction[];
|
||||
const objectActionCounts = objectActions.reduce(
|
||||
(acc, action) => {
|
||||
acc[action.objectMetadataId] =
|
||||
(acc[action.objectMetadataId] || 0) + 1;
|
||||
acc[action.entityId] = (acc[action.entityId] || 0) + 1;
|
||||
|
||||
return acc;
|
||||
},
|
||||
|
||||
+5
-5
@@ -20,11 +20,11 @@ export const aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions
|
||||
orchestratorActionsReport,
|
||||
}: AggregateOrchestratorActionsReportCreateObjectAndCreateFieldActionsArgs): OrchestratorActionsReport => {
|
||||
const initialCreatedObjectActionByObjectMetadataId = (
|
||||
orchestratorActionsReport.objectMetadata.created as CreateObjectAction[]
|
||||
orchestratorActionsReport.objectMetadata.create as CreateObjectAction[]
|
||||
).reduce(
|
||||
(acc, createObjectAction) => ({
|
||||
...acc,
|
||||
[createObjectAction.flatObjectMetadata.id]: createObjectAction,
|
||||
[createObjectAction.flatEntity.id]: createObjectAction,
|
||||
}),
|
||||
{} as Record<string, CreateObjectAction>,
|
||||
);
|
||||
@@ -38,7 +38,7 @@ export const aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions
|
||||
createdFieldActionByObjectMetadataId,
|
||||
createdObjectActionByObjectMetadataId,
|
||||
} = (
|
||||
orchestratorActionsReport.fieldMetadata.created as CreateFieldAction[]
|
||||
orchestratorActionsReport.fieldMetadata.create as CreateFieldAction[]
|
||||
).reduce<AggregatedActions>(
|
||||
(
|
||||
{
|
||||
@@ -182,11 +182,11 @@ export const aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions
|
||||
...orchestratorActionsReport,
|
||||
fieldMetadata: {
|
||||
...orchestratorActionsReport.fieldMetadata,
|
||||
created: Object.values(createdFieldActionByObjectMetadataId),
|
||||
create: Object.values(createdFieldActionByObjectMetadataId),
|
||||
},
|
||||
objectMetadata: {
|
||||
...orchestratorActionsReport.objectMetadata,
|
||||
created: Object.values(createdObjectActionByObjectMetadataId),
|
||||
create: Object.values(createdObjectActionByObjectMetadataId),
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
+5
-5
@@ -16,11 +16,11 @@ export const aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions
|
||||
orchestratorActionsReport,
|
||||
}: AggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActionsArgs): OrchestratorActionsReport => {
|
||||
const deleteObjectActionByObjectMetadataId = (
|
||||
orchestratorActionsReport.objectMetadata.deleted as DeleteObjectAction[]
|
||||
orchestratorActionsReport.objectMetadata.delete as DeleteObjectAction[]
|
||||
).reduce<Record<string, DeleteObjectAction>>(
|
||||
(acc, deleteObjectAction) => ({
|
||||
...acc,
|
||||
[deleteObjectAction.objectMetadataId]: deleteObjectAction,
|
||||
[deleteObjectAction.entityId]: deleteObjectAction,
|
||||
}),
|
||||
{},
|
||||
);
|
||||
@@ -29,7 +29,7 @@ export const aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions
|
||||
};
|
||||
|
||||
const { deleteFieldActionByFieldMetadataId } = (
|
||||
orchestratorActionsReport.fieldMetadata.deleted as DeleteFieldAction[]
|
||||
orchestratorActionsReport.fieldMetadata.delete as DeleteFieldAction[]
|
||||
).reduce<AggregatedActions>(
|
||||
({ deleteFieldActionByFieldMetadataId }, deleteFieldAction) => {
|
||||
const fieldParentObjectDeleteObjectAction =
|
||||
@@ -46,7 +46,7 @@ export const aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions
|
||||
return {
|
||||
deleteFieldActionByFieldMetadataId: {
|
||||
...deleteFieldActionByFieldMetadataId,
|
||||
[deleteFieldAction.fieldMetadataId]: deleteFieldAction,
|
||||
[deleteFieldAction.entityId]: deleteFieldAction,
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -57,7 +57,7 @@ export const aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions
|
||||
...orchestratorActionsReport,
|
||||
fieldMetadata: {
|
||||
...orchestratorActionsReport.fieldMetadata,
|
||||
deleted: Object.values(deleteFieldActionByFieldMetadataId),
|
||||
delete: Object.values(deleteFieldActionByFieldMetadataId),
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
+3
-3
@@ -8,7 +8,7 @@ export const getMetadataEmptyWorkspaceMigrationActionRecord = <
|
||||
_metadataName: T,
|
||||
) =>
|
||||
({
|
||||
created: [],
|
||||
deleted: [],
|
||||
updated: [],
|
||||
create: [],
|
||||
delete: [],
|
||||
update: [],
|
||||
}) as MetadataWorkspaceMigrationActionsRecord<T>;
|
||||
|
||||
+6
-15
@@ -1,18 +1,9 @@
|
||||
import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type';
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type UpdateAgentAction = {
|
||||
type: 'update_agent';
|
||||
flatEntityId: string;
|
||||
flatEntityUpdates: FlatEntityPropertiesUpdates<'agent'>;
|
||||
};
|
||||
export type CreateAgentAction = BaseCreateWorkspaceMigrationAction<'agent'>;
|
||||
|
||||
export type CreateAgentAction = {
|
||||
type: 'create_agent';
|
||||
flatEntity: FlatAgent;
|
||||
};
|
||||
export type UpdateAgentAction = BaseUpdateWorkspaceMigrationAction<'agent'>;
|
||||
|
||||
export type DeleteAgentAction = {
|
||||
type: 'delete_agent';
|
||||
flatEntityId: string;
|
||||
};
|
||||
export type DeleteAgentAction = BaseDeleteWorkspaceMigrationAction<'agent'>;
|
||||
|
||||
+12
-9
@@ -21,7 +21,7 @@ export class WorkspaceMigrationV2AgentActionsBuilderService extends WorkspaceEnt
|
||||
|
||||
protected validateFlatEntityCreation(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.agent>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.agent, 'created'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.agent, 'create'> {
|
||||
const validationResult =
|
||||
this.flatAgentValidatorService.validateFlatAgentCreation(args);
|
||||
|
||||
@@ -37,7 +37,8 @@ export class WorkspaceMigrationV2AgentActionsBuilderService extends WorkspaceEnt
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_agent',
|
||||
type: 'create',
|
||||
metadataName: 'agent',
|
||||
flatEntity: flatAgentToValidate,
|
||||
},
|
||||
};
|
||||
@@ -45,7 +46,7 @@ export class WorkspaceMigrationV2AgentActionsBuilderService extends WorkspaceEnt
|
||||
|
||||
protected validateFlatEntityDeletion(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.agent>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.agent, 'deleted'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.agent, 'delete'> {
|
||||
const validationResult =
|
||||
this.flatAgentValidatorService.validateFlatAgentDeletion(args);
|
||||
|
||||
@@ -61,15 +62,16 @@ export class WorkspaceMigrationV2AgentActionsBuilderService extends WorkspaceEnt
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_agent',
|
||||
flatEntityId: flatAgentToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'agent',
|
||||
entityId: flatAgentToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
protected validateFlatEntityUpdate(
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.agent>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.agent, 'updated'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.agent, 'update'> {
|
||||
const validationResult =
|
||||
this.flatAgentValidatorService.validateFlatAgentUpdate(args);
|
||||
|
||||
@@ -83,9 +85,10 @@ export class WorkspaceMigrationV2AgentActionsBuilderService extends WorkspaceEnt
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateAgentAction: UpdateAgentAction = {
|
||||
type: 'update_agent',
|
||||
flatEntityId,
|
||||
flatEntityUpdates,
|
||||
type: 'update',
|
||||
metadataName: 'agent',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
+9
-28
@@ -1,31 +1,12 @@
|
||||
import { type FlatCronTriggerPropertiesToCompare } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger-properties-to-compare.type';
|
||||
import { type FlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger.type';
|
||||
import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/types/property-update.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateCronTriggerAction = {
|
||||
type: 'create_cron_trigger';
|
||||
cronTrigger: FlatCronTrigger;
|
||||
};
|
||||
export type CreateCronTriggerAction =
|
||||
BaseCreateWorkspaceMigrationAction<'cronTrigger'>;
|
||||
|
||||
export type UpdateCronTriggerAction = {
|
||||
type: 'update_cron_trigger';
|
||||
cronTriggerId: string;
|
||||
updates: Array<
|
||||
{
|
||||
[P in FlatCronTriggerPropertiesToCompare]: PropertyUpdate<
|
||||
FlatCronTrigger,
|
||||
P
|
||||
>;
|
||||
}[FlatCronTriggerPropertiesToCompare]
|
||||
>;
|
||||
};
|
||||
export type UpdateCronTriggerAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'cronTrigger'>;
|
||||
|
||||
export type DeleteCronTriggerAction = {
|
||||
type: 'delete_cron_trigger';
|
||||
cronTriggerId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationCronTriggerActionV2 =
|
||||
| CreateCronTriggerAction
|
||||
| UpdateCronTriggerAction
|
||||
| DeleteCronTriggerAction;
|
||||
export type DeleteCronTriggerAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'cronTrigger'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.cronTrigger>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.cronTrigger,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatCronTriggerValidatorService.validateFlatCronTriggerCreation(
|
||||
@@ -42,8 +42,9 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_cron_trigger',
|
||||
cronTrigger: flatCronTriggerToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'cronTrigger',
|
||||
flatEntity: flatCronTriggerToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -52,7 +53,7 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.cronTrigger>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.cronTrigger,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatCronTriggerValidatorService.validateFlatCronTriggerDeletion(
|
||||
@@ -71,8 +72,9 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_cron_trigger',
|
||||
cronTriggerId: flatCronTriggerToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'cronTrigger',
|
||||
entityId: flatCronTriggerToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -81,7 +83,7 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.cronTrigger>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.cronTrigger,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatCronTriggerValidatorService.validateFlatCronTriggerUpdate(args);
|
||||
@@ -95,8 +97,9 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateCronTriggerAction: UpdateCronTriggerAction = {
|
||||
type: 'update_cron_trigger',
|
||||
cronTriggerId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'cronTrigger',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-20
@@ -1,23 +1,12 @@
|
||||
import { type FlatDatabaseEventTrigger } from 'src/engine/metadata-modules/database-event-trigger/types/flat-database-event-trigger.type';
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateDatabaseEventTriggerAction = {
|
||||
type: 'create_database_event_trigger';
|
||||
databaseEventTrigger: FlatDatabaseEventTrigger;
|
||||
};
|
||||
export type CreateDatabaseEventTriggerAction =
|
||||
BaseCreateWorkspaceMigrationAction<'databaseEventTrigger'>;
|
||||
|
||||
export type UpdateDatabaseEventTriggerAction = {
|
||||
type: 'update_database_event_trigger';
|
||||
databaseEventTriggerId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'databaseEventTrigger'>;
|
||||
};
|
||||
export type UpdateDatabaseEventTriggerAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'databaseEventTrigger'>;
|
||||
|
||||
export type DeleteDatabaseEventTriggerAction = {
|
||||
type: 'delete_database_event_trigger';
|
||||
databaseEventTriggerId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationDatabaseEventTriggerActionV2 =
|
||||
| CreateDatabaseEventTriggerAction
|
||||
| UpdateDatabaseEventTriggerAction
|
||||
| DeleteDatabaseEventTriggerAction;
|
||||
export type DeleteDatabaseEventTriggerAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'databaseEventTrigger'>;
|
||||
|
||||
+12
-9
@@ -25,7 +25,7 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.databaseEventTrigger,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatDatabaseEventTriggerValidatorService.validateFlatDatabaseEventTriggerCreation(
|
||||
@@ -44,8 +44,9 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_database_event_trigger',
|
||||
databaseEventTrigger: flatDatabaseEventTriggerToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'databaseEventTrigger',
|
||||
flatEntity: flatDatabaseEventTriggerToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -56,7 +57,7 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.databaseEventTrigger,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatDatabaseEventTriggerValidatorService.validateFlatDatabaseEventTriggerDeletion(
|
||||
@@ -75,8 +76,9 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_database_event_trigger',
|
||||
databaseEventTriggerId: flatDatabaseEventTriggerToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'databaseEventTrigger',
|
||||
entityId: flatDatabaseEventTriggerToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -87,7 +89,7 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.databaseEventTrigger,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatDatabaseEventTriggerValidatorService.validateFlatDatabaseEventTriggerUpdate(
|
||||
@@ -104,8 +106,9 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateDatabaseEventTriggerAction: UpdateDatabaseEventTriggerAction = {
|
||||
type: 'update_database_event_trigger',
|
||||
databaseEventTriggerId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'databaseEventTrigger',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+15
-22
@@ -1,29 +1,22 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateFieldAction = {
|
||||
type: 'create_field';
|
||||
export type CreateFieldAction = Omit<
|
||||
BaseCreateWorkspaceMigrationAction<'fieldMetadata'>,
|
||||
'flatEntity'
|
||||
> & {
|
||||
objectMetadataId: string;
|
||||
flatFieldMetadatas: FlatFieldMetadata[];
|
||||
};
|
||||
|
||||
export type UpdateFieldAction = {
|
||||
type: 'update_field';
|
||||
fieldMetadataId: string;
|
||||
objectMetadataId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'fieldMetadata'>;
|
||||
};
|
||||
export type UpdateFieldAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'fieldMetadata'> & {
|
||||
objectMetadataId: string;
|
||||
};
|
||||
|
||||
export type DeleteFieldAction = {
|
||||
type: 'delete_field';
|
||||
fieldMetadataId: string;
|
||||
objectMetadataId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationFieldActionV2 =
|
||||
| CreateFieldAction
|
||||
| UpdateFieldAction
|
||||
| DeleteFieldAction;
|
||||
|
||||
export type WorkspaceMigrationFieldActionTypeV2 =
|
||||
WorkspaceMigrationFieldActionV2['type'];
|
||||
export type DeleteFieldAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'fieldMetadata'> & {
|
||||
objectMetadataId: string;
|
||||
};
|
||||
|
||||
+11
-8
@@ -24,7 +24,7 @@ export class WorkspaceMigrationV2FieldActionsBuilderService extends WorkspaceEnt
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.fieldMetadata>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.fieldMetadata,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatFieldValidatorService.validateFlatFieldMetadataCreation(args);
|
||||
@@ -41,7 +41,8 @@ export class WorkspaceMigrationV2FieldActionsBuilderService extends WorkspaceEnt
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_field',
|
||||
type: 'create',
|
||||
metadataName: 'fieldMetadata',
|
||||
objectMetadataId: flatFieldMetadataToValidate.objectMetadataId,
|
||||
flatFieldMetadatas: [flatFieldMetadataToValidate],
|
||||
},
|
||||
@@ -52,7 +53,7 @@ export class WorkspaceMigrationV2FieldActionsBuilderService extends WorkspaceEnt
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.fieldMetadata>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.fieldMetadata,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatFieldValidatorService.validateFlatFieldMetadataDeletion(args);
|
||||
@@ -69,8 +70,9 @@ export class WorkspaceMigrationV2FieldActionsBuilderService extends WorkspaceEnt
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_field',
|
||||
fieldMetadataId: flatFieldMetadataToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: flatFieldMetadataToValidate.id,
|
||||
objectMetadataId: flatFieldMetadataToValidate.objectMetadataId,
|
||||
},
|
||||
};
|
||||
@@ -82,7 +84,7 @@ export class WorkspaceMigrationV2FieldActionsBuilderService extends WorkspaceEnt
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.fieldMetadata,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatFieldValidatorService.validateFlatFieldMetadataUpdate(args);
|
||||
@@ -107,8 +109,9 @@ export class WorkspaceMigrationV2FieldActionsBuilderService extends WorkspaceEnt
|
||||
});
|
||||
|
||||
const updateFieldAction: UpdateFieldAction = {
|
||||
type: 'update_field',
|
||||
fieldMetadataId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'fieldMetadata',
|
||||
entityId: flatEntityId,
|
||||
objectMetadataId: flatFieldMetadata.objectMetadataId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
+11
-15
@@ -1,18 +1,14 @@
|
||||
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
|
||||
export type CreateIndexAction = {
|
||||
type: 'create_index';
|
||||
flatIndexMetadata: FlatIndexMetadata;
|
||||
export type CreateIndexAction = BaseCreateWorkspaceMigrationAction<'index'>;
|
||||
|
||||
export type DeleteIndexAction = BaseDeleteWorkspaceMigrationAction<'index'>;
|
||||
|
||||
export type UpdateIndexAction = {
|
||||
type: 'update';
|
||||
metadataName: 'index';
|
||||
entityId: string;
|
||||
updatedFlatEntity: FlatIndexMetadata;
|
||||
};
|
||||
|
||||
export type DeleteIndexAction = {
|
||||
type: 'delete_index';
|
||||
flatIndexMetadataId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationIndexActionV2 =
|
||||
| CreateIndexAction
|
||||
| DeleteIndexAction;
|
||||
|
||||
export type WorkspaceMigrationIndexActionTypeV2 =
|
||||
WorkspaceMigrationIndexActionV2['type'];
|
||||
|
||||
+30
-24
@@ -27,7 +27,7 @@ export class WorkspaceMigrationV2IndexActionsBuilderService extends WorkspaceEnt
|
||||
|
||||
protected validateFlatEntityCreation(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.index>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.index, 'created'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.index, 'create'> {
|
||||
const validationResult =
|
||||
this.flatIndexValidatorService.validateFlatIndexCreation(args);
|
||||
|
||||
@@ -43,15 +43,16 @@ export class WorkspaceMigrationV2IndexActionsBuilderService extends WorkspaceEnt
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_index',
|
||||
flatIndexMetadata: flatIndexToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'index',
|
||||
flatEntity: flatIndexToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
protected validateFlatEntityDeletion(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.index>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.index, 'deleted'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.index, 'delete'> {
|
||||
const validationResult =
|
||||
this.flatIndexValidatorService.validateFlatIndexDeletion(args);
|
||||
|
||||
@@ -67,8 +68,9 @@ export class WorkspaceMigrationV2IndexActionsBuilderService extends WorkspaceEnt
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_index',
|
||||
flatIndexMetadataId: flatIndexToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'index',
|
||||
entityId: flatIndexToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -81,10 +83,7 @@ export class WorkspaceMigrationV2IndexActionsBuilderService extends WorkspaceEnt
|
||||
workspaceId,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.index
|
||||
>): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.index,
|
||||
'updated'
|
||||
> {
|
||||
>): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.index, 'update'> {
|
||||
const flatEntity = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId,
|
||||
flatEntityMaps:
|
||||
@@ -94,8 +93,11 @@ export class WorkspaceMigrationV2IndexActionsBuilderService extends WorkspaceEnt
|
||||
if (!isDefined(flatEntity)) {
|
||||
return {
|
||||
status: 'fail',
|
||||
type: 'delete_index',
|
||||
flatEntityMinimalInformation: {},
|
||||
metadataName: 'index',
|
||||
type: 'update',
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
errors: [
|
||||
{
|
||||
code: FlatEntityMapsExceptionCode.ENTITY_NOT_FOUND,
|
||||
@@ -116,7 +118,11 @@ export class WorkspaceMigrationV2IndexActionsBuilderService extends WorkspaceEnt
|
||||
if (deletionValidationResult.errors.length > 0) {
|
||||
return {
|
||||
status: 'fail',
|
||||
...deletionValidationResult,
|
||||
type: 'update',
|
||||
errors: deletionValidationResult.errors,
|
||||
flatEntityMinimalInformation:
|
||||
deletionValidationResult.flatEntityMinimalInformation,
|
||||
metadataName: deletionValidationResult.metadataName,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -151,22 +157,22 @@ export class WorkspaceMigrationV2IndexActionsBuilderService extends WorkspaceEnt
|
||||
if (creationValidationResult.errors.length > 0) {
|
||||
return {
|
||||
status: 'fail',
|
||||
...creationValidationResult,
|
||||
type: 'update',
|
||||
errors: creationValidationResult.errors,
|
||||
flatEntityMinimalInformation:
|
||||
creationValidationResult.flatEntityMinimalInformation,
|
||||
metadataName: creationValidationResult.metadataName,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
status: 'success',
|
||||
action: [
|
||||
{
|
||||
type: 'delete_index',
|
||||
flatIndexMetadataId: flatEntity.id,
|
||||
},
|
||||
{
|
||||
type: 'create_index',
|
||||
flatIndexMetadata: updatedFlatIndex,
|
||||
},
|
||||
],
|
||||
action: {
|
||||
type: 'update',
|
||||
metadataName: 'index',
|
||||
entityId: flatEntity.id,
|
||||
updatedFlatEntity: updatedFlatIndex,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
+11
-30
@@ -1,34 +1,15 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateObjectAction = {
|
||||
type: 'create_object';
|
||||
flatObjectMetadata: FlatObjectMetadata;
|
||||
flatFieldMetadatas: FlatFieldMetadata[];
|
||||
};
|
||||
export type CreateObjectAction =
|
||||
BaseCreateWorkspaceMigrationAction<'objectMetadata'> & {
|
||||
flatFieldMetadatas: FlatFieldMetadata[];
|
||||
};
|
||||
|
||||
export type UpdateObjectAction = {
|
||||
type: 'update_object';
|
||||
objectMetadataId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'objectMetadata'>;
|
||||
};
|
||||
export type UpdateObjectAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'objectMetadata'>;
|
||||
|
||||
export type DeleteObjectAction = {
|
||||
type: 'delete_object';
|
||||
objectMetadataId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationObjectActionV2 =
|
||||
| CreateObjectAction
|
||||
| UpdateObjectAction
|
||||
| DeleteObjectAction;
|
||||
|
||||
export type WorkspaceMigrationObjectActionTypeV2 =
|
||||
WorkspaceMigrationObjectActionV2['type'];
|
||||
|
||||
export const WORKSPACE_MIGRATION_OBJECT_ACTION_TYPES = [
|
||||
'create_object',
|
||||
'delete_object',
|
||||
'update_object',
|
||||
] as const satisfies WorkspaceMigrationObjectActionTypeV2[];
|
||||
export type DeleteObjectAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'objectMetadata'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService extends WorkspaceEn
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.objectMetadata>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.objectMetadata,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatObjectValidatorService.validateFlatObjectMetadataCreation(args);
|
||||
@@ -40,9 +40,10 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService extends WorkspaceEn
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_object',
|
||||
type: 'create',
|
||||
metadataName: 'objectMetadata',
|
||||
flatFieldMetadatas: [],
|
||||
flatObjectMetadata: flatObjectMetadataToValidate,
|
||||
flatEntity: flatObjectMetadataToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -51,7 +52,7 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService extends WorkspaceEn
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.objectMetadata>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.objectMetadata,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatObjectValidatorService.validateFlatObjectMetadataDeletion(args);
|
||||
@@ -68,8 +69,9 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService extends WorkspaceEn
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_object',
|
||||
objectMetadataId: flatObjectMetadataToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'objectMetadata',
|
||||
entityId: flatObjectMetadataToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -80,7 +82,7 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService extends WorkspaceEn
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.objectMetadata,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatObjectValidatorService.validateFlatObjectMetadataUpdate(args);
|
||||
@@ -95,8 +97,9 @@ export class WorkspaceMigrationV2ObjectActionsBuilderService extends WorkspaceEn
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateObjectAction: UpdateObjectAction = {
|
||||
type: 'update_object',
|
||||
objectMetadataId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'objectMetadata',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-15
@@ -1,18 +1,12 @@
|
||||
import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type';
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type UpdatePageLayoutTabAction = {
|
||||
type: 'update_page_layout_tab';
|
||||
flatEntityId: string;
|
||||
flatEntityUpdates: FlatEntityPropertiesUpdates<'pageLayoutTab'>;
|
||||
};
|
||||
export type CreatePageLayoutTabAction =
|
||||
BaseCreateWorkspaceMigrationAction<'pageLayoutTab'>;
|
||||
|
||||
export type CreatePageLayoutTabAction = {
|
||||
type: 'create_page_layout_tab';
|
||||
flatEntity: FlatPageLayoutTab;
|
||||
};
|
||||
export type UpdatePageLayoutTabAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'pageLayoutTab'>;
|
||||
|
||||
export type DeletePageLayoutTabAction = {
|
||||
type: 'delete_page_layout_tab';
|
||||
flatEntityId: string;
|
||||
};
|
||||
export type DeletePageLayoutTabAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'pageLayoutTab'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2PageLayoutTabActionsBuilderService extends Work
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.pageLayoutTab>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.pageLayoutTab,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatPageLayoutTabValidatorService.validateFlatPageLayoutTabCreation(
|
||||
@@ -42,7 +42,8 @@ export class WorkspaceMigrationV2PageLayoutTabActionsBuilderService extends Work
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_page_layout_tab',
|
||||
type: 'create',
|
||||
metadataName: 'pageLayoutTab',
|
||||
flatEntity: flatPageLayoutTabToValidate,
|
||||
},
|
||||
};
|
||||
@@ -52,7 +53,7 @@ export class WorkspaceMigrationV2PageLayoutTabActionsBuilderService extends Work
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.pageLayoutTab>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.pageLayoutTab,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatPageLayoutTabValidatorService.validateFlatPageLayoutTabDeletion(
|
||||
@@ -71,8 +72,9 @@ export class WorkspaceMigrationV2PageLayoutTabActionsBuilderService extends Work
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_page_layout_tab',
|
||||
flatEntityId: flatPageLayoutTabToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'pageLayoutTab',
|
||||
entityId: flatPageLayoutTabToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -83,7 +85,7 @@ export class WorkspaceMigrationV2PageLayoutTabActionsBuilderService extends Work
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.pageLayoutTab,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatPageLayoutTabValidatorService.validateFlatPageLayoutTabUpdate(
|
||||
@@ -100,9 +102,10 @@ export class WorkspaceMigrationV2PageLayoutTabActionsBuilderService extends Work
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updatePageLayoutTabAction: UpdatePageLayoutTabAction = {
|
||||
type: 'update_page_layout_tab',
|
||||
flatEntityId,
|
||||
flatEntityUpdates,
|
||||
type: 'update',
|
||||
metadataName: 'pageLayoutTab',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
+9
-15
@@ -1,18 +1,12 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreatePageLayoutWidgetAction = {
|
||||
type: 'create_page_layout_widget';
|
||||
pageLayoutWidget: FlatPageLayoutWidget;
|
||||
};
|
||||
export type CreatePageLayoutWidgetAction =
|
||||
BaseCreateWorkspaceMigrationAction<'pageLayoutWidget'>;
|
||||
|
||||
export type UpdatePageLayoutWidgetAction = {
|
||||
type: 'update_page_layout_widget';
|
||||
pageLayoutWidgetId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'pageLayoutWidget'>;
|
||||
};
|
||||
export type UpdatePageLayoutWidgetAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'pageLayoutWidget'>;
|
||||
|
||||
export type DeletePageLayoutWidgetAction = {
|
||||
type: 'delete_page_layout_widget';
|
||||
pageLayoutWidgetId: string;
|
||||
};
|
||||
export type DeletePageLayoutWidgetAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'pageLayoutWidget'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService extends W
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.pageLayoutWidget>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.pageLayoutWidget,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatPageLayoutWidgetValidatorService.validateFlatPageLayoutWidgetCreation(
|
||||
@@ -40,8 +40,9 @@ export class WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService extends W
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_page_layout_widget',
|
||||
pageLayoutWidget: args.flatEntityToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'pageLayoutWidget',
|
||||
flatEntity: args.flatEntityToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -50,7 +51,7 @@ export class WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService extends W
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.pageLayoutWidget>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.pageLayoutWidget,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatPageLayoutWidgetValidatorService.validateFlatPageLayoutWidgetDeletion(
|
||||
@@ -69,8 +70,9 @@ export class WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService extends W
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_page_layout_widget',
|
||||
pageLayoutWidgetId: flatPageLayoutWidgetToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'pageLayoutWidget',
|
||||
entityId: flatPageLayoutWidgetToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -81,7 +83,7 @@ export class WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService extends W
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.pageLayoutWidget,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatPageLayoutWidgetValidatorService.validateFlatPageLayoutWidgetUpdate(
|
||||
@@ -98,8 +100,9 @@ export class WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService extends W
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updatePageLayoutWidgetAction: UpdatePageLayoutWidgetAction = {
|
||||
type: 'update_page_layout_widget',
|
||||
pageLayoutWidgetId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'pageLayoutWidget',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-15
@@ -1,18 +1,12 @@
|
||||
import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type';
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type UpdatePageLayoutAction = {
|
||||
type: 'update_page_layout';
|
||||
flatEntityId: string;
|
||||
flatEntityUpdates: FlatEntityPropertiesUpdates<'pageLayout'>;
|
||||
};
|
||||
export type CreatePageLayoutAction =
|
||||
BaseCreateWorkspaceMigrationAction<'pageLayout'>;
|
||||
|
||||
export type CreatePageLayoutAction = {
|
||||
type: 'create_page_layout';
|
||||
flatEntity: FlatPageLayout;
|
||||
};
|
||||
export type UpdatePageLayoutAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'pageLayout'>;
|
||||
|
||||
export type DeletePageLayoutAction = {
|
||||
type: 'delete_page_layout';
|
||||
flatEntityId: string;
|
||||
};
|
||||
export type DeletePageLayoutAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'pageLayout'>;
|
||||
|
||||
+12
-9
@@ -24,7 +24,7 @@ export class WorkspaceMigrationV2PageLayoutActionsBuilderService extends Workspa
|
||||
): Promise<
|
||||
FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.pageLayout,
|
||||
'created'
|
||||
'create'
|
||||
>
|
||||
> {
|
||||
const validationResult =
|
||||
@@ -42,7 +42,8 @@ export class WorkspaceMigrationV2PageLayoutActionsBuilderService extends Workspa
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_page_layout',
|
||||
type: 'create',
|
||||
metadataName: 'pageLayout',
|
||||
flatEntity: flatPageLayoutToValidate,
|
||||
},
|
||||
};
|
||||
@@ -52,7 +53,7 @@ export class WorkspaceMigrationV2PageLayoutActionsBuilderService extends Workspa
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.pageLayout>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.pageLayout,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatPageLayoutValidatorService.validateFlatPageLayoutDeletion(args);
|
||||
@@ -69,8 +70,9 @@ export class WorkspaceMigrationV2PageLayoutActionsBuilderService extends Workspa
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_page_layout',
|
||||
flatEntityId: flatPageLayoutToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'pageLayout',
|
||||
entityId: flatPageLayoutToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -80,7 +82,7 @@ export class WorkspaceMigrationV2PageLayoutActionsBuilderService extends Workspa
|
||||
): Promise<
|
||||
FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.pageLayout,
|
||||
'updated'
|
||||
'update'
|
||||
>
|
||||
> {
|
||||
const validationResult =
|
||||
@@ -96,9 +98,10 @@ export class WorkspaceMigrationV2PageLayoutActionsBuilderService extends Workspa
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updatePageLayoutAction: UpdatePageLayoutAction = {
|
||||
type: 'update_page_layout',
|
||||
flatEntityId,
|
||||
flatEntityUpdates,
|
||||
type: 'update',
|
||||
metadataName: 'pageLayout',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
+9
-23
@@ -1,26 +1,12 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateRoleTargetAction = {
|
||||
type: 'create_role_target';
|
||||
roleTarget: FlatRoleTarget;
|
||||
};
|
||||
export type CreateRoleTargetAction =
|
||||
BaseCreateWorkspaceMigrationAction<'roleTarget'>;
|
||||
|
||||
export type UpdateRoleTargetAction = {
|
||||
type: 'update_role_target';
|
||||
roleTargetId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'roleTarget'>;
|
||||
};
|
||||
export type UpdateRoleTargetAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'roleTarget'>;
|
||||
|
||||
export type DeleteRoleTargetAction = {
|
||||
type: 'delete_role_target';
|
||||
roleTargetId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationRoleTargetActionV2 =
|
||||
| CreateRoleTargetAction
|
||||
| UpdateRoleTargetAction
|
||||
| DeleteRoleTargetAction;
|
||||
|
||||
export type WorkspaceMigrationRoleTargetActionTypeV2 =
|
||||
WorkspaceMigrationRoleTargetActionV2['type'];
|
||||
export type DeleteRoleTargetAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'roleTarget'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2RoleTargetActionsBuilderService extends Workspa
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.roleTarget>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.roleTarget,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRoleTargetValidatorService.validateFlatRoleTargetCreation(args);
|
||||
@@ -40,8 +40,9 @@ export class WorkspaceMigrationV2RoleTargetActionsBuilderService extends Workspa
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_role_target',
|
||||
roleTarget: flatRoleTargetToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'roleTarget',
|
||||
flatEntity: flatRoleTargetToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -50,7 +51,7 @@ export class WorkspaceMigrationV2RoleTargetActionsBuilderService extends Workspa
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.roleTarget>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.roleTarget,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRoleTargetValidatorService.validateFlatRoleTargetDeletion(args);
|
||||
@@ -67,8 +68,9 @@ export class WorkspaceMigrationV2RoleTargetActionsBuilderService extends Workspa
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_role_target',
|
||||
roleTargetId: flatRoleTargetToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'roleTarget',
|
||||
entityId: flatRoleTargetToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -77,7 +79,7 @@ export class WorkspaceMigrationV2RoleTargetActionsBuilderService extends Workspa
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.roleTarget>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.roleTarget,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRoleTargetValidatorService.validateFlatRoleTargetUpdate(args);
|
||||
@@ -92,8 +94,9 @@ export class WorkspaceMigrationV2RoleTargetActionsBuilderService extends Workspa
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateRoleTargetAction: UpdateRoleTargetAction = {
|
||||
type: 'update_role_target',
|
||||
roleTargetId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'roleTarget',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+6
-23
@@ -1,26 +1,9 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateRoleAction = {
|
||||
type: 'create_role';
|
||||
role: FlatRole;
|
||||
};
|
||||
export type CreateRoleAction = BaseCreateWorkspaceMigrationAction<'role'>;
|
||||
|
||||
export type UpdateRoleAction = {
|
||||
type: 'update_role';
|
||||
roleId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'role'>;
|
||||
};
|
||||
export type UpdateRoleAction = BaseUpdateWorkspaceMigrationAction<'role'>;
|
||||
|
||||
export type DeleteRoleAction = {
|
||||
type: 'delete_role';
|
||||
roleId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationRoleActionV2 =
|
||||
| CreateRoleAction
|
||||
| UpdateRoleAction
|
||||
| DeleteRoleAction;
|
||||
|
||||
export type WorkspaceMigrationRoleActionTypeV2 =
|
||||
WorkspaceMigrationRoleActionV2['type'];
|
||||
export type DeleteRoleAction = BaseDeleteWorkspaceMigrationAction<'role'>;
|
||||
|
||||
+12
-9
@@ -21,7 +21,7 @@ export class WorkspaceMigrationV2RoleActionsBuilderService extends WorkspaceEnti
|
||||
|
||||
protected validateFlatEntityCreation(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.role>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.role, 'created'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.role, 'create'> {
|
||||
const validationResult =
|
||||
this.flatRoleValidatorService.validateFlatRoleCreation(args);
|
||||
|
||||
@@ -37,15 +37,16 @@ export class WorkspaceMigrationV2RoleActionsBuilderService extends WorkspaceEnti
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_role',
|
||||
role: flatRoleToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'role',
|
||||
flatEntity: flatRoleToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
protected validateFlatEntityDeletion(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.role>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.role, 'deleted'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.role, 'delete'> {
|
||||
const validationResult =
|
||||
this.flatRoleValidatorService.validateFlatRoleDeletion(args);
|
||||
|
||||
@@ -61,15 +62,16 @@ export class WorkspaceMigrationV2RoleActionsBuilderService extends WorkspaceEnti
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_role',
|
||||
roleId: flatRoleToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'role',
|
||||
entityId: flatRoleToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
protected validateFlatEntityUpdate(
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.role>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.role, 'updated'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.role, 'update'> {
|
||||
const validationResult =
|
||||
this.flatRoleValidatorService.validateFlatRoleUpdate(args);
|
||||
|
||||
@@ -83,8 +85,9 @@ export class WorkspaceMigrationV2RoleActionsBuilderService extends WorkspaceEnti
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateRoleAction: UpdateRoleAction = {
|
||||
type: 'update_role',
|
||||
roleId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'role',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-20
@@ -1,23 +1,12 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateRouteTriggerAction = {
|
||||
type: 'create_route_trigger';
|
||||
routeTrigger: FlatRouteTrigger;
|
||||
};
|
||||
export type CreateRouteTriggerAction =
|
||||
BaseCreateWorkspaceMigrationAction<'routeTrigger'>;
|
||||
|
||||
export type UpdateRouteTriggerAction = {
|
||||
type: 'update_route_trigger';
|
||||
routeTriggerId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'routeTrigger'>;
|
||||
};
|
||||
export type UpdateRouteTriggerAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'routeTrigger'>;
|
||||
|
||||
export type DeleteRouteTriggerAction = {
|
||||
type: 'delete_route_trigger';
|
||||
routeTriggerId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationRouteTriggerActionV2 =
|
||||
| CreateRouteTriggerAction
|
||||
| UpdateRouteTriggerAction
|
||||
| DeleteRouteTriggerAction;
|
||||
export type DeleteRouteTriggerAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'routeTrigger'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2RouteTriggerActionsBuilderService extends Works
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.routeTrigger>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.routeTrigger,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRouteTriggerValidatorService.validateFlatRouteTriggerCreation(
|
||||
@@ -42,8 +42,9 @@ export class WorkspaceMigrationV2RouteTriggerActionsBuilderService extends Works
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_route_trigger',
|
||||
routeTrigger: flatRouteTriggerToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'routeTrigger',
|
||||
flatEntity: flatRouteTriggerToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -52,7 +53,7 @@ export class WorkspaceMigrationV2RouteTriggerActionsBuilderService extends Works
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.routeTrigger>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.routeTrigger,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRouteTriggerValidatorService.validateFlatRouteTriggerDeletion(
|
||||
@@ -71,8 +72,9 @@ export class WorkspaceMigrationV2RouteTriggerActionsBuilderService extends Works
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_route_trigger',
|
||||
routeTriggerId: flatRouteTriggerToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'routeTrigger',
|
||||
entityId: flatRouteTriggerToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -81,7 +83,7 @@ export class WorkspaceMigrationV2RouteTriggerActionsBuilderService extends Works
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.routeTrigger>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.routeTrigger,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRouteTriggerValidatorService.validateFlatRouteTriggerUpdate(
|
||||
@@ -98,8 +100,9 @@ export class WorkspaceMigrationV2RouteTriggerActionsBuilderService extends Works
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateRouteTriggerAction: UpdateRouteTriggerAction = {
|
||||
type: 'update_route_trigger',
|
||||
routeTriggerId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'routeTrigger',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-23
@@ -1,28 +1,14 @@
|
||||
/* @license Enterprise */
|
||||
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatRowLevelPermissionPredicateGroup } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate-group.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateRowLevelPermissionPredicateGroupAction = {
|
||||
type: 'create_row_level_permission_predicate_group';
|
||||
rowLevelPermissionPredicateGroup: FlatRowLevelPermissionPredicateGroup;
|
||||
};
|
||||
export type CreateRowLevelPermissionPredicateGroupAction =
|
||||
BaseCreateWorkspaceMigrationAction<'rowLevelPermissionPredicateGroup'>;
|
||||
|
||||
export type UpdateRowLevelPermissionPredicateGroupAction = {
|
||||
type: 'update_row_level_permission_predicate_group';
|
||||
rowLevelPermissionPredicateGroupId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'rowLevelPermissionPredicateGroup'>;
|
||||
};
|
||||
export type UpdateRowLevelPermissionPredicateGroupAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'rowLevelPermissionPredicateGroup'>;
|
||||
|
||||
export type DeleteRowLevelPermissionPredicateGroupAction = {
|
||||
type: 'delete_row_level_permission_predicate_group';
|
||||
rowLevelPermissionPredicateGroupId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationRowLevelPermissionPredicateGroupActionV2 =
|
||||
| CreateRowLevelPermissionPredicateGroupAction
|
||||
| UpdateRowLevelPermissionPredicateGroupAction
|
||||
| DeleteRowLevelPermissionPredicateGroupAction;
|
||||
|
||||
export type WorkspaceMigrationRowLevelPermissionPredicateGroupActionTypeV2 =
|
||||
WorkspaceMigrationRowLevelPermissionPredicateGroupActionV2['type'];
|
||||
export type DeleteRowLevelPermissionPredicateGroupAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'rowLevelPermissionPredicateGroup'>;
|
||||
|
||||
+12
-9
@@ -27,7 +27,7 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderS
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicateGroup,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRowLevelPermissionPredicateGroupValidatorService.validateFlatRowLevelPermissionPredicateGroupCreation(
|
||||
@@ -46,8 +46,9 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderS
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_row_level_permission_predicate_group',
|
||||
rowLevelPermissionPredicateGroup: flatEntityToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'rowLevelPermissionPredicateGroup',
|
||||
flatEntity: flatEntityToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -58,7 +59,7 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderS
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicateGroup,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRowLevelPermissionPredicateGroupValidatorService.validateFlatRowLevelPermissionPredicateGroupDeletion(
|
||||
@@ -79,8 +80,9 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderS
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_row_level_permission_predicate_group',
|
||||
rowLevelPermissionPredicateGroupId: predicateGroupId,
|
||||
type: 'delete',
|
||||
metadataName: 'rowLevelPermissionPredicateGroup',
|
||||
entityId: predicateGroupId,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -91,7 +93,7 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderS
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicateGroup,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRowLevelPermissionPredicateGroupValidatorService.validateFlatRowLevelPermissionPredicateGroupUpdate(
|
||||
@@ -108,8 +110,9 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderS
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateAction: UpdateRowLevelPermissionPredicateGroupAction = {
|
||||
type: 'update_row_level_permission_predicate_group',
|
||||
rowLevelPermissionPredicateGroupId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'rowLevelPermissionPredicateGroup',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-29
@@ -1,34 +1,14 @@
|
||||
/* @license Enterprise */
|
||||
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatRowLevelPermissionPredicate } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateRowLevelPermissionPredicateAction = {
|
||||
type: 'create_row_level_permission_predicate';
|
||||
rowLevelPermissionPredicate: FlatRowLevelPermissionPredicate;
|
||||
};
|
||||
export type CreateRowLevelPermissionPredicateAction =
|
||||
BaseCreateWorkspaceMigrationAction<'rowLevelPermissionPredicate'>;
|
||||
|
||||
export type UpdateRowLevelPermissionPredicateAction = {
|
||||
type: 'update_row_level_permission_predicate';
|
||||
rowLevelPermissionPredicateId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'rowLevelPermissionPredicate'>;
|
||||
};
|
||||
export type UpdateRowLevelPermissionPredicateAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'rowLevelPermissionPredicate'>;
|
||||
|
||||
export type DeleteRowLevelPermissionPredicateAction = {
|
||||
type: 'delete_row_level_permission_predicate';
|
||||
rowLevelPermissionPredicateId: string;
|
||||
};
|
||||
|
||||
export type DestroyRowLevelPermissionPredicateAction = {
|
||||
type: 'destroy_row_level_permission_predicate';
|
||||
rowLevelPermissionPredicateId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationRowLevelPermissionPredicateActionV2 =
|
||||
| CreateRowLevelPermissionPredicateAction
|
||||
| UpdateRowLevelPermissionPredicateAction
|
||||
| DeleteRowLevelPermissionPredicateAction
|
||||
| DestroyRowLevelPermissionPredicateAction;
|
||||
|
||||
export type WorkspaceMigrationRowLevelPermissionPredicateActionTypeV2 =
|
||||
WorkspaceMigrationRowLevelPermissionPredicateActionV2['type'];
|
||||
export type DeleteRowLevelPermissionPredicateAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'rowLevelPermissionPredicate'>;
|
||||
|
||||
+12
-9
@@ -27,7 +27,7 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderServic
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicate,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRowLevelPermissionPredicateValidatorService.validateFlatRowLevelPermissionPredicateCreation(
|
||||
@@ -46,8 +46,9 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderServic
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_row_level_permission_predicate',
|
||||
rowLevelPermissionPredicate: flatEntityToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'rowLevelPermissionPredicate',
|
||||
flatEntity: flatEntityToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -58,7 +59,7 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderServic
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicate,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRowLevelPermissionPredicateValidatorService.validateFlatRowLevelPermissionPredicateDeletion(
|
||||
@@ -79,8 +80,9 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderServic
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_row_level_permission_predicate',
|
||||
rowLevelPermissionPredicateId: predicateId,
|
||||
type: 'delete',
|
||||
metadataName: 'rowLevelPermissionPredicate',
|
||||
entityId: predicateId,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -91,7 +93,7 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderServic
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicate,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRowLevelPermissionPredicateValidatorService.validateFlatRowLevelPermissionPredicateUpdate(
|
||||
@@ -108,8 +110,9 @@ export class WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderServic
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateAction: UpdateRowLevelPermissionPredicateAction = {
|
||||
type: 'update_row_level_permission_predicate',
|
||||
rowLevelPermissionPredicateId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'rowLevelPermissionPredicate',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+11
-24
@@ -1,29 +1,16 @@
|
||||
import { type Sources } from 'twenty-shared/types';
|
||||
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateServerlessFunctionAction = {
|
||||
type: 'create_serverless_function';
|
||||
serverlessFunction: FlatServerlessFunction;
|
||||
};
|
||||
export type CreateServerlessFunctionAction =
|
||||
BaseCreateWorkspaceMigrationAction<'serverlessFunction'>;
|
||||
|
||||
export type UpdateServerlessFunctionAction = {
|
||||
type: 'update_serverless_function';
|
||||
serverlessFunctionId: string;
|
||||
code?: Sources;
|
||||
updates: FlatEntityPropertiesUpdates<'serverlessFunction'>;
|
||||
};
|
||||
export type UpdateServerlessFunctionAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'serverlessFunction'> & {
|
||||
code?: Sources;
|
||||
};
|
||||
|
||||
export type DeleteServerlessFunctionAction = {
|
||||
type: 'delete_serverless_function';
|
||||
serverlessFunctionId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationServerlessFunctionActionV2 =
|
||||
| CreateServerlessFunctionAction
|
||||
| UpdateServerlessFunctionAction
|
||||
| DeleteServerlessFunctionAction;
|
||||
|
||||
export type WorkspaceMigrationServerlessFunctionActionTypeV2 =
|
||||
WorkspaceMigrationServerlessFunctionActionV2['type'];
|
||||
export type DeleteServerlessFunctionAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'serverlessFunction'>;
|
||||
|
||||
+16
-13
@@ -34,13 +34,13 @@ export class WorkspaceMigrationV2ServerlessFunctionActionsBuilderService extends
|
||||
return baseResult;
|
||||
}
|
||||
|
||||
const updatedActions = baseResult.actions.updated.map((action) => {
|
||||
if (action.type !== 'update_serverless_function') {
|
||||
const updatedActions = baseResult.actions.update.map((action) => {
|
||||
if (action.type !== 'update') {
|
||||
return action;
|
||||
}
|
||||
|
||||
const toServerlessFunction = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: action.serverlessFunctionId,
|
||||
flatEntityId: action.entityId,
|
||||
flatEntityMaps: toFlatEntityMaps,
|
||||
});
|
||||
|
||||
@@ -54,7 +54,7 @@ export class WorkspaceMigrationV2ServerlessFunctionActionsBuilderService extends
|
||||
...baseResult,
|
||||
actions: {
|
||||
...baseResult.actions,
|
||||
updated: updatedActions,
|
||||
update: updatedActions,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -63,7 +63,7 @@ export class WorkspaceMigrationV2ServerlessFunctionActionsBuilderService extends
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.serverlessFunction>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.serverlessFunction,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatServerlessFunctionValidatorService.validateFlatServerlessFunctionCreation(
|
||||
@@ -82,8 +82,9 @@ export class WorkspaceMigrationV2ServerlessFunctionActionsBuilderService extends
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_serverless_function',
|
||||
serverlessFunction: flatServerlessFunctionToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'serverlessFunction',
|
||||
flatEntity: flatServerlessFunctionToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -92,7 +93,7 @@ export class WorkspaceMigrationV2ServerlessFunctionActionsBuilderService extends
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.serverlessFunction>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.serverlessFunction,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatServerlessFunctionValidatorService.validateFlatServerlessFunctionDeletion(
|
||||
@@ -111,8 +112,9 @@ export class WorkspaceMigrationV2ServerlessFunctionActionsBuilderService extends
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_serverless_function',
|
||||
serverlessFunctionId: flatServerlessFunctionToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'serverlessFunction',
|
||||
entityId: flatServerlessFunctionToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -123,7 +125,7 @@ export class WorkspaceMigrationV2ServerlessFunctionActionsBuilderService extends
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.serverlessFunction,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatServerlessFunctionValidatorService.validateFlatServerlessFunctionUpdate(
|
||||
@@ -140,8 +142,9 @@ export class WorkspaceMigrationV2ServerlessFunctionActionsBuilderService extends
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateServerlessFunctionAction: UpdateServerlessFunctionAction = {
|
||||
type: 'update_serverless_function',
|
||||
serverlessFunctionId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'serverlessFunction',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+6
-15
@@ -1,18 +1,9 @@
|
||||
import { type FlatSkill } from 'src/engine/metadata-modules/flat-skill/types/flat-skill.type';
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type UpdateSkillAction = {
|
||||
type: 'update_skill';
|
||||
flatEntityId: string;
|
||||
flatEntityUpdates: FlatEntityPropertiesUpdates<'skill'>;
|
||||
};
|
||||
export type CreateSkillAction = BaseCreateWorkspaceMigrationAction<'skill'>;
|
||||
|
||||
export type CreateSkillAction = {
|
||||
type: 'create_skill';
|
||||
flatEntity: FlatSkill;
|
||||
};
|
||||
export type UpdateSkillAction = BaseUpdateWorkspaceMigrationAction<'skill'>;
|
||||
|
||||
export type DeleteSkillAction = {
|
||||
type: 'delete_skill';
|
||||
flatEntityId: string;
|
||||
};
|
||||
export type DeleteSkillAction = BaseDeleteWorkspaceMigrationAction<'skill'>;
|
||||
|
||||
+12
-9
@@ -21,7 +21,7 @@ export class WorkspaceMigrationV2SkillActionsBuilderService extends WorkspaceEnt
|
||||
|
||||
protected validateFlatEntityCreation(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.skill>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.skill, 'created'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.skill, 'create'> {
|
||||
const validationResult =
|
||||
this.flatSkillValidatorService.validateFlatSkillCreation(args);
|
||||
|
||||
@@ -37,7 +37,8 @@ export class WorkspaceMigrationV2SkillActionsBuilderService extends WorkspaceEnt
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_skill',
|
||||
type: 'create',
|
||||
metadataName: 'skill',
|
||||
flatEntity: flatSkillToValidate,
|
||||
},
|
||||
};
|
||||
@@ -45,7 +46,7 @@ export class WorkspaceMigrationV2SkillActionsBuilderService extends WorkspaceEnt
|
||||
|
||||
protected validateFlatEntityDeletion(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.skill>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.skill, 'deleted'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.skill, 'delete'> {
|
||||
const validationResult =
|
||||
this.flatSkillValidatorService.validateFlatSkillDeletion(args);
|
||||
|
||||
@@ -61,15 +62,16 @@ export class WorkspaceMigrationV2SkillActionsBuilderService extends WorkspaceEnt
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_skill',
|
||||
flatEntityId: flatSkillToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'skill',
|
||||
entityId: flatSkillToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
protected validateFlatEntityUpdate(
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.skill>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.skill, 'updated'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.skill, 'update'> {
|
||||
const validationResult =
|
||||
this.flatSkillValidatorService.validateFlatSkillUpdate(args);
|
||||
|
||||
@@ -83,9 +85,10 @@ export class WorkspaceMigrationV2SkillActionsBuilderService extends WorkspaceEnt
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateSkillAction: UpdateSkillAction = {
|
||||
type: 'update_skill',
|
||||
flatEntityId,
|
||||
flatEntityUpdates,
|
||||
type: 'update',
|
||||
metadataName: 'skill',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
return {
|
||||
|
||||
+10
-4
@@ -1,6 +1,7 @@
|
||||
import { type MessageDescriptor } from '@lingui/core';
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
import { type SyncableFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type';
|
||||
import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type';
|
||||
import { type WorkspaceMigrationActionTypeV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2';
|
||||
|
||||
export type FlatEntityValidationError<TCode extends string = string> = {
|
||||
@@ -10,8 +11,13 @@ export type FlatEntityValidationError<TCode extends string = string> = {
|
||||
value?: unknown;
|
||||
};
|
||||
|
||||
export type FailedFlatEntityValidation<T extends SyncableFlatEntity> = {
|
||||
type: WorkspaceMigrationActionTypeV2;
|
||||
export type FailedFlatEntityValidation<
|
||||
TMetadataName extends AllMetadataName,
|
||||
TAcionType extends WorkspaceMigrationActionTypeV2,
|
||||
> = {
|
||||
type: TAcionType;
|
||||
metadataName: TMetadataName;
|
||||
errors: FlatEntityValidationError[];
|
||||
flatEntityMinimalInformation: Partial<T>;
|
||||
flatEntityMinimalInformation: Pick<MetadataFlatEntity<TMetadataName>, 'id'> &
|
||||
Partial<Omit<MetadataFlatEntity<TMetadataName>, 'id'>>;
|
||||
};
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
import { type WorkspaceMigrationActionType } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
export const getEmptyFlatEntityValidationError = <
|
||||
TMetadataName extends AllMetadataName,
|
||||
TActionType extends WorkspaceMigrationActionType,
|
||||
>({
|
||||
metadataName,
|
||||
flatEntityMinimalInformation,
|
||||
type,
|
||||
}: Pick<
|
||||
FailedFlatEntityValidation<TMetadataName, TActionType>,
|
||||
'metadataName' | 'flatEntityMinimalInformation' | 'type'
|
||||
>): FailedFlatEntityValidation<TMetadataName, TActionType> => {
|
||||
return {
|
||||
errors: [],
|
||||
flatEntityMinimalInformation,
|
||||
metadataName,
|
||||
type,
|
||||
};
|
||||
};
|
||||
+9
-23
@@ -1,26 +1,12 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateViewFieldAction = {
|
||||
type: 'create_view_field';
|
||||
viewField: FlatViewField;
|
||||
};
|
||||
export type CreateViewFieldAction =
|
||||
BaseCreateWorkspaceMigrationAction<'viewField'>;
|
||||
|
||||
export type UpdateViewFieldAction = {
|
||||
type: 'update_view_field';
|
||||
viewFieldId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'viewField'>;
|
||||
};
|
||||
export type UpdateViewFieldAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'viewField'>;
|
||||
|
||||
export type DeleteViewFieldAction = {
|
||||
type: 'delete_view_field';
|
||||
viewFieldId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationViewFieldActionV2 =
|
||||
| CreateViewFieldAction
|
||||
| UpdateViewFieldAction
|
||||
| DeleteViewFieldAction;
|
||||
|
||||
export type WorkspaceMigrationViewFieldActionTypeV2 =
|
||||
WorkspaceMigrationViewFieldActionV2['type'];
|
||||
export type DeleteViewFieldAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'viewField'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2ViewFieldActionsBuilderService extends Workspac
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.viewField>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewField,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewFieldValidatorService.validateFlatViewFieldCreation(args);
|
||||
@@ -38,8 +38,9 @@ export class WorkspaceMigrationV2ViewFieldActionsBuilderService extends Workspac
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_view_field',
|
||||
viewField: args.flatEntityToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'viewField',
|
||||
flatEntity: args.flatEntityToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -48,7 +49,7 @@ export class WorkspaceMigrationV2ViewFieldActionsBuilderService extends Workspac
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.viewField>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewField,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewFieldValidatorService.validateFlatViewFieldDeletion(args);
|
||||
@@ -65,8 +66,9 @@ export class WorkspaceMigrationV2ViewFieldActionsBuilderService extends Workspac
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_view_field',
|
||||
viewFieldId: flatViewFieldToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'viewField',
|
||||
entityId: flatViewFieldToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -75,7 +77,7 @@ export class WorkspaceMigrationV2ViewFieldActionsBuilderService extends Workspac
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.viewField>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewField,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewFieldValidatorService.validateFlatViewFieldUpdate(args);
|
||||
@@ -90,8 +92,9 @@ export class WorkspaceMigrationV2ViewFieldActionsBuilderService extends Workspac
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateViewFieldAction: UpdateViewFieldAction = {
|
||||
type: 'update_view_field',
|
||||
viewFieldId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'viewField',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-23
@@ -1,26 +1,12 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatViewFilterGroup } from 'src/engine/metadata-modules/flat-view-filter-group/types/flat-view-filter-group.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateViewFilterGroupAction = {
|
||||
type: 'create_view_filter_group';
|
||||
viewFilterGroup: FlatViewFilterGroup;
|
||||
};
|
||||
export type CreateViewFilterGroupAction =
|
||||
BaseCreateWorkspaceMigrationAction<'viewFilterGroup'>;
|
||||
|
||||
export type UpdateViewFilterGroupAction = {
|
||||
type: 'update_view_filter_group';
|
||||
viewFilterGroupId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'viewFilterGroup'>;
|
||||
};
|
||||
export type UpdateViewFilterGroupAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'viewFilterGroup'>;
|
||||
|
||||
export type DeleteViewFilterGroupAction = {
|
||||
type: 'delete_view_filter_group';
|
||||
viewFilterGroupId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationViewFilterGroupActionV2 =
|
||||
| CreateViewFilterGroupAction
|
||||
| UpdateViewFilterGroupAction
|
||||
| DeleteViewFilterGroupAction;
|
||||
|
||||
export type WorkspaceMigrationViewFilterGroupActionTypeV2 =
|
||||
WorkspaceMigrationViewFilterGroupActionV2['type'];
|
||||
export type DeleteViewFilterGroupAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'viewFilterGroup'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2ViewFilterGroupActionsBuilderService extends Wo
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.viewFilterGroup>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewFilterGroup,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewFilterGroupValidatorService.validateFlatViewFilterGroupCreation(
|
||||
@@ -42,8 +42,9 @@ export class WorkspaceMigrationV2ViewFilterGroupActionsBuilderService extends Wo
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_view_filter_group',
|
||||
viewFilterGroup: flatViewFilterGroupToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'viewFilterGroup',
|
||||
flatEntity: flatViewFilterGroupToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -52,7 +53,7 @@ export class WorkspaceMigrationV2ViewFilterGroupActionsBuilderService extends Wo
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.viewFilterGroup>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewFilterGroup,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewFilterGroupValidatorService.validateFlatViewFilterGroupDeletion(
|
||||
@@ -71,8 +72,9 @@ export class WorkspaceMigrationV2ViewFilterGroupActionsBuilderService extends Wo
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_view_filter_group',
|
||||
viewFilterGroupId: flatViewFilterGroupToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'viewFilterGroup',
|
||||
entityId: flatViewFilterGroupToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -83,7 +85,7 @@ export class WorkspaceMigrationV2ViewFilterGroupActionsBuilderService extends Wo
|
||||
>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewFilterGroup,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewFilterGroupValidatorService.validateFlatViewFilterGroupUpdate(
|
||||
@@ -100,8 +102,9 @@ export class WorkspaceMigrationV2ViewFilterGroupActionsBuilderService extends Wo
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateViewFilterGroupAction: UpdateViewFilterGroupAction = {
|
||||
type: 'update_view_filter_group',
|
||||
viewFilterGroupId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'viewFilterGroup',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-23
@@ -1,26 +1,12 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatViewFilter } from 'src/engine/metadata-modules/flat-view-filter/types/flat-view-filter.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateViewFilterAction = {
|
||||
type: 'create_view_filter';
|
||||
viewFilter: FlatViewFilter;
|
||||
};
|
||||
export type CreateViewFilterAction =
|
||||
BaseCreateWorkspaceMigrationAction<'viewFilter'>;
|
||||
|
||||
export type UpdateViewFilterAction = {
|
||||
type: 'update_view_filter';
|
||||
viewFilterId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'viewFilter'>;
|
||||
};
|
||||
export type UpdateViewFilterAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'viewFilter'>;
|
||||
|
||||
export type DeleteViewFilterAction = {
|
||||
type: 'delete_view_filter';
|
||||
viewFilterId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationViewFilterActionV2 =
|
||||
| CreateViewFilterAction
|
||||
| UpdateViewFilterAction
|
||||
| DeleteViewFilterAction;
|
||||
|
||||
export type WorkspaceMigrationViewFilterActionTypeV2 =
|
||||
WorkspaceMigrationViewFilterActionV2['type'];
|
||||
export type DeleteViewFilterAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'viewFilter'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2ViewFilterActionsBuilderService extends Workspa
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.viewFilter>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewFilter,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewFilterValidatorService.validateFlatViewFilterCreation(args);
|
||||
@@ -40,8 +40,9 @@ export class WorkspaceMigrationV2ViewFilterActionsBuilderService extends Workspa
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_view_filter',
|
||||
viewFilter: flatViewFilterToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'viewFilter',
|
||||
flatEntity: flatViewFilterToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -50,7 +51,7 @@ export class WorkspaceMigrationV2ViewFilterActionsBuilderService extends Workspa
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.viewFilter>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewFilter,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewFilterValidatorService.validateFlatViewFilterDeletion(args);
|
||||
@@ -67,8 +68,9 @@ export class WorkspaceMigrationV2ViewFilterActionsBuilderService extends Workspa
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_view_filter',
|
||||
viewFilterId: flatViewFilterToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'viewFilter',
|
||||
entityId: flatViewFilterToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -77,7 +79,7 @@ export class WorkspaceMigrationV2ViewFilterActionsBuilderService extends Workspa
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.viewFilter>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewFilter,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewFilterValidatorService.validateFlatViewFilterUpdate(args);
|
||||
@@ -92,8 +94,9 @@ export class WorkspaceMigrationV2ViewFilterActionsBuilderService extends Workspa
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateViewFilterAction: UpdateViewFilterAction = {
|
||||
type: 'update_view_filter',
|
||||
viewFilterId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'viewFilter',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-23
@@ -1,26 +1,12 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatViewGroup } from 'src/engine/metadata-modules/flat-view-group/types/flat-view-group.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateViewGroupAction = {
|
||||
type: 'create_view_group';
|
||||
viewGroup: FlatViewGroup;
|
||||
};
|
||||
export type CreateViewGroupAction =
|
||||
BaseCreateWorkspaceMigrationAction<'viewGroup'>;
|
||||
|
||||
export type UpdateViewGroupAction = {
|
||||
type: 'update_view_group';
|
||||
viewGroupId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'viewGroup'>;
|
||||
};
|
||||
export type UpdateViewGroupAction =
|
||||
BaseUpdateWorkspaceMigrationAction<'viewGroup'>;
|
||||
|
||||
export type DeleteViewGroupAction = {
|
||||
type: 'delete_view_group';
|
||||
viewGroupId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationViewGroupActionV2 =
|
||||
| CreateViewGroupAction
|
||||
| UpdateViewGroupAction
|
||||
| DeleteViewGroupAction;
|
||||
|
||||
export type WorkspaceMigrationViewGroupActionTypeV2 =
|
||||
WorkspaceMigrationViewGroupActionV2['type'];
|
||||
export type DeleteViewGroupAction =
|
||||
BaseDeleteWorkspaceMigrationAction<'viewGroup'>;
|
||||
|
||||
+12
-9
@@ -23,7 +23,7 @@ export class WorkspaceMigrationV2ViewGroupActionsBuilderService extends Workspac
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.viewGroup>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewGroup,
|
||||
'created'
|
||||
'create'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewGroupValidatorService.validateFlatViewGroupCreation(args);
|
||||
@@ -40,8 +40,9 @@ export class WorkspaceMigrationV2ViewGroupActionsBuilderService extends Workspac
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_view_group',
|
||||
viewGroup: flatViewGroupToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'viewGroup',
|
||||
flatEntity: flatViewGroupToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -50,7 +51,7 @@ export class WorkspaceMigrationV2ViewGroupActionsBuilderService extends Workspac
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.viewGroup>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewGroup,
|
||||
'deleted'
|
||||
'delete'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewGroupValidatorService.validateFlatViewGroupDeletion(args);
|
||||
@@ -67,8 +68,9 @@ export class WorkspaceMigrationV2ViewGroupActionsBuilderService extends Workspac
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_view_group',
|
||||
viewGroupId: flatViewGroupToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'viewGroup',
|
||||
entityId: flatViewGroupToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -77,7 +79,7 @@ export class WorkspaceMigrationV2ViewGroupActionsBuilderService extends Workspac
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.viewGroup>,
|
||||
): FlatEntityValidationReturnType<
|
||||
typeof ALL_METADATA_NAME.viewGroup,
|
||||
'updated'
|
||||
'update'
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatViewGroupValidatorService.validateFlatViewGroupUpdate(args);
|
||||
@@ -92,8 +94,9 @@ export class WorkspaceMigrationV2ViewGroupActionsBuilderService extends Workspac
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateViewGroupAction: UpdateViewGroupAction = {
|
||||
type: 'update_view_group',
|
||||
viewGroupId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'viewGroup',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+6
-23
@@ -1,26 +1,9 @@
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type';
|
||||
import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type';
|
||||
import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type';
|
||||
import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type';
|
||||
|
||||
export type CreateViewAction = {
|
||||
type: 'create_view';
|
||||
view: FlatView;
|
||||
};
|
||||
export type CreateViewAction = BaseCreateWorkspaceMigrationAction<'view'>;
|
||||
|
||||
export type UpdateViewAction = {
|
||||
type: 'update_view';
|
||||
viewId: string;
|
||||
updates: FlatEntityPropertiesUpdates<'view'>;
|
||||
};
|
||||
export type UpdateViewAction = BaseUpdateWorkspaceMigrationAction<'view'>;
|
||||
|
||||
export type DeleteViewAction = {
|
||||
type: 'delete_view';
|
||||
viewId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationViewActionV2 =
|
||||
| CreateViewAction
|
||||
| UpdateViewAction
|
||||
| DeleteViewAction;
|
||||
|
||||
export type WorkspaceMigrationViewActionTypeV2 =
|
||||
WorkspaceMigrationViewActionV2['type'];
|
||||
export type DeleteViewAction = BaseDeleteWorkspaceMigrationAction<'view'>;
|
||||
|
||||
+12
-9
@@ -21,7 +21,7 @@ export class WorkspaceMigrationV2ViewActionsBuilderService extends WorkspaceEnti
|
||||
|
||||
protected validateFlatEntityCreation(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.view>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.view, 'created'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.view, 'create'> {
|
||||
const validationResult =
|
||||
this.flatViewValidatorService.validateFlatViewCreation(args);
|
||||
|
||||
@@ -37,15 +37,16 @@ export class WorkspaceMigrationV2ViewActionsBuilderService extends WorkspaceEnti
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_view',
|
||||
view: flatViewToValidate,
|
||||
type: 'create',
|
||||
metadataName: 'view',
|
||||
flatEntity: flatViewToValidate,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
protected validateFlatEntityDeletion(
|
||||
args: FlatEntityValidationArgs<typeof ALL_METADATA_NAME.view>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.view, 'deleted'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.view, 'delete'> {
|
||||
const validationResult =
|
||||
this.flatViewValidatorService.validateFlatViewDeletion(args);
|
||||
|
||||
@@ -61,15 +62,16 @@ export class WorkspaceMigrationV2ViewActionsBuilderService extends WorkspaceEnti
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_view',
|
||||
viewId: flatViewToValidate.id,
|
||||
type: 'delete',
|
||||
metadataName: 'view',
|
||||
entityId: flatViewToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
protected validateFlatEntityUpdate(
|
||||
args: FlatEntityUpdateValidationArgs<typeof ALL_METADATA_NAME.view>,
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.view, 'updated'> {
|
||||
): FlatEntityValidationReturnType<typeof ALL_METADATA_NAME.view, 'update'> {
|
||||
const validationResult =
|
||||
this.flatViewValidatorService.validateFlatViewUpdate(args);
|
||||
|
||||
@@ -83,8 +85,9 @@ export class WorkspaceMigrationV2ViewActionsBuilderService extends WorkspaceEnti
|
||||
const { flatEntityId, flatEntityUpdates } = args;
|
||||
|
||||
const updateViewAction: UpdateViewAction = {
|
||||
type: 'update_view',
|
||||
viewId: flatEntityId,
|
||||
type: 'update',
|
||||
metadataName: 'view',
|
||||
entityId: flatEntityId,
|
||||
updates: flatEntityUpdates,
|
||||
};
|
||||
|
||||
|
||||
+9
-9
@@ -144,7 +144,7 @@ export abstract class WorkspaceEntityMigrationBuilderV2Service<
|
||||
metadataName: this.metadataName,
|
||||
});
|
||||
|
||||
actionsResult.created.push(
|
||||
actionsResult.create.push(
|
||||
...(Array.isArray(validationResult.action)
|
||||
? validationResult.action
|
||||
: [validationResult.action]),
|
||||
@@ -207,7 +207,7 @@ export abstract class WorkspaceEntityMigrationBuilderV2Service<
|
||||
metadataName: this.metadataName,
|
||||
});
|
||||
|
||||
actionsResult.deleted.push(
|
||||
actionsResult.delete.push(
|
||||
...(Array.isArray(validationResult.action)
|
||||
? validationResult.action
|
||||
: [validationResult.action]),
|
||||
@@ -271,7 +271,7 @@ export abstract class WorkspaceEntityMigrationBuilderV2Service<
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps[flatEntityMapsKey],
|
||||
});
|
||||
|
||||
actionsResult.updated.push(
|
||||
actionsResult.update.push(
|
||||
...(Array.isArray(validationResult.action)
|
||||
? validationResult.action
|
||||
: [validationResult.action]),
|
||||
@@ -310,18 +310,18 @@ export abstract class WorkspaceEntityMigrationBuilderV2Service<
|
||||
protected abstract validateFlatEntityCreation(
|
||||
args: FlatEntityValidationArgs<T>,
|
||||
):
|
||||
| FlatEntityValidationReturnType<T, 'created'>
|
||||
| Promise<FlatEntityValidationReturnType<T, 'created'>>;
|
||||
| FlatEntityValidationReturnType<T, 'create'>
|
||||
| Promise<FlatEntityValidationReturnType<T, 'create'>>;
|
||||
|
||||
protected abstract validateFlatEntityDeletion(
|
||||
args: FlatEntityValidationArgs<T>,
|
||||
):
|
||||
| FlatEntityValidationReturnType<T, 'deleted'>
|
||||
| Promise<FlatEntityValidationReturnType<T, 'deleted'>>;
|
||||
| FlatEntityValidationReturnType<T, 'delete'>
|
||||
| Promise<FlatEntityValidationReturnType<T, 'delete'>>;
|
||||
|
||||
protected abstract validateFlatEntityUpdate(
|
||||
args: FlatEntityUpdateValidationArgs<T>,
|
||||
):
|
||||
| FlatEntityValidationReturnType<T, 'updated'>
|
||||
| Promise<FlatEntityValidationReturnType<T, 'updated'>>;
|
||||
| FlatEntityValidationReturnType<T, 'update'>
|
||||
| Promise<FlatEntityValidationReturnType<T, 'update'>>;
|
||||
}
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type';
|
||||
|
||||
export type BaseCreateWorkspaceMigrationAction<T extends AllMetadataName> = {
|
||||
flatEntity: MetadataFlatEntity<T>;
|
||||
type: 'create';
|
||||
metadataName: T;
|
||||
};
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
export type BaseDeleteWorkspaceMigrationAction<T extends AllMetadataName> = {
|
||||
entityId: string;
|
||||
type: 'delete';
|
||||
metadataName: T;
|
||||
};
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type';
|
||||
|
||||
export type BaseUpdateWorkspaceMigrationAction<T extends AllMetadataName> = {
|
||||
type: 'update';
|
||||
metadataName: T;
|
||||
entityId: string;
|
||||
updates: FlatEntityPropertiesUpdates<T>;
|
||||
};
|
||||
+2
-2
@@ -1,11 +1,11 @@
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type';
|
||||
import { type MetadataFlatEntityAndRelatedFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/metadata-related-types.type';
|
||||
import { type WorkspaceMigrationActionType } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
export type FailedFlatEntityValidateAndBuild<T extends AllMetadataName> = {
|
||||
status: 'fail';
|
||||
errors: FailedFlatEntityValidation<MetadataFlatEntity<T>>[];
|
||||
errors: FailedFlatEntityValidation<T, WorkspaceMigrationActionType>[];
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: MetadataFlatEntityAndRelatedFlatEntityMaps<T>;
|
||||
};
|
||||
|
||||
+9
-7
@@ -1,19 +1,21 @@
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type';
|
||||
import { type MetadataWorkspaceMigrationAction } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
|
||||
import {
|
||||
type MetadataWorkspaceMigrationAction,
|
||||
type WorkspaceMigrationActionType,
|
||||
} from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
export type FlatEntityValidationReturnType<
|
||||
T extends AllMetadataName,
|
||||
TOperation extends 'created' | 'deleted' | 'updated',
|
||||
TMetadataName extends AllMetadataName,
|
||||
TACtionType extends WorkspaceMigrationActionType,
|
||||
> =
|
||||
| {
|
||||
status: 'success';
|
||||
action:
|
||||
| MetadataWorkspaceMigrationAction<T, TOperation>
|
||||
| MetadataWorkspaceMigrationAction<T, TOperation>[];
|
||||
| MetadataWorkspaceMigrationAction<TMetadataName, TACtionType>
|
||||
| MetadataWorkspaceMigrationAction<TMetadataName, TACtionType>[];
|
||||
}
|
||||
| ({
|
||||
status: 'fail';
|
||||
} & FailedFlatEntityValidation<MetadataFlatEntity<T>>);
|
||||
} & FailedFlatEntityValidation<TMetadataName, TACtionType>);
|
||||
|
||||
+17
-9
@@ -1,13 +1,21 @@
|
||||
import { type AllMetadataName } from 'twenty-shared/metadata';
|
||||
|
||||
import { type MetadataWorkspaceMigrationAction } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
|
||||
import {
|
||||
type MetadataWorkspaceMigrationAction,
|
||||
type WorkspaceMigrationActionType,
|
||||
} from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type';
|
||||
|
||||
export type WorkspaceMigrationActionV2 =
|
||||
MetadataWorkspaceMigrationAction<AllMetadataName>;
|
||||
|
||||
export type WorkspaceMigrationActionTypeV2 = WorkspaceMigrationActionV2['type'];
|
||||
|
||||
export type ExtractAction<T extends WorkspaceMigrationActionTypeV2> = Extract<
|
||||
WorkspaceMigrationActionV2,
|
||||
{ type: T }
|
||||
export type WorkspaceMigrationActionV2 = MetadataWorkspaceMigrationAction<
|
||||
AllMetadataName,
|
||||
WorkspaceMigrationActionType
|
||||
>;
|
||||
|
||||
export type WorkspaceMigrationActionTypeV2 = WorkspaceMigrationActionType;
|
||||
|
||||
export type WorkspaceMigrationActionHandlerKey =
|
||||
`${WorkspaceMigrationActionType}_${AllMetadataName}`;
|
||||
|
||||
export const buildActionHandlerKey = (
|
||||
actionType: WorkspaceMigrationActionType,
|
||||
metadataName: AllMetadataName,
|
||||
): WorkspaceMigrationActionHandlerKey => `${actionType}_${metadataName}`;
|
||||
|
||||
+24
-20
@@ -1,7 +1,7 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
import { type ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agent.exception';
|
||||
@@ -9,6 +9,7 @@ import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/fla
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { validateAgentNameUniqueness } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-name-uniqueness.util';
|
||||
@@ -25,15 +26,16 @@ export class FlatAgentValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.agent
|
||||
>): FailedFlatEntityValidation<FlatAgent> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatAgent> = {
|
||||
type: 'create_agent',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'agent', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatAgent.id,
|
||||
universalIdentifier: flatAgent.universalIdentifier,
|
||||
name: flatAgent.name,
|
||||
},
|
||||
};
|
||||
metadataName: 'agent',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingAgents = Object.values(optimisticFlatAgentMaps.byId).filter(
|
||||
isDefined,
|
||||
@@ -71,15 +73,16 @@ export class FlatAgentValidatorService {
|
||||
buildOptions,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.agent
|
||||
>): FailedFlatEntityValidation<FlatAgent> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatAgent> = {
|
||||
type: 'delete_agent',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'agent', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityToValidate.id,
|
||||
universalIdentifier: flatEntityToValidate.universalIdentifier,
|
||||
name: flatEntityToValidate.name,
|
||||
},
|
||||
};
|
||||
metadataName: 'agent',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingAgent = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatEntityToValidate.id,
|
||||
@@ -116,20 +119,21 @@ export class FlatAgentValidatorService {
|
||||
buildOptions,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.agent
|
||||
>): FailedFlatEntityValidation<FlatAgent> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatAgent> = {
|
||||
type: 'update_agent',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'agent', 'update'> {
|
||||
const fromFlatAgent = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId,
|
||||
flatEntityMaps: optimisticFlatAgentMaps,
|
||||
});
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: fromFlatAgent?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'agent',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(fromFlatAgent)) {
|
||||
validationResult.errors.push({
|
||||
code: AgentExceptionCode.AGENT_NOT_FOUND,
|
||||
|
||||
+24
-21
@@ -5,8 +5,8 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { CronTriggerExceptionCode } from 'src/engine/metadata-modules/cron-trigger/exceptions/cron-trigger.exception';
|
||||
import { FlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -24,18 +24,19 @@ export class FlatCronTriggerValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.cronTrigger
|
||||
>): FailedFlatEntityValidation<FlatCronTrigger> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatCronTrigger> = {
|
||||
type: 'update_cron_trigger',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'cronTrigger', 'update'> {
|
||||
const existingFlatCronTrigger =
|
||||
optimisticFlatCronTriggerMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingFlatCronTrigger?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'cronTrigger',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatCronTrigger)) {
|
||||
validationResult.errors.push({
|
||||
code: CronTriggerExceptionCode.CRON_TRIGGER_NOT_FOUND,
|
||||
@@ -70,20 +71,21 @@ export class FlatCronTriggerValidatorService {
|
||||
}
|
||||
|
||||
public validateFlatCronTriggerDeletion({
|
||||
flatEntityToValidate: { id: cronTriggerIdToDelete },
|
||||
flatEntityToValidate: { id: cronTriggerIdToDelete, universalIdentifier },
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatCronTriggerMaps: optimisticFlatCronTriggerMaps,
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.cronTrigger
|
||||
>): FailedFlatEntityValidation<FlatCronTrigger> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatCronTrigger> = {
|
||||
type: 'delete_cron_trigger',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'cronTrigger', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: cronTriggerIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'cronTrigger',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingFlatCronTrigger =
|
||||
optimisticFlatCronTriggerMaps.byId[cronTriggerIdToDelete];
|
||||
@@ -107,14 +109,15 @@ export class FlatCronTriggerValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.cronTrigger
|
||||
>): FailedFlatEntityValidation<FlatCronTrigger> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatCronTrigger> = {
|
||||
type: 'create_cron_trigger',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'cronTrigger', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatCronTriggerToValidate.id,
|
||||
universalIdentifier: flatCronTriggerToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'cronTrigger',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
if (
|
||||
isDefined(
|
||||
|
||||
+35
-30
@@ -5,8 +5,8 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { DatabaseEventTriggerExceptionCode } from 'src/engine/metadata-modules/database-event-trigger/exceptions/database-event-trigger.exception';
|
||||
import { FlatDatabaseEventTrigger } from 'src/engine/metadata-modules/database-event-trigger/types/flat-database-event-trigger.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -25,19 +25,20 @@ export class FlatDatabaseEventTriggerValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.databaseEventTrigger
|
||||
>): FailedFlatEntityValidation<FlatDatabaseEventTrigger> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatDatabaseEventTrigger> =
|
||||
{
|
||||
type: 'update_database_event_trigger',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'databaseEventTrigger', 'update'> {
|
||||
const existingFlatDatabaseEventTrigger =
|
||||
optimisticFlatDatabaseEventTriggerMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier:
|
||||
existingFlatDatabaseEventTrigger?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'databaseEventTrigger',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatDatabaseEventTrigger)) {
|
||||
validationResult.errors.push({
|
||||
code: DatabaseEventTriggerExceptionCode.DATABASE_EVENT_TRIGGER_NOT_FOUND,
|
||||
@@ -72,21 +73,24 @@ export class FlatDatabaseEventTriggerValidatorService {
|
||||
}
|
||||
|
||||
public validateFlatDatabaseEventTriggerDeletion({
|
||||
flatEntityToValidate: { id: databaseEventTriggerIdToDelete },
|
||||
flatEntityToValidate: {
|
||||
id: databaseEventTriggerIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatDatabaseEventTriggerMaps: optimisticFlatDatabaseEventTriggerMaps,
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.databaseEventTrigger
|
||||
>): FailedFlatEntityValidation<FlatDatabaseEventTrigger> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatDatabaseEventTrigger> =
|
||||
{
|
||||
type: 'delete_database_event_trigger',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: databaseEventTriggerIdToDelete,
|
||||
},
|
||||
};
|
||||
>): FailedFlatEntityValidation<'databaseEventTrigger', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: databaseEventTriggerIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
metadataName: 'databaseEventTrigger',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingFlatDatabaseEventTrigger =
|
||||
optimisticFlatDatabaseEventTriggerMaps.byId[
|
||||
@@ -112,15 +116,16 @@ export class FlatDatabaseEventTriggerValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.databaseEventTrigger
|
||||
>): FailedFlatEntityValidation<FlatDatabaseEventTrigger> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatDatabaseEventTrigger> =
|
||||
{
|
||||
type: 'create_database_event_trigger',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatDatabaseEventTriggerToValidate.id,
|
||||
},
|
||||
};
|
||||
>): FailedFlatEntityValidation<'databaseEventTrigger', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatDatabaseEventTriggerToValidate.id,
|
||||
universalIdentifier:
|
||||
flatDatabaseEventTriggerToValidate.universalIdentifier,
|
||||
},
|
||||
metadataName: 'databaseEventTrigger',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
if (
|
||||
isDefined(
|
||||
|
||||
+30
-21
@@ -9,7 +9,6 @@ import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-enti
|
||||
import { FLAT_FIELD_METADATA_RELATION_PROPERTIES_TO_COMPARE } from 'src/engine/metadata-modules/flat-field-metadata/constants/flat-field-metadata-relation-properties-to-compare.constant';
|
||||
import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service';
|
||||
import { FlatFieldMetadataRelationPropertiesToCompare } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-relation-properties-to-compare.type';
|
||||
import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type';
|
||||
import { isFlatFieldMetadataNameSyncedWithLabel } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-name-synced-with-label.util';
|
||||
import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util';
|
||||
import { validateFlatFieldMetadataNameAvailability } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util';
|
||||
@@ -17,6 +16,7 @@ import { validateFlatFieldMetadataName } from 'src/engine/metadata-modules/flat-
|
||||
import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util';
|
||||
import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -38,18 +38,20 @@ export class FlatFieldMetadataValidatorService {
|
||||
buildOptions,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.fieldMetadata
|
||||
>): FailedFlatEntityValidation<FlatFieldMetadata> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatFieldMetadata> = {
|
||||
type: 'update_field',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'fieldMetadata', 'update'> {
|
||||
const existingFlatFieldMetadataToUpdate =
|
||||
optimisticFlatFieldMetadataMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier:
|
||||
existingFlatFieldMetadataToUpdate?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'fieldMetadata',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatFieldMetadataToUpdate)) {
|
||||
validationResult.errors.push({
|
||||
code: FieldMetadataExceptionCode.FIELD_METADATA_NOT_FOUND,
|
||||
@@ -66,6 +68,7 @@ export class FlatFieldMetadataValidatorService {
|
||||
};
|
||||
|
||||
validationResult.flatEntityMinimalInformation = {
|
||||
...validationResult.flatEntityMinimalInformation,
|
||||
id: flatFieldMetadataToValidate.id,
|
||||
name: flatFieldMetadataToValidate.name,
|
||||
objectMetadataId: flatFieldMetadataToValidate.objectMetadataId,
|
||||
@@ -192,21 +195,25 @@ export class FlatFieldMetadataValidatorService {
|
||||
}
|
||||
|
||||
validateFlatFieldMetadataDeletion({
|
||||
flatEntityToValidate: { id: flatFieldMetadataToDeleteId },
|
||||
flatEntityToValidate: {
|
||||
id: flatFieldMetadataToDeleteId,
|
||||
universalIdentifier,
|
||||
},
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatFieldMetadataMaps: optimisticFlatFieldMetadataMaps,
|
||||
flatObjectMetadataMaps,
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.fieldMetadata
|
||||
>): FailedFlatEntityValidation<FlatFieldMetadata> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatFieldMetadata> = {
|
||||
type: 'delete_field',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'fieldMetadata', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatFieldMetadataToDeleteId,
|
||||
universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'fieldMetadata',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const flatFieldMetadataToDelete =
|
||||
optimisticFlatFieldMetadataMaps.byId[flatFieldMetadataToDeleteId];
|
||||
@@ -222,6 +229,7 @@ export class FlatFieldMetadataValidatorService {
|
||||
}
|
||||
|
||||
validationResult.flatEntityMinimalInformation = {
|
||||
...validationResult.flatEntityMinimalInformation,
|
||||
name: flatFieldMetadataToDelete.name,
|
||||
objectMetadataId: flatFieldMetadataToDelete.objectMetadataId,
|
||||
};
|
||||
@@ -279,16 +287,17 @@ export class FlatFieldMetadataValidatorService {
|
||||
remainingFlatEntityMapsToValidate,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.fieldMetadata
|
||||
>): FailedFlatEntityValidation<FlatFieldMetadata> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatFieldMetadata> = {
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'fieldMetadata', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatFieldMetadataToValidate.id,
|
||||
universalIdentifier: flatFieldMetadataToValidate.universalIdentifier,
|
||||
name: flatFieldMetadataToValidate.name,
|
||||
objectMetadataId: flatFieldMetadataToValidate.objectMetadataId,
|
||||
},
|
||||
type: 'create_field',
|
||||
};
|
||||
metadataName: 'fieldMetadata',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const parentFlatObjectMetadata =
|
||||
flatObjectMetadataMaps.byId[flatFieldMetadataToValidate.objectMetadataId];
|
||||
|
||||
+14
-12
@@ -12,8 +12,8 @@ import { FlatEntityMapsExceptionCode } from 'src/engine/metadata-modules/flat-en
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { isCompositeFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-composite-flat-field-metadata.util';
|
||||
import { IndexExceptionCode } from 'src/engine/metadata-modules/flat-index-metadata/exceptions/index-exception-code';
|
||||
import { FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
|
||||
@Injectable()
|
||||
@@ -22,17 +22,18 @@ export class FlatIndexValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatIndexMaps: optimisticFlatIndexMaps,
|
||||
},
|
||||
flatEntityToValidate: { id: indexIdToDelete },
|
||||
flatEntityToValidate: { id: indexIdToDelete, universalIdentifier },
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.index
|
||||
>): FailedFlatEntityValidation<FlatIndexMetadata> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatIndexMetadata> = {
|
||||
type: 'delete_index',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'index', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: indexIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'index',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingFlatIndexToDelete = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: indexIdToDelete,
|
||||
@@ -58,15 +59,16 @@ export class FlatIndexValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.index
|
||||
>): FailedFlatEntityValidation<FlatIndexMetadata> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatIndexMetadata> = {
|
||||
type: 'create_index',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'index', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatIndexToValidate.id,
|
||||
universalIdentifier: flatIndexToValidate.universalIdentifier,
|
||||
name: flatIndexToValidate.name,
|
||||
},
|
||||
};
|
||||
metadataName: 'index',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingFlatIndex = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatIndexToValidate.id,
|
||||
|
||||
+31
-28
@@ -4,12 +4,12 @@ import { msg, t } from '@lingui/core/macro';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
|
||||
import { validateFlatObjectMetadataIdentifiers } from 'src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util';
|
||||
import { validateFlatObjectMetadataNameAndLabels } from 'src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-name-and-labels.util';
|
||||
import { ObjectMetadataExceptionCode } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception';
|
||||
import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -26,18 +26,19 @@ export class FlatObjectMetadataValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.objectMetadata
|
||||
>): FailedFlatEntityValidation<FlatObjectMetadata> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatObjectMetadata> = {
|
||||
type: 'update_object',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'objectMetadata', 'update'> {
|
||||
const existingFlatObjectMetadata =
|
||||
optimisticFlatObjectMetadataMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingFlatObjectMetadata?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'objectMetadata',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatObjectMetadata)) {
|
||||
validationResult.errors.push({
|
||||
code: ObjectMetadataExceptionCode.OBJECT_METADATA_NOT_FOUND,
|
||||
@@ -56,6 +57,7 @@ export class FlatObjectMetadataValidatorService {
|
||||
};
|
||||
|
||||
validationResult.flatEntityMinimalInformation = {
|
||||
...validationResult.flatEntityMinimalInformation,
|
||||
id: existingFlatObjectMetadata.id,
|
||||
namePlural: existingFlatObjectMetadata.namePlural,
|
||||
nameSingular: existingFlatObjectMetadata.nameSingular,
|
||||
@@ -96,21 +98,22 @@ export class FlatObjectMetadataValidatorService {
|
||||
}
|
||||
|
||||
public validateFlatObjectMetadataDeletion({
|
||||
flatEntityToValidate: { id: objectMetadataToDeleteId },
|
||||
flatEntityToValidate: { id: objectMetadataToDeleteId, universalIdentifier },
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatObjectMetadataMaps: optimisticFlatObjectMetadataMaps,
|
||||
},
|
||||
buildOptions,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.objectMetadata
|
||||
>): FailedFlatEntityValidation<FlatObjectMetadata> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatObjectMetadata> = {
|
||||
type: 'delete_object',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'objectMetadata', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: objectMetadataToDeleteId,
|
||||
universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'objectMetadata',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const flatObjectMetadataToDelete =
|
||||
optimisticFlatObjectMetadataMaps.byId[objectMetadataToDeleteId];
|
||||
@@ -123,7 +126,7 @@ export class FlatObjectMetadataValidatorService {
|
||||
});
|
||||
} else {
|
||||
validationResult.flatEntityMinimalInformation = {
|
||||
id: flatObjectMetadataToDelete.id,
|
||||
...validationResult.flatEntityMinimalInformation,
|
||||
namePlural: flatObjectMetadataToDelete.namePlural,
|
||||
nameSingular: flatObjectMetadataToDelete.nameSingular,
|
||||
};
|
||||
@@ -160,17 +163,17 @@ export class FlatObjectMetadataValidatorService {
|
||||
buildOptions,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.objectMetadata
|
||||
>): FailedFlatEntityValidation<FlatObjectMetadata> {
|
||||
const objectValidationResult: FailedFlatEntityValidation<FlatObjectMetadata> =
|
||||
{
|
||||
type: 'create_object',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatObjectMetadataToValidate.id,
|
||||
namePlural: flatObjectMetadataToValidate.namePlural,
|
||||
nameSingular: flatObjectMetadataToValidate.nameSingular,
|
||||
},
|
||||
};
|
||||
>): FailedFlatEntityValidation<'objectMetadata', 'create'> {
|
||||
const objectValidationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatObjectMetadataToValidate.id,
|
||||
universalIdentifier: flatObjectMetadataToValidate.universalIdentifier,
|
||||
namePlural: flatObjectMetadataToValidate.namePlural,
|
||||
nameSingular: flatObjectMetadataToValidate.nameSingular,
|
||||
},
|
||||
metadataName: 'objectMetadata',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
if (
|
||||
isDefined(
|
||||
|
||||
+24
-21
@@ -1,13 +1,13 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
import { type ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type';
|
||||
import { PageLayoutExceptionCode } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
|
||||
@@ -22,15 +22,16 @@ export class FlatPageLayoutTabValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: { flatPageLayoutMaps },
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayoutTab
|
||||
>): FailedFlatEntityValidation<FlatPageLayoutTab> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatPageLayoutTab> = {
|
||||
type: 'create_page_layout_tab',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'pageLayoutTab', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPageLayoutTab.id,
|
||||
universalIdentifier: flatPageLayoutTab.universalIdentifier,
|
||||
title: flatPageLayoutTab.title,
|
||||
},
|
||||
};
|
||||
metadataName: 'pageLayoutTab',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const referencedPageLayout = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatPageLayoutTab.pageLayoutId,
|
||||
@@ -55,15 +56,16 @@ export class FlatPageLayoutTabValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayoutTab
|
||||
>): FailedFlatEntityValidation<FlatPageLayoutTab> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatPageLayoutTab> = {
|
||||
type: 'delete_page_layout_tab',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'pageLayoutTab', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityToValidate.id,
|
||||
universalIdentifier: flatEntityToValidate.universalIdentifier,
|
||||
title: flatEntityToValidate.title,
|
||||
},
|
||||
};
|
||||
metadataName: 'pageLayoutTab',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingPageLayoutTab = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatEntityToValidate.id,
|
||||
@@ -90,20 +92,21 @@ export class FlatPageLayoutTabValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayoutTab
|
||||
>): FailedFlatEntityValidation<FlatPageLayoutTab> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatPageLayoutTab> = {
|
||||
type: 'update_page_layout_tab',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'pageLayoutTab', 'update'> {
|
||||
const fromFlatPageLayoutTab = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId,
|
||||
flatEntityMaps: optimisticFlatPageLayoutTabMaps,
|
||||
});
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: fromFlatPageLayoutTab?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'pageLayoutTab',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(fromFlatPageLayoutTab)) {
|
||||
validationResult.errors.push({
|
||||
code: PAGE_LAYOUT_TAB_EXCEPTION_CODE.PAGE_LAYOUT_TAB_NOT_FOUND,
|
||||
|
||||
+24
-21
@@ -1,12 +1,12 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
import { type ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type';
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
|
||||
@@ -20,15 +20,16 @@ export class FlatPageLayoutValidatorService {
|
||||
flatEntityToValidate: flatPageLayout,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayout
|
||||
>): FailedFlatEntityValidation<FlatPageLayout> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatPageLayout> = {
|
||||
type: 'create_page_layout',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'pageLayout', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPageLayout.id,
|
||||
universalIdentifier: flatPageLayout.universalIdentifier,
|
||||
name: flatPageLayout.name,
|
||||
},
|
||||
};
|
||||
metadataName: 'pageLayout',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
return validationResult;
|
||||
}
|
||||
@@ -40,15 +41,16 @@ export class FlatPageLayoutValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayout
|
||||
>): FailedFlatEntityValidation<FlatPageLayout> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatPageLayout> = {
|
||||
type: 'delete_page_layout',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'pageLayout', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityToValidate.id,
|
||||
universalIdentifier: flatEntityToValidate.universalIdentifier,
|
||||
name: flatEntityToValidate.name,
|
||||
},
|
||||
};
|
||||
metadataName: 'pageLayout',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingPageLayout = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatEntityToValidate.id,
|
||||
@@ -75,20 +77,21 @@ export class FlatPageLayoutValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayout
|
||||
>): FailedFlatEntityValidation<FlatPageLayout> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatPageLayout> = {
|
||||
type: 'update_page_layout',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'pageLayout', 'update'> {
|
||||
const fromFlatPageLayout = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId,
|
||||
flatEntityMaps: optimisticFlatPageLayoutMaps,
|
||||
});
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: fromFlatPageLayout?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'pageLayout',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(fromFlatPageLayout)) {
|
||||
validationResult.errors.push({
|
||||
code: PAGE_LAYOUT_EXCEPTION_CODE.PAGE_LAYOUT_NOT_FOUND,
|
||||
|
||||
+28
-21
@@ -5,10 +5,10 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type';
|
||||
import { PageLayoutTabExceptionCode } from 'src/engine/metadata-modules/page-layout-tab/exceptions/page-layout-tab.exception';
|
||||
import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -25,18 +25,19 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayoutWidget
|
||||
>): FailedFlatEntityValidation<FlatPageLayoutWidget> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatPageLayoutWidget> = {
|
||||
type: 'update_page_layout_widget',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'pageLayoutWidget', 'update'> {
|
||||
const existingFlatPageLayoutWidget =
|
||||
optimisticFlatPageLayoutWidgetMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingFlatPageLayoutWidget?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'pageLayoutWidget',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatPageLayoutWidget)) {
|
||||
validationResult.errors.push({
|
||||
code: PageLayoutWidgetExceptionCode.PAGE_LAYOUT_WIDGET_NOT_FOUND,
|
||||
@@ -55,6 +56,7 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
};
|
||||
|
||||
validationResult.flatEntityMinimalInformation = {
|
||||
...validationResult.flatEntityMinimalInformation,
|
||||
id: updatedFlatPageLayoutWidget.id,
|
||||
pageLayoutTabId: updatedFlatPageLayoutWidget.pageLayoutTabId,
|
||||
};
|
||||
@@ -63,20 +65,24 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
}
|
||||
|
||||
public validateFlatPageLayoutWidgetDeletion({
|
||||
flatEntityToValidate: { id: pageLayoutWidgetIdToDelete },
|
||||
flatEntityToValidate: {
|
||||
id: pageLayoutWidgetIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatPageLayoutWidgetMaps: optimisticFlatPageLayoutWidgetMaps,
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayoutWidget
|
||||
>): FailedFlatEntityValidation<FlatPageLayoutWidget> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatPageLayoutWidget> = {
|
||||
type: 'delete_page_layout_widget',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'pageLayoutWidget', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: pageLayoutWidgetIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'pageLayoutWidget',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingFlatPageLayoutWidget =
|
||||
optimisticFlatPageLayoutWidgetMaps.byId[pageLayoutWidgetIdToDelete];
|
||||
@@ -102,15 +108,16 @@ export class FlatPageLayoutWidgetValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.pageLayoutWidget
|
||||
>): FailedFlatEntityValidation<FlatPageLayoutWidget> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatPageLayoutWidget> = {
|
||||
type: 'create_page_layout_widget',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'pageLayoutWidget', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPageLayoutWidgetToValidate.id,
|
||||
universalIdentifier: flatPageLayoutWidgetToValidate.universalIdentifier,
|
||||
pageLayoutTabId: flatPageLayoutWidgetToValidate.pageLayoutTabId,
|
||||
},
|
||||
};
|
||||
metadataName: 'pageLayoutWidget',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingFlatPageLayoutWidget =
|
||||
optimisticFlatPageLayoutWidgetMaps.byId[
|
||||
|
||||
+21
-18
@@ -5,9 +5,9 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { type FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type';
|
||||
import { RoleTargetExceptionCode } from 'src/engine/metadata-modules/role/exceptions/role-target.exception';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { validateFlatRoleTargetAssignationAvailability } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-flat-role-target-assignation-availability.util';
|
||||
@@ -24,14 +24,15 @@ export class FlatRoleTargetValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.roleTarget
|
||||
>): FailedFlatEntityValidation<FlatRoleTarget> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatRoleTarget> = {
|
||||
type: 'create_role_target',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'roleTarget', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatRoleTargetToValidate.id,
|
||||
universalIdentifier: flatRoleTargetToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'roleTarget',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingRoleTarget = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatRoleTargetToValidate.id,
|
||||
@@ -82,14 +83,15 @@ export class FlatRoleTargetValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.roleTarget
|
||||
>): FailedFlatEntityValidation<FlatRoleTarget> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatRoleTarget> = {
|
||||
type: 'delete_role_target',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'roleTarget', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatRoleTargetToValidate.id,
|
||||
universalIdentifier: flatRoleTargetToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'roleTarget',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingRoleTarget = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatRoleTargetToValidate.id,
|
||||
@@ -118,16 +120,17 @@ export class FlatRoleTargetValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.roleTarget
|
||||
>): FailedFlatEntityValidation<FlatRoleTarget> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatRoleTarget> = {
|
||||
type: 'update_role_target',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'roleTarget', 'update'> {
|
||||
const existingRoleTarget = optimisticFlatRoleTargetMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingRoleTarget?.universalIdentifier,
|
||||
},
|
||||
};
|
||||
|
||||
const existingRoleTarget = optimisticFlatRoleTargetMaps.byId[flatEntityId];
|
||||
metadataName: 'roleTarget',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingRoleTarget)) {
|
||||
validationResult.errors.push({
|
||||
|
||||
+22
-19
@@ -1,13 +1,13 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
import { type ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type';
|
||||
import { PermissionsExceptionCode } from 'src/engine/metadata-modules/permissions/permissions.exception';
|
||||
import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { validateRoleIsEditable } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-is-editable.util';
|
||||
@@ -25,15 +25,16 @@ export class FlatRoleValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.role
|
||||
>): FailedFlatEntityValidation<FlatRole> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatRole> = {
|
||||
type: 'create_role',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'role', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityToValidate.id,
|
||||
universalIdentifier: flatEntityToValidate.universalIdentifier,
|
||||
label: flatEntityToValidate.label,
|
||||
},
|
||||
};
|
||||
metadataName: 'role',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingRoles = Object.values(optimisticFlatRoleMaps.byId).filter(
|
||||
isDefined,
|
||||
@@ -69,15 +70,16 @@ export class FlatRoleValidatorService {
|
||||
buildOptions,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.role
|
||||
>): FailedFlatEntityValidation<FlatRole> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatRole> = {
|
||||
type: 'delete_role',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'role', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityToValidate.id,
|
||||
universalIdentifier: flatEntityToValidate.universalIdentifier,
|
||||
label: flatEntityToValidate.label,
|
||||
},
|
||||
};
|
||||
metadataName: 'role',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingRole = optimisticFlatRoleMaps.byId[flatEntityToValidate.id];
|
||||
|
||||
@@ -110,16 +112,17 @@ export class FlatRoleValidatorService {
|
||||
buildOptions,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.role
|
||||
>): FailedFlatEntityValidation<FlatRole> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatRole> = {
|
||||
type: 'update_role',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'role', 'update'> {
|
||||
const fromFlatRole = optimisticFlatRoleMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: fromFlatRole?.universalIdentifier,
|
||||
},
|
||||
};
|
||||
|
||||
const fromFlatRole = optimisticFlatRoleMaps.byId[flatEntityId];
|
||||
metadataName: 'role',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(fromFlatRole)) {
|
||||
validationResult.errors.push({
|
||||
|
||||
+24
-21
@@ -5,8 +5,8 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { RouteTriggerExceptionCode } from 'src/engine/metadata-modules/route-trigger/exceptions/route-trigger.exception';
|
||||
import { FlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -24,18 +24,19 @@ export class FlatRouteTriggerValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.routeTrigger
|
||||
>): FailedFlatEntityValidation<FlatRouteTrigger> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatRouteTrigger> = {
|
||||
type: 'update_route_trigger',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'routeTrigger', 'update'> {
|
||||
const existingFlatRouteTrigger =
|
||||
optimisticFlatRouteTriggerMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingFlatRouteTrigger?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'routeTrigger',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatRouteTrigger)) {
|
||||
validationResult.errors.push({
|
||||
code: RouteTriggerExceptionCode.ROUTE_NOT_FOUND,
|
||||
@@ -70,20 +71,21 @@ export class FlatRouteTriggerValidatorService {
|
||||
}
|
||||
|
||||
public validateFlatRouteTriggerDeletion({
|
||||
flatEntityToValidate: { id: routeTriggerIdToDelete },
|
||||
flatEntityToValidate: { id: routeTriggerIdToDelete, universalIdentifier },
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatRouteTriggerMaps: optimisticFlatRouteTriggerMaps,
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.routeTrigger
|
||||
>): FailedFlatEntityValidation<FlatRouteTrigger> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatRouteTrigger> = {
|
||||
type: 'delete_route_trigger',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'routeTrigger', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: routeTriggerIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'routeTrigger',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingFlatRouteTrigger =
|
||||
optimisticFlatRouteTriggerMaps.byId[routeTriggerIdToDelete];
|
||||
@@ -107,14 +109,15 @@ export class FlatRouteTriggerValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.routeTrigger
|
||||
>): FailedFlatEntityValidation<FlatRouteTrigger> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatRouteTrigger> = {
|
||||
type: 'create_route_trigger',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'routeTrigger', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatRouteTriggerToValidate.id,
|
||||
universalIdentifier: flatRouteTriggerToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'routeTrigger',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
if (
|
||||
isDefined(
|
||||
|
||||
+29
-28
@@ -8,8 +8,8 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { RowLevelPermissionPredicateGroupExceptionCode } from 'src/engine/metadata-modules/row-level-permission-predicate/exceptions/row-level-permission-predicate-group.exception';
|
||||
import { type FlatRowLevelPermissionPredicateGroup } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate-group.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -21,7 +21,7 @@ export class FlatRowLevelPermissionPredicateGroupValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicateGroup
|
||||
>): FailedFlatEntityValidation<FlatRowLevelPermissionPredicateGroup> {
|
||||
>): FailedFlatEntityValidation<'rowLevelPermissionPredicateGroup', 'create'> {
|
||||
const {
|
||||
flatRowLevelPermissionPredicateGroupMaps:
|
||||
optimisticFlatPredicateGroupMaps,
|
||||
@@ -30,14 +30,14 @@ export class FlatRowLevelPermissionPredicateGroupValidatorService {
|
||||
flatRowLevelPermissionPredicateGroupMaps: typeof optimisticFlatEntityMapsAndRelatedFlatEntityMaps.flatRowLevelPermissionPredicateGroupMaps;
|
||||
flatRoleMaps: typeof optimisticFlatEntityMapsAndRelatedFlatEntityMaps.flatRoleMaps;
|
||||
}>;
|
||||
const validationResult: FailedFlatEntityValidation<FlatRowLevelPermissionPredicateGroup> =
|
||||
{
|
||||
type: 'create_row_level_permission_predicate_group',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPredicateGroupToValidate.id,
|
||||
},
|
||||
};
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPredicateGroupToValidate.id,
|
||||
universalIdentifier: flatPredicateGroupToValidate.universalIdentifier,
|
||||
},
|
||||
metadataName: 'rowLevelPermissionPredicateGroup',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingPredicateGroup =
|
||||
optimisticFlatPredicateGroupMaps?.byId[flatPredicateGroupToValidate.id];
|
||||
@@ -94,21 +94,21 @@ export class FlatRowLevelPermissionPredicateGroupValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicateGroup
|
||||
>): FailedFlatEntityValidation<FlatRowLevelPermissionPredicateGroup> {
|
||||
>): FailedFlatEntityValidation<'rowLevelPermissionPredicateGroup', 'delete'> {
|
||||
const {
|
||||
flatRowLevelPermissionPredicateGroupMaps:
|
||||
optimisticFlatPredicateGroupMaps,
|
||||
} = optimisticFlatEntityMapsAndRelatedFlatEntityMaps as Partial<{
|
||||
flatRowLevelPermissionPredicateGroupMaps: typeof optimisticFlatEntityMapsAndRelatedFlatEntityMaps.flatRowLevelPermissionPredicateGroupMaps;
|
||||
}>;
|
||||
const validationResult: FailedFlatEntityValidation<FlatRowLevelPermissionPredicateGroup> =
|
||||
{
|
||||
type: 'delete_row_level_permission_predicate_group',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPredicateGroupToDelete.id,
|
||||
},
|
||||
};
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPredicateGroupToDelete.id,
|
||||
universalIdentifier: flatPredicateGroupToDelete.universalIdentifier,
|
||||
},
|
||||
metadataName: 'rowLevelPermissionPredicateGroup',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingPredicateGroup =
|
||||
optimisticFlatPredicateGroupMaps?.byId[flatPredicateGroupToDelete.id];
|
||||
@@ -130,7 +130,7 @@ export class FlatRowLevelPermissionPredicateGroupValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicateGroup
|
||||
>): FailedFlatEntityValidation<FlatRowLevelPermissionPredicateGroup> {
|
||||
>): FailedFlatEntityValidation<'rowLevelPermissionPredicateGroup', 'update'> {
|
||||
const {
|
||||
flatRowLevelPermissionPredicateGroupMaps:
|
||||
optimisticFlatPredicateGroupMaps,
|
||||
@@ -139,18 +139,19 @@ export class FlatRowLevelPermissionPredicateGroupValidatorService {
|
||||
flatRowLevelPermissionPredicateGroupMaps: typeof optimisticFlatEntityMapsAndRelatedFlatEntityMaps.flatRowLevelPermissionPredicateGroupMaps;
|
||||
flatRoleMaps: typeof optimisticFlatEntityMapsAndRelatedFlatEntityMaps.flatRoleMaps;
|
||||
}>;
|
||||
const validationResult: FailedFlatEntityValidation<FlatRowLevelPermissionPredicateGroup> =
|
||||
{
|
||||
type: 'update_row_level_permission_predicate_group',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
const existingPredicateGroup =
|
||||
optimisticFlatPredicateGroupMaps?.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingPredicateGroup?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'rowLevelPermissionPredicateGroup',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingPredicateGroup)) {
|
||||
validationResult.errors.push({
|
||||
code: RowLevelPermissionPredicateGroupExceptionCode.ROW_LEVEL_PERMISSION_PREDICATE_GROUP_NOT_FOUND,
|
||||
|
||||
+29
-28
@@ -8,8 +8,8 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { RowLevelPermissionPredicateExceptionCode } from 'src/engine/metadata-modules/row-level-permission-predicate/exceptions/row-level-permission-predicate.exception';
|
||||
import { type FlatRowLevelPermissionPredicate } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -21,7 +21,7 @@ export class FlatRowLevelPermissionPredicateValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicate
|
||||
>): FailedFlatEntityValidation<FlatRowLevelPermissionPredicate> {
|
||||
>): FailedFlatEntityValidation<'rowLevelPermissionPredicate', 'create'> {
|
||||
const {
|
||||
flatRowLevelPermissionPredicateMaps: optimisticFlatPredicateMaps,
|
||||
flatFieldMetadataMaps,
|
||||
@@ -36,14 +36,14 @@ export class FlatRowLevelPermissionPredicateValidatorService {
|
||||
flatRoleMaps: typeof optimisticFlatEntityMapsAndRelatedFlatEntityMaps.flatRoleMaps;
|
||||
}>;
|
||||
|
||||
const validationResult: FailedFlatEntityValidation<FlatRowLevelPermissionPredicate> =
|
||||
{
|
||||
type: 'create_row_level_permission_predicate',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPredicateToValidate.id,
|
||||
},
|
||||
};
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPredicateToValidate.id,
|
||||
universalIdentifier: flatPredicateToValidate.universalIdentifier,
|
||||
},
|
||||
metadataName: 'rowLevelPermissionPredicate',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingPredicate =
|
||||
optimisticFlatPredicateMaps?.byId[flatPredicateToValidate.id];
|
||||
@@ -128,19 +128,19 @@ export class FlatRowLevelPermissionPredicateValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicate
|
||||
>): FailedFlatEntityValidation<FlatRowLevelPermissionPredicate> {
|
||||
>): FailedFlatEntityValidation<'rowLevelPermissionPredicate', 'delete'> {
|
||||
const { flatRowLevelPermissionPredicateMaps: optimisticFlatPredicateMaps } =
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps as Partial<{
|
||||
flatRowLevelPermissionPredicateMaps: typeof optimisticFlatEntityMapsAndRelatedFlatEntityMaps.flatRowLevelPermissionPredicateMaps;
|
||||
}>;
|
||||
const validationResult: FailedFlatEntityValidation<FlatRowLevelPermissionPredicate> =
|
||||
{
|
||||
type: 'delete_row_level_permission_predicate',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPredicateToDelete.id,
|
||||
},
|
||||
};
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatPredicateToDelete.id,
|
||||
universalIdentifier: flatPredicateToDelete.universalIdentifier,
|
||||
},
|
||||
metadataName: 'rowLevelPermissionPredicate',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingPredicate =
|
||||
optimisticFlatPredicateMaps?.byId[flatPredicateToDelete.id];
|
||||
@@ -162,7 +162,7 @@ export class FlatRowLevelPermissionPredicateValidatorService {
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.rowLevelPermissionPredicate
|
||||
>): FailedFlatEntityValidation<FlatRowLevelPermissionPredicate> {
|
||||
>): FailedFlatEntityValidation<'rowLevelPermissionPredicate', 'update'> {
|
||||
const {
|
||||
flatRowLevelPermissionPredicateMaps: optimisticFlatPredicateMaps,
|
||||
flatFieldMetadataMaps,
|
||||
@@ -176,17 +176,18 @@ export class FlatRowLevelPermissionPredicateValidatorService {
|
||||
flatRowLevelPermissionPredicateGroupMaps: typeof optimisticFlatEntityMapsAndRelatedFlatEntityMaps.flatRowLevelPermissionPredicateGroupMaps;
|
||||
flatRoleMaps: typeof optimisticFlatEntityMapsAndRelatedFlatEntityMaps.flatRoleMaps;
|
||||
}>;
|
||||
const validationResult: FailedFlatEntityValidation<FlatRowLevelPermissionPredicate> =
|
||||
{
|
||||
type: 'update_row_level_permission_predicate',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
const existingPredicate = optimisticFlatPredicateMaps?.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingPredicate?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'rowLevelPermissionPredicate',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingPredicate)) {
|
||||
validationResult.errors.push({
|
||||
code: RowLevelPermissionPredicateExceptionCode.ROW_LEVEL_PERMISSION_PREDICATE_NOT_FOUND,
|
||||
|
||||
+35
-30
@@ -5,8 +5,8 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { ServerlessFunctionExceptionCode } from 'src/engine/metadata-modules/serverless-function/serverless-function.exception';
|
||||
import { FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
|
||||
@@ -21,19 +21,20 @@ export class FlatServerlessFunctionValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.serverlessFunction
|
||||
>): FailedFlatEntityValidation<FlatServerlessFunction> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatServerlessFunction> =
|
||||
{
|
||||
type: 'update_serverless_function',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'serverlessFunction', 'update'> {
|
||||
const existingFlatServerlessFunction =
|
||||
optimisticFlatServerlessFunctionMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier:
|
||||
existingFlatServerlessFunction?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'serverlessFunction',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatServerlessFunction)) {
|
||||
validationResult.errors.push({
|
||||
code: ServerlessFunctionExceptionCode.SERVERLESS_FUNCTION_NOT_FOUND,
|
||||
@@ -46,21 +47,24 @@ export class FlatServerlessFunctionValidatorService {
|
||||
}
|
||||
|
||||
public validateFlatServerlessFunctionDeletion({
|
||||
flatEntityToValidate: { id: serverlessFunctionIdToDelete },
|
||||
flatEntityToValidate: {
|
||||
id: serverlessFunctionIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatServerlessFunctionMaps: optimisticFlatServerlessFunctionMaps,
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.serverlessFunction
|
||||
>): FailedFlatEntityValidation<FlatServerlessFunction> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatServerlessFunction> =
|
||||
{
|
||||
type: 'delete_serverless_function',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: serverlessFunctionIdToDelete,
|
||||
},
|
||||
};
|
||||
>): FailedFlatEntityValidation<'serverlessFunction', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: serverlessFunctionIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
metadataName: 'serverlessFunction',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingFlatServerlessFunction =
|
||||
optimisticFlatServerlessFunctionMaps.byId[serverlessFunctionIdToDelete];
|
||||
@@ -83,15 +87,16 @@ export class FlatServerlessFunctionValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.serverlessFunction
|
||||
>): FailedFlatEntityValidation<FlatServerlessFunction> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatServerlessFunction> =
|
||||
{
|
||||
type: 'create_serverless_function',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatServerlessFunctionToValidate.id,
|
||||
},
|
||||
};
|
||||
>): FailedFlatEntityValidation<'serverlessFunction', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatServerlessFunctionToValidate.id,
|
||||
universalIdentifier:
|
||||
flatServerlessFunctionToValidate.universalIdentifier,
|
||||
},
|
||||
metadataName: 'serverlessFunction',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
if (
|
||||
isDefined(
|
||||
|
||||
+24
-20
@@ -1,7 +1,7 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
import { type ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
@@ -10,6 +10,7 @@ import { SkillExceptionCode } from 'src/engine/metadata-modules/skill/skill.exce
|
||||
import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util';
|
||||
import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { validateSkillNameUniqueness } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-skill-name-uniqueness.util';
|
||||
@@ -29,15 +30,16 @@ export class FlatSkillValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.skill
|
||||
>): FailedFlatEntityValidation<FlatSkill> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatSkill> = {
|
||||
type: 'create_skill',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'skill', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatSkill.id,
|
||||
universalIdentifier: flatSkill.universalIdentifier,
|
||||
name: flatSkill.name,
|
||||
},
|
||||
};
|
||||
metadataName: 'skill',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingSkills = Object.values(optimisticFlatSkillMaps.byId).filter(
|
||||
isDefined,
|
||||
@@ -65,15 +67,16 @@ export class FlatSkillValidatorService {
|
||||
buildOptions,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.skill
|
||||
>): FailedFlatEntityValidation<FlatSkill> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatSkill> = {
|
||||
type: 'delete_skill',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'skill', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityToValidate.id,
|
||||
universalIdentifier: flatEntityToValidate.universalIdentifier,
|
||||
name: flatEntityToValidate.name,
|
||||
},
|
||||
};
|
||||
metadataName: 'skill',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingSkill = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatEntityToValidate.id,
|
||||
@@ -110,20 +113,21 @@ export class FlatSkillValidatorService {
|
||||
buildOptions,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.skill
|
||||
>): FailedFlatEntityValidation<FlatSkill> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatSkill> = {
|
||||
type: 'update_skill',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'skill', 'update'> {
|
||||
const fromFlatSkill = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId,
|
||||
flatEntityMaps: optimisticFlatSkillMaps,
|
||||
});
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: fromFlatSkill?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'skill',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(fromFlatSkill)) {
|
||||
validationResult.errors.push({
|
||||
code: SkillExceptionCode.SKILL_NOT_FOUND,
|
||||
|
||||
+25
-21
@@ -6,10 +6,10 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
|
||||
import { FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type';
|
||||
import { isViewFieldInLowestPosition } from 'src/engine/metadata-modules/flat-view-field/utils/is-view-field-in-lowest-position.util';
|
||||
import { ViewExceptionCode } from 'src/engine/metadata-modules/view/exceptions/view.exception';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { validateLabelIdentifierFieldMetadataIdFlatViewField } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util';
|
||||
@@ -29,18 +29,19 @@ export class FlatViewFieldValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewField
|
||||
>): FailedFlatEntityValidation<FlatViewField> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewField> = {
|
||||
type: 'update_view_field',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'viewField', 'update'> {
|
||||
const existingFlatViewField =
|
||||
optimisticFlatViewFieldMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingFlatViewField?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'viewField',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatViewField)) {
|
||||
validationResult.errors.push({
|
||||
code: ViewExceptionCode.INVALID_VIEW_DATA,
|
||||
@@ -59,6 +60,7 @@ export class FlatViewFieldValidatorService {
|
||||
};
|
||||
|
||||
validationResult.flatEntityMinimalInformation = {
|
||||
...validationResult.flatEntityMinimalInformation,
|
||||
id: updatedFlatViewField.id,
|
||||
viewId: updatedFlatViewField.viewId,
|
||||
fieldMetadataId: updatedFlatViewField.fieldMetadataId,
|
||||
@@ -119,7 +121,7 @@ export class FlatViewFieldValidatorService {
|
||||
}
|
||||
|
||||
public validateFlatViewFieldDeletion({
|
||||
flatEntityToValidate: { id: viewFieldIdToDelete },
|
||||
flatEntityToValidate: { id: viewFieldIdToDelete, universalIdentifier },
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatViewFieldMaps: optimisticFlatViewFieldMaps,
|
||||
flatFieldMetadataMaps,
|
||||
@@ -127,14 +129,15 @@ export class FlatViewFieldValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewField
|
||||
>): FailedFlatEntityValidation<FlatViewField> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewField> = {
|
||||
type: 'delete_view_field',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'viewField', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: viewFieldIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'viewField',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingFlatViewField =
|
||||
optimisticFlatViewFieldMaps.byId[viewFieldIdToDelete];
|
||||
@@ -191,16 +194,17 @@ export class FlatViewFieldValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewField
|
||||
>): FailedFlatEntityValidation<FlatViewField> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewField> = {
|
||||
type: 'create_view_field',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'viewField', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatViewFieldToValidate.id,
|
||||
universalIdentifier: flatViewFieldToValidate.universalIdentifier,
|
||||
viewId: flatViewFieldToValidate.viewId,
|
||||
fieldMetadataId: flatViewFieldToValidate.fieldMetadataId,
|
||||
},
|
||||
};
|
||||
metadataName: 'viewField',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingFlatViewField =
|
||||
optimisticFlatViewFieldMaps.byId[flatViewFieldToValidate.id];
|
||||
|
||||
+24
-21
@@ -1,12 +1,11 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
import { type ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { type FlatViewFilterGroupMaps } from 'src/engine/metadata-modules/flat-view-filter-group/types/flat-view-filter-group-maps.type';
|
||||
import { type FlatViewFilterGroup } from 'src/engine/metadata-modules/flat-view-filter-group/types/flat-view-filter-group.type';
|
||||
import { ViewFilterGroupExceptionCode } from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception';
|
||||
import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util';
|
||||
import { validateFlatEntityCircularDependency } from 'src/engine/workspace-manager/workspace-migration-v2/utils/validate-flat-entity-circular-dependency.util';
|
||||
@@ -14,6 +13,7 @@ import {
|
||||
type FailedFlatEntityValidation,
|
||||
type FlatEntityValidationError,
|
||||
} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
|
||||
@@ -82,14 +82,15 @@ export class FlatViewFilterGroupValidatorService {
|
||||
remainingFlatEntityMapsToValidate,
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewFilterGroup
|
||||
>): FailedFlatEntityValidation<FlatViewFilterGroup> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewFilterGroup> = {
|
||||
type: 'create_view_filter_group',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'viewFilterGroup', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatViewFilterGroupToValidate.id,
|
||||
universalIdentifier: flatViewFilterGroupToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'viewFilterGroup',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingViewFilterGroup = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatViewFilterGroupToValidate.id,
|
||||
@@ -162,14 +163,15 @@ export class FlatViewFilterGroupValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewFilterGroup
|
||||
>): FailedFlatEntityValidation<FlatViewFilterGroup> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewFilterGroup> = {
|
||||
type: 'delete_view_filter_group',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'viewFilterGroup', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatViewFilterGroupToValidate.id,
|
||||
universalIdentifier: flatViewFilterGroupToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'viewFilterGroup',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingViewFilterGroup = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatViewFilterGroupToValidate.id,
|
||||
@@ -195,18 +197,19 @@ export class FlatViewFilterGroupValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewFilterGroup
|
||||
>): FailedFlatEntityValidation<FlatViewFilterGroup> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewFilterGroup> = {
|
||||
type: 'update_view_filter_group',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'viewFilterGroup', 'update'> {
|
||||
const existingViewFilterGroup =
|
||||
optimisticFlatViewFilterGroupMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingViewFilterGroup?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'viewFilterGroup',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingViewFilterGroup)) {
|
||||
validationResult.errors.push({
|
||||
code: ViewFilterGroupExceptionCode.VIEW_FILTER_GROUP_NOT_FOUND,
|
||||
|
||||
+22
-19
@@ -1,13 +1,13 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { msg, t } from '@lingui/core/macro';
|
||||
import { type ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { type FlatViewFilter } from 'src/engine/metadata-modules/flat-view-filter/types/flat-view-filter.type';
|
||||
import { ViewFilterExceptionCode } from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -26,14 +26,15 @@ export class FlatViewFilterValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewFilter
|
||||
>): FailedFlatEntityValidation<FlatViewFilter> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewFilter> = {
|
||||
type: 'create_view_filter',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'viewFilter', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatViewFilterToValidate.id,
|
||||
universalIdentifier: flatViewFilterToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'viewFilter',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingViewFilter = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatViewFilterToValidate.id,
|
||||
@@ -99,14 +100,15 @@ export class FlatViewFilterValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewFilter
|
||||
>): FailedFlatEntityValidation<FlatViewFilter> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewFilter> = {
|
||||
type: 'delete_view_filter',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'viewFilter', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatViewFilterToValidate.id,
|
||||
universalIdentifier: flatViewFilterToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'viewFilter',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingViewFilter = findFlatEntityByIdInFlatEntityMaps({
|
||||
flatEntityId: flatViewFilterToValidate.id,
|
||||
@@ -136,16 +138,17 @@ export class FlatViewFilterValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewFilter
|
||||
>): FailedFlatEntityValidation<FlatViewFilter> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewFilter> = {
|
||||
type: 'update_view_filter',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'viewFilter', 'update'> {
|
||||
const existingViewFilter = optimisticFlatViewFilterMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingViewFilter?.universalIdentifier,
|
||||
},
|
||||
};
|
||||
|
||||
const existingViewFilter = optimisticFlatViewFilterMaps.byId[flatEntityId];
|
||||
metadataName: 'viewFilter',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingViewFilter)) {
|
||||
validationResult.errors.push({
|
||||
|
||||
+25
-21
@@ -5,9 +5,9 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util';
|
||||
import { FlatViewGroup } from 'src/engine/metadata-modules/flat-view-group/types/flat-view-group.type';
|
||||
import { ViewExceptionCode } from 'src/engine/metadata-modules/view/exceptions/view.exception';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -23,18 +23,19 @@ export class FlatViewGroupValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewGroup
|
||||
>): FailedFlatEntityValidation<FlatViewGroup> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewGroup> = {
|
||||
type: 'update_view_group',
|
||||
errors: [],
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
},
|
||||
};
|
||||
|
||||
>): FailedFlatEntityValidation<'viewGroup', 'update'> {
|
||||
const existingFlatViewGroup =
|
||||
optimisticFlatViewGroupMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingFlatViewGroup?.universalIdentifier,
|
||||
},
|
||||
metadataName: 'viewGroup',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatViewGroup)) {
|
||||
validationResult.errors.push({
|
||||
code: ViewExceptionCode.INVALID_VIEW_DATA,
|
||||
@@ -61,6 +62,7 @@ export class FlatViewGroupValidatorService {
|
||||
}
|
||||
|
||||
validationResult.flatEntityMinimalInformation = {
|
||||
...validationResult.flatEntityMinimalInformation,
|
||||
id: updatedFlatViewGroup.id,
|
||||
viewId: updatedFlatViewGroup.viewId,
|
||||
};
|
||||
@@ -82,20 +84,21 @@ export class FlatViewGroupValidatorService {
|
||||
}
|
||||
|
||||
public validateFlatViewGroupDeletion({
|
||||
flatEntityToValidate: { id: viewGroupIdToDelete },
|
||||
flatEntityToValidate: { id: viewGroupIdToDelete, universalIdentifier },
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatViewGroupMaps: optimisticFlatViewGroupMaps,
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewGroup
|
||||
>): FailedFlatEntityValidation<FlatViewGroup> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewGroup> = {
|
||||
type: 'delete_view_group',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'viewGroup', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: viewGroupIdToDelete,
|
||||
universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'viewGroup',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingFlatViewGroup =
|
||||
optimisticFlatViewGroupMaps.byId[viewGroupIdToDelete];
|
||||
@@ -119,15 +122,16 @@ export class FlatViewGroupValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.viewGroup
|
||||
>): FailedFlatEntityValidation<FlatViewGroup> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatViewGroup> = {
|
||||
type: 'create_view_group',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'viewGroup', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatViewGroupToValidate.id,
|
||||
universalIdentifier: flatViewGroupToValidate.universalIdentifier,
|
||||
viewId: flatViewGroupToValidate.viewId,
|
||||
},
|
||||
};
|
||||
metadataName: 'viewGroup',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const existingFlatViewGroup =
|
||||
optimisticFlatViewGroupMaps.byId[flatViewGroupToValidate.id];
|
||||
|
||||
+25
-20
@@ -9,6 +9,7 @@ import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'
|
||||
import { ViewExceptionCode } from 'src/engine/metadata-modules/view/exceptions/view.exception';
|
||||
import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util';
|
||||
import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util';
|
||||
import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type';
|
||||
import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
@@ -25,16 +26,17 @@ export class FlatViewValidatorService {
|
||||
},
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
typeof ALL_METADATA_NAME.view
|
||||
>): FailedFlatEntityValidation<FlatView> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatView> = {
|
||||
type: 'update_view',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'view', 'update'> {
|
||||
const existingFlatView = optimisticFlatViewMaps.byId[flatEntityId];
|
||||
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatEntityId,
|
||||
universalIdentifier: existingFlatView?.universalIdentifier,
|
||||
},
|
||||
};
|
||||
|
||||
const existingFlatView = optimisticFlatViewMaps.byId[flatEntityId];
|
||||
metadataName: 'view',
|
||||
type: 'update',
|
||||
});
|
||||
|
||||
if (!isDefined(existingFlatView)) {
|
||||
validationResult.errors.push({
|
||||
@@ -146,22 +148,24 @@ export class FlatViewValidatorService {
|
||||
}
|
||||
|
||||
public validateFlatViewDeletion({
|
||||
flatEntityToValidate: { id: viewIdToDelete },
|
||||
flatEntityToValidate,
|
||||
optimisticFlatEntityMapsAndRelatedFlatEntityMaps: {
|
||||
flatViewMaps: optimisticFlatViewMaps,
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.view
|
||||
>): FailedFlatEntityValidation<FlatView> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatView> = {
|
||||
type: 'delete_view',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'view', 'delete'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: viewIdToDelete,
|
||||
id: flatEntityToValidate.id,
|
||||
universalIdentifier: flatEntityToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'view',
|
||||
type: 'delete',
|
||||
});
|
||||
|
||||
const existingFlatView = optimisticFlatViewMaps.byId[viewIdToDelete];
|
||||
const existingFlatView =
|
||||
optimisticFlatViewMaps.byId[flatEntityToValidate.id];
|
||||
|
||||
if (!isDefined(existingFlatView)) {
|
||||
validationResult.errors.push({
|
||||
@@ -183,14 +187,15 @@ export class FlatViewValidatorService {
|
||||
},
|
||||
}: FlatEntityValidationArgs<
|
||||
typeof ALL_METADATA_NAME.view
|
||||
>): FailedFlatEntityValidation<FlatView> {
|
||||
const validationResult: FailedFlatEntityValidation<FlatView> = {
|
||||
type: 'create_view',
|
||||
errors: [],
|
||||
>): FailedFlatEntityValidation<'view', 'create'> {
|
||||
const validationResult = getEmptyFlatEntityValidationError({
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatViewToValidate.id,
|
||||
universalIdentifier: flatViewToValidate.universalIdentifier,
|
||||
},
|
||||
};
|
||||
metadataName: 'view',
|
||||
type: 'create',
|
||||
});
|
||||
|
||||
const optimisticFlatObjectMetadata =
|
||||
flatObjectMetadataMaps.byId[flatViewToValidate.objectMetadataId];
|
||||
|
||||
+3
-24
@@ -1,41 +1,20 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import {
|
||||
OptimisticallyApplyActionOnAllFlatEntityMapsArgs,
|
||||
WorkspaceMigrationRunnerActionHandler,
|
||||
} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity';
|
||||
import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type';
|
||||
import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-maps-or-throw.util';
|
||||
import { CreateAgentAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service';
|
||||
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type';
|
||||
|
||||
@Injectable()
|
||||
export class CreateAgentActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'create_agent',
|
||||
'create',
|
||||
'agent',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
optimisticallyApplyActionOnAllFlatEntityMaps({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
}: OptimisticallyApplyActionOnAllFlatEntityMapsArgs<CreateAgentAction>): Partial<AllFlatEntityMaps> {
|
||||
const { flatAgentMaps } = allFlatEntityMaps;
|
||||
const { flatEntity } = action;
|
||||
|
||||
const updatedFlatAgentMaps = addFlatEntityToFlatEntityMapsOrThrow({
|
||||
flatEntity,
|
||||
flatEntityMaps: flatAgentMaps,
|
||||
});
|
||||
|
||||
return {
|
||||
flatAgentMaps: updatedFlatAgentMaps,
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
context: WorkspaceMigrationActionRunnerArgs<CreateAgentAction>,
|
||||
): Promise<void> {
|
||||
|
||||
+5
-26
@@ -1,51 +1,30 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import {
|
||||
OptimisticallyApplyActionOnAllFlatEntityMapsArgs,
|
||||
WorkspaceMigrationRunnerActionHandler,
|
||||
} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity';
|
||||
import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type';
|
||||
import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util';
|
||||
import { DeleteAgentAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service';
|
||||
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type';
|
||||
|
||||
@Injectable()
|
||||
export class DeleteAgentActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'delete_agent',
|
||||
'delete',
|
||||
'agent',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
optimisticallyApplyActionOnAllFlatEntityMaps({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
}: OptimisticallyApplyActionOnAllFlatEntityMapsArgs<DeleteAgentAction>): Partial<AllFlatEntityMaps> {
|
||||
const { flatAgentMaps } = allFlatEntityMaps;
|
||||
const { flatEntityId } = action;
|
||||
|
||||
const updatedFlatAgentMaps = deleteFlatEntityFromFlatEntityMapsOrThrow({
|
||||
entityToDeleteId: flatEntityId,
|
||||
flatEntityMaps: flatAgentMaps,
|
||||
});
|
||||
|
||||
return {
|
||||
flatAgentMaps: updatedFlatAgentMaps,
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
context: WorkspaceMigrationActionRunnerArgs<DeleteAgentAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner, workspaceId } = context;
|
||||
const { flatEntityId } = action;
|
||||
const { entityId } = action;
|
||||
|
||||
const agentRepository =
|
||||
queryRunner.manager.getRepository<AgentEntity>(AgentEntity);
|
||||
|
||||
await agentRepository.delete({ id: flatEntityId, workspaceId });
|
||||
await agentRepository.delete({ id: entityId, workspaceId });
|
||||
}
|
||||
|
||||
async executeForWorkspaceSchema(
|
||||
|
||||
+6
-40
@@ -1,64 +1,30 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import {
|
||||
OptimisticallyApplyActionOnAllFlatEntityMapsArgs,
|
||||
WorkspaceMigrationRunnerActionHandler,
|
||||
} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity';
|
||||
import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type';
|
||||
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
|
||||
import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util';
|
||||
import { UpdateAgentAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service';
|
||||
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type';
|
||||
import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity';
|
||||
|
||||
@Injectable()
|
||||
export class UpdateAgentActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'update_agent',
|
||||
'update',
|
||||
'agent',
|
||||
) {
|
||||
optimisticallyApplyActionOnAllFlatEntityMaps({
|
||||
action,
|
||||
allFlatEntityMaps,
|
||||
}: OptimisticallyApplyActionOnAllFlatEntityMapsArgs<UpdateAgentAction>): Partial<AllFlatEntityMaps> {
|
||||
const { flatAgentMaps } = allFlatEntityMaps;
|
||||
const { flatEntityId, flatEntityUpdates } = action;
|
||||
|
||||
const existingAgent = findFlatEntityByIdInFlatEntityMapsOrThrow({
|
||||
flatEntityId,
|
||||
flatEntityMaps: flatAgentMaps,
|
||||
});
|
||||
|
||||
const updatedAgent = {
|
||||
...existingAgent,
|
||||
...fromFlatEntityPropertiesUpdatesToPartialFlatEntity({
|
||||
updates: flatEntityUpdates,
|
||||
}),
|
||||
};
|
||||
|
||||
const updatedFlatAgentMaps = replaceFlatEntityInFlatEntityMapsOrThrow({
|
||||
flatEntity: updatedAgent,
|
||||
flatEntityMaps: flatAgentMaps,
|
||||
});
|
||||
|
||||
return {
|
||||
flatAgentMaps: updatedFlatAgentMaps,
|
||||
};
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
context: WorkspaceMigrationActionRunnerArgs<UpdateAgentAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner, workspaceId } = context;
|
||||
const { flatEntityId, flatEntityUpdates } = action;
|
||||
const { entityId, updates } = action;
|
||||
|
||||
const agentRepository =
|
||||
queryRunner.manager.getRepository<AgentEntity>(AgentEntity);
|
||||
|
||||
await agentRepository.update(
|
||||
{ id: flatEntityId, workspaceId },
|
||||
{ id: entityId, workspaceId },
|
||||
fromFlatEntityPropertiesUpdatesToPartialFlatEntity({
|
||||
updates: flatEntityUpdates,
|
||||
updates,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
+3
-2
@@ -8,7 +8,8 @@ import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager
|
||||
|
||||
@Injectable()
|
||||
export class CreateCronTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'create_cron_trigger',
|
||||
'create',
|
||||
'cronTrigger',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
@@ -18,7 +19,7 @@ export class CreateCronTriggerActionHandlerService extends WorkspaceMigrationRun
|
||||
context: WorkspaceMigrationActionRunnerArgs<CreateCronTriggerAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner, workspaceId } = context;
|
||||
const { cronTrigger } = action;
|
||||
const { flatEntity: cronTrigger } = action;
|
||||
|
||||
const cronTriggerRepository =
|
||||
queryRunner.manager.getRepository<CronTriggerEntity>(CronTriggerEntity);
|
||||
|
||||
+4
-3
@@ -8,7 +8,8 @@ import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager
|
||||
|
||||
@Injectable()
|
||||
export class DeleteCronTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'delete_cron_trigger',
|
||||
'delete',
|
||||
'cronTrigger',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
@@ -18,13 +19,13 @@ export class DeleteCronTriggerActionHandlerService extends WorkspaceMigrationRun
|
||||
context: WorkspaceMigrationActionRunnerArgs<DeleteCronTriggerAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner, workspaceId } = context;
|
||||
const { cronTriggerId } = action;
|
||||
const { entityId } = action;
|
||||
|
||||
const cronTriggerRepository =
|
||||
queryRunner.manager.getRepository<CronTriggerEntity>(CronTriggerEntity);
|
||||
|
||||
await cronTriggerRepository.delete({
|
||||
id: cronTriggerId,
|
||||
id: entityId,
|
||||
workspaceId,
|
||||
});
|
||||
}
|
||||
|
||||
+4
-3
@@ -9,7 +9,8 @@ import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/w
|
||||
|
||||
@Injectable()
|
||||
export class UpdateCronTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'update_cron_trigger',
|
||||
'update',
|
||||
'cronTrigger',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
@@ -19,13 +20,13 @@ export class UpdateCronTriggerActionHandlerService extends WorkspaceMigrationRun
|
||||
context: WorkspaceMigrationActionRunnerArgs<UpdateCronTriggerAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner } = context;
|
||||
const { cronTriggerId } = action;
|
||||
const { entityId } = action;
|
||||
|
||||
const cronTriggerRepository =
|
||||
queryRunner.manager.getRepository<CronTriggerEntity>(CronTriggerEntity);
|
||||
|
||||
await cronTriggerRepository.update(
|
||||
cronTriggerId,
|
||||
entityId,
|
||||
fromFlatEntityPropertiesUpdatesToPartialFlatEntity(action),
|
||||
);
|
||||
}
|
||||
|
||||
+3
-2
@@ -8,7 +8,8 @@ import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager
|
||||
|
||||
@Injectable()
|
||||
export class CreateDatabaseEventTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'create_database_event_trigger',
|
||||
'create',
|
||||
'databaseEventTrigger',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
@@ -18,7 +19,7 @@ export class CreateDatabaseEventTriggerActionHandlerService extends WorkspaceMig
|
||||
context: WorkspaceMigrationActionRunnerArgs<CreateDatabaseEventTriggerAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner, workspaceId } = context;
|
||||
const { databaseEventTrigger } = action;
|
||||
const { flatEntity: databaseEventTrigger } = action;
|
||||
|
||||
const databaseEventTriggerRepository =
|
||||
queryRunner.manager.getRepository<DatabaseEventTriggerEntity>(
|
||||
|
||||
+4
-3
@@ -8,7 +8,8 @@ import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager
|
||||
|
||||
@Injectable()
|
||||
export class DeleteDatabaseEventTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'delete_database_event_trigger',
|
||||
'delete',
|
||||
'databaseEventTrigger',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
@@ -18,7 +19,7 @@ export class DeleteDatabaseEventTriggerActionHandlerService extends WorkspaceMig
|
||||
context: WorkspaceMigrationActionRunnerArgs<DeleteDatabaseEventTriggerAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner, workspaceId } = context;
|
||||
const { databaseEventTriggerId } = action;
|
||||
const { entityId } = action;
|
||||
|
||||
const databaseEventTriggerRepository =
|
||||
queryRunner.manager.getRepository<DatabaseEventTriggerEntity>(
|
||||
@@ -26,7 +27,7 @@ export class DeleteDatabaseEventTriggerActionHandlerService extends WorkspaceMig
|
||||
);
|
||||
|
||||
await databaseEventTriggerRepository.delete({
|
||||
id: databaseEventTriggerId,
|
||||
id: entityId,
|
||||
workspaceId,
|
||||
});
|
||||
}
|
||||
|
||||
+4
-3
@@ -9,7 +9,8 @@ import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/w
|
||||
|
||||
@Injectable()
|
||||
export class UpdateDatabaseEventTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'update_database_event_trigger',
|
||||
'update',
|
||||
'databaseEventTrigger',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
@@ -19,7 +20,7 @@ export class UpdateDatabaseEventTriggerActionHandlerService extends WorkspaceMig
|
||||
context: WorkspaceMigrationActionRunnerArgs<UpdateDatabaseEventTriggerAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner } = context;
|
||||
const { databaseEventTriggerId } = action;
|
||||
const { entityId } = action;
|
||||
|
||||
const databaseEventTriggerRepository =
|
||||
queryRunner.manager.getRepository<DatabaseEventTriggerEntity>(
|
||||
@@ -27,7 +28,7 @@ export class UpdateDatabaseEventTriggerActionHandlerService extends WorkspaceMig
|
||||
);
|
||||
|
||||
await databaseEventTriggerRepository.update(
|
||||
databaseEventTriggerId,
|
||||
entityId,
|
||||
fromFlatEntityPropertiesUpdatesToPartialFlatEntity(action),
|
||||
);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user