Skip to content

Berries finished with seeds, migration, router, and model #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 0 additions & 18 deletions 04-berries.js

This file was deleted.

4 changes: 2 additions & 2 deletions api/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const helmet = require('helmet');
const authenticate = require('../auth/authenticate-middleware.js');
const authRouter = require('../auth/auth-router.js');

// const berryRouter = require('../berries/berryRouter.js');
const berryRouter = require('../berries/berryRouter.js');
const itemRouter = require('../items/itemRouter.js');
// const machineRouter = require('../machines/machineRouter.js');
// const pokemonRouter = require('../pokemon/pokemonRouter.js');
Expand All @@ -22,7 +22,7 @@ server.get('/', (req, res) => {

server.use('/api/auth', authRouter); // For the trainer

// server.use('/api/berries', authenticate, berryRouter); // For the berries
server.use('/api/berries', authenticate, berryRouter); // For the berries
server.use('/api/items', itemRouter); // For the items
// server.use('/api/machines', authenticate, machineRouter); // For the machines
// server.use('/api/pokemon', authenticate, pokemonRouter); // For the pokemon
Expand Down
48 changes: 24 additions & 24 deletions berries/berryModel.js
Original file line number Diff line number Diff line change
@@ -1,63 +1,63 @@
const db = require('../database/dbConfig');

module.exports = {
getItems,
getItemsById,
addItem,
getItemFilter,
updateItem,
deleteItem,
updateItemCount
getBerries,
getBerriesById,
addBerry,
getBerryFilter,
updateBerry,
deleteBerry,
updateBerryCount
};

function getItems() {
return db('items');
function getBerries() {
return db('berries');
}

function addItem(post) {
return db('items as i')
function addBerry(post) {
return db('berries as i')
.insert(post)
.then(ids => {
console.log('ADD ITEM', ids)
const [id] = ids;
return getItemsById(id);
return getBerriesById(id);
})
}

function getItemsById(id) {
return db('items')
function getBerriesById(id) {
return db('berries')
.select('*')
.where({id})
.first()
}

async function updateItem(id, changes) {
await db('classes')
async function updateBerry(id, changes) {
await db('berries')
.where({id})
.update(changes)

return getClassesById(id);
return getBerriesById(id);
}

async function updateItemCount(id, changes) {
await db('items')
async function updateBerryCount(id, changes) {
await db('berries')
.where({id})
.update(changes)

return db('items')
return db('berries')
.select('count')
.where({id})
.first()
}

function deleteItem(id) {
return db('items')
function deleteBerry(id) {
return db('berries')
.where('id', id)
.delete()
}

function getItemsFIlter(filter) {
return db('items')
function getBerriesFIlter(filter) {
return db('berries')
.select('*')
.where('user_id', filter)
}
108 changes: 53 additions & 55 deletions berries/berryRouter.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
const express = require('express');
const router = express.Router();
const dbUsers = require('../auth/auth-model');
const classDb = require('./classModel');
const classesData = require('./classModel');
const berryDb = require('./berryModel');
const berriesData = require('./berryModel');


//GET all available classes

router.get('/classes', (req, res) => {
classesData.getClasses()
// GET all available berries
router.get('/berries', (req, res) => {
berriesData.getBerries()
.then( posts =>{
res.status(200).json(posts);
console.log(posts);
Expand All @@ -18,88 +16,88 @@ router.get('/classes', (req, res) => {
})
})

// gets all classes for single user
router.get('/:id/classes', (req, res) => {
// gets all berries for single user
router.get('/:id/berries', (req, res) => {

const { id } = req.params;

classesData
.getClassesFilter(id)
.then(classes => {
res.status(200).json(classes)
berriesData
.getBerriesFilter(id)
.then(berries => {
res.status(200).json(berries)
})
.catch(({ name, message, code, stack }) => {
res.status(500).json({ name, message, code, stack })
})
});


// gets single class
router.get('/classes/:id', validateClass, (req, res) => {
// gets single berry
router.get('/berries/:id', validateBerry, (req, res) => {
const { id } = req.params;

classesData
.getClassesById(id)
.then(issue => {
res.status(200).json(issue)
berriesData
.getItemsById(id)
.then(berry => {
res.status(200).json(berry)
})
.catch(({ name, message, code, stack }) => {
res.status(500).json({ name, message, code, stack })
})

})

// adds class to database with user id
router.post('/:id/classes/', validateUser, (req, res) => {
// adds berry to database with user id
router.post('/:id/berries/', validateUser, (req, res) => {

const { id } = req.params;
const issue = { ...req.body, user_id: id }
const berry = { ...req.body, user_id: id }

classesData
.addClass(issue)
.then(issue => {
res.status(200).json(issue)
berriesData
.addBerry(berry)
.then(berry => {
res.status(200).json(berry)
})
.catch(({ name, message, code, stack }) => {
res.status(500).json({ name, message, code, stack })
})
})

// edits single class
router.put("/classes/:id", validateClass, (req, res) => {
// edits single berry
router.put("/berries/:id", validateBerry, (req, res) => {
const { id } = req.params
const changes = { ...req.body}
classesData.updateClass(id, changes)
.then(issue => {
console.log(`this is class`, issue)
res.status(200).json(issue)
berriesData.updateBerry(id, changes)
.then(berry => {
console.log(`this is berry`, berry)
res.status(200).json(berry)
})
.catch(({ name, message, code, stack }) => {
res.status(500).json({ name, message, code, stack })
})
})

// edits current_attendees of classes
router.patch("/classes/:id", validateClass, (req, res) => {
// edits count of berries
router.patch("/berries/:id", validateBerry, (req, res) => {

const { id } = req.params
const join = req.body;
classesData
.updateClassSize(id, join)
.then(classes=> {
res.status(200).json({ message: `Attendees for Class# ${id} Updated Successfully`, classes})
berriesData
.updateBerryCount(id, join)
.then(berries=> {
res.status(200).json({ message: `Count for Berry# ${id} Updated Successfully`, berries})
})
.catch(({ name, message, code, stack }) => {
res.status(500).json({ name, message, code, stack })
})
})

// deletes an issue
router.delete("/classes/:id", (req, res) => {
// deletes an berry
router.delete("/berries/:id", (req, res) => {
const { id } = req.params
classesData.deleteClass(id)
.then(classes => {
res.status(200).json(classes)
berriesData.deleteBerry(id)
.then(berries => {
res.status(200).json(berries)
})
.catch(({ name, message, code, stack }) => {
res.status(500).json({ name, message, code, stack })
Expand All @@ -111,32 +109,32 @@ router.delete("/classes/:id", (req, res) => {
// Validation MiddleWare

async function validateUser(req, res, next) {
// validates all POST requests for new ISSUE (not new user)
// validates all POST requests for new berry (not new user)
const { id } = req.params;
const issue = { ...req.body, user_id: id} ;
console.log(`validate issue:`, issue)
const berry = { ...req.body, user_id: id} ;
console.log(`validate berry:`, berry)

const userCheck = await dbUsers.getUserById(id)

!userCheck
? res.status(404).json({ message: "User does not exist!" })
: !issue ?
res.status(404).json({ message: "Class does not exist!" })
: !issue.title || !issue.description || !issue.type || !issue.start || !issue.location || !issue.intensity || !issue.max_class
: !berry ?
res.status(404).json({ message: "Berry does not exist!" })
: !berry.name || !berry.pokeid || !berry.size || !berry.smoothness || !berry.naturalGiftPower || !berry.soilDryness || !berry.growthTime || !berry.maxHarvest
? res.status(406).json({ message: "Please make sure the required fields are completed. " })
: next();
}

async function validateClass(req, res, next) {
// validates all POST requests for new ISSUE (not new user)
async function validateBerry(req, res, next) {
// validates all POST requests for new berry (not new user)
const { id } = req.params;
const classes = req.body;
console.log(`validate class:`, classes)
const berries = req.body;
console.log(`validate berry:`, berries)

const issueCheck = await classDb.getClassesById(id)
const issueCheck = await berryDb.getBerriesById(id)

!issueCheck
? res.status(404).json({ message: "Class does not exist!" })
? res.status(404).json({ message: "Berry does not exist!" })
: next();
}

Expand Down
Binary file modified database/auth.db3
Binary file not shown.
37 changes: 19 additions & 18 deletions database/migrations/20200305182952_create_tables.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,24 +37,25 @@ exports.up = function(knex) {
// tbl.string('mega-punch').notNullable();
// })
//
// .createTable('berries', tbl => {
// tbl.increments();
// tbl.string('name').notNullable();
// tbl.integer('pokeid');
// tbl.integer('user_id')
// .unsigned()
// .notNullable()
// .references('pokeid')
// .inTable('users')
// .onUpdate('CASCADE')
// .onDelete('RESTRICT');
// tbl.integer('size');
// tbl.integer('smoothness');
// tbl.integer('naturalGiftPower');
// tbl.integer('soilDryness');
// tbl.integer('growthTime');
// tbl.integer('maxHarvest');
// })
.createTable('berries', tbl => {
tbl.increments();
tbl.string('name').notNullable();
tbl.integer('pokeid');
tbl.integer('user_id')
.unsigned()
.notNullable()
.references('pokeid')
.inTable('users')
.onUpdate('CASCADE')
.onDelete('RESTRICT');
tbl.integer('size');
tbl.integer('smoothness');
tbl.integer('naturalGiftPower');
tbl.integer('soilDryness');
tbl.integer('growthTime');
tbl.integer('maxHarvest');
tbl.integer('count').defaultTo(0);
})
//
// .createTable('pokemon', tbl => {
// tbl.increments();
Expand Down
19 changes: 19 additions & 0 deletions database/seeds/04-berries.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
exports.seed = function (knex) {
return knex('berries').truncate()
.then(function () {
return knex('berries').insert([
{
name: 'chesto',
pokeid: 2,
user_id: 1,
size: 80,
smoothness: 25,
naturalGiftPower: 60,
soilDryness: 15,
growthTime: 3,
maxHarvest: 5,
count: 2
}
]);
});
};
4 changes: 2 additions & 2 deletions items/itemModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ function getItemsById(id) {
}

async function updateItem(id, changes) {
await db('classes')
await db('items')
.where({id})
.update(changes)

return getClassesById(id);
return getItemsById(id);
}

async function updateItemCount(id, changes) {
Expand Down
Loading