-- name: GetAnalyticsCache :one SELECT result FROM analytics_cache WHERE user_id = $1 AND platform = $2 AND tool_name = $3 AND time_range_hash = $4 AND expires_at > now(); -- name: UpsertAnalyticsCache :exec INSERT INTO analytics_cache (user_id, platform, tool_name, time_range_hash, result, expires_at) VALUES ($1, $2, $3, $4, $5, $6) ON CONFLICT (user_id, platform, tool_name, time_range_hash) DO UPDATE SET result = EXCLUDED.result, expires_at = EXCLUDED.expires_at, computed_at = now(); -- name: DeleteAnalyticsCache :exec DELETE FROM analytics_cache WHERE user_id = $1 AND platform = $2 AND tool_name = $3 AND time_range_hash = $4; -- name: PruneAnalyticsCache :exec DELETE FROM analytics_cache WHERE expires_at <= now();