@@ -122,15 +122,25 @@ function buildQueryColumns(query) {
122122 return queryColumns ;
123123}
124124
125+ function addQueryPredicates ( sql , query ) {
126+ if ( query . layer ) {
127+ sql += ` AND layer = ${ escapeSql ( query . layer ) } ` ;
128+ }
129+
130+ if ( query . filter_name ) {
131+ sql += ` AND strpos(lower(name), lower(${ escapeSql ( query . filter_name ) } )) > 0` ;
132+ }
133+
134+ return sql ;
135+ }
136+
125137function getByBoundingBox ( query , callback ) {
126138 let boundingBoxQuery = `SELECT ${ buildQueryColumns ( query ) } FROM features WHERE ST_Intersects(hull, ST_MakeEnvelope(
127139 ${ query . west } , ${ query . south } ,
128140 ${ query . east } , ${ query . north } , 4326
129141 ))` ;
130142
131- if ( query . layer ) {
132- boundingBoxQuery += ` AND layer=${ escapeSql ( query . layer ) } ` ;
133- }
143+ boundingBoxQuery = addQueryPredicates ( boundingBoxQuery , query ) ;
134144
135145 return executeQuery ( boundingBoxQuery , callback ) ;
136146}
@@ -140,24 +150,20 @@ function getByPoint(query, callback) {
140150 'POINT(${ query . longitude } ${ query . latitude } )', 4326)
141151 )` ;
142152
143- if ( query . layer ) {
144- pointQuery += ` AND layer=${ escapeSql ( query . layer ) } ` ;
145- }
153+ pointQuery = addQueryPredicates ( pointQuery , query ) ;
146154
147155 return executeQuery ( pointQuery , callback ) ;
148156}
149157
150158function getByName ( query , callback ) {
151159 const names = query . name . constructor === Array ? query . name : [ query . name ] ;
152160
153- let namesDisjunction = names . map ( function ( name ) {
161+ let namesDisjunction = `( ${ names . map ( function ( name ) {
154162 return `lower(name) = ${ escapeSql ( name . toLowerCase ( ) ) } ` ;
155- } ) . join ( " OR " ) ;
163+ } ) . join ( " OR " ) } )` ;
156164 let nameQuery = `SELECT ${ buildQueryColumns ( query ) } FROM features WHERE ${ namesDisjunction } ` ;
157165
158- if ( query . layer ) {
159- nameQuery += ` AND layer=${ escapeSql ( query . layer ) } ` ;
160- }
166+ nameQuery = addQueryPredicates ( nameQuery , query ) ;
161167
162168 executeQuery ( nameQuery , callback ) ;
163169}
0 commit comments