Skip to content

Commit

Permalink
Enhance chat retrieval and update functionality in Xun
Browse files Browse the repository at this point in the history
- Added 'updated_at' field to the chat selection query to include the last modified timestamp in chat responses.
- Updated the ordering of chat results to prioritize 'updated_at' over 'created_at', improving the relevance of displayed chats.
- Modified the handling of chat creation timestamps to fall back on 'created_at' if 'updated_at' is not available, ensuring consistent date representation.
- Implemented an update mechanism for the 'updated_at' field when saving chat history, enhancing data integrity and tracking.

These changes improve the chat management capabilities of the Neo API assistant, ensuring more accurate and relevant chat data retrieval.
  • Loading branch information
trheyi committed Jan 22, 2025
1 parent 1404c54 commit 979d27b
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions neo/store/xun.go
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ func (conv *Xun) GetChats(sid string, filter ChatFilter) (*ChatGroupResponse, er

// Build base query
qb := conv.newQueryChat().
Select("chat_id", "title", "created_at").
Select("chat_id", "title", "created_at", "updated_at").
Where("sid", userID).
Where("chat_id", "!=", "")

Expand All @@ -358,7 +358,9 @@ func (conv *Xun) GetChats(sid string, filter ChatFilter) (*ChatGroupResponse, er
lastPage := int(math.Ceil(float64(total) / float64(filter.PageSize)))

// Get paginated results
rows, err := qb.OrderBy("created_at", filter.Order).
rows, err := qb.
OrderBy("updated_at", filter.Order).
OrderBy("created_at", filter.Order).
Offset(offset).
Limit(filter.PageSize).
Get()
Expand Down Expand Up @@ -392,8 +394,13 @@ func (conv *Xun) GetChats(sid string, filter ChatFilter) (*ChatGroupResponse, er
"title": row.Get("title"),
}

var dbDatetime = row.Get("updated_at")
if dbDatetime == nil {
dbDatetime = row.Get("created_at")
}

var createdAt time.Time
switch v := row.Get("created_at").(type) {
switch v := dbDatetime.(type) {
case time.Time:
createdAt = v
case string:
Expand Down Expand Up @@ -608,6 +615,15 @@ func (conv *Xun) SaveHistory(sid string, messages []map[string]interface{}, cid
return err
}

// Update Chat updated_at
_, err = conv.newQueryChat().
Where("chat_id", cid).
Where("sid", userID).
Update(map[string]interface{}{"updated_at": now})
if err != nil {
return err
}

return nil
}

Expand Down

0 comments on commit 979d27b

Please sign in to comment.