Skip to content

Commit 7ecc5d1

Browse files
authored
Merge pull request #289 from tr1ten/feat/concurrent-rel-edit
Fix(BB-538): Support concurrent relationships edit workflow
2 parents 9a657c4 + c5f7795 commit 7ecc5d1

2 files changed

Lines changed: 11 additions & 13 deletions

File tree

src/func/relationship.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ import type {
2424
} from './types';
2525
import {
2626
createNewSetWithItems,
27-
getAddedItems,
28-
getRemovedItems,
2927
removeItemsFromSet
3028
} from './set';
3129
import {promiseProps} from '../util';
@@ -141,13 +139,10 @@ export function updateRelationshipSets(
141139
obj.attributeSetId === other.attributeSetId;
142140
}
143141

144-
const oldSetItems =
145-
oldSet ? oldSet.related('relationships').toJSON() : [];
146-
147-
const allAddedItems =
148-
getAddedItems(oldSetItems, newSetItems, comparisonFunc);
149-
const allRemovedItems =
150-
getRemovedItems(oldSetItems, newSetItems, comparisonFunc);
142+
const allAddedItems:any[] = newSetItems.filter((rel:any) => rel.isAdded)
143+
.map((rel) => _.omit(rel, ['isRemoved', 'isAdded']));
144+
const allRemovedItems:any[] = newSetItems.filter((rel:any) => rel.isRemoved)
145+
.map((rel) => _.omit(rel, ['isRemoved', 'isAdded']));
151146

152147

153148
if (_.isEmpty(allAddedItems) && _.isEmpty(allRemovedItems)) {

test/func/relationship.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ describe('updateRelationshipSet', () => {
186186

187187
const result = await bookshelf.transaction(async (trx) => {
188188
const sets = await updateRelationshipSets(
189-
bookbrainzData, trx, null, [relationshipData]
189+
bookbrainzData, trx, null, [{...relationshipData, isAdded: true}]
190190
);
191191

192192
return promiseProps(
@@ -213,7 +213,7 @@ describe('updateRelationshipSet', () => {
213213
const firstResult = await bookshelf.transaction(async (trx) => {
214214
const sets = await updateRelationshipSets(
215215
bookbrainzData, trx, null,
216-
[firstRelationshipData, secondRelationshipData]
216+
[{...firstRelationshipData, isAdded: true}, {...secondRelationshipData, isAdded: true}]
217217
);
218218

219219
const updatedEntitiesPromise = Promise.all(
@@ -246,8 +246,11 @@ describe('updateRelationshipSet', () => {
246246
.map((relationship) =>
247247
_.pick(relationship, ['typeId', 'sourceBbid', 'targetBbid', 'attributeSetId']));
248248

249+
const firstRel = firstSetRelationships[1];
250+
firstSetRelationships.push({...firstRel, isRemoved: true});
249251
firstSetRelationships[1].targetBbid = dBBID;
250-
const thirdRelationshipData = firstSetRelationships[1];
252+
firstSetRelationships[1].isAdded = true;
253+
const thirdRelationshipData = _.omit(firstSetRelationships[1], 'isAdded');
251254

252255
const result = await bookshelf.transaction(async (trx) => {
253256
const sets = await updateRelationshipSets(
@@ -284,7 +287,7 @@ describe('updateRelationshipSet', () => {
284287
const firstResult = await bookshelf.transaction(async (trx) => {
285288
const sets = await updateRelationshipSets(
286289
bookbrainzData, trx, null,
287-
[firstRelationshipData, secondRelationshipData]
290+
[{...firstRelationshipData, isAdded: true}, {isAdded: true, ...secondRelationshipData}]
288291
);
289292

290293
const updatedEntitiesPromise = Promise.all(

0 commit comments

Comments
 (0)