From 497c0692cac49f1a0d78c89fe792e4ca1140549f Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 15 Feb 2025 16:00:01 +0800 Subject: [PATCH] :bug: Fix create duplicate relationship --- .idea/dataSources.local.xml | 2 +- .idea/workspace.xml | 15 ++++++++------- pkg/internal/services/relationships.go | 14 ++++++++++++++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/.idea/dataSources.local.xml b/.idea/dataSources.local.xml index 6e32d8b..7075a83 100644 --- a/.idea/dataSources.local.xml +++ b/.idea/dataSources.local.xml @@ -1,6 +1,6 @@ - + " diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 50e45d1..890ca3c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,9 +4,10 @@ - + + - + diff --git a/pkg/internal/services/relationships.go b/pkg/internal/services/relationships.go index 2c6fb10..66741cd 100644 --- a/pkg/internal/services/relationships.go +++ b/pkg/internal/services/relationships.go @@ -112,6 +112,20 @@ func NewFriend(userA models.Account, userB models.Account, skipPending ...bool) Status: models.RelationshipPending, } + var dupeCount int + if rel, err := GetRelationWithTwoNode(userA.ID, userB.ID, true); err == nil { + relA = rel + dupeCount++ + } + if rel, err := GetRelationWithTwoNode(userB.ID, userA.ID, true); err == nil { + relB = rel + dupeCount++ + } + + if dupeCount > 1 { + return relA, fmt.Errorf("unable to recreate a relationship with that user") + } + if len(skipPending) > 0 && skipPending[0] { relA.Status = models.RelationshipFriend relB.Status = models.RelationshipFriend