Skip to content

Commit 188c4b2

Browse files
committed
ISSUE #4641 take revId into account when we calculate external Ids
1 parent 3b7e1e6 commit 188c4b2

File tree

2 files changed

+16
-10
lines changed
  • backend/src

2 files changed

+16
-10
lines changed

backend/src/v4/models/group.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ function getObjectsArray(model, branch, revId, groupData, convertSharedIDsToStri
154154

155155
if(shared_ids) {
156156

157-
const res = await sharedIdsToExternalIds(account, container, shared_ids.map(utils.stringToUUID));
157+
const res = await sharedIdsToExternalIds(account, container, conRevId, shared_ids.map(utils.stringToUUID));
158158

159159
if(res) {
160160
return {account, model: container, [res.key]: res.value};
@@ -184,10 +184,9 @@ function getObjectsArray(model, branch, revId, groupData, convertSharedIDsToStri
184184
/**
185185
* Converts all shared IDs to external ids if applicable and return the objects array.
186186
*/
187-
function getObjectsArrayAsExternalIds(data) {
187+
function getObjectsArrayAsExternalIds(account, model, branch, rId, data) {
188188
return Promise.all(data.objects.map(async (containerEntry) => {
189-
const {account, model} = containerEntry;
190-
if (!(account && model)) {
189+
if (!(containerEntry.account && containerEntry.model)) {
191190
return Promise.reject(responseCodes.INVALID_GROUP);
192191
}
193192

@@ -205,9 +204,16 @@ function getObjectsArrayAsExternalIds(data) {
205204
return data;
206205
}
207206

207+
const {_id: conRevId} = await getHistory(
208+
account, containerEntry.model,
209+
model === containerEntry.model ? branch : "master",
210+
model === containerEntry.model && !branch ? rId : undefined,
211+
{_id: 1}
212+
);
213+
208214
const sharedIds = containerEntry.shared_ids.map(utils.stringToUUID);
209215

210-
const externalIds = await sharedIdsToExternalIds(account, model, sharedIds);
216+
const externalIds = await sharedIdsToExternalIds(containerEntry.account, containerEntry.model, conRevId, sharedIds);
211217

212218
if(externalIds) {
213219
return {account, model, [externalIds.key] : externalIds.values};
@@ -224,7 +230,7 @@ const Group = {};
224230
Group.create = async function (account, model, branch = "master", rid = null, sessionId, creator = "", data) {
225231
const newGroup = {};
226232

227-
const convertedObjects = await getObjectsArrayAsExternalIds(data, false);
233+
const convertedObjects = await getObjectsArrayAsExternalIds(account, model, branch, rid, data, false);
228234

229235
let typeCorrect = (!data.objects !== !data.rules);
230236

@@ -296,7 +302,7 @@ Group.findByUID = async function (account, model, branch, revId, uid, showIfcGui
296302
}
297303

298304
if (convertToIfcGuids) {
299-
foundGroup.objects = await getObjectsArrayAsExternalIds(foundGroup);
305+
foundGroup.objects = await getObjectsArrayAsExternalIds(account, mode, branch, revId, foundGroup);
300306
} else {
301307
try {
302308
foundGroup.objects = await getObjectIds(account, model, branch, revId, foundGroup, showIfcGuids);
@@ -367,7 +373,7 @@ Group.getList = async function (account, model, branch, revId, ids, queryParams,
367373
Group.update = async function (account, model, branch = "master", revId = null, sessionId, user = "", groupId, data) {
368374
const group = await Group.findByUID(account, model, branch, revId, groupId);
369375

370-
const convertedObjects = await getObjectsArrayAsExternalIds(data, false);
376+
const convertedObjects = await getObjectsArrayAsExternalIds(account, model, branch, revId, data, false);
371377
const toUpdate = {};
372378
const toUnset = {};
373379

backend/src/v5/processors/teamspaces/projects/models/commons/scene.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ Scene.getExternalIdsFromMetadata = (metadata, wantedType) => {
8383
return undefined;
8484
};
8585

86-
Scene.sharedIdsToExternalIds = async (teamspace, container, sharedIds) => {
86+
Scene.sharedIdsToExternalIds = async (teamspace, container, revId, sharedIds) => {
8787
const externalIdKeys = Object.values(idTypesToKeys).flat();
88-
const query = { parents: { $in: sharedIds }, 'metadata.key': { $in: externalIdKeys } };
88+
const query = { parents: { $in: sharedIds }, 'metadata.key': { $in: externalIdKeys }, rev_id: revId };
8989
const projection = { metadata: { $elemMatch: { $or: externalIdKeys.map((n) => ({ key: n })) } } };
9090
const metadata = await getMetadataByQuery(teamspace, container, query, projection);
9191

0 commit comments

Comments
 (0)