배지 및 비공개 커뮤니티

기존 배지 쿼리를 살펴보고 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 테이블을 대상으로 하는 몇 가지 쿼리를 복제하는 데 사용할 수 있을 것입니다.

4개의 좋아요