From 012033fdf027004d983cbcf23b5af43699839e8a Mon Sep 17 00:00:00 2001 From: Ana Garcia Date: Tue, 10 Mar 2026 08:51:19 +0100 Subject: [PATCH] Do not remove objects when is the metadata requested to be sync --- .../builders/MetadataPayloadBuilder.ts | 28 +++++++++++++++---- src/domain/metadata/utils.ts | 2 +- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/domain/metadata/builders/MetadataPayloadBuilder.ts b/src/domain/metadata/builders/MetadataPayloadBuilder.ts index 7ee4fc5d0..a106f57a4 100644 --- a/src/domain/metadata/builders/MetadataPayloadBuilder.ts +++ b/src/domain/metadata/builders/MetadataPayloadBuilder.ts @@ -45,7 +45,7 @@ export class MetadataPayloadBuilder { includeOnlyOrgUnitsReferences = false, removeUserNonEssentialObjects = false, metadataIncludeExcludeRules = {}, - useDefaultIncludeExclude = {}, + useDefaultIncludeExclude = true, } = syncParams ?? {}; const originInstance = await this.getOriginInstance(originInstanceId); @@ -134,6 +134,7 @@ export class MetadataPayloadBuilder { : []; const removeCategoryObjects = !!syncParams?.removeDefaultCategoryObjects; + const requestedTypes = new Set(_.keys(metadataWithSyncAll)); const finalMetadataPackage = { ...(categories && { categories: this.excludeDefaultMetadataObjects(categories, removeCategoryObjects) }), @@ -147,10 +148,27 @@ export class MetadataPayloadBuilder { categoryOptionCombos: this.excludeDefaultMetadataObjects(categoryOptionCombos, removeCategoryObjects), }), ...(visualizationsWithRows.length > 0 && { visualizations: visualizationsWithRows }), - organisationUnits: includeOrgUnitsObjectsAndReferences ? organisationUnits : undefined, - users: includeUsersObjectsAndReferences ? users : undefined, - userGroups: includeSharingSettingsObjectsAndReferences ? userGroups : undefined, - userRoles: includeSharingSettingsObjectsAndReferences ? userRoles : undefined, + + ...(organisationUnits && + (includeOrgUnitsObjectsAndReferences || requestedTypes.has("organisationUnits")) && { + organisationUnits, + }), + + ...(users && + (includeUsersObjectsAndReferences || requestedTypes.has("users")) && { + users, + }), + + ...(userGroups && + (includeSharingSettingsObjectsAndReferences || requestedTypes.has("userGroups")) && { + userGroups, + }), + + ...(userRoles && + (includeSharingSettingsObjectsAndReferences || requestedTypes.has("userRoles")) && { + userRoles, + }), + ...rest, }; diff --git a/src/domain/metadata/utils.ts b/src/domain/metadata/utils.ts index fc3e27878..de24cf324 100644 --- a/src/domain/metadata/utils.ts +++ b/src/domain/metadata/utils.ts @@ -7,7 +7,7 @@ import { NestedRules } from "./entities/MetadataExcludeIncludeRules"; const blacklistedProperties = ["access"]; const SHARING_SETTINGS_PROPERTIES = ["user", "userAccesses", "userGroupAccesses", "sharing"]; -const USER_PROPERTIES = ["createdBy", "lastUpdatedBy", "user"]; +const USER_PROPERTIES = ["createdBy", "lastUpdatedBy", "user", "users"]; const ORG_UNITS_PROPERTIES = ["organisationUnits"]; export function buildNestedRules(rules: string[][] = []): NestedRules {