def get_chat_messages_data(game_id: int, oldest_id: int, newest_id: int, newer_messages: bool): older_message = Message.get_or_none((Message.game == game_id) & (Message.id < oldest_id)) has_older_message = older_message is not None MESSAGE_LIMIT = 20 if newer_messages: messages = Message.select().where((Message.game == game_id) & (Message.id > newest_id)).order_by(-Message.id)\ .limit(MESSAGE_LIMIT).execute() else: messages = Message.select().where((Message.game == game_id) & (Message.id < oldest_id)).order_by(-Message.id)\ .limit(MESSAGE_LIMIT).execute() # Note: oldest_id and newest_id could be -1 when frontend has no messages at all if len(messages): # Needed for when newer_messages is False oldest_id_in_query = messages[0].id has_older_message = Message.get_or_none( (Message.game == game_id) & (Message.id < oldest_id_in_query)) has_older_message = has_older_message is not None reversed_messages = [ messages[len(messages) - i - 1] for i in range(len(messages)) ] return reversed_messages, has_older_message
def my_timeline(): user = get_session_user() assert user is not None messages = Message.select().where( Message.user == user ) return object_list('my_messages.html', messages, 'message_list')
def private_timeline(): # the private timeline exemplifies the use of a subquery -- we are asking for # messages where the person who created the message is someone the current # user is following. these messages are then ordered newest-first. user = get_session_user() assert user is not None messages = Message.select().where( Message.user << user.following() ) return object_list('private_messages.html', messages, 'message_list')
def show_db_message_table(): # creating HTML table from dict messages = {} query = Message.select().dicts() msg_id = 0 for row in query: messages[msg_id] = row msg_id += 1 df = pd.DataFrame(data=messages) df = df.fillna(' ').T resp = df.to_html() return resp
def receive_message(hug_token, after_msg_id: hug.types.number): token = Token.get(Token.token == hug_token) return Message.select().where(Message.token == token, Message.reply_to != None, Message.id > after_msg_id).dicts()
def public_timeline(): # simply display all messages, newest first messages = Message.select() return object_list('public_messages.html', messages, 'message_list')