def get_top_members_per_num_characters(self, top_n=20): query = Member.select(Member, fn.SUM(fn.LENGTH(Message.content)).alias('length')) \ .join(Message, JOIN.RIGHT_OUTER) \ .group_by(Member) \ .order_by(SQL('length').desc()) \ .limit(top_n) return list(query)
def get_top_members_per_message_count(self, top_n=9): query = Member.select(Member, fn.Count(Message.id).alias('count')) \ .join(Message, JOIN.RIGHT_OUTER) \ .group_by(Member) \ .order_by(SQL('count').desc()) \ .limit(top_n) return list(query)
def get_member(self, member_id): """Gets a member from the database. Args: member_id: Unique discord id for that member. Returns: A member record. """ return Member.select().where(Member.member_id == member_id).first()
def member_exists(self, member_id): """Checks whether the chosen member is present in the database. Args: member_id: Unique discord id for that member. Returns: Whether there is a member with that id in the database. """ query = Member.select().where(Member.member_id == member_id) return query.exists()
def get_top_members_per_message_count(self, top_n=9): """Gets the most active members sorted by number of messages posted. Args: top_n: The maximum number of members to return. Returns: A list of the top n most active members. """ query = Member.select(Member, fn.Count(Message.id).alias('count')) \ .join(Message, JOIN.RIGHT_OUTER) \ .group_by(Member) \ .order_by(SQL('count').desc()) \ .limit(top_n) return list(query)
def get_top_members_per_num_characters(self, top_n=20): """Gets the most active members sorted by the sum of the number of characters in the messages they posted. Args: top_n: The maximum number of members to return. Returns: A list of the top n most active members. """ query = Member.select(Member, fn.SUM(fn.LENGTH(Message.content)).alias('length')) \ .join(Message, JOIN.RIGHT_OUTER) \ .group_by(Member) \ .order_by(SQL('length').desc()) \ .limit(top_n) return list(query)