Guard LinkToCommon against overwriting existing catalog link
When an org third party already has a common_third_party_id set, LinkToCommon now skips the write instead of overwriting it with a different catalog ID. This prevents heuristic or agent false positives from corrupting a previous, more accurate association. Signed-off-by: Émile Ré <emile@probo.com>
This commit is contained in:
7
pkg/thirdparty/match.go
vendored
7
pkg/thirdparty/match.go
vendored
@@ -194,8 +194,9 @@ func stripCorporateSuffixes(lowerName string) string {
|
|||||||
// LinkToCommon writes common_third_party_id onto an org ThirdParty so
|
// LinkToCommon writes common_third_party_id onto an org ThirdParty so
|
||||||
// future matches against the same CommonThirdParty can short-circuit
|
// future matches against the same CommonThirdParty can short-circuit
|
||||||
// to the exact-link path in O(1). No-op when the field is already set
|
// to the exact-link path in O(1). No-op when the field is already set
|
||||||
// to commonID; otherwise writes the field via ThirdParty.Update and
|
// (to any value) — we never overwrite an existing catalog link because
|
||||||
// updates the receiver in place.
|
// a heuristic or agent false-positive must not corrupt a previous,
|
||||||
|
// possibly more accurate, association.
|
||||||
func LinkToCommon(
|
func LinkToCommon(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
tx pg.Tx,
|
tx pg.Tx,
|
||||||
@@ -203,7 +204,7 @@ func LinkToCommon(
|
|||||||
orgThirdParty *coredata.ThirdParty,
|
orgThirdParty *coredata.ThirdParty,
|
||||||
commonID gid.GID,
|
commonID gid.GID,
|
||||||
) error {
|
) error {
|
||||||
if orgThirdParty.CommonThirdPartyID != nil && *orgThirdParty.CommonThirdPartyID == commonID {
|
if orgThirdParty.CommonThirdPartyID != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user