summaryrefslogtreecommitdiff
path: root/src/pages
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-03-15 14:52:16 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-03-15 14:52:16 +0700
commit4e634a9d3556e94c7ce0729ef9f15b73495b2e28 (patch)
tree1f04e5bb360ea4801dfc47a58354ff21b93b34a1 /src/pages
parent3b19ddcd0051f094b4659a35107646d678c2fd0c (diff)
product detail desktop
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/_app.jsx2
-rw-r--r--src/pages/api/shop/search.js17
2 files changed, 13 insertions, 6 deletions
diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx
index e32efc19..6fe07136 100644
--- a/src/pages/_app.jsx
+++ b/src/pages/_app.jsx
@@ -25,7 +25,7 @@ function MyApp({ Component, pageProps }) {
/>
<QueryClientProvider client={queryClient}>
<AnimatePresence
- mode='wait'
+ mode='sync'
initial={false}
onExitComplete={() => window.scrollTo(0, 0)}
>
diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js
index c1e00d16..3d6b3f26 100644
--- a/src/pages/api/shop/search.js
+++ b/src/pages/api/shop/search.js
@@ -46,7 +46,9 @@ export default async function handler(req, res) {
category = '',
priceFrom = 0,
priceTo = 0,
- orderBy = ''
+ orderBy = '',
+ operation = 'AND',
+ fq = ''
} = req.query
let paramOrderBy = ''
@@ -68,13 +70,13 @@ export default async function handler(req, res) {
let limit = 30
let offset = (page - 1) * limit
let parameter = [
- `facet.query=${q}`,
+ 'facet.field=brand_str',
+ 'facet.field=category_name_str',
'facet=true',
'indent=true',
- 'q.op=AND',
+ `facet.query=${q}`,
+ `q.op=${operation}`,
`q=${q}`,
- 'facet.field=brand_str',
- 'facet.field=category_name_str',
`start=${offset}`,
`rows=${limit}`,
`sort=product_rating DESC ${paramOrderBy}`,
@@ -84,6 +86,11 @@ export default async function handler(req, res) {
if (brand) parameter.push(`fq=brand:${brand}`)
if (category) parameter.push(`fq=category_name:${category}`)
+ // Single fq in url params
+ if (typeof fq === 'string') parameter.push(`fq=${fq}`)
+ // Multi fq in url params
+ if (Array.isArray(fq)) parameter = parameter.concat(fq.map((val) => `fq=${val}`))
+
let result = await axios(process.env.SOLR_HOST + '/solr/products/select?' + parameter.join('&'))
try {
result.data.response.products = productResponseMap(result.data.response.docs)