mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2025-07-23 21:01:40 +02:00
Better implementation for querying multiple users
This commit is contained in:
@@ -118,13 +118,6 @@ func BuildWhereClause(filter *model.JobFilter, query sq.SelectBuilder) sq.Select
|
||||
if filter.User != nil {
|
||||
query = buildStringCondition("job.user", filter.User, query)
|
||||
}
|
||||
if filter.MultiUser != nil {
|
||||
queryUsers := make([]string, len(filter.MultiUser))
|
||||
for i, val := range filter.MultiUser {
|
||||
queryUsers[i] = *val
|
||||
}
|
||||
query = query.Where(sq.Or{sq.Eq{"job.user": queryUsers}})
|
||||
}
|
||||
if filter.Project != nil {
|
||||
query = buildStringCondition("job.project", filter.Project, query)
|
||||
}
|
||||
@@ -213,6 +206,13 @@ func buildStringCondition(field string, cond *model.StringInput, query sq.Select
|
||||
if cond.Contains != nil {
|
||||
return query.Where(field+" LIKE ?", fmt.Sprint("%", *cond.Contains, "%"))
|
||||
}
|
||||
if cond.In != nil {
|
||||
queryUsers := make([]string, len(cond.In))
|
||||
for i, val := range cond.In {
|
||||
queryUsers[i] = val
|
||||
}
|
||||
return query.Where(sq.Or{sq.Eq{"job.user": queryUsers}})
|
||||
}
|
||||
return query
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user