Coder Social home page Coder Social logo

erikplachta / api-ecommerce-backend Goto Github PK

View Code? Open in Web Editor NEW

This project forked from coding-boot-camp/fantastic-umbrella

1.0 1.0 0.0 15.5 MB

This Concept APP demonstrates how you can use an ORM to communicate between an Express.js server and MySQL Database.

License: MIT License

JavaScript 99.84% Shell 0.16%
dotenv expressjs mysql mysql2 nodejs orm sequelize

api-ecommerce-backend's Introduction

api-ecommerce-backend's People

Contributors

erikplachta avatar

Stargazers

 avatar

api-ecommerce-backend's Issues

README: Completed

Build out a professional readme that provides clear instructions on how to use the app.

  • Index
  • About / Concept
  • Requirements
  • Useage
  • Repo Stats
  • Contributors
  • Contact Me

Feature: ORM - Sequelize

Uses Sequezlize as an ORM to connect to MySQL Database

WHEN I enter the command to invoke the application
THEN my server is started and the Sequelize models are synced to the MySQL database


  • Sync Sequelize to the Database on Server Start
  • Create the code needed in server.js to sync the Sequelize models to the MySQL database on server start.

Feature: API - Routes Respond with JSON

When an API Called is made, the response to client is in JSON format

WHEN I open API GET routes in Insomnia for categories, products, or tags
THEN the data for each of these routes is displayed in a formatted JSON

Database: MySQL

Uses a MySQL Database

  • WHEN I add my database name, MySQL username, and MySQL password to an environment variable file
  • THEN I am able to connect to a database using Sequelize

Feature: MySQL- Database Associations

Execute association methods on your Sequelize models to create the following relationships between them:

  • Product belongs to Category, as a category can have multiple products but a product can only belong to one category.
  • Category has many Product models.
  • Product belongs to many Tag models. Using the ProductTag through model, allow products to have multiple tags and tags to have many products.
  • Tag belongs to many Product models.

Feature: MySQL - Seed Database

Has the ability to import a seed database into MySQL

  • WHEN I enter schema and seed commands
  • THEN a development database is created and is seeded with test data

Feature: Sequelize - Database Models for MySQL Database

Database should contain the following four models, including the requirements listed for each model:

Category

  • id
    • Integer
    • Doesn't allow null values
    • Set as primary key
    • Uses auto increment
  • category_name
    • String
    • Doesn't allow null values

Product

  • id
    • Integer
    • Doesn't allow null values
    • Set as primary key
    • Uses auto increment
  • product_name
    • String
    • Doesn't allow null values
  • price
    • Decimal
    • Doesn't allow null values
    • Validates that the value is a decimal
  • stock
    • Integer
    • Doesn't allow null values
    • Set a default value of 10
    • Validates that the value is numeric
  • category_id
    • Integer
    • References the category model's id

Tag

  • id
    • Integer
    • Doesn't allow null values
    • Set as primary key
    • Uses auto increment
  • tag_name
    • String

ProductTag

  • id
    • Integer
    • Doesn't allow null values
    • Set as primary key
    • Uses auto increment
  • product_id
    • Integer
    • References the product model's id
  • tag_id
    • Integer
    • References the tag model's id

README: Walkthrough Video

Add Walkthrough video to README with how to use API

  • The walkthrough video must show all of the technical acceptance criteria being met.
  • The walkthrough video must demonstrate how to create the schema from the MySQL shell.
  • The walkthrough video must demonstrate how to seed the database from the command line.
  • The walkthrough video must demonstrate how to start the application’s server.
  • The walkthrough video must demonstrate GET routes for all categories, all products, and all tags being tested in Insomnia.
  • The walkthrough video must demonstrate GET routes for a single category, a single product, and a single tag being tested in Insomnia.
  • The walkthrough video must demonstrate POST, PUT, and DELETE routes for categories, products, and tags being tested in Insomnia.

  1. Show package.json
  2. npm i
  3. While running, update .env with info
  4. MySQL -u root -p < db/schema.sql
  5. npm start
  6. Demonstrate API calling with Insomnia
    1. GET ALL
      1. categories
      2. products
      3. tags
    2. GET /:id
      1. categories
      2. products
      3. tags
    3. POST
      1. categories
      2. products
      3. tags
    4. PUT /:id
      1. categories
      2. products
      3. tags
    5. DELETE /:id
      1. categories
      2. products
      3. tags

Feature: API - Full CRUD Functionality

API Gives access to full CRUD.

  • WHEN I test API POST, PUT, and DELETE routes in Insomnia
  • THEN I am able to successfully create, update, and delete data in my database

Fill Out the API Routes to Perform RESTful CRUD Operations

  • Fill out the unfinished routes in product-routes.js, tag-routes.js, and category-routes.js to perform create, read, update, and delete operations using your Sequelize models.

Notes

The functionality for creating the many-to-many relationship for products is already done for you.

Be sure to look at your module project's code for syntax help and use your model's column definitions to figure out what req.body will be for POST and PUT routes!


Category

  • GET api/categories/
  • GET api/categories/:id
    • Logic for if id doesn't exist
  • POST /api/categories/
  • PUT /api/categories/:id
    • Logic for if id doesn't exist
    • Logic for invalid request
  • DELETE /api/categories/:id
    • Logic for if id doesn't exist

Product

  • GET api/products/
  • GET api/products/:id
    • Logic for if id doesn't exist
  • POST /api/products/
  • PUT /api/products/:id
    • Logic for if id doesn't exist
    • Logic for invalid request
  • DELETE /api/products/:id
    • Logic for if id doesn't exist

Tags

  • GET api/tags/
  • GET api/tags/:id
    • Logic for if id doesn't exist
  • POST /api/tags/
  • PUT /api/tags/:id
    • Logic for if id doesn't exist
    • Logic for invalid request
  • DELETE /api/tags/:id
    • Logic for if id doesn't exist

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.