Skip to content

Commit 490cdfd

Browse files
authored
Merge pull request #35 from aliyun/features/init_entities
feat: add pagination support for listing feature entities
2 parents 2134bc4 + be32f3d commit 490cdfd

File tree

3 files changed

+25
-13
lines changed

3 files changed

+25
-13
lines changed

api/api_feature_entity.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,21 @@ FeatureEntityApiService List FeatureEntities
1414
1515
@return InlineResponse20079
1616
*/
17-
func (a *FeatureEntityApiService) ListFeatureEntities(projectId string) (ListFeatureEntitiesResponse, error) {
17+
func (a *FeatureEntityApiService) ListFeatureEntities(pagesize, pagenumber int32, projectId string) (ListFeatureEntitiesResponse, error) {
1818
var (
1919
localVarReturnValue ListFeatureEntitiesResponse
2020
)
2121
request := paifeaturestore.ListFeatureEntitiesRequest{}
2222
request.SetProjectId(projectId)
23-
request.SetPageSize(100)
23+
request.SetPageSize(pagesize)
24+
request.SetPageNumber(pagenumber)
2425

2526
response, err := a.client.ListFeatureEntities(&a.client.instanceId, &request)
2627
if err != nil {
2728
return localVarReturnValue, err
2829
}
2930

31+
localVarReturnValue.TotalCount = int(*response.Body.TotalCount)
3032
var featureEntities []*FeatureEntity
3133

3234
for _, entity := range response.Body.FeatureEntities {

api/response_feature_entity.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package api
22

33
type ListFeatureEntitiesResponse struct {
4+
TotalCount int `json:"total_count"`
45
FeatureEntities []*FeatureEntity
56
}
67

featurestore/feature_store_client.go

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -249,23 +249,32 @@ func (c *FeatureStoreClient) LoadProjectData() error {
249249
project := domain.NewProject(p, c.datasourceInitClient)
250250
projectData[project.ProjectName] = project
251251

252+
var (
253+
pagesize = 100
254+
pagenumber = 1
255+
)
256+
252257
// get feature entities
253-
listFeatureEntitiesResponse, err := c.client.FeatureEntityApi.ListFeatureEntities(strconv.Itoa(p.ProjectId))
254-
if err != nil {
255-
c.logError(fmt.Errorf("list feature entities error, err=%v", err))
256-
return err
257-
}
258+
for {
259+
listFeatureEntitiesResponse, err := c.client.FeatureEntityApi.ListFeatureEntities(int32(pagesize), int32(pagenumber), strconv.Itoa(p.ProjectId))
260+
if err != nil {
261+
c.logError(fmt.Errorf("list feature entities error, err=%v", err))
262+
return err
263+
}
258264

259-
for _, entity := range listFeatureEntitiesResponse.FeatureEntities {
260-
if entity.ProjectId == project.ProjectId {
265+
for _, entity := range listFeatureEntitiesResponse.FeatureEntities {
261266
project.FeatureEntityMap[entity.FeatureEntityName] = domain.NewFeatureEntity(entity)
262267
}
268+
269+
if len(listFeatureEntitiesResponse.FeatureEntities) == 0 || pagesize*pagenumber > listFeatureEntitiesResponse.TotalCount {
270+
break
271+
}
272+
273+
pagenumber++
274+
263275
}
264276

265-
var (
266-
pagesize = 100
267-
pagenumber = 1
268-
)
277+
pagenumber = 1
269278
// get feature views
270279
for {
271280
listFeatureViews, err := c.client.FeatureViewApi.ListFeatureViews(int32(pagesize), int32(pagenumber), strconv.Itoa(p.ProjectId))

0 commit comments

Comments
 (0)