Skip to content

Commit

Permalink
fix: correct the totalCount value returned by some list API
Browse files Browse the repository at this point in the history
  • Loading branch information
dayuy committed Jan 8, 2024
1 parent 5b76328 commit 71ceeba
Show file tree
Hide file tree
Showing 10 changed files with 62 additions and 172 deletions.
15 changes: 2 additions & 13 deletions apiserver/pkg/application/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -308,22 +308,11 @@ func ListApplicationMeatadatas(ctx context.Context, c dynamic.Interface, input g
filtered = append(filtered, m)
}
totalCount := len(filtered)

end := page * pageSize
if end > totalCount {
end = totalCount
}
start := (page - 1) * pageSize
if start < totalCount {
filtered = filtered[start:end]
} else {
filtered = []generated.PageNode{}
}

start, end := common.PagePosition(page, pageSize, totalCount)
return &generated.PaginatedResult{
TotalCount: totalCount,
HasNextPage: end < totalCount,
Nodes: filtered,
Nodes: filtered[start:end],
Page: &page,
PageSize: &pageSize,
}, nil
Expand Down
23 changes: 23 additions & 0 deletions apiserver/pkg/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,3 +198,26 @@ func SetCreator(ctx context.Context, common *v1alpha1.CommonSpec) {
currentUser, _ := ctx.Value(auth.UserNameContextKey).(string)
common.Creator = currentUser
}

func PagePosition(page, size, total int) (int, int) {
// if pageSize is -1 which means unlimited pageSize,return all
if size == UnlimitedPageSize {
page = 1
size = total
}
if page <= 0 {
page = 1
}
if size <= 0 {
size = 10
}
start := (page - 1) * size
if start > total {
start = total
}
end := page * size
if end > total {
end = total
}
return start, end
}
13 changes: 2 additions & 11 deletions apiserver/pkg/dataset/dataset.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,20 +159,11 @@ func ListDatasets(ctx context.Context, c dynamic.Interface, input *generated.Lis
result = append(result, uu)
}
total := len(result)
end := page * size
if end > total {
end = total
}
start := (page - 1) * size
if start < total {
result = result[start:end]
} else {
result = make([]generated.PageNode, 0)
}
start, end := common.PagePosition(page, size, total)
return &generated.PaginatedResult{
TotalCount: total,
HasNextPage: end < total,
Nodes: result,
Nodes: result[start:end],
Page: &page,
PageSize: &size,
}, nil
Expand Down
25 changes: 6 additions & 19 deletions apiserver/pkg/datasource/datasource.go
Original file line number Diff line number Diff line change
Expand Up @@ -302,34 +302,21 @@ func ListDatasources(ctx context.Context, c dynamic.Interface, input generated.L
return datasList.Items[i].GetCreationTimestamp().After(datasList.Items[j].GetCreationTimestamp().Time)
})

totalCount := len(datasList.Items)

result := make([]generated.PageNode, 0, pageSize)
result := make([]generated.PageNode, 0, len(datasList.Items))
for _, u := range datasList.Items {
m := datasource2model(&u)
// filter based on `keyword`
if keyword != "" {
if !strings.Contains(m.Name, keyword) && !strings.Contains(*m.DisplayName, keyword) {
continue
}
if keyword != "" && !strings.Contains(m.Name, keyword) && !strings.Contains(*m.DisplayName, keyword) {
continue
}
result = append(result, m)

// break if page size matches
if len(result) == pageSize {
break
}
}

end := page * pageSize
if end > totalCount {
end = totalCount
}

totalCount := len(result)
start, end := common.PagePosition(page, pageSize, totalCount)
return &generated.PaginatedResult{
TotalCount: totalCount,
HasNextPage: end < totalCount,
Nodes: result,
Nodes: result[start:end],
}, nil
}

Expand Down
38 changes: 7 additions & 31 deletions apiserver/pkg/embedder/embedder.go
Original file line number Diff line number Diff line change
Expand Up @@ -308,45 +308,21 @@ func ListEmbedders(ctx context.Context, c dynamic.Interface, input generated.Lis
return us.Items[i].GetCreationTimestamp().After(us.Items[j].GetCreationTimestamp().Time)
})

totalCount := len(us.Items)

// if pageSize is -1 which means unlimited pagesize,return all
if pageSize == common.UnlimitedPageSize {
page = 1
pageSize = totalCount
}

result := make([]generated.PageNode, 0, pageSize)
pageStart := (page - 1) * pageSize
for index, u := range us.Items {
// skip if smaller than the start index
if index < pageStart {
continue
}
result := make([]generated.PageNode, 0, len(us.Items))
for _, u := range us.Items {
m := Embedder2model(ctx, c, &u)
// filter based on `keyword`
if keyword != "" {
if !strings.Contains(m.Name, keyword) && !strings.Contains(*m.DisplayName, keyword) {
continue
}
if keyword != "" && !strings.Contains(m.Name, keyword) && !strings.Contains(*m.DisplayName, keyword) {
continue
}
result = append(result, opts.ConvertFunc(m))

// break if page size matches
if len(result) == pageSize {
break
}
}

end := page * pageSize
if end > totalCount {
end = totalCount
}

totalCount := len(result)
start, end := common.PagePosition(page, pageSize, totalCount)
return &generated.PaginatedResult{
TotalCount: totalCount,
HasNextPage: end < totalCount,
Nodes: result,
Nodes: result[start:end],
}, nil
}

Expand Down
7 changes: 2 additions & 5 deletions apiserver/pkg/knowledgebase/knowledgebase.go
Original file line number Diff line number Diff line change
Expand Up @@ -290,13 +290,10 @@ func ListKnowledgeBases(ctx context.Context, c dynamic.Interface, input generate
}

totalCount := len(filteredResult)
end := page * pageSize
if end > totalCount {
end = totalCount
}
start, end := common.PagePosition(page, pageSize, totalCount)
return &generated.PaginatedResult{
TotalCount: totalCount,
HasNextPage: end < totalCount,
Nodes: filteredResult[(page-1)*pageSize : end],
Nodes: filteredResult[start:end],
}, nil
}
42 changes: 7 additions & 35 deletions apiserver/pkg/llm/llm.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,48 +134,20 @@ func ListLLMs(ctx context.Context, c dynamic.Interface, input generated.ListComm
return us.Items[i].GetCreationTimestamp().After(us.Items[j].GetCreationTimestamp().Time)
})

totalCount := len(us.Items)

// if pageSize is -1 which means unlimited pagesize,return all
if pageSize == common.UnlimitedPageSize {
page = 1
pageSize = totalCount
}

result := make([]generated.PageNode, 0, pageSize)
pageStart := (page - 1) * pageSize

for index, u := range us.Items {
// skip if smaller than the start index
if index < pageStart {
continue
}
result := make([]generated.PageNode, 0, len(us.Items))
for _, u := range us.Items {
m := LLM2model(ctx, c, &u)
// filter based on `keyword`
if keyword != "" {
if !strings.Contains(m.Name, keyword) && !strings.Contains(*m.DisplayName, keyword) {
continue
}
if keyword != "" && !strings.Contains(m.Name, keyword) && !strings.Contains(*m.DisplayName, keyword) {
continue
}

// convertFunc
result = append(result, opts.ConvertFunc(m))

// break if page size matches
if len(result) == pageSize {
break
}
}

end := page * pageSize
if end > totalCount {
end = totalCount
}

totalCount := len(result)
pageStart, end := common.PagePosition(page, pageSize, totalCount)
return &generated.PaginatedResult{
TotalCount: totalCount,
HasNextPage: end < totalCount,
Nodes: result,
Nodes: result[pageStart:end],
}, nil
}

Expand Down
12 changes: 1 addition & 11 deletions apiserver/pkg/model/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,17 +238,7 @@ func ListModels(ctx context.Context, c dynamic.Interface, input generated.ListMo
result = append(result, m)
}
totalCount := len(result)
pageStart := (page - 1) * pageSize
if pageStart < 0 {
pageStart = 0
}
if pageStart > totalCount {
pageStart = totalCount
}
end := page * pageSize
if end > totalCount {
end = totalCount
}
pageStart, end := common.PagePosition(page, pageSize, totalCount)
return &generated.PaginatedResult{
TotalCount: totalCount,
HasNextPage: end < totalCount,
Expand Down
13 changes: 2 additions & 11 deletions apiserver/pkg/versioneddataset/versioned_dataset.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,20 +243,11 @@ func ListVersionedDatasets(ctx context.Context, c dynamic.Interface, input *gene
result = append(result, uu)
}
total := len(result)
end := page * size
if end > total {
end = total
}
start := (page - 1) * size
if start < total {
result = result[start:end]
} else {
result = make([]generated.PageNode, 0)
}
start, end := common.PagePosition(page, size, total)
return &generated.PaginatedResult{
TotalCount: total,
HasNextPage: end < total,
Nodes: result,
Nodes: result[start:end],
Page: &page,
PageSize: &size,
}, nil
Expand Down
46 changes: 10 additions & 36 deletions apiserver/pkg/worker/worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -345,51 +345,25 @@ func ListWorkers(ctx context.Context, c dynamic.Interface, input generated.ListW
return us.Items[i].GetCreationTimestamp().After(us.Items[j].GetCreationTimestamp().Time)
})

totalCount := len(us.Items)

// if pageSize is -1 which means unlimited pagesize,return all
if pageSize == common.UnlimitedPageSize {
page = 1
pageSize = totalCount
}

result := make([]generated.PageNode, 0, pageSize)
pageStart := (page - 1) * pageSize
for index, u := range us.Items {
// skip if smaller than the start index
if index < pageStart {
continue
}
result := make([]generated.PageNode, 0, len(us.Items))
for _, u := range us.Items {
m := Worker2model(ctx, c, &u)
// filter based on `keyword`
if keyword != "" {
if !strings.Contains(m.Name, keyword) && !strings.Contains(*m.DisplayName, keyword) {
continue
}
if keyword != "" && !strings.Contains(m.Name, keyword) && !strings.Contains(*m.DisplayName, keyword) {
continue
}
if modelTypes != "" {
if !strings.Contains(m.ModelTypes, modelTypes) {
continue
}
// filter based on `modelTypes`
if modelTypes != "" && !strings.Contains(m.ModelTypes, modelTypes) {
continue
}

result = append(result, opts.ConvertFunc(m))

// break if page size matches
if len(result) == pageSize {
break
}
}

end := page * pageSize
if end > totalCount {
end = totalCount
}

totalCount := len(result)
start, end := common.PagePosition(page, pageSize, totalCount)
return &generated.PaginatedResult{
TotalCount: totalCount,
HasNextPage: end < totalCount,
Nodes: result,
Nodes: result[start:end],
}, nil
}

Expand Down

0 comments on commit 71ceeba

Please sign in to comment.