From a9dbb1020dbe37b1ee9e29eb34eafa95d2d673a1 Mon Sep 17 00:00:00 2001 From: LuizFNJ Date: Thu, 23 Jan 2025 04:02:50 +0100 Subject: [PATCH 1/2] Fixing duplicate sources bug when creating claim --- .../claim/claim-revision/claim-revision.service.ts | 12 ++++++------ server/source/source.service.ts | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/server/claim/claim-revision/claim-revision.service.ts b/server/claim/claim-revision/claim-revision.service.ts index fc76763f3..2b8576811 100644 --- a/server/claim/claim-revision/claim-revision.service.ts +++ b/server/claim/claim-revision/claim-revision.service.ts @@ -204,17 +204,17 @@ export class ClaimRevisionService { if (sources && Array.isArray(sources)) { for (let source of sources) { try { - if (typeof source === "string") { + const existingSource = await this.sourceService.findHref(source); + if (existingSource && existingSource.length > 0) { + for (let source of existingSource) { + await this.sourceService.updateTargetId(source._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..a92734f67 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 }); } + findHref(href: string) { + return this.SourceModel.find({ href: { $eq: href } }).exec(); + } + getById(_id) { return this.SourceModel.findById(_id); } From 821274667a7134a32dbbdd4af8b2bde22cca5da8 Mon Sep 17 00:00:00 2001 From: LuizFNJ Date: Thu, 23 Jan 2025 16:01:30 +0100 Subject: [PATCH 2/2] refactor code --- server/claim/claim-revision/claim-revision.service.ts | 8 +++----- server/source/source.service.ts | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/server/claim/claim-revision/claim-revision.service.ts b/server/claim/claim-revision/claim-revision.service.ts index 2b8576811..39b5c7434 100644 --- a/server/claim/claim-revision/claim-revision.service.ts +++ b/server/claim/claim-revision/claim-revision.service.ts @@ -204,11 +204,9 @@ export class ClaimRevisionService { if (sources && Array.isArray(sources)) { for (let source of sources) { try { - const existingSource = await this.sourceService.findHref(source); - if (existingSource && existingSource.length > 0) { - for (let source of existingSource) { - await this.sourceService.updateTargetId(source._id, claimId); - } + const existingSources = await this.sourceService.getSourceByHref(source); + if (existingSources) { + this.sourceService.updateTargetId(existingSources._id, claimId) } else { await this.sourceService.create({ href: source, diff --git a/server/source/source.service.ts b/server/source/source.service.ts index a92734f67..4cdc5aece 100644 --- a/server/source/source.service.ts +++ b/server/source/source.service.ts @@ -63,8 +63,8 @@ export class SourceService { return this.SourceModel.find({ match }, { _id: 1, href: 1 }); } - findHref(href: string) { - return this.SourceModel.find({ href: { $eq: href } }).exec(); + getSourceByHref(href: string) { + return this.SourceModel.findOne({ href: { $eq: href } }).exec(); } getById(_id) {