我应该如何过滤被阻止的用户内容?

时间:2019-02-11 13:21:32

标签: elasticsearch

我创建了一个小型社交网站,其中包含用户生成的内容。如果用户不喜欢自己发布的内容,他们可以选择互相阻止。

所以我使用的是postgresql,我有三个简单的表。

Table User
id (pk)  | user_name
1        | a
2        | b
3        | c

Table Post
id (pk)  | user_id (fk) | content
1        | 1            | s
2        | 3            | a
3        | 2            | m
4        | 2            | p

Table Block
id (pk) | blocker_id (fk)  | blocked_id (fk)
1       | 1                | 2

点击搜索按钮时的期望值:

  • 由于user2被阻止,user1应该看到自己的帖子和user3的帖子。
  • user2应该看到自己的帖子和user3的帖子,因为她被user1阻止了。
  • user3应该看到他自己的帖子,user2和user1的帖子。

Sql

我编写了一个sql,但是无法编写弹性搜索查询。这是sql语句:

select *
from Post p
where
not exists (select id
from Block
where ((Block.blocked_id = p.user_id) and (Block.blocker_id = @current_user_id)) or ((Block.blocked_id = @current_user_id) and (Block.blocker_id = p.user_id))

我该怎么办?

0 个答案:

没有答案