기존 배지 쿼리를 살펴보고 badge_posts 테이블의 게시물을 대상으로 하는 쿼리가 어떤 것인지, 또는 보호 카테고리에서 게시물을 제외하는 다른 방법이 있는지 파악하려고 했습니다.
다음 배지들은 특정 게시물을 쿼리하며, 비공개 카테고리에서의 활동으로는 부여되지 않습니다:
- Editor
- First Flag
- First Like
- First Link
- First Quote
- First Share
- First Emoji
- First Mention
- First Onebox
- First Reply By Email
- Reader
- Wiki Editor
- Great Share
- Good Share
- Helpdesk
- Nice Share
- Welcome
- Famous Link
- Great Reply
- Great Topic
- Good Reply
- Good Topic
- Hot Link
- Nice Reply
- Nice Topic
- Popular Link
다음 배지들은 특정 게시물을 쿼리하지 않으며, 비공개 카테고리에서의 활동으로 부여될 수 있습니다:
- Licensed
- Autobiographer
- Certified
- New User of the Month
- Read Guidelines
- Admired
- Champion
- Crazy in Love
- Devotee
- Empathetic
- Aficionado
- Anniversary
- Campaigner
- Gives Back
- Higher Love
- Respected
- Appreciated
- Enthusiast
- Out of Love
- Promoter
- Thank You
- Leader
- Regular
- Basic
- Member
- Staff
- Profile Picture
이와 유사한 내용은 이미 Appreciated(20개 게시물에 1개 좋아요)와 Respected(100개 게시물에 2개 좋아요) 배지로 커버되고 있습니다. 이러한 쿼리의 몇 가지 변형이 추가될 수 있습니다. 예를 들어, 20개 게시물에 10개 좋아요를 주는 방식입니다. 슈퍼 좋아요를 받은 토픽에 대해 부여되는 배지도 좋은 아이디어일 수 있습니다 - 이는 Great Topics 배지와 동등한 역할을 하게 됩니다. 예를 들어, 사용자가 10개의 좋아요를 받은 10개의 토픽을 생성했을 때 부여될 수 있습니다.
게시물 링크가 없는 단일 게시물 또는 토픽에 대한 활동으로 부여되는 배지를 추가하는 것이 의미가 있을지 확신하지 못합니다. 예를 들어, 다음 SQL을 사용하여 대체 First Like 배지를 만들 수 있습니다:
SELECT pa1.user_id, pa1.created_at granted_at
FROM (
SELECT pa.user_id, min(pa.id) id
FROM post_actions pa
JOIN posts p on p.id = pa.post_id
WHERE post_action_type_id = 2
GROUP BY pa.user_id
) x
JOIN post_actions pa1 on pa1.id = x.id
이 쿼리가 작동하려면 “When a user acts on a post” 쿼리 대신 “Update daily” 트리거를 사용해야 합니다. 배지 페이지에서는 배지를 받은 사용자들과 배지가 부여된 시간이 함께 표시됩니다. 배지가 부여된 게시물에 대한 링크는 제공되지 않습니다:
이러한 접근 방식은 주로 보호 카테고리가 있는 사이트에서 의미가 있을까요? 의미가 있다면, 현재 badge_posts 테이블을 대상으로 하는 몇 가지 쿼리를 복제하는 데 사용할 수 있을 것입니다.
