Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
    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()
Esempio n. 4
0
    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()
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)