Skip to content

Commit afa8419

Browse files
authored
feat: add fruits search api (#638)
* create live search API and client * update client and port-map.json * update markup and API name * update markup * update markup and JSON data
1 parent 9025efd commit afa8419

File tree

12 files changed

+1166
-0
lines changed

12 files changed

+1166
-0
lines changed

apps/fruit-search/.dockerignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
.env
2+
.git
3+
.gitignore
4+
.dockerignore
5+
node_modules
6+
Dockerfile
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const fs = require('fs');
2+
3+
const getFruits = () => {
4+
const data = fs.readFileSync('app/fruits.json', 'utf8');
5+
return JSON.parse(data);
6+
};
7+
8+
const fetchFruits = (req, res) => {
9+
try {
10+
const fruits = getFruits();
11+
const query = req.query.q ? req.query.q.toLowerCase() : '';
12+
13+
const filteredFruits = fruits.filter(fruit =>
14+
fruit.name.toLowerCase().includes(query)
15+
);
16+
17+
res.json(filteredFruits);
18+
} catch (error) {
19+
res.status(500).json({ error: 'Failed to load fruits' });
20+
}
21+
};
22+
23+
module.exports = { fetchFruits };

apps/fruit-search/app/fruits.json

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
[
2+
{ "name": "Apple" },
3+
{ "name": "Apricot" },
4+
{ "name": "Avocado" },
5+
{ "name": "Banana" },
6+
{ "name": "Blackberry" },
7+
{ "name": "Blueberry" },
8+
{ "name": "Boysenberry" },
9+
{ "name": "Cantaloupe" },
10+
{ "name": "Cherimoya" },
11+
{ "name": "Cherry" },
12+
{ "name": "Clementine" },
13+
{ "name": "Coconut" },
14+
{ "name": "Cranberry" },
15+
{ "name": "Currant" },
16+
{ "name": "Date" },
17+
{ "name": "Dragon fruit" },
18+
{ "name": "Durian" },
19+
{ "name": "Elderberry" },
20+
{ "name": "Egg fruit" },
21+
{ "name": "Feijoa" },
22+
{ "name": "Fig" },
23+
{ "name": "Goji berry" },
24+
{ "name": "Gooseberry" },
25+
{ "name": "Grapefruit" },
26+
{ "name": "Grapes" },
27+
{ "name": "Guava" },
28+
{ "name": "Honeydew" },
29+
{ "name": "Huckleberry" },
30+
{ "name": "Hog plum" },
31+
{ "name": "Indian fig" },
32+
{ "name": "Illawarra plum" },
33+
{ "name": "Jackfruit" },
34+
{ "name": "Jambul" },
35+
{ "name": "Jujube" },
36+
{ "name": "Kiwi" },
37+
{ "name": "Kumquat" },
38+
{ "name": "Kaffir lime" },
39+
{ "name": "Lemon" },
40+
{ "name": "Lime" },
41+
{ "name": "Longan" },
42+
{ "name": "Loquat" },
43+
{ "name": "Lychee" },
44+
{ "name": "Mangosteen" },
45+
{ "name": "Mandarin" },
46+
{ "name": "Mango" },
47+
{ "name": "Mulberry" },
48+
{ "name": "Nectarine" },
49+
{ "name": "Nance" },
50+
{ "name": "Orange" },
51+
{ "name": "Olive" },
52+
{ "name": "Papaya" },
53+
{ "name": "Passion fruit" },
54+
{ "name": "Peach" },
55+
{ "name": "Pear" },
56+
{ "name": "Persimmon" },
57+
{ "name": "Pineapple" },
58+
{ "name": "Plum" },
59+
{ "name": "Pomegranate" },
60+
{ "name": "Quince" },
61+
{ "name": "Raspberry" },
62+
{ "name": "Redcurrant" },
63+
{ "name": "Rambutan" },
64+
{ "name": "Star fruit" },
65+
{ "name": "Strawberry" },
66+
{ "name": "Sapodilla" },
67+
{ "name": "Tamarillo" },
68+
{ "name": "Tangerine" },
69+
{ "name": "Ugli fruit" },
70+
{ "name": "Umbu" },
71+
{ "name": "Vanilla bean" },
72+
{ "name": "Voavanga" },
73+
{ "name": "Watermelon" },
74+
{ "name": "White sapote" },
75+
{ "name": "Xigua" },
76+
{ "name": "Yangmei" },
77+
{ "name": "Yellow passion fruit" },
78+
{ "name": "Ziziphus" }
79+
]
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const express = require('express');
2+
const { fetchFruits } = require('../controllers/fruitController');
3+
4+
const router = express.Router();
5+
6+
router.get('/fruits', fetchFruits);
7+
8+
module.exports = router;

0 commit comments

Comments
 (0)