Skip to content

Commit 1783495

Browse files
author
baamrane
committed
Dealer showing reviews
1 parent ad32333 commit 1783495

File tree

1,089 files changed

+202190
-90
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,089 files changed

+202190
-90
lines changed

server/database/app.js

Lines changed: 202 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,224 @@
1+
// const express = require('express');
2+
// const mongoose = require('mongoose');
3+
// const fs = require('fs');
4+
// const cors = require('cors');
5+
// const bodyParser = require('body-parser');
6+
7+
// const app = express();
8+
// const port = 3030;
9+
10+
// app.use(cors());
11+
// app.use(bodyParser.urlencoded({ extended: false }));
12+
// app.use(bodyParser.json());
13+
14+
// // ✅ JSON files are in ./data
15+
// const reviews_data = JSON.parse(fs.readFileSync("data/reviews.json", "utf8"));
16+
// const dealerships_data = JSON.parse(fs.readFileSync("data/dealerships.json", "utf8"));
17+
18+
// mongoose.connect("mongodb://mongo_db:27017/", { dbName: "dealershipsDB" });
19+
20+
// const Reviews = require('./review');
21+
// const Dealerships = require('./dealership');
22+
23+
// // Seed DB (best-effort, no res here)
24+
// (async () => {
25+
// try {
26+
// await Reviews.deleteMany({});
27+
// await Reviews.insertMany(reviews_data["reviews"]);
28+
29+
// await Dealerships.deleteMany({});
30+
// await Dealerships.insertMany(dealerships_data["dealerships"]);
31+
32+
// console.log("✅ Database seeded");
33+
// } catch (error) {
34+
// console.error("❌ Error seeding database", error);
35+
// }
36+
// })();
37+
38+
// // Express route to home
39+
// app.get('/', async (req, res) => {
40+
// res.send("Welcome to the Mongoose API");
41+
// });
42+
43+
// // Express route to fetch all reviews
44+
// app.get('/fetchReviews', async (req, res) => {
45+
// try {
46+
// const documents = await Reviews.find();
47+
// res.json(documents);
48+
// } catch (error) {
49+
// console.error(error);
50+
// res.status(500).json({ error: 'Error fetching documents' });
51+
// }
52+
// });
53+
54+
// // Express route to fetch reviews by a particular dealer
55+
// app.get('/fetchReviews/dealer/:id', async (req, res) => {
56+
// try {
57+
// const documents = await Reviews.find({ dealership: req.params.id });
58+
// res.json(documents);
59+
// } catch (error) {
60+
// console.error(error);
61+
// res.status(500).json({ error: 'Error fetching documents' });
62+
// }
63+
// });
64+
65+
// // ✅ Express route to fetch all dealerships
66+
// app.get('/fetchDealers', async (req, res) => {
67+
// try {
68+
// const documents = await Dealerships.find();
69+
// res.json(documents);
70+
// } catch (error) {
71+
// console.error(error);
72+
// res.status(500).json({ error: 'Error fetching dealers' });
73+
// }
74+
// });
75+
76+
// // ✅ Express route to fetch Dealers by a particular state
77+
// app.get('/fetchDealers/:state', async (req, res) => {
78+
// try {
79+
// const stateParam = req.params.state;
80+
81+
// const documents = await Dealerships.find({
82+
// $or: [
83+
// { st: stateParam.toUpperCase() },
84+
// { state: new RegExp(`^${stateParam}$`, 'i') },
85+
// ],
86+
// });
87+
88+
// res.json(documents);
89+
// } catch (error) {
90+
// console.error(error);
91+
// res.status(500).json({ error: 'Error fetching dealers by state' });
92+
// }
93+
// });
94+
95+
// // ✅ Express route to fetch dealer by a particular id
96+
// app.get('/fetchDealer/:id', async (req, res) => {
97+
// try {
98+
// const id = parseInt(req.params.id);
99+
// const document = await Dealerships.findOne({ id: id });
100+
101+
// if (!document) {
102+
// return res.status(404).json({ error: 'Dealer not found' });
103+
// }
104+
105+
// res.json(document);
106+
// } catch (error) {
107+
// console.error(error);
108+
// res.status(500).json({ error: 'Error fetching dealer by id' });
109+
// }
110+
// });
111+
112+
// //Express route to insert review
113+
// app.post('/insert_review', express.raw({ type: '*/*' }), async (req, res) => {
114+
// const data = JSON.parse(req.body);
115+
// const documents = await Reviews.find().sort({ id: -1 });
116+
// let new_id = documents[0]['id'] + 1;
117+
118+
// const review = new Reviews({
119+
// id: new_id,
120+
// name: data['name'],
121+
// dealership: data['dealership'],
122+
// review: data['review'],
123+
// purchase: data['purchase'],
124+
// purchase_date: data['purchase_date'],
125+
// car_make: data['car_make'],
126+
// car_model: data['car_model'],
127+
// car_year: data['car_year'],
128+
// });
129+
130+
// try {
131+
// const savedReview = await review.save();
132+
// res.json(savedReview);
133+
// } catch (error) {
134+
// console.log(error);
135+
// res.status(500).json({ error: 'Error inserting review' });
136+
// }
137+
// });
138+
139+
// // Start the Express server
140+
// app.listen(port, () => {
141+
// console.log(`🚀 Server is running on http://localhost:${port}`);
142+
// });
1143
const express = require('express');
2-
const mongoose = require('mongoose');
3144
const fs = require('fs');
4-
const cors = require('cors')
5-
const app = express()
6-
const port = 3030;
7-
8-
app.use(cors())
9-
app.use(require('body-parser').urlencoded({ extended: false }));
10-
11-
const reviews_data = JSON.parse(fs.readFileSync("reviews.json", 'utf8'));
12-
const dealerships_data = JSON.parse(fs.readFileSync("dealerships.json", 'utf8'));
13-
14-
mongoose.connect("mongodb://mongo_db:27017/",{'dbName':'dealershipsDB'});
15-
16-
17-
const Reviews = require('./review');
145+
const cors = require('cors');
146+
const bodyParser = require('body-parser');
18147

19-
const Dealerships = require('./dealership');
148+
const app = express();
149+
const port = 3030;
20150

21-
try {
22-
Reviews.deleteMany({}).then(()=>{
23-
Reviews.insertMany(reviews_data['reviews']);
24-
});
25-
Dealerships.deleteMany({}).then(()=>{
26-
Dealerships.insertMany(dealerships_data['dealerships']);
27-
});
28-
29-
} catch (error) {
30-
res.status(500).json({ error: 'Error fetching documents' });
31-
}
151+
app.use(cors());
152+
app.use(bodyParser.json());
153+
app.use(bodyParser.urlencoded({ extended: false }));
32154

155+
// Load JSON data
156+
const reviews_data = JSON.parse(fs.readFileSync("data/reviews.json", "utf8"));
157+
const dealerships_data = JSON.parse(fs.readFileSync("data/dealerships.json", "utf8"));
33158

34-
// Express route to home
35-
app.get('/', async (req, res) => {
36-
res.send("Welcome to the Mongoose API")
159+
// Home
160+
app.get('/', (req, res) => {
161+
res.send("Welcome to the Mock Dealership API");
37162
});
38163

39-
// Express route to fetch all reviews
40-
app.get('/fetchReviews', async (req, res) => {
41-
try {
42-
const documents = await Reviews.find();
43-
res.json(documents);
44-
} catch (error) {
45-
res.status(500).json({ error: 'Error fetching documents' });
46-
}
164+
// Fetch all dealerships
165+
app.get('/fetchDealers', (req, res) => {
166+
res.json(dealerships_data["dealerships"]);
47167
});
48168

49-
// Express route to fetch reviews by a particular dealer
50-
app.get('/fetchReviews/dealer/:id', async (req, res) => {
51-
try {
52-
const documents = await Reviews.find({dealership: req.params.id});
53-
res.json(documents);
54-
} catch (error) {
55-
res.status(500).json({ error: 'Error fetching documents' });
56-
}
169+
// Fetch dealers by state
170+
app.get('/fetchDealers/:state', (req, res) => {
171+
const state = req.params.state.toUpperCase();
172+
const dealers = dealerships_data["dealerships"].filter(d =>
173+
d.st.toUpperCase() === state ||
174+
d.state.toUpperCase() === state
175+
);
176+
res.json(dealers);
57177
});
58178

59-
// Express route to fetch all dealerships
60-
app.get('/fetchDealers', async (req, res) => {
61-
//Write your code here
179+
// Fetch dealer by ID
180+
app.get('/fetchDealer/:id', (req, res) => {
181+
const id = parseInt(req.params.id);
182+
const dealer = dealerships_data["dealerships"].find(d => d.id === id);
183+
res.json(dealer || {});
62184
});
63185

64-
// Express route to fetch Dealers by a particular state
65-
app.get('/fetchDealers/:state', async (req, res) => {
66-
//Write your code here
186+
// Fetch all reviews
187+
app.get('/fetchReviews', (req, res) => {
188+
res.json(reviews_data["reviews"]);
67189
});
68190

69-
// Express route to fetch dealer by a particular id
70-
app.get('/fetchDealer/:id', async (req, res) => {
71-
//Write your code here
191+
// Fetch reviews for a dealer
192+
app.get('/fetchReviews/dealer/:id', (req, res) => {
193+
const id = parseInt(req.params.id);
194+
const reviews = reviews_data["reviews"].filter(r => r.dealership === id);
195+
res.json(reviews);
72196
});
73197

74-
//Express route to insert review
75-
app.post('/insert_review', express.raw({ type: '*/*' }), async (req, res) => {
76-
data = JSON.parse(req.body);
77-
const documents = await Reviews.find().sort( { id: -1 } )
78-
let new_id = documents[0]['id']+1
79-
80-
const review = new Reviews({
81-
"id": new_id,
82-
"name": data['name'],
83-
"dealership": data['dealership'],
84-
"review": data['review'],
85-
"purchase": data['purchase'],
86-
"purchase_date": data['purchase_date'],
87-
"car_make": data['car_make'],
88-
"car_model": data['car_model'],
89-
"car_year": data['car_year'],
90-
});
91-
92-
try {
93-
const savedReview = await review.save();
94-
res.json(savedReview);
95-
} catch (error) {
96-
console.log(error);
97-
res.status(500).json({ error: 'Error inserting review' });
98-
}
198+
// Insert review (append to JSON)
199+
app.post('/insert_review', (req, res) => {
200+
const body = req.body;
201+
202+
let new_id = reviews_data["reviews"].length + 1;
203+
204+
const newReview = {
205+
id: new_id,
206+
name: body.name,
207+
dealership: body.dealership,
208+
review: body.review,
209+
purchase: body.purchase,
210+
purchase_date: body.purchase_date,
211+
car_make: body.car_make,
212+
car_model: body.car_model,
213+
car_year: body.car_year
214+
};
215+
216+
reviews_data["reviews"].push(newReview);
217+
218+
res.json(newReview);
99219
});
100220

101-
// Start the Express server
221+
// Start server
102222
app.listen(port, () => {
103-
console.log(`Server is running on http://localhost:${port}`);
223+
console.log(`🚀 Mock server running on http://localhost:${port}`);
104224
});

server/database/node_modules/.bin/mime

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)