-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit ab6b614
Showing
5 changed files
with
2,947 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
|
||
# Runtime data | ||
pids | ||
*.pid | ||
*.seed | ||
*.pid.lock | ||
|
||
# Directory for instrumented libs generated by jscoverage/JSCover | ||
lib-cov | ||
|
||
# Coverage directory used by tools like istanbul | ||
coverage | ||
|
||
# nyc test coverage | ||
.nyc_output | ||
|
||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) | ||
.grunt | ||
|
||
# Bower dependency directory (https://bower.io/) | ||
bower_components | ||
|
||
# node-waf configuration | ||
.lock-wscript | ||
|
||
# Compiled binary addons (https://nodejs.org/api/addons.html) | ||
build/Release | ||
|
||
# Dependency directories | ||
node_modules/ | ||
jspm_packages/ | ||
|
||
# TypeScript v1 declaration files | ||
typings/ | ||
|
||
# Optional npm cache directory | ||
.npm | ||
|
||
# Optional eslint cache | ||
.eslintcache | ||
|
||
# Optional REPL history | ||
.node_repl_history | ||
|
||
# Output of 'npm pack' | ||
*.tgz | ||
|
||
# Yarn Integrity file | ||
.yarn-integrity | ||
|
||
# dotenv environment variables file | ||
.env | ||
|
||
# next.js build output | ||
.next |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# Recipe Book | ||
|
||
## Topics | ||
|
||
- database modeling. | ||
- migration scripts. | ||
- seeding. | ||
- knex. | ||
|
||
## Assignment | ||
|
||
Design the **data model** for a _recipe book_ application, then use `Knex migrations and seeding` functionality to build a `SQLite3` database based on the model and seed it with test data. | ||
|
||
The requirements for the system, as stated by the client are: | ||
|
||
- have a way to manage dishes. A **dish** is something the client wants to cook like _pizza_ or _tacos_. | ||
- have a way to manage recipes. A **dish** can have different recipes for tacos, like _tex-mex_ or _granny's_. A **recipe** belongs only to one **dish**. | ||
- have a way to manage ingredients. | ||
- a **recipe** could have more than one **ingredient** and the same **ingredient** can be used in multiple recipes. Examples are _"cup of corn flour"_ or _"gram of butter"_. | ||
- when saving the ingredients for a **recipe** capture the quantity required for that **ingredient** as a floating number. | ||
- have a way to save instructions for cooking a recipe. | ||
- have a way to pick a **dish** and a **recipe** and get a _shopping list_ with all the ingredients, and quantity of each, needed to cook the **dish**. | ||
|
||
In addition to the `migrations` and `seeding` scripts, write a data access file that **exports** an object with the following functions: | ||
|
||
- `getDishes()`: should return a list of all dishes in the database. | ||
- `addDish(dish)`: should add the **dish** to the database and return the `id` of the new **dish**. | ||
- `getDish(id)`: should return the **dish** with the provided `id` and include a list of the related recipes. | ||
- `getRecipes()`: should return a list of all recipes in the database including the **dish** they belong to. | ||
- `addRecipe(recipe)`: should add a **recipe** to the database and return the `id` of the new **recipe**. | ||
|
||
Organize and name your files anyway you see fit. | ||
|
||
## Stretch Problems | ||
|
||
- design and build a RESTful API that makes use of your data access file and publishes endpoints that a client application can use to manage all resources. | ||
- add a method called `getRecipe(id)` to your data access library that should return the recipe with the provided `id`. The recipe should include: | ||
- name of the dish. | ||
- name of the recipe. | ||
- the list of ingredients with the quantity. | ||
- follow the same pattern to add the CRUD operations for other entities in the system. | ||
- add _units of measure_ support for the **ingredient**s. | ||
- add a table of unit of measure convertions, so that we can record the quantity for an **ingredient** using a unit of measure and see the values for other units reading the recipe. | ||
- design and build a front end client for your API. | ||
- add a `getShoppingList(recipeId)` that returns a list of all the recipe's ingredients including the quantity of each. |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
const express = require('express'); | ||
const morgan = require('morgan'); | ||
const helmet = require('helmet'); | ||
const cors = require('cors'); | ||
// const _Router = require('./_'); | ||
|
||
const server = express(); | ||
|
||
server.use(express.json()); | ||
server.use(cors()); | ||
server.use(helmet()); | ||
server.use(morgan('dev')); | ||
|
||
// server.use('/api/_', _Router); | ||
|
||
server.get('/test', (req, res) => { | ||
db.get() | ||
.then(res => res.status(200).json({ success: true, res })) | ||
.catch(err => | ||
res.status(500).json({ | ||
success: false, | ||
message: 'Unable to retrieve actions. Please try again.' | ||
}) | ||
); | ||
}); | ||
|
||
server.listen(4000, () => { | ||
console.log('*** Listening on port 4000 ***'); | ||
}); |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
{ | ||
"name": "recipes", | ||
"version": "1.0.0", | ||
"description": "## Topics", | ||
"main": "index.js", | ||
"scripts": { | ||
"server": "nodemon index.js" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "git+https://github.com/Alex-AK/recipes.git" | ||
}, | ||
"keywords": [], | ||
"author": "", | ||
"license": "ISC", | ||
"bugs": { | ||
"url": "https://github.com/Alex-AK/recipes/issues" | ||
}, | ||
"homepage": "https://github.com/Alex-AK/recipes#readme", | ||
"dependencies": { | ||
"cors": "^2.8.5", | ||
"express": "^4.16.4", | ||
"helmet": "^3.15.1", | ||
"knex": "^0.16.3", | ||
"morgan": "^1.9.1", | ||
"sqlite3": "^4.0.6" | ||
}, | ||
"devDependencies": { | ||
"nodemon": "^1.18.10" | ||
} | ||
} |
Oops, something went wrong.