Add proboctl catalog upsert, link, and describe commands
Operators previously had no way to curate the global tracker catalog beyond inspection and banner-scoped resets. Add three proboctl commands backed by small coredata helpers: - common-third-party upsert: create or update a vendor keyed by slug, with partial-merge so an unset flag never blanks an existing column. - common-tracker-pattern link/unlink: repoint catalog rows at a common third party (re-arming enrichment and remapping the uncategorised org trackers so the mapping worker re-resolves the vendor) or detach them. Unlinking skips enrichment and remap since there is no new vendor. - common-tracker-pattern set-description: write a description, mark the row enriched, and backfill linked org patterns lacking one. Signed-off-by: Émile Ré <emile@probo.com>
This commit is contained in:
@@ -835,6 +835,39 @@ ORDER BY pattern ASC
|
||||
return ids, nil
|
||||
}
|
||||
|
||||
// RelinkCommonThirdPartyByIDs repoints the given common tracker patterns
|
||||
// at a different common third party (or unlinks them when thirdPartyID is
|
||||
// nil). It only touches the catalog rows; callers re-arm enrichment and
|
||||
// remap the org-scoped tracker patterns separately. Returns the number of
|
||||
// rows updated.
|
||||
func (ps *CommonTrackerPatterns) RelinkCommonThirdPartyByIDs(
|
||||
ctx context.Context,
|
||||
tx pg.Tx,
|
||||
ids []gid.GID,
|
||||
thirdPartyID *gid.GID,
|
||||
) (int64, error) {
|
||||
q := `
|
||||
UPDATE common_tracker_patterns
|
||||
SET
|
||||
common_third_party_id = @third_party_id,
|
||||
updated_at = NOW()
|
||||
WHERE
|
||||
id = ANY(@ids)
|
||||
`
|
||||
|
||||
args := pgx.StrictNamedArgs{
|
||||
"ids": ids,
|
||||
"third_party_id": thirdPartyID,
|
||||
}
|
||||
|
||||
result, err := tx.Exec(ctx, q, args)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("cannot relink common tracker pattern third party: %w", err)
|
||||
}
|
||||
|
||||
return result.RowsAffected(), nil
|
||||
}
|
||||
|
||||
// RequestEnrichmentByIDs arms enrichment on the given common tracker
|
||||
// patterns by stamping enrichment_requested_at, which is the only column
|
||||
// the enrichment worker claims on. Already-enriched rows are re-processed
|
||||
|
||||
Reference in New Issue
Block a user