Skip to content

Instantly share code, notes, and snippets.

@stephepush
Created September 26, 2021 03:24
Show Gist options
  • Select an option

  • Save stephepush/964f39dd9624ea566f5cdf63078d253d to your computer and use it in GitHub Desktop.

Select an option

Save stephepush/964f39dd9624ea566f5cdf63078d253d to your computer and use it in GitHub Desktop.
Trying to get deleteById methods to work
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
]
)
}
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))
}
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;
<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