feat: wip sync standard id (#4373)

* feat: wip sync standard id

feat: implement standardId for sync command

* fix: rebase

* fix: tests

* fix: deterministic uuid

* fix: sync custom not working

* fix: create custom not adding standardId

* fix: readability
This commit is contained in:
Jérémy M
2024-03-13 12:06:10 +01:00
committed by GitHub
parent 7b63cf14bc
commit d8b370720c
52 changed files with 926 additions and 25 deletions

View File

@ -61,7 +61,7 @@ export class WorkspaceSyncObjectMetadataService {
workspaceFeatureFlagsMap,
);
// Create map of original and standard object metadata by unique identifier
// Create map of original and standard object metadata by standard ids
const originalObjectMetadataMap = mapObjectMetadataByUniqueIdentifier(
originalObjectMetadataCollection,
);
@ -75,17 +75,20 @@ export class WorkspaceSyncObjectMetadataService {
for (const originalObjectMetadata of originalObjectMetadataCollection.filter(
(object) => !object.isCustom,
)) {
if (!standardObjectMetadataMap[originalObjectMetadata.nameSingular]) {
if (
originalObjectMetadata.standardId &&
!standardObjectMetadataMap[originalObjectMetadata.standardId]
) {
storage.addDeleteObjectMetadata(originalObjectMetadata);
}
}
// Loop over all standard objects and compare them with the objects in DB
for (const standardObjectName in standardObjectMetadataMap) {
for (const standardObjectId in standardObjectMetadataMap) {
const originalObjectMetadata =
originalObjectMetadataMap[standardObjectName];
originalObjectMetadataMap[standardObjectId];
const standardObjectMetadata = computeStandardObject(
standardObjectMetadataMap[standardObjectName],
standardObjectMetadataMap[standardObjectId],
originalObjectMetadata,
customObjectMetadataCollection,
);

View File

@ -58,6 +58,8 @@ export class WorkspaceSyncRelationMetadataService {
// Create map of object metadata & field metadata by unique identifier
const originalObjectMetadataMap = mapObjectMetadataByUniqueIdentifier(
originalObjectMetadataCollection,
// Relation are based on the singular name
(objectMetadata) => objectMetadata.nameSingular,
);
const relationMetadataRepository = manager.getRepository(