From bb3b992ee33315c2aad859ed01aea5fe386fc361 Mon Sep 17 00:00:00 2001 From: Jonathan Jara Date: Sat, 3 May 2025 19:36:46 -0700 Subject: [PATCH] fixed cars_make --- src/controllers/carsController.js | 53 ++++++++++++++++++++++++++++++- src/models/car_models.js | 17 ++++++++++ src/routes/v1/carsRoutes.js | 6 +++- 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 src/models/car_models.js diff --git a/src/controllers/carsController.js b/src/controllers/carsController.js index 42974f0..44ced1d 100644 --- a/src/controllers/carsController.js +++ b/src/controllers/carsController.js @@ -1,4 +1,5 @@ const CarMake = require('../models/car_makes.js'); +const CarModel = require('../models/car_models.js'); // Get all makes // This function retrieves all car makes from the database and sends them as a response. @@ -20,4 +21,54 @@ exports.getMakes = async (req, res) => { error: error.message, }); } - }; \ No newline at end of file + }; + +exports.getModelbyMake = async (req, res) => { + try { + const { make } = req.query; + const docs = await CarModel.find({ make: make }) + .select("models") + .lean(); + + if (docs.length === 0) { + return res.status(404).json({ message: "No models found for this make" }); + } + + const models = docs[0].models.map((model) => ({ + label: model, + })); + + return res.status(200).json(models); + } catch (error) { + console.error("Server error retrieving models:", error); + return res.status(500).json({ + message: "Server error retrieving models", + error: error.message, + }); + } +} + +exports.getYearbyModel = async (req, res) => { + try { + const { model } = req.query; + const docs = await CarModel.find({ model: model }) + .select("years") + .lean(); + + if (docs.length === 0) { + return res.status(404).json({ message: "No years found for this model" }); + } + + const years = docs[0].years.map((year) => ({ + label: year, + })); + + return res.status(200).json(years); + } catch (error) { + console.error("Server error retrieving years:", error); + return res.status(500).json({ + message: "Server error retrieving years", + error: error.message, + }); + } +} \ No newline at end of file diff --git a/src/models/car_models.js b/src/models/car_models.js new file mode 100644 index 0000000..029d609 --- /dev/null +++ b/src/models/car_models.js @@ -0,0 +1,17 @@ +const { Schema, model } = require('mongoose'); + +const carModelSchema = new Schema( + { + make: { + type: String, + }, + model: { + type: String, + }, + year: { + type: Number, + }, + } + ); + +module.exports = model('CarModel', carModelSchema, 'jdm_models'); \ No newline at end of file diff --git a/src/routes/v1/carsRoutes.js b/src/routes/v1/carsRoutes.js index b19d81e..21c9423 100644 --- a/src/routes/v1/carsRoutes.js +++ b/src/routes/v1/carsRoutes.js @@ -1,7 +1,11 @@ const express = require('express'); const router = express.Router(); -const {getMakes} = require('../../controllers/carsController'); +const {getMakes, getModelbyMake, getYearbyModel} = require('../../controllers/carsController'); router.get('/makes', getMakes); +router.get('/models', getModelbyMake); + +router.get('/years', getYearbyModel); + module.exports = router; \ No newline at end of file