diff --git a/server/claim/claim-revision/claim-revision.service.ts b/server/claim/claim-revision/claim-revision.service.ts index fc76763f3..39b5c7434 100644 --- a/server/claim/claim-revision/claim-revision.service.ts +++ b/server/claim/claim-revision/claim-revision.service.ts @@ -204,17 +204,15 @@ export class ClaimRevisionService { if (sources && Array.isArray(sources)) { for (let source of sources) { try { - if (typeof source === "string") { + const existingSources = await this.sourceService.getSourceByHref(source); + if (existingSources) { + this.sourceService.updateTargetId(existingSources._id, claimId) + } else { await this.sourceService.create({ href: source, targetId: claimId, targetModel: SourceTargetModel.Claim, }); - } else { - await this.sourceService.updateTargetId( - source._id, - claimId - ); } } catch (e) { this.logger.error(e); diff --git a/server/source/source.service.ts b/server/source/source.service.ts index 8b72fe2fe..4cdc5aece 100644 --- a/server/source/source.service.ts +++ b/server/source/source.service.ts @@ -63,6 +63,10 @@ export class SourceService { return this.SourceModel.find({ match }, { _id: 1, href: 1 }); } + getSourceByHref(href: string) { + return this.SourceModel.findOne({ href: { $eq: href } }).exec(); + } + getById(_id) { return this.SourceModel.findById(_id); }