From fd59d1b5cad5f7b4643dd11aac01d64e9e76fbac Mon Sep 17 00:00:00 2001 From: topjohncian <45138629+topjohncian@users.noreply.github.com> Date: Fri, 16 Dec 2022 13:55:52 +0800 Subject: [PATCH] Enhance(dashboard): optimize get policies request (#1539) --- service/admin/policy.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/service/admin/policy.go b/service/admin/policy.go index 3207a7cf9f..abfc9da4df 100644 --- a/service/admin/policy.go +++ b/service/admin/policy.go @@ -318,12 +318,20 @@ func (service *AdminListService) Policies() serializer.Response { // 统计每个策略的文件使用 statics := make(map[uint][2]int, len(res)) + policyIds := make([]uint, 0, len(res)) for i := 0; i < len(res); i++ { + policyIds = append(policyIds, res[i].ID) + } + + rows, _ := model.DB.Model(&model.File{}).Where("policy_id in (?)", policyIds). + Select("policy_id,count(id),sum(size)").Group("policy_id").Rows() + + for rows.Next() { + policyId := uint(0) total := [2]int{} - row := model.DB.Model(&model.File{}).Where("policy_id = ?", res[i].ID). - Select("count(id),sum(size)").Row() - row.Scan(&total[0], &total[1]) - statics[res[i].ID] = total + rows.Scan(&policyId, &total[0], &total[1]) + + statics[policyId] = total } return serializer.Response{Data: map[string]interface{}{