fix: return all users on a list when no search param was provided
This commit is contained in:
parent
8f27e7e619
commit
c51ee94ad1
3 changed files with 17 additions and 6 deletions
|
@ -102,6 +102,9 @@ func ListUsersFromList(s *xorm.Session, l *List, search string) (users []*user.U
|
||||||
cond = builder.In("id", uids)
|
cond = builder.In("id", uids)
|
||||||
}
|
}
|
||||||
|
|
||||||
users, err = user.ListUsers(s, search, cond)
|
users, err = user.ListUsers(s, search, &user.ListUserOpts{
|
||||||
|
AdditionalCond: cond,
|
||||||
|
ReturnAllIfNoSearchProvided: true,
|
||||||
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -445,7 +445,7 @@ func TestListUsers(t *testing.T) {
|
||||||
s := db.NewSession()
|
s := db.NewSession()
|
||||||
defer s.Close()
|
defer s.Close()
|
||||||
|
|
||||||
all, err := ListUsers(s, "user7@example.com", builder.In("id", 7))
|
all, err := ListUsers(s, "user7@example.com", &ListUserOpts{AdditionalCond: builder.In("id", 7)})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Len(t, all, 1)
|
assert.Len(t, all, 1)
|
||||||
assert.Equal(t, int64(7), all[0].ID)
|
assert.Equal(t, int64(7), all[0].ID)
|
||||||
|
|
|
@ -23,13 +23,21 @@ import (
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ListUserOpts struct {
|
||||||
|
AdditionalCond builder.Cond
|
||||||
|
ReturnAllIfNoSearchProvided bool
|
||||||
|
}
|
||||||
|
|
||||||
// ListUsers returns a list with all users, filtered by an optional search string
|
// ListUsers returns a list with all users, filtered by an optional search string
|
||||||
func ListUsers(s *xorm.Session, search string, additionalCond builder.Cond) (users []*User, err error) {
|
func ListUsers(s *xorm.Session, search string, opts *ListUserOpts) (users []*User, err error) {
|
||||||
|
if opts == nil {
|
||||||
|
opts = &ListUserOpts{}
|
||||||
|
}
|
||||||
|
|
||||||
// Prevent searching for placeholders
|
// Prevent searching for placeholders
|
||||||
search = strings.ReplaceAll(search, "%", "")
|
search = strings.ReplaceAll(search, "%", "")
|
||||||
|
|
||||||
if search == "" || strings.ReplaceAll(search, " ", "") == "" {
|
if (search == "" || strings.ReplaceAll(search, " ", "") == "") && !opts.ReturnAllIfNoSearchProvided {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,10 +53,10 @@ func ListUsers(s *xorm.Session, search string, additionalCond builder.Cond) (use
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
if additionalCond != nil {
|
if opts.AdditionalCond != nil {
|
||||||
cond = builder.And(
|
cond = builder.And(
|
||||||
cond,
|
cond,
|
||||||
additionalCond,
|
opts.AdditionalCond,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue