From 3cfb6b2133517cf6ef934710876b781272c167a9 Mon Sep 17 00:00:00 2001 From: justinlongdev <164496163+justinlongdev@users.noreply.github.com> Date: Mon, 25 Mar 2024 21:07:05 +0800 Subject: [PATCH] fix: get item latest with category url (#815) --- client/client.go | 2 +- server/rest.go | 28 ++++++++++++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/client/client.go b/client/client.go index 66c7d07f1..fdcf7cbdf 100644 --- a/client/client.go +++ b/client/client.go @@ -97,7 +97,7 @@ func (c *GorseClient) GetItemLatest(ctx context.Context, userid string, n, offse } func (c *GorseClient) GetItemLatestWithCategory(ctx context.Context, userid, category string, n, offset int) ([]Score, error) { - return request[[]Score, any](ctx, c, "GET", c.entryPoint+fmt.Sprintf("/api/latest?user-id=%s&category=%s&n=%d&offset=%d", userid, category, n, offset), nil) + return request[[]Score, any](ctx, c, "GET", c.entryPoint+fmt.Sprintf("/api/latest/%s?user-id=%s&n=%d&offset=%d", category, userid, n, offset), nil) } func (c *GorseClient) GetItemPopular(ctx context.Context, userid string, n, offset int) ([]Score, error) { diff --git a/server/rest.go b/server/rest.go index 4616df2bb..83b083336 100644 --- a/server/rest.go +++ b/server/rest.go @@ -594,24 +594,32 @@ func (s *RestServer) searchDocuments(collection, subset, category string, isItem } userId = request.QueryParameter("user-id") - // Get the sorted list - items, err := s.CacheClient.SearchDocuments(ctx, collection, subset, []string{category}, offset, offset+n) - if err != nil { - InternalServerError(response, err) - return - } - - // Remove read items + readItems := mapset.NewSet[string]() if userId != "" { feedback, err := s.DataClient.GetUserFeedback(ctx, userId, s.Config.Now()) if err != nil { InternalServerError(response, err) return } - readItems := mapset.NewSet[string]() for _, f := range feedback { readItems.Add(f.ItemId) } + } + + end := offset + n + if end > 0 && readItems.Cardinality() > 0 { + end += readItems.Cardinality() + } + + // Get the sorted list + items, err := s.CacheClient.SearchDocuments(ctx, collection, subset, []string{category}, offset, end) + if err != nil { + InternalServerError(response, err) + return + } + + // Remove read items + if userId != "" { prunedItems := make([]cache.Document, 0, len(items)) for _, item := range items { if !readItems.Contains(item.Id) { @@ -1088,7 +1096,7 @@ func (s *RestServer) sessionRecommend(request *restful.Request, response *restfu return } // add unseen items - //similarItems = s.FilterOutHiddenScores(response, similarItems, "") + // similarItems = s.FilterOutHiddenScores(response, similarItems, "") for _, item := range similarItems { if !excludeSet.Contains(item.Id) { candidates[item.Id] += item.Score