]> git.openstreetmap.org Git - nominatim.git/blobdiff - nominatim/api/v1/server_glue.py
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / nominatim / api / v1 / server_glue.py
index d1bcc1dab0d3050bd5ec2a0cad40f1fbad9f0b58..80bf38a4517b9ea8eee53604a71a088d1ef42ed4 100644 (file)
@@ -453,17 +453,24 @@ async def search_endpoint(api: napi.NominatimAPIAsync, params: ASGIAdaptor) -> A
     if params.get('featureType', None) is not None:
         details['layers'] = napi.DataLayer.ADDRESS
 
+    # unstructured query parameters
     query = params.get('q', None)
+    # structured query parameters
     queryparts = {}
+    for key in ('amenity', 'street', 'city', 'county', 'state', 'postalcode', 'country'):
+        details[key] = params.get(key, None)
+        if details[key]:
+            queryparts[key] = details[key]
+
     try:
         if query is not None:
+            if queryparts:
+                params.raise_error("Structured query parameters"
+                                   "(amenity, street, city, county, state, postalcode, country)"
+                                   " cannot be used together with 'q' parameter.")
             queryparts['q'] = query
             results = await _unstructured_search(query, api, details)
         else:
-            for key in ('amenity', 'street', 'city', 'county', 'state', 'postalcode', 'country'):
-                details[key] = params.get(key, None)
-                if details[key]:
-                    queryparts[key] = details[key]
             query = ', '.join(queryparts.values())
 
             results = await api.search_address(**details)