Created
September 26, 2021 03:24
-
-
Save stephepush/964f39dd9624ea566f5cdf63078d253d to your computer and use it in GitHub Desktop.
Trying to get deleteById methods to work
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| static deleteById(id) { | |
| return db.query('DELETE FROM cars WHERE car_id = ?', [id]) | |
| } //method I'm trying to get working | |
| static fetchAll () { | |
| const options = { | |
| sql: | |
| "SELECT c.car_id, c.model_year, c.make, c.miles, c.color, c.transmission, c.layout, c.engine_type, p.car_id, p.car_photo_url FROM cars c INNER JOIN car_photos p ON c.car_id = p.car_id", | |
| nestTables: true | |
| }; | |
| return db.query(options) | |
| } | |
| updateById(id) { | |
| let query = | |
| `UPDATE (cars c, car_photos p, car_prices d, sales_status s) | |
| INNER JOIN car_photos ON (c.car_id = p.car_id) | |
| INNER JOIN car_prices ON (c.car_id = d.car_id) | |
| INNER JOIN sales_status ON (c.car_id = s.car_id) | |
| SET | |
| c.model_year = ?, | |
| c.make = ?, | |
| c.model = ?, | |
| c.miles = ?, | |
| c.color = ?, | |
| c.transmission = ?, | |
| c.layout = ?, | |
| c.engine_type = ?, | |
| p.car_photo_url = ?, | |
| d.car_price = ?, | |
| s.sale_status = ?, | |
| s.for_sale = ? | |
| WHERE | |
| c.car_id = ?` | |
| return db.query(query, | |
| [ | |
| this.model_year, this.make, | |
| this.model, this.miles, | |
| this.color, this.transmission, | |
| this.layout, this.engine_type, | |
| this.car_photo_url, this.car_price, | |
| this.sale_status, this.for_sale, id | |
| ] | |
| ) | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const { response } = require('express'); | |
| const Car = require('../models/car'); | |
| const { makes } = require("../data/makes"); | |
| const { colors } = require('../data/colors'); | |
| const { sale_status, salesStatus } = require('../data/saleStatus'); | |
| const engines = require('../data/engines.json'); | |
| exports.postDeleteVehicle = (req, res, next) => { | |
| const carId = req.params.vehicleId | |
| console.log(carId) | |
| Car.deleteById(carId) | |
| .then(result => { | |
| console.log(` | |
| Car ${carId} Deleted | |
| `); | |
| res.redirect(req.get('back')) | |
| }) | |
| exports.getEditVehicle = (req, res, next) =>{ | |
| const editMode = req.query.edit; | |
| if (!editMode) { | |
| return res.redirect('/'); | |
| } | |
| const carId = req.params.vehicleId | |
| //console.log(carId) | |
| Car.findById(carId) | |
| .then(car =>{ | |
| if (!car) { | |
| return res.redirect('/'); | |
| } | |
| console.log(car) | |
| res.render('admin/edit-vehicle', { | |
| pageTitle: 'Edit Vehicle', | |
| path: '/admin/edit-vehicle', | |
| editing: editMode, | |
| makesArray: makes, | |
| colorsArray: colors, | |
| sale_status: salesStatus, | |
| enginesData: engines, | |
| car: car[0][0], | |
| }) | |
| }) | |
| .catch(err => console.log(err)) | |
| } | |
| exports.postEditVehicle = (req, res, next) => { | |
| const vehicle_id = req.body.car_id; | |
| const updated_model_year = req.body.model_year; | |
| const updated_make = req.body.make; | |
| const updated_model = req.body.model; | |
| const updated_miles = req.body.miles; | |
| const updated_color = req.body.color; | |
| const updated_transmission = req.body.transmission; | |
| const updated_layout = req.body.layout; | |
| const updated_engine_type = req.body.engine_config; | |
| //photo table | |
| const updated_car_photo_url = req.body.car_photo_url; | |
| //car_price table | |
| const updated_car_price = req.body.car_price; | |
| //car sales_status table | |
| const updated_sale_status = req.body.sale_status; | |
| const updated_for_sale = req.body.for_sale; | |
| //const for_sale = parseInt(req.body.for_sale); | |
| //const for_sale = Boolean(parseInt(req.body.for_sale)); | |
| const car = new Car( | |
| null, | |
| updated_model_year, | |
| updated_make, | |
| updated_model, | |
| updated_miles, | |
| updated_color, | |
| updated_transmission, | |
| updated_layout, | |
| updated_engine_type, | |
| updated_car_photo_url, | |
| updated_car_price, | |
| updated_sale_status, | |
| updated_for_sale); | |
| console.log(car); | |
| car | |
| .updateById(vehicle_id) | |
| .then(() => { | |
| res.redirect('/'); | |
| }) | |
| .catch(err => console.log(err)) | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const path = require('path'); | |
| const Router = require('express-promise-router') | |
| const express = require('express'); | |
| const adminController = require('../controllers/admin') | |
| //const router = express.Router(); | |
| const router = new Router() | |
| //routes for adding, editing and deleting vehicles: | |
| router.get('/add-vehicle', adminController.getAddVehicle); | |
| //route for VIEWING ALL vehicles | |
| router.get('/vehicles', adminController.getVehicles); | |
| router.post('/add-vehicle', adminController.postAddVehicle); | |
| router.get('/edit-vehicle/:vehicleId', adminController.getEditVehicle); | |
| router.post('/edit-vehicle', adminController.postEditVehicle); | |
| router.post('/delete-vehicle/', adminController.postDeleteVehicle); | |
| // ^Not sure if I should add /:vehicleId, but route the POST request in the 'vehicles' template should take | |
| module.exports = router; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <img | |
| class= "card-img-top" | |
| width="100%" | |
| height="225" | |
| src= <%= car.p.car_photo_url %> | |
| alt= "A <%= car.c.color %> <%= car.c.model_year %> <%= car.c.make %> <%= car.c.model %>" | |
| /> | |
| <div class="card-body"> | |
| <h2 class="card-text"><%= car.c.model_year %> <%= car.c.make %> <%= car.c.model %> </h2> | |
| <div class="d-flex justify-content-between align-items-center"> | |
| <div class="btn-group"> | |
| <a href="/admin/edit-vehicle/<%= car.c.car_id %>?edit=true" class="btn btn-sm btn-outline-secondary">Update</a> | |
| <form action="/admin/delete-vehicle/" method="POST"> | |
| <input type="hidden" value="<%= car.c.car_id %>" name="vehicleId"> | |
| <button type="submit" class="btn btn-sm btn-outline-secondary">Delete Vehicle</button> | |
| </form> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment