import axios from 'axios'; import { createClient } from 'redis'; const SOLR_HOST = process.env.SOLR_HOST; const client = createClient(); client.on('error', (err) => console.error('Redis Client Error', err)); const connectRedis = async () => { if (!client.isOpen) { await client.connect(); } }; export default async function handler(req, res) { await connectRedis(); try { let params = '*:*'; let sort = 'sort=if(exists(sequence_i),0,1) asc,sequence_i asc, if(exists(image_s),0,1) asc '; let rows = 20; if (req.query.params) { rows = 20; switch (req.query.params) { case 'level_s': params = 'level_s:prioritas'; break; case 'search': params = `name_s:"${req.query.q.toLowerCase()}"`; sort = ''; rows = 1; break; default: params = `name_s:${req.query.params}`.toLowerCase(); } } if (req.query.rows) rows = req.query.rows; const url = `${SOLR_HOST}/solr/brands/select?q=${params}&q.op=OR&indent=true&rows=${rows}&${sort}`; const brands = await axios(url); const dataBrands = responseMap(brands.data.response.docs); res.status(200).json(dataBrands); } catch (error) { console.error('Error fetching data from Solr:', error); res.status(500).json({ error: 'Internal Server Error' }); } } const responseMap = (brands) => { return brands.map((brand) => { return { id: brand.id, name: brand.display_name_s, logo: brand.image_s || '', sequence: brand.sequence_i || '', }; }); };