Skip to content

Commit 1abf371

Browse files
committed
feat: readd mass people search
1 parent 8af3b8a commit 1abf371

File tree

1 file changed

+34
-25
lines changed

1 file changed

+34
-25
lines changed

src/domain/people/repository.rs

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -150,31 +150,40 @@ impl<'a> UserRoleRepository<'a> {
150150
// Apply search filter
151151
if let Some(search_term) = search {
152152
if !search_term.is_empty() {
153-
let lower_search = search_term.to_lowercase();
154-
query = query.filter(
155-
Condition::any()
156-
.add(
157-
Expr::expr(Func::lower(Expr::col((
158-
users::Entity,
159-
users::Column::Name,
160-
))))
161-
.like(format!("%{}%", lower_search)),
162-
)
163-
.add(
164-
Expr::expr(Func::lower(Expr::col((
165-
users::Entity,
166-
users::Column::Email,
167-
))))
168-
.like(format!("%{}%", lower_search)),
169-
)
170-
.add(
171-
Expr::expr(Func::lower(Expr::col((
172-
user_hackathon_roles::Entity,
173-
user_hackathon_roles::Column::Role,
174-
))))
175-
.like(format!("%{}%", lower_search)),
176-
),
177-
);
153+
let terms: Vec<String> = search_term
154+
.split(',')
155+
.map(|s| s.trim().to_lowercase())
156+
.filter(|s| !s.is_empty())
157+
.collect();
158+
159+
if !terms.is_empty() {
160+
let mut search_condition = Condition::any();
161+
for term in terms {
162+
search_condition = search_condition
163+
.add(
164+
Expr::expr(Func::lower(Expr::col((
165+
users::Entity,
166+
users::Column::Name,
167+
))))
168+
.like(format!("%{}%", term)),
169+
)
170+
.add(
171+
Expr::expr(Func::lower(Expr::col((
172+
users::Entity,
173+
users::Column::Email,
174+
))))
175+
.like(format!("%{}%", term)),
176+
)
177+
.add(
178+
Expr::expr(Func::lower(Expr::col((
179+
user_hackathon_roles::Entity,
180+
user_hackathon_roles::Column::Role,
181+
))))
182+
.like(format!("%{}%", term)),
183+
);
184+
}
185+
query = query.filter(search_condition);
186+
}
178187
}
179188
}
180189

0 commit comments

Comments
 (0)