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