22 lines
890 B
SQL
22 lines
890 B
SQL
-- name: InsertContextualLike :exec
|
|
INSERT INTO contextual_likes (user_id, track_id, session_vector, session_id)
|
|
VALUES ($1, $2, $3, $4);
|
|
|
|
-- name: SoftDeleteContextualLikesForUserTrack :exec
|
|
-- Marks all currently-active rows for (user, track) as deleted. Idempotent —
|
|
-- already-deleted rows aren't re-touched.
|
|
UPDATE contextual_likes
|
|
SET deleted_at = now()
|
|
WHERE user_id = $1 AND track_id = $2 AND deleted_at IS NULL;
|
|
|
|
-- name: ListActiveContextualLikesForUser :many
|
|
-- Returns all the user's active (non-soft-deleted) contextual_likes with
|
|
-- non-null vectors. Cardinality is bounded by the user's actual like-while-
|
|
-- playing history — typically tens to low hundreds. Used by the engine to
|
|
-- compute contextual_match_score for the candidate pool.
|
|
SELECT track_id, session_vector
|
|
FROM contextual_likes
|
|
WHERE user_id = $1
|
|
AND deleted_at IS NULL
|
|
AND session_vector IS NOT NULL;
|