diff --git a/packages/ripple-tide-search/utils/rplAddressSuggestionsFn.ts b/packages/ripple-tide-search/utils/rplAddressSuggestionsFn.ts index 51c8a7e08a..82e4676492 100644 --- a/packages/ripple-tide-search/utils/rplAddressSuggestionsFn.ts +++ b/packages/ripple-tide-search/utils/rplAddressSuggestionsFn.ts @@ -1,6 +1,6 @@ import { capitalCase } from 'change-case' -const getSuburbSuggestions = async (query) => { +const getSuburbSuggestions = async (query, args) => { const suggestionsIndex = 'vicpol-postcode-localities' const searchUrl = `/api/tide/app-search/${suggestionsIndex}/elasticsearch/_search` @@ -17,6 +17,14 @@ const getSuburbSuggestions = async (query) => { } } }, + { + prefix: { + name: { + value: query, + case_insensitive: true + } + } + }, { term: { postcode: { @@ -33,7 +41,7 @@ const getSuburbSuggestions = async (query) => { method: 'POST', body: { ...queryDSL, - size: 1 + size: args.maxSuburbSuggestions } }) @@ -50,14 +58,14 @@ const getSuburbSuggestions = async (query) => { }) } -const getAddressSuggestions = async (query) => { +const getAddressSuggestions = async (query, args) => { const geocodeServerUrl = 'https://corp-geo.mapshare.vic.gov.au/arcgis/rest/services/Geocoder/VMAddressEZIAdd/GeocodeServer' const suggestions = await $fetch(`${geocodeServerUrl}/suggest`, { params: { text: query, - maxSuggestions: 10, + maxSuggestions: args.maxAddressSuggestions, f: 'json' } }) @@ -72,8 +80,20 @@ const getAddressSuggestions = async (query) => { } export default async (query, args) => { + const defaultArgs = { + maxSuburbSuggestions: 0, + maxAddressSuggestions: 10 + } + + const argsWithDefaults = { + ...defaultArgs, + ...(args || {}) + } + return [ - ...(args?.includeSuburbs ? await getSuburbSuggestions(query, args) : []), - ...(await getAddressSuggestions(query, args)) + ...(args.maxSuburbSuggestions > 0 + ? await getSuburbSuggestions(query, argsWithDefaults) + : []), + ...(await getAddressSuggestions(query, argsWithDefaults)) ] }