From 78ef37a574edc808cc2b1704217648bd1a2818b9 Mon Sep 17 00:00:00 2001 From: Peter Nemere Date: Tue, 3 Oct 2023 20:12:43 +1000 Subject: [PATCH] Dont duplicate expression module references in migration tool --- .../v3-importer/expressionsDB.go | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/internal/cmd-line-tools/v3-importer/expressionsDB.go b/internal/cmd-line-tools/v3-importer/expressionsDB.go index 110f7cda..008845d9 100644 --- a/internal/cmd-line-tools/v3-importer/expressionsDB.go +++ b/internal/cmd-line-tools/v3-importer/expressionsDB.go @@ -142,9 +142,24 @@ func migrateExpressionsDBExpressions(src *mongo.Database, dest *mongo.Database, tags = []string{} } + // Added duplicate module checks because it appeared there's a bug in data, but turns out this importer was appending the list twice! + // Left the checking code just in case but it shouldn't happen... refs := []*protos.ModuleReference{} + existingRefs := map[string]bool{} + existingRefModules := map[string]bool{} if expr.ModuleReferences != nil { for _, ref := range expr.ModuleReferences { + refstr := ref.ModuleID + "_" + ref.Version + if _, exists := existingRefs[refstr]; exists { + fmt.Printf(" IGNORING duplicate module+version reference: %v on expression %v\n", refstr, expr.ID) + continue + } + + if _, exists := existingRefModules[ref.ModuleID]; exists { + fmt.Printf(" IGNORING duplicate module reference: %v on expression %v\n", ref.ModuleID, expr.ID) + continue + } + ver, err := semanticversion.SemanticVersionFromString(ref.Version) if err != nil { return err @@ -154,6 +169,8 @@ func migrateExpressionsDBExpressions(src *mongo.Database, dest *mongo.Database, ModuleId: ref.ModuleID, Version: ver, }) + existingRefs[refstr] = true + existingRefModules[ref.ModuleID] = true } } @@ -188,18 +205,6 @@ func migrateExpressionsDBExpressions(src *mongo.Database, dest *mongo.Database, } } - for _, modRef := range expr.ModuleReferences { - ver, err := semanticversion.SemanticVersionFromString(modRef.Version) - if err != nil { - return err - } - - destExpr.ModuleReferences = append(destExpr.ModuleReferences, &protos.ModuleReference{ - ModuleId: modRef.ModuleID, - Version: ver, - }) - } - // TODO: zenodo destExprs = append(destExprs, destExpr)