@@ -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