Add order parameter to MessageHistoryComponent and MonitorService

This commit is contained in:
Gabriel Luiz Freitas Almeida 2024-03-30 18:12:52 -03:00
commit a53c812716
4 changed files with 15 additions and 2 deletions

View file

@ -26,6 +26,12 @@ class MessageHistoryComponent(CustomComponent):
"info": "Session ID of the chat history.",
"input_types": ["Text"],
},
"order": {
"options": ["Ascending", "Descending"],
"display_name": "Order",
"info": "Order of the messages.",
"advanced": True,
},
}
def build(
@ -34,7 +40,9 @@ class MessageHistoryComponent(CustomComponent):
sender_name: Optional[str] = None,
session_id: Optional[str] = None,
n_messages: int = 5,
order: Optional[str] = "Descending",
) -> List[Record]:
order = "DESC" if order == "Descending" else "ASC"
if sender == "Machine and User":
sender = None
messages = get_messages(
@ -42,6 +50,7 @@ class MessageHistoryComponent(CustomComponent):
sender_name=sender_name,
session_id=session_id,
limit=n_messages,
order=order,
)
self.status = messages
return messages

View file

@ -12,6 +12,7 @@ def get_messages(
sender_name: Optional[str] = None,
session_id: Optional[str] = None,
order_by: Optional[str] = "timestamp",
order: Optional[str] = "DESC",
limit: Optional[int] = None,
):
"""
@ -34,6 +35,7 @@ def get_messages(
session_id=session_id,
order_by=order_by,
limit=limit,
order=order,
)
records: list[Record] = []

View file

@ -113,6 +113,7 @@ class MonitorService(Service):
sender_name: Optional[str] = None,
session_id: Optional[str] = None,
order_by: Optional[str] = "timestamp",
order: Optional[str] = "DESC",
limit: Optional[int] = None,
):
query = "SELECT sender_name, sender, session_id, message, artifacts, timestamp FROM messages"
@ -128,7 +129,8 @@ class MonitorService(Service):
query += " WHERE " + " AND ".join(conditions)
if order_by:
query += f" ORDER BY {order_by}"
# Make sure the order is from newest to oldest
query += f" ORDER BY {order_by} {order.upper()}"
if limit is not None:
query += f" LIMIT {limit}"

View file

@ -86,7 +86,7 @@ def add_row_to_table(
validated_data = model(**monitor_data)
# Extract data for the insert statement
validated_dict = validated_data.model_dump(exclude_unset=True)
validated_dict = validated_data.model_dump()
keys = [key for key in validated_dict.keys() if key != INDEX_KEY]
columns = ", ".join(keys)