(request, response)
| 2 | import { searchTussAdvanced } from '@/services/tuss'; |
| 3 | |
| 4 | async function TussAutocomplete(request, response) { |
| 5 | const { q, name, tuss, limit } = request.query; |
| 6 | |
| 7 | // default small limit, cap at 20 for autocomplete |
| 8 | let limitNum = 10; |
| 9 | if (typeof limit === 'string') { |
| 10 | const parsed = Number.parseInt(limit, 10); |
| 11 | if (!Number.isNaN(parsed) && parsed > 0) { |
| 12 | limitNum = Math.min(parsed, 20); |
| 13 | } |
| 14 | } |
| 15 | |
| 16 | // Force prefix match and lightweight fields |
| 17 | const data = searchTussAdvanced({ |
| 18 | q, |
| 19 | name, |
| 20 | tuss, |
| 21 | match: 'prefix', |
| 22 | sort: 'tuss', |
| 23 | order: 'asc', |
| 24 | }) |
| 25 | .slice(0, limitNum) |
| 26 | .map((item) => ({ |
| 27 | tuss: item.tuss || item.codigo || item.codigo_tuss, |
| 28 | name: item.name || item.nome || item.descricao, |
| 29 | })); |
| 30 | |
| 31 | return response.status(200).json(data); |
| 32 | } |
| 33 | |
| 34 | export default app().get(TussAutocomplete); |
nothing calls this directly
no test coverage detected