From a9208f623a58cef395c0e9d7cf7c8dc87ce6ba03 Mon Sep 17 00:00:00 2001 From: Tania Date: Fri, 17 Nov 2023 04:09:30 -0800 Subject: [PATCH] Nested Folders: Refactor query for getting folders (#78286) Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com> --- .../folderimpl/dashboard_folder_store.go | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/pkg/services/folder/folderimpl/dashboard_folder_store.go b/pkg/services/folder/folderimpl/dashboard_folder_store.go index 883139d07ad..aef13d84b0a 100644 --- a/pkg/services/folder/folderimpl/dashboard_folder_store.go +++ b/pkg/services/folder/folderimpl/dashboard_folder_store.go @@ -100,23 +100,21 @@ func (d *DashboardFolderStoreImpl) GetFolders(ctx context.Context, orgID int64, b := strings.Builder{} args := make([]any, 0, len(uids)+1) - b.WriteString("SELECT * FROM dashboard WHERE org_id=? ") + b.WriteString("SELECT * FROM dashboard WHERE org_id=?") args = append(args, orgID) - for i, uid := range uids { - if i == 0 { - b.WriteString(" AND (") - } - if i > 0 { - b.WriteString(" OR ") - } - b.WriteString(" uid=? ") - args = append(args, uid) - - if i == len(uids)-1 { - b.WriteString(")") - } + if len(uids) == 1 { + b.WriteString(" AND uid=?") } + + if len(uids) > 1 { + b.WriteString(" AND uid IN (" + strings.Repeat("?, ", len(uids)-1) + "?)") + } + + for _, uid := range uids { + args = append(args, uid) + } + return sess.SQL(b.String(), args...).Find(&folders) }); err != nil { return nil, err