A visit is #1042, not 4cc216ca-dad3-4958-bb96-5f5a82022cf8
Every other thing in this product a person refers to already had a readable reference: a shop is chennai, a camera cam1, a customer V-42, a person their email. An audit of every list response found exactly one gap, and it was the row people look at most - the arrivals feed showed a visit as 36 hex characters. 012 argued no route takes a visit id so none was needed. That is true of routing and false of everything else: it is what the feed shows, what a support conversation quotes, and what somebody reading an API response judges the product by. Migration 014 mirrors the visitor scheme exactly - per client, so it discloses no platform-wide volume, and beside the uuid rather than instead of it. A stored counter is affordable on the busiest table because visits from one tenant are already serialised by the consumer's SetOrderMatters(true), so it adds no contention that was not already there. A derived reference was the alternative and does not work: several people through one door share occurred_at to the microsecond, which is the collision 004 exists to handle. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KGcjxF1cNLcuwc3DAPcnfj
This commit is contained in:
@@ -113,10 +113,15 @@ func (s *Store) RecordVisit(ctx context.Context, site ingest.Site,
|
||||
// visitor for a visit we already recorded.
|
||||
var visitID string
|
||||
err = tx.QueryRow(ctx, `
|
||||
WITH n AS (
|
||||
UPDATE clients SET visit_seq = visit_seq + 1
|
||||
WHERE id = $1 RETURNING visit_seq
|
||||
)
|
||||
INSERT INTO visits (client_id, site_id, source_event_id, occurred_at,
|
||||
camera_id, is_new_visitor, similarity, quality,
|
||||
attributes, image_key)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, COALESCE($9, '{}'::jsonb), $10)
|
||||
attributes, image_key, number)
|
||||
SELECT $1, $2, $3, $4, $5, $6, $7, $8, COALESCE($9, '{}'::jsonb), $10, n.visit_seq
|
||||
FROM n
|
||||
ON CONFLICT (client_id, source_event_id) DO NOTHING
|
||||
RETURNING id::text`,
|
||||
site.ClientID, site.SiteID, v.EventID, v.OccurredAt, v.CameraID,
|
||||
|
||||
Reference in New Issue
Block a user