29 lines
522 B
SQL
29 lines
522 B
SQL
-- name: IncrementPostStatsView :exec
|
|
WITH visitor AS (
|
|
INSERT INTO post_viewers (
|
|
post_id,
|
|
ip,
|
|
last_viewed_at
|
|
)
|
|
VALUES (
|
|
$1,
|
|
$2,
|
|
NOW()
|
|
)
|
|
ON CONFLICT (post_id, ip)
|
|
DO UPDATE
|
|
SET last_viewed_at = NOW()
|
|
WHERE post_viewers.last_viewed_at < NOW() - INTERVAL '30 minutes'
|
|
RETURNING post_id
|
|
)
|
|
INSERT INTO post_stats (
|
|
post_id,
|
|
view
|
|
)
|
|
SELECT
|
|
post_id,
|
|
1
|
|
FROM visitor
|
|
ON CONFLICT (post_id)
|
|
DO UPDATE
|
|
SET view = post_stats.view + 1; |