@@ -3,10 +3,12 @@ use super::{
33 PublicationHistory , PublicationOrderBy , PublicationType ,
44} ;
55use crate :: graphql:: utils:: Direction ;
6- use crate :: model:: { Crud , DbInsert , HistoryEntry } ;
6+ use crate :: model:: { Crud , DbInsert , HistoryEntry , Isbn } ;
77use crate :: schema:: { publication, publication_history} ;
88use crate :: { crud_methods, db_insert} ;
9- use diesel:: { ExpressionMethods , PgTextExpressionMethods , QueryDsl , RunQueryDsl } ;
9+ use diesel:: {
10+ dsl:: sql, sql_types:: Text , ExpressionMethods , PgTextExpressionMethods , QueryDsl , RunQueryDsl ,
11+ } ;
1012use thoth_errors:: ThothResult ;
1113use uuid:: Uuid ;
1214
@@ -112,7 +114,11 @@ impl Crud for Publication {
112114 if let Some ( filter) = filter {
113115 // ISBN field is nullable, so searching with an empty filter could fail
114116 if !filter. is_empty ( ) {
115- query = query. filter ( isbn. ilike ( format ! ( "%{filter}%" ) ) ) ;
117+ // Ignore ISBN hyphenation when searching
118+ query = query. filter (
119+ sql :: < Text > ( "replace(isbn, '-', '')" )
120+ . ilike ( format ! ( "%{}%" , filter. replace( "-" , "" ) ) ) ,
121+ ) ;
116122 }
117123 }
118124 query
@@ -144,7 +150,11 @@ impl Crud for Publication {
144150 if let Some ( filter) = filter {
145151 // ISBN field is nullable, so searching with an empty filter could fail
146152 if !filter. is_empty ( ) {
147- query = query. filter ( isbn. ilike ( format ! ( "%{filter}%" ) ) ) ;
153+ // Ignore ISBN hyphenation when searching
154+ query = query. filter (
155+ sql :: < Text > ( "replace(isbn, '-', '')" )
156+ . ilike ( format ! ( "%{}%" , filter. replace( "-" , "" ) ) ) ,
157+ ) ;
148158 }
149159 }
150160
0 commit comments