You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Count messages in a room including messages in threads
41
+
defall_messages_count_for_room(room)
42
+
Message.joins("LEFT JOIN rooms threads ON messages.room_id = threads.id AND threads.type = 'Rooms::Thread'")
43
+
.joins("LEFT JOIN messages parent_messages ON threads.parent_message_id = parent_messages.id")
44
+
.where("messages.room_id = :room_id OR parent_messages.room_id = :room_id",room_id: room.id)
45
+
.active.distinct.count
46
+
end
47
+
40
48
# Get top talkers for a specific room
41
49
deftop_talkers_for_room(room,limit=10)
42
-
User.select("users.id, users.name, COUNT(messages.id) AS message_count, COALESCE(users.membership_started_at, users.created_at) as joined_at")
50
+
User.select("users.id, users.name, COUNT(DISTINCT messages.id) AS message_count, COALESCE(users.membership_started_at, users.created_at) as joined_at")
43
51
.joins("INNER JOIN messages ON messages.creator_id = users.id AND messages.active = true")
44
-
.where("messages.room_id = ?",room.id)
52
+
.joins("LEFT JOIN rooms threads ON messages.room_id = threads.id AND threads.type = 'Rooms::Thread'")
53
+
.joins("LEFT JOIN messages parent_messages ON threads.parent_message_id = parent_messages.id")
54
+
.where("messages.room_id = :room_id OR parent_messages.room_id = :room_id",room_id: room.id)
45
55
.where("users.active = true AND users.suspended_at IS NULL")
0 commit comments