Add applicationId to syncableEntity and fix syncApp deletion (#15170)

## Context
- All flatEntity should extend SyncableEntity
- SyncableEntity should now have applicationId and application relation
- Fix syncApp deletion, should now properly use migration v2 to delete
syncable entities
This commit is contained in:
Weiko
2025-10-17 19:23:00 +02:00
committed by GitHub
parent 84e7fabaab
commit cceeb6ed4d
79 changed files with 734 additions and 271 deletions
@@ -34,4 +34,7 @@ export class CreateRouteTriggerInput {
@HideField()
universalIdentifier?: string;
@HideField()
applicationId?: string;
}
@@ -9,6 +9,7 @@ import { CacheStorageService } from 'src/engine/core-modules/cache-storage/servi
import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum';
import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/metadata-modules/flat-entity/constant/empty-flat-entity-maps.constant';
import { FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/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 {
ROUTE_TRIGGER_ENTITY_RELATION_PROPERTIES,
RouteTrigger,
@@ -42,28 +43,19 @@ export class WorkspaceFlatRouteTriggerMapCacheService extends WorkspaceFlatMapCa
},
});
const flatRouteTriggerMaps = routeTriggers.reduce<
FlatEntityMaps<FlatRouteTrigger>
>((flatEntityMaps, routeTrigger) => {
return routeTriggers.reduce((flatRouteTriggerMaps, routeTriggerEntity) => {
const flatRouteTrigger = {
...removePropertiesFromRecord(routeTrigger, [
...removePropertiesFromRecord(routeTriggerEntity, [
...ROUTE_TRIGGER_ENTITY_RELATION_PROPERTIES,
]),
universalIdentifier: routeTrigger.universalIdentifier ?? '',
universalIdentifier:
routeTriggerEntity.universalIdentifier ?? routeTriggerEntity.id,
} satisfies FlatRouteTrigger;
return {
byId: {
...flatEntityMaps.byId,
[flatRouteTrigger.id]: flatRouteTrigger,
},
idByUniversalIdentifier: {
...flatEntityMaps.idByUniversalIdentifier,
[flatRouteTrigger.universalIdentifier]: flatRouteTrigger.id,
},
};
return addFlatEntityToFlatEntityMapsOrThrow({
flatEntity: flatRouteTrigger,
flatEntityMaps: flatRouteTriggerMaps,
});
}, EMPTY_FLAT_ENTITY_MAPS);
return flatRouteTriggerMaps;
}
}
@@ -1,4 +1,5 @@
import { type Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
import { type FlatEntityFrom } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type';
import { type RouteTrigger } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity';
import { type ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity';
import { type ExtractRecordTypeOrmRelationProperties } from 'src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-relation-properties.type';
@@ -9,9 +10,7 @@ export type RouteTriggerEntityRelationProperties =
ServerlessFunctionEntity | Workspace
>;
export type FlatRouteTrigger = Omit<
export type FlatRouteTrigger = FlatEntityFrom<
RouteTrigger,
RouteTriggerEntityRelationProperties
> & {
universalIdentifier: string;
};
>;
@@ -23,5 +23,6 @@ export const fromCreateRouteTriggerInputToFlatRouteTrigger = ({
workspaceId,
createdAt: now,
updatedAt: now,
applicationId: createRouteTriggerInput.applicationId ?? null,
};
};