From 98eb18ed72ca48f7202dcf52b1726125629576a4 Mon Sep 17 00:00:00 2001 From: Amanda Burtness Date: Sun, 6 Mar 2022 14:17:50 -0600 Subject: [PATCH] mvp --- api/cars/cars-middleware.js | 40 +++++++++++++++++++++++++++ api/cars/cars-model.js | 8 +++++- data/migrations/01-make_cars_table.js | 10 +++++++ 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/api/cars/cars-middleware.js b/api/cars/cars-middleware.js index 7e738d6062..281d8619bf 100644 --- a/api/cars/cars-middleware.js +++ b/api/cars/cars-middleware.js @@ -1,9 +1,28 @@ +const Car = require('./cars-model') + + const checkCarId = (req, res, next) => { // DO YOUR MAGIC + try { + const car = await Car.getById(req.param) + if(car) { + req.car = car + next() + } + } catch(err) { + res.json({message: err.message}) + } } const checkCarPayload = (req, res, next) => { // DO YOUR MAGIC + const { vin, make, model, mileage, title, transmission } = req.body + + if (vin === undefined || make === undefined || model === undefined || mileage === undefined || title === undefined || transmission === undefined ) { + res.status(400).json({message: `${req.body} is required`}) + }else { + next() + } } const checkVinNumberValid = (req, res, next) => { @@ -12,4 +31,25 @@ const checkVinNumberValid = (req, res, next) => { const checkVinNumberUnique = (req, res, next) => { // DO YOUR MAGIC + try { + const existing = await db('cars') + .where('vin', req.body.name.trim()) + .first() + + if (existing) { + next({ status: 400, messae: 'that vin is taken'}) + } else { + next() + } + } catch (err) { + next(err) + } } + + +module.exports = { + checkCarId, + checkCarPayload, + checkVinNumberUnique, + checkVinNumberValid +} \ No newline at end of file diff --git a/api/cars/cars-model.js b/api/cars/cars-model.js index 39b2c50a8d..feb880d107 100644 --- a/api/cars/cars-model.js +++ b/api/cars/cars-model.js @@ -1,11 +1,17 @@ +const db = require('../../data/db-config') + const getAll = () => { // DO YOUR MAGIC + return db('cars') } const getById = () => { // DO YOUR MAGIC + return db('cars').where('id', id).first() } -const create = () => { +const create = ({ vin, make, model, mileage, title, transmission }) => { // DO YOUR MAGIC + const [id] = await db('accounts').insert({vin, make, model, mileage, title, transmission}) + return getById(id) } diff --git a/data/migrations/01-make_cars_table.js b/data/migrations/01-make_cars_table.js index 9723c175be..3040534a6f 100644 --- a/data/migrations/01-make_cars_table.js +++ b/data/migrations/01-make_cars_table.js @@ -1,7 +1,17 @@ exports.up = function (knex) { // DO YOUR MAGIC + return knex.schema.createTable('cars', tbl => { + tbl.increments() // primary key + tbl.text('vin', 128).unique().notNullable() + tbl.string('make', 128).notNullable() + tbl.string('model', 128).notNullable() + tbl.string('mileage', 128).notNullable() + tbl.string('title', 128) + tbl.string('transmission', 128) + }) }; exports.down = function (knex) { // DO YOUR MAGIC + return knex.schema.dropTableIfExists("fruits") };