Backfill tracker description from common catalog

When the mapping worker resolves a CommonTrackerPattern, propagate
its description back to the org TrackerPattern if the latter is
still empty. This ensures agent-produced descriptions reach the
user-facing tracker instead of staying only in the catalog.

The Update method now covers all mutable TrackerPattern columns
including common_tracker_pattern_id and third_party_id, replacing
the removed UpdateMapping method.

Signed-off-by: Émile Ré <emile@probo.com>
This commit is contained in:
Émile Ré
2026-05-28 21:59:02 +02:00
parent ed93301a1f
commit 979486020e
2 changed files with 26 additions and 47 deletions

View File

@@ -159,7 +159,19 @@ func (h *trackerMappingHandler) Process(ctx context.Context, tp coredata.Tracker
} }
if commonPatternID != nil || thirdPartyID != nil { if commonPatternID != nil || thirdPartyID != nil {
if err := tp.UpdateMapping(ctx, tx, commonPatternID, thirdPartyID); err != nil { tp.CommonTrackerPatternID = commonPatternID
tp.ThirdPartyID = thirdPartyID
tp.UpdatedAt = time.Now()
if tp.Description == "" && commonPatternID != nil {
var commonPattern coredata.CommonTrackerPattern
if err := commonPattern.LoadByID(ctx, tx, *commonPatternID); err == nil && commonPattern.Description != "" {
tp.Description = commonPattern.Description
}
}
scope := coredata.NewScopeFromObjectID(tp.ID)
if err := tp.Update(ctx, tx, scope); err != nil {
return fmt.Errorf("cannot update tracker pattern mapping: %w", err) return fmt.Errorf("cannot update tracker pattern mapping: %w", err)
} }

View File

@@ -505,6 +505,8 @@ func (tp *TrackerPattern) Update(
q := ` q := `
UPDATE tracker_patterns UPDATE tracker_patterns
SET SET
common_tracker_pattern_id = @common_tracker_pattern_id,
third_party_id = @third_party_id,
cookie_category_id = @cookie_category_id, cookie_category_id = @cookie_category_id,
display_name = @display_name, display_name = @display_name,
max_age_seconds = @max_age_seconds, max_age_seconds = @max_age_seconds,
@@ -521,15 +523,17 @@ WHERE
q = fmt.Sprintf(q, scope.SQLFragment()) q = fmt.Sprintf(q, scope.SQLFragment())
args := pgx.StrictNamedArgs{ args := pgx.StrictNamedArgs{
"id": tp.ID, "id": tp.ID,
"cookie_category_id": tp.CookieCategoryID, "common_tracker_pattern_id": tp.CommonTrackerPatternID,
"display_name": tp.DisplayName, "third_party_id": tp.ThirdPartyID,
"max_age_seconds": tp.MaxAgeSeconds, "cookie_category_id": tp.CookieCategoryID,
"description": tp.Description, "display_name": tp.DisplayName,
"excluded": tp.Excluded, "max_age_seconds": tp.MaxAgeSeconds,
"source": tp.Source, "description": tp.Description,
"last_matched_at": tp.LastMatchedAt, "excluded": tp.Excluded,
"updated_at": tp.UpdatedAt, "source": tp.Source,
"last_matched_at": tp.LastMatchedAt,
"updated_at": tp.UpdatedAt,
} }
maps.Copy(args, scope.SQLArguments()) maps.Copy(args, scope.SQLArguments())
@@ -1106,40 +1110,3 @@ WHERE id = @id
return nil return nil
} }
func (tp *TrackerPattern) UpdateMapping(
ctx context.Context,
tx pg.Tx,
commonTrackerPatternID *gid.GID,
thirdPartyID *gid.GID,
) error {
q := `
UPDATE tracker_patterns
SET
common_tracker_pattern_id = @common_tracker_pattern_id,
third_party_id = @third_party_id,
mapping_requested_at = NULL,
updated_at = @updated_at
WHERE id = @id
`
now := time.Now()
args := pgx.StrictNamedArgs{
"id": tp.ID,
"common_tracker_pattern_id": commonTrackerPatternID,
"third_party_id": thirdPartyID,
"updated_at": now,
}
_, err := tx.Exec(ctx, q, args)
if err != nil {
return fmt.Errorf("cannot update tracker pattern mapping: %w", err)
}
tp.CommonTrackerPatternID = commonTrackerPatternID
tp.ThirdPartyID = thirdPartyID
tp.MappingRequestedAt = nil
tp.UpdatedAt = now
return nil
}